Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1187

 
leonerd:

pero ¿es posible declarar una clase como clase base y luego, dependiendo de las condiciones, anularla como una de las clases heredadas?

La tarea consiste en dejar el nombre de la clase igual en el código.

También, por favor, aconseje qué directiva utilizar para definir el probador.

¿Es posible hacerlo así?

#include <NewsFilter.mqh>
//...
   if(MQLInfoInteger(MQL_TESTER))
      CNewsFilterTester news_filter;
   else
      CNewsFilter       news_filter;
//---
   news_filter.Init(Symbol(),MagicNumber);
 
Artyom Trishkin:

Gracias. Sí, pero aquí el objeto news_filter resulta ser indefinido. Debe declararse globalmente para que sea accesible desde cualquier parte del código. ¿Qué hacer?

CNewsFilter       news_filter;
void OnInit()
  {
  }
 
leonerd:

Gracias. Sí, pero aquí el objeto news_filter resulta ser indefinido. Debe declararse globalmente para que sea accesible desde cualquier parte del código. ¿Qué hacer?

¿En qué casos sería indefinido?

 
Artyom Trishkin:

¿En qué casos será indefinido?

#include <NewsFilter.mqh>

void OnInit()
  {
//...
   if(MQLInfoInteger(MQL_TESTER))
      CNewsFilterTester news_filter;
   else
      CNewsFilter       news_filter;
//---
   news_filter.Init(Symbol(),MagicNumber);
  }
void OnTick()
  {
   news_filter.Check()...
  }
 

Por favor, ayúdenme a entender la lógica detrás de la ejecución de esta declaración y la expresión de su condición.


CTrade         m_trade;

CPositionInfo  m_position;

if(!m_trade.PositionClose(m_position.Ticket()))

¿Si NO cierra la posición definida por el billete?

Primero obtiene un ticket de posición -> el programa intenta cerrar la posición -> el valor booleano devuelto se invierte.

¿Verdad?

 
odyn:

Por favor, ayúdenme a entender la lógica detrás de la ejecución de esta declaración y la expresión de su condición.


¿Si NO cierra la posición definida por el billete?

Primero obtiene un ticket de posición -> el programa intenta cerrar la posición -> el valor booleano devuelto se invierte.

¿Verdad?

-> Devuelve true si la posición con el ticket especificado está cerrada, en caso contrario false

La condición dice: Si la posición con el ticket especificado no está cerrada...

 
Сергей Таболин:

-> Devuelve true si la posición con el ticket especificado está cerrada, en caso contrario false

La condición dice: Si la posición con el ticket especificado no está cerrada...

La pregunta es si el programa intenta cerrar la posición o no.

 
odyn:

La cuestión es si el programa intenta cerrar la posición o no.

Sí, así es.

 
Сергей Таболин:

Sí, lo es.

Gracias por su respuesta

 

Por favor, explique.

La funciónOnTradeTransaction.

¿Tiene que ser en el Asesor Experto?

Si no es así, ¿en qué casos debería incluirse en el código? y ¿por qué?

Razón de la queja: