Errores, fallos, preguntas - página 1297

 
_Konstantin_:

Estoy intentando anularlo, pero me sale un error de llamada a método no-const para objeto constante, porque los métodos no-const no pueden usarse en un método constante. No consigo averiguar cómo anular correctamente el método de la constante virtual.

La solución es no utilizar métodos no-const en métodos const. Y no se puede anular esto de ninguna manera.
 
A100:
La solución es no utilizar métodos no-const en métodos const. Y no hay forma de saltarlo.

Bueno, esa es la cuestión, MQ no quiere cambiar el método virtual Compare desde hace varios años, que está destinado a ser utilizado en el mecanismo de ordenación creado, y sin su redefinición este mecanismo simplemente no funciona. Como resultado, tenemos que crear nuestro propio mecanismo de ordenación sin utilizar el mecanismo de ordenación previsto por el MQ.

Creé mi propio mecanismo de ordenación desde el principio de la introducción de la POO en MQL4, e ingenuamente pensé que este punto estaba arreglado en MQL5, pero me equivoqué :)

 
_Konstantin_:

Bueno, esa es la cuestión, MQ no quiere cambiar el método virtual Compare desde hace varios años, que está destinado a ser utilizado en el mecanismo de ordenación creado, y sin su redefinición este mecanismo simplemente no funciona. Como resultado, tenemos que crear nuestro propio mecanismo de ordenación sin utilizar el mecanismo de ordenación previsto por el MQ.

Creé mi propio mecanismo de ordenación desde el principio de la introducción de la POO en MQL4, e ingenuamente pensé que este punto ya se había solucionado en MQL5, pero estaba equivocado :)

¿No permite utilizar el modificador const?

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:

¿Su religión no le permite utilizar el modificador const?

Tiene un tipo de error diferente (llamar al método no-const para la constante objeto)

#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 ); }
};
No se puede superar por razones fundamentales
 
A100:

Tiene un tipo de error diferente (llamar al método no-const para la constante objeto)

No se puede superar por razones fundamentales.
¿Cómo no iba a serlo? Basta con que el método sea llamado en el objeto constante.
 
C-4:
¿Cómo no iba a serlo? Basta con que el método al que se llama en un objeto constante sea una constante.
f() sólo puede hacerse const si lo permite
class IntObject : public CObject { public:
        int i;
   virtual int f(const CObject *node ) const { return i = 0; } //ошибка
};
 

Tengo una pregunta, ¡quizás alguien me diga algo!

Creo un gráfico sintético fuera de línea 1/EURUSD,GBPUSD y también establezco EURUSD-1 GBPUSD+1 en la Equidad

Obtengo gráficos y líneas de indicadores idénticos, casi sin diferencia https://charts.mql5.com/7/422/synthetic-m15-alpari-limited-6.png

Y creo un segundo gráfico sintético offline EURUSD,1/GBPUSD y pongo EURUSD+1 GBPUSD+1 en la equidad

No obtengo líneas idénticas del gráfico y del indicador https://charts.mql5.com/7/422/synthetic-m15-alpari-limited-5.png

La razón más probable es que el EUR-USD está cerca de la paridad, por lo que su inversión con 1/1,08 da una distorsión mínima y el GBPUSD está más lejos de la paridad, por lo que 1/1,48 da más distorsión.

¿Puede decirme la forma correcta de invertir un instrumento?

 

Antes estaba bien, pero ahora no puedo establecer una línea de 28 instrumentos en el parámetro Symbol_Side_A en el indicador Equity (adjunto):

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 de los datos están cortados por alguna razón y no se muestran en esta fila. Sólo aparece cuando activo la línea Symbol_Side_A. ¿Cuál puede ser el problema? Por favor, avisa.

Mi terminal MT4-765. ALPARI y RVD tienen el problema, mientras que GKFX está bien. ¡Extraño!

Archivos adjuntos:
 

¿Realmente es tan difícil hacer el foro para que los nombres de los archivos subidos no cambien? Como en los foros normales.

He descargado el indicador EquityHedgeGraph2(v670) anterior. Entonces, ¿por qué se confundió el nombre?

 
No se puede comentar dentro de la lista de parámetros #define
#define  MACRO( X/*комментарий*/ )       (X) //ошибка компиляции
pero puede ser necesario, especialmente si hay varios parámetros
Razón de la queja: