Características del lenguaje mql5, sutilezas y técnicas - página 194

 

Hola, ¡ayuda de los expertos!

De la documentación

Variables globales

"La inicialización de las variables globales se realiza una vez después de cargar el programa en la memoria del terminal cliente y antes de que se gestione el primer evento Init. En el caso de las variables globales, que son objetos de clases, durante la inicialización se llama a los constructores correspondientes".

Pero de hecho, cuando cambio el periodo del gráfico, se llama al constructor de la clase de objeto global en el indicador.

¿Cómo hacer que el constructor sea llamado una vez después del inicio del indicador?

 
Gudgeon:

Pero de hecho, cuando cambio el período del gráfico, se llama al constructor de la clase de objeto en el indicador.

¿Cómo hacer que el constructor sea llamado una vez después de iniciar el indicador?

Cambio de TF para el indicador - inicio de una nueva copia del programa.

 
fxsaber:

Cambiar el TF para el indicador - ejecutar una nueva copia del programa.

Gracias.

Inesperadamente, no entiendo de la documentación.

Todo está bien en Expert Advisors.

 
Puede averiguar el tiempo que tarda en compilar su programa de la siguiente manera.
LastModifyEX5() - __DATETIME__
 
fxsaber:
Puedes averiguar el tiempo que tarda en compilar tu programa de la siguiente manera.
¿Qué es LastModifyEX5()? No lo encuentro en la página web.
 
Alexey Viktorov:
¿Y este LastModifyEX5() qué? No lo encuentro en la página web.

Tienes que escribirlo tú mismo a través de la WinAPI. La aplicación es secundaria en este caso.

 

¡Amigos míos, compañeros de afición!

¿Cómo puedo programar la visibilidad de un indicador específico en un TF específico?

Teniendo en cuenta que puede haber otros 5 indicadores para otros TFs.

He buscado en la descripción, y muy simplemente, la búsqueda en la ayuda, pero la búsqueda de la descripción no da ningún resultado sobre el mecanismo para solucionarlo.


Sé cómo establecer la visibilidad de los objetos.

 
El limitador puede cambiar suORDER_TIME_SETUP_MSC - en caso de ejecución parcial esta propiedad se hace igual al tiempo de la primera (posiblemente penúltima) ejecución parcial.
 
En el Comprobador esta condición siempre se activará.
int OnInit()
{
  MqlTick Tick;
  
  return(SymbolInfoTick(_Symbol, Tick) && (TimeCurrent() != Tick.time));
}
Es difícil saber si se trata de un error en el probador o de una característica.
 

En su día se propuso una forma de determinar el desfase GMT de la hora del servidor. No siempre funciona con precisión.

La siguiente parece ser una versión exacta.

// Аналог по серверному времени - https://www.mql5.com/ru/docs/dateandtime/timegmtoffset
int TimeServerGMTOffset( void )
{
  MqlCalendarValue Value[1];
  
  CalendarValueHistoryByEvent(840030016, Value, D'2020.12.03', D'2020.12.06');
  
  return((13 - ((Value[0].time / 3600) % 24)) * 3600);
}

// Аналог по серверному времени - https://www.mql5.com/ru/docs/dateandtime/timegmt
datetime TimeServerGMT( void )
{
  return(TimeTradeServer() + TimeServerGMTOffset());
}


Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Características del lenguaje mql4, complejidades y trucos

fxsaber, 2018.03.29 14:32

Aplicaciones

#define  PRINT(A) Print(#A + " = " + (string)(A))

void OnStart()
{  
  PRINT(TimeGMT());
  PRINT(TimeServerGMT());  
}