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

 
odyn:

¡Hola Conocedores!

Aquí está el código :

struct STRUCT_POSITION {\año...\año}

STRUCT_POSITION SPosition[];

Pregunta:

¿Qué es STRUCT_POSITION SPosition[]; ? Si está creando una instancia de la estructura, ¿por qué es una matriz dinámica? ¿Es realmente posible hacer esto? ¿Por qué?


Le agradeceré mucho su respuesta.

La declaración de la estructura STRUCT_POSITION {\\a6} es la creación de un tipo de datos definido por el usuario. Y STRUCT_POSITION SPosition[]; es declarar una variable de tipo usuario. El hecho de que la variable sea un array se indica con corchetes [] Puedes declarar varias variables de tipo personalizado como cualquier otro tipo.

double a, b[];

STRUCT_POSITION Pos, SPosition[];// при условии, что структура уже создана.
En este tipo de entrada, variable,matriz
 
Buenos días a todos, hora del día.
En uno de mis dispositivos android, MT5 dejó de funcionar
Simplemente dejó de funcionar. No he cambiado nada, no he configurado nada.
Se parece a la captura de pantalla.
Tengo Internet, todo lo demás funciona.
Lo siento si estoy en el lugar equivocado.
Archivos adjuntos:
 

¿Hay alguna utilidad (como WatchDog) para reiniciar MT5.


Supongamos que MT5 se ha cerrado debido a algún error. Cómo puedo rastrear esto de forma remota inmediatamente y reiniciar MT5.

Estoy usando MT4bar para MT4. Necesito algo similar para MT5.

 

Buenas tardes.

Estoy tratando de hacer una clase base universal para definir y llamar siempre a un objeto de la misma clase.

Y estoy haciendo dos soluciones para probar las noticias. Tengo una clase base CNewsFilter y dos heredadas CNewsFilterLive y CNewsFilterTester. Quiero definir un objeto CNewsFilter en mi código. Y seleccionará automáticamente una clase dependiendo del modo que se esté ejecutando. Pero algo no funciona. Aquí hay una clase base, sólo he dejado el método Init() como ejemplo.

