Как работать в режиме OnTimer() ?

 

Здравствуйте, уважаемые!

Как правильно запустить советник с функцией OnTimer() ?

Цель: нужно, чтобы советник не обращал внимания на тики (их в моем случае нет, ренко-график) и работал по таймеру, допустим, раз в секунду.

Код, который должен работать:

#property copyright "Copyright 2017"
#property link      ""
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   EventSetTimer(60);
      
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();
      
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   Print("I'm working"); // ВОТ ЭТО НЕ ПЕЧАТАЕТСЯ, ПО КРАЙНЕЙ МЕРЕ В ТЕСТЕРЕ СТРАТЕГИЙ.
  }

Все сделано в соответствии с документацией. Может быть, для запуска OnTimer() тоже нужны тики?

Прошу знающих людей откликнуться. Заранее спасибо!

 
Evgeniy Zhdan:

Здравствуйте, уважаемые!

Как правильно запустить советник с функцией OnTimer() ?

Цель: нужно, чтобы советник не обращал внимания на тики (их в моем случае нет, ренко-график) и работал по таймеру, допустим, раз в секунду.

Код, который должен работать:

Все сделано в соответствии с документацией. Может быть, для запуска OnTimer() тоже нужны тики?

Прошу знающих людей откликнуться. Заранее спасибо!

Возможно это проблема частного характера. Сейчас проверил, и с визуализацией и без, таймер работает.
 

При EventSetTimer(60) функция OnTimer()  будет запускаться один раз в минуту

 
Evgeniy Serov:

При EventSetTimer(60) функция OnTimer()  будет запускаться один раз в минуту


И что?

 

Evgeniy Zhdan:

Код, который должен работать:

Он и будет работать , как на обычных так и на ренко графиках. В тестере OnTimer() не работает.


 
Alexey Viktorov:
Возможно это проблема частного характера. Сейчас проверил, и с визуализацией и без, таймер работает.

У меня не хочет. Win 8, все стандартно.

 
Sergey Kolemanov:

Он и будет работать , как на обычных так и на ренко графиках. В тестере OnTimer() не работает.



Как же тогда Alexey Viktorov проверил с визуализацией и без?

 
Sergey Kolemanov:

Он и будет работать , как на обычных так и на ренко графиках. В тестере OnTimer() не работает.



И точно. На оффлайн графике работает. Спасибо)

 
Evgeniy Zhdan:

И точно. На оффлайн графике работает. Спасибо)


Только обязательно в OnTimer() делай обновление данных чтобы работал ваш код.

void OnTimer()
  {
   RefreshRates();
//-------- далее ваш код -----------
  

  }
 

для тестера, в онтик, добавляем:

if (IsTesting()) OnTimer();

и всё работает)

 
Taras Slobodyanik:

для тестера, в онтик, добавляем:

и всё работает)


) Спасибо, не знал. И в справке об этом ни слова...

Причина обращения: