El Asesor Experto no pasa por OnTick() cuando utilizo el Analizador de Estrategias

 

Señores
El ejmplo es muy sencillo, pero la resolución debe ser compleja

Asesor Experto - Código

//------------------------------------------------------------------------------------------------
int a;
int OnInit()
  {
   EventSetTimer(60);
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
   EventKillTimer();
  }
void OnTick()
  {
🔵    a=1; // Aquí pongo el punto de debug del compilador, pero no pasa por este punto. Simplifiqué la opción, porque no pasa nunca
  }
//------------------------------------------------------------------------------------------------

Muchas gracias

 
Luis Fernando:

Señores
El ejmplo es muy sencillo, pero la resolución debe ser compleja

Asesor Experto - Código

//------------------------------------------------------------------------------------------------

int a;
int OnInit()
  {
   EventSetTimer(60);
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
   EventKillTimer();
  }
void OnTick()
  {
🔵    a=1; // Aquí pongo el punto de debug del compilador, pero no pasa por este punto. Simplifiqué la opción, porque no pasa nunca
  }


//------------------------------------------------------------------------------------------------

Muchas gracias

Según entiendo yo el código que has proporcionado establece un temporizador que se ejecuta cada 60 segundos y establece la variable "a" en 1 cuando se ejecuta el evento "OnTick". 

No sé si has creado OnTimer. De todas formas este no funciona en backtest, solo en un gráfico en vivo.
 

Estuve pensando, que aunque no sé exactamente qué quieres hacer. ¿No sería más interesante usar la función Sleep?

Esta función tampoco se puede probar:

Sleep() function does not suspend execution of the Expert Advisor in the Strategy Tester.

Pero al menos es más fácil de implementar:

int a;

void OnTick()
{
   a = 1;
   Print(a);
   Sleep(60000);
}
 
Luis Fernando:

Señores
El ejmplo es muy sencillo, pero la resolución debe ser compleja

Asesor Experto - Código

//------------------------------------------------------------------------------------------------
int a;
int OnInit()
  {
   EventSetTimer(60);
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
   EventKillTimer();
  }
void OnTick()
  {
🔵    a=1; // Aquí pongo el punto de debug del compilador, pero no pasa por este punto. Simplifiqué la opción, porque no pasa nunca
  }
//------------------------------------------------------------------------------------------------

Muchas gracias

Cuando agregas la función 

EventSetTimer(60);

Deberás obligatoriamente usar el: 

void OnTimer()
{
//Todo el proceso que requieras se ejecutará aquí, similar al usar OnTick().
}