Erros, bugs, perguntas - página 1297

 
_Konstantin_:

Estou a tentar anulá-lo, mas recebo uma chamada de método não-constritivo para erro de objecto constante, porque os métodos não-constritivos não podem ser utilizados num método constante. Eu próprio não consigo descobrir como anular devidamente o método da constante virtual.

A saída é não utilizar métodos não constantes nos métodos constantes. E não se pode de forma alguma ignorar isto.
 
A100:
A solução não é utilizar métodos não constantes nos métodos constantes. E não há forma de saltar sobre ela.

Bem, é isso mesmo, MQ não quer alterar o método Compare virtual durante vários anos, que se destina a ser utilizado no mecanismo de classificação criado, e sem a sua redefinição este mecanismo simplesmente não funciona. Como resultado, tenho de criar o meu próprio mecanismo de triagem sem utilizar o mecanismo de triagem pretendido pela MQ.

Criei o meu próprio mecanismo de classificação desde o início da introdução do OOP na MQL4, e ingenuamente pensei que este ponto estava fixado na MQL5, mas estava errado :)

 
_Konstantin_:

Bem, é isso mesmo, há vários anos que a MQ não quer alterar o método Compare virtual, que se destina a ser utilizado no mecanismo de triagem criado, e sem a sua redefinição este mecanismo simplesmente não funciona. Como resultado, tenho de criar o meu próprio mecanismo de triagem sem utilizar o mecanismo de triagem pretendido pela MQ.

Criei o meu próprio mecanismo de classificação desde o início da introdução do OOP na MQL4, e ingenuamente pensei que este ponto já tinha sido fixado na MQL5, mas estava errado :)

Não pode usar o modificador constante, pois não?

class IntObject : public CObject
{
public:
   int Value;
   virtual int Compare(const CObject *node,const int mode=0) const
   {
      const IntObject* intObj = node;
      if(intObj.Value < Value)return MORE;
      else if(intObj.Value > Value)return LESS;
      return EQUAL;
   }
   IntObject();
   IntObject(int value){Value=value;}
};
 
C-4:

A sua religião não lhe permite utilizar o modificador constante?

Tem um tipo de erro diferente (chamar método não-constritivo para constante objecto)

#define  NO_CONST
class IntObject : public CObject {
public:
   virtual int f(const CObject *node ) NO_CONST { return 0; }
   virtual int Compare(const CObject *node,const int mode=0) const { return f( node ); }
};
Não pode ser ultrapassado por razões fundamentais
 
A100:

Tem um tipo de erro diferente (chamar método não-constritivo para constante objecto)

Não pode ser ultrapassado por razões fundamentais.
Como poderia não ser? Basta tornar constante o método para ser chamado no objecto constante.
 
C-4:
Como poderia não ser? É suficiente fazer com que o método a ser chamado num objecto constante seja uma constante.
f() só pode ser feita const const se isso o permitir
class IntObject : public CObject { public:
        int i;
   virtual int f(const CObject *node ) const { return i = 0; } //ошибка
};
 

Tenho uma pergunta, talvez alguém me diga alguma coisa!

Crio um gráfico sintético offline 1/EURUSD,GBPUSD e também defino o EURUSD-1 GBPUSD+1 em Capital Próprio

Recebo gráficos e linhas indicadoras idênticas, quase sem diferença https://charts.mql5.com/7/422/synthetic-m15-alpari-limited-6.png

E eu crio um segundo gráfico sintético offline EURUSD,1/GBPUSD e defino EURUSD+1 GBPUSD+1 no capital

NÃO recebo linhas idênticas do gráfico e do indicador https://charts.mql5.com/7/422/synthetic-m15-alpari-limited-5.png

A razão mais provável é que o EUR-USD está próximo da paridade, razão pela qual a sua inversão com 1/1,08 dá um mínimo de distorção e o GBPUSD está mais longe da paridade, razão pela qual 1/1,48 dá mais distorção.

Pode dizer-me a forma correcta de inverter um instrumento?

 

Antes estava OK, mas agora não posso definir uma linha de 28 instrumentos no parâmetro Symbol_Side_A no indicador de Equidade (em anexo):

EURGBP-0.1 EURUSD-0.1 GBPUSD-0.1 EURCHF-0.1 EURCAD-0.1 EURAUD-0.1 EURNZD-0.1 EURJPY-0.1 AUDUSD-0.1 NZDUSD-0.1 USDCAD-0.1 USDCHF-0.1 USDJPY-0.1 GBPAUD-0.1 GBPCAD-0.1 GBPJPY-0.1 GBPCHF-0.1 NZDJPY-0.1 AUDJPY-0.1 CADJPY-0.1 CHFJPY-0.1 AUDCAD-0.1 NZDCAD-0.1 AUDCHF-0.1 AUDNZD-0.1 CADCHF-0.1 NZDCHF-0.1 GBPNZD-0.1

Parte dos dados é cortada por alguma razão e não é exibida nesta linha. Só aparece quando activo a linha Symbol_Side_A. Qual pode ser o problema? Por favor, aconselhar.

O meu terminal MT4-765. ALPARI e RVD têm o problema, enquanto GKFX está OK! Estranho!

Arquivos anexados:
 

É realmente tão difícil fazer o fórum para que os nomes dos ficheiros carregados não mudem? Como em fóruns normais!

Descarreguei o indicador EquityHedgeGraph2(v670) acima. Então, porque é que o nome se estragou?

 
Não pode comentar dentro da lista de parâmetros #define
#define  MACRO( X/*комментарий*/ )       (X) //ошибка компиляции
mas pode ser necessário, especialmente se houver vários parâmetros