//+------------------------------------------------------------------+
//| News Filter Class                                                |
//+------------------------------------------------------------------+
class CNewsFilter
  {
protected:
   //---
public:
                     CNewsFilter(void);
                    ~CNewsFilter(void);
   virtual bool      Init(string,int);
   virtual void      Deinit(void);                    
   virtual bool      CheckNews(ENUM_NEWS_TYPE &type);
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool CNewsFilter::Init(string symbol_name,int magic_number)
  {
   return true;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
#ifdef __MQL5__//MQL_TESTER || MQL_VISUAL_MODE
#include <NewsFilterTester.mqh>
#else
#include <NewsFilterLive.mqh>
#endif

Una clase heredada:

//+------------------------------------------------------------------+
//| News Filter Class                                                |
//+------------------------------------------------------------------+
class CNewsFilterTester : public CNewsFilter
  {
protected:
public:
                     CNewsFilterTester(void);
                    ~CNewsFilterTester(void);
   virtual bool      Init(string,int);
   virtual void      Deinit(void);                    
   virtual bool      CheckNews(ENUM_NEWS_TYPE &type);
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CNewsFilterTester::CNewsFilterTester() :  m_delimiter('\t')
  {
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CNewsFilterTester::~CNewsFilterTester(void)
  {
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool CNewsFilterTester::Init(string symbol_name,int magic_number)
  {
   // some code
   return true;
  }

Y luego lo llamo en mi código EA:

#include <NewsFilter.mqh>
....
CNewsFilter    news_filter;

news_filter.Init(Symbol(),MagicNumber);

Al depurar, nunca entra en la clase heredada CNewsFilterTester, en la que debería entrar según la directiva de la clase base, que he añadido al final del código de la clase base. __MQL5__ está aquí sólo como un ejemplo. Cómo hacerlo con el probador es otra cuestión. Hasta ahora, la idea en sí no funciona - los métodos de la clase heredada no son llamados. Cuando se llama a Init(), no va a Init() de la clase heredada - en este ejemplo CNewsFilterTester. Ayuda, por favor.

#ifdef __MQL5__//MQL_TESTER || MQL_VISUAL_MODE
#include <NewsFilterTester.mqh>
#else
#include <NewsFilterLive.mqh>
#endif
 
leonerd:

Buenas tardes.

Estoy tratando de hacer una clase base universal para definir y llamar siempre a un objeto de la misma clase.

Y estoy haciendo dos soluciones para probar las noticias. Tengo una clase base CNewsFilter y dos heredadas CNewsFilterLive y CNewsFilterTester. Quiero definir un objeto CNewsFilter en mi código. Y seleccionará automáticamente una clase en función del modo que se esté ejecutando. Pero algo no funciona. Aquí hay una clase base, sólo he dejado el método Init() como ejemplo.

Una clase heredada:

Y luego lo llamo en mi código EA:

Al depurar, nunca entra en la clase heredada CNewsFilterTester, en la que debería entrar según la directiva de la clase base, que añadí al final del código de la clase base. __MQL5__ está aquí sólo como un ejemplo. Cómo hacerlo con el probador es otra cuestión. Hasta ahora, la idea en sí no funciona - los métodos de la clase heredada no son llamados. Cuando se llama a Init(), no va a Init() de la clase heredada - en este ejemplo CNewsFilterTester. Por favor, ayuda.

Aquí

#include <NewsFilter.mqh>
....
CNewsFilter    news_filter;

news_filter.Init(Symbol(),MagicNumber);

se crea un objeto de clase base. En consecuencia, tienes una clase base en todas partes.

 

Cómo escribir correctamente una condición :

así

if(((MASlowHandle - PBid) > 0.0002) && ((MASlowHandle - MAFastHandle) > 0.0002))

o así:

if((MASlowHandle - PBid) > 0.0002 && (MASlowHandle - MAFastHandle) > 0.0002)

??

 
odyn:

Cómo escribir correctamente una condición :

así

o así:

??

Realmente no importa. Incluso puedes escribirlo así.

if(MASlowHandle - PBid > 0.0002 && MASlowHandle - MAFastHandle > 0.0002)

Las operaciones aritméticas tienen prioridad sobre las lógicas.

Pero si hay tanto && como || en la condición, es preferible separarlos con paréntesis para facilitar la comprensión.

 
Alexey Viktorov:

No es una cuestión de principios. Incluso se puede poner de esta manera

La prioridad de la aritmética es mayor que la de la lógica.

Pero si la condición tiene tanto && como ||, es preferible dividirla por paréntesis para que sea más fácil de entender.

Gracias por la respuesta.

 

¿Por qué no puedo publicar el código?

Siempre recibo un mensaje:

Revisión del código completada con errores:
Errores detectados durante la verificación de los códigos Informe de estadísticas comerciales en tiempo real.
https://www.mql5.com/en/code/28074/230766

Pero no entiendo el motivo del error de publicación del código.

Por favor, contéstame a esto.

Cuál es el problema, al menos hay que destacarlo.

 
jaffer wilson:

¿Por qué no puedo publicar el código?

Siempre recibo un mensaje:

Lacomprobación del código se ha completado con errores:
Errores detectados durante la comprobación del código Informe de estadísticas comerciales en tiempo real.
https://www.mql5.com/en/code/28074/230766

Pero no entiendo el motivo del error de publicación del código.

Por favor, contéstame a esto.

Cuál es el problema, al menos hay que destacarlo.

¿Dónde está la pregunta? ¿Cuáles son exactamente los errores? Lo siento, todos los telépatas están de vacaciones.

Haga clic en

Razón de la queja: