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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Evgeniy Zhdan
16137
Evgeniy Zhdan  

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

Как правильно запустить советник с функцией 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() тоже нужны тики?

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

Alexey Viktorov
25764
Alexey Viktorov  
Evgeniy Zhdan:

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

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

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

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

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

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

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

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

Evgeniy Zhdan
16137
Evgeniy Zhdan  
Evgeniy Serov:

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


И что?

Sergey Kolemanov
1015
Sergey Kolemanov  

Evgeniy Zhdan:

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

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


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

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

Evgeniy Zhdan
16137
Evgeniy Zhdan  
Sergey Kolemanov:

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



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

Evgeniy Zhdan
16137
Evgeniy Zhdan  
Sergey Kolemanov:

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



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

Sergey Kolemanov
1015
Sergey Kolemanov  
Evgeniy Zhdan:

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


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

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

  }
Taras Slobodyanik
36387
Taras Slobodyanik  

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

if (IsTesting()) OnTimer();

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

Sergey Kolemanov
1015
Sergey Kolemanov  
Taras Slobodyanik:

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

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


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

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий