Мониторинг котировок

 
Пишу советника, который мониторит поступление котировок. Возник вопрос: как заставить советник проверять поступление котировок стабильно каждую минуту согласно времени на локальной машине, а не дожидаться поступления тика от инструмента, на котором был инициализирован советник. 
 
Konstantin Fedorov:
Пишу советника, который мониторит поступление котировок. Возник вопрос: как заставить советник проверять поступление котировок стабильно каждую минуту согласно времени на локальной машине, а не дожидаться поступления тика от инструмента, на котором был инициализирован советник. 

Использовать таймер. В тестере МТ4 он не работает, в МТ5 работает.

int OnInit()
{
    int reason =  UninitializeReason();
    if(reason == REASON_CHARTCHANGE || reason == REASON_TEMPLATE)
        return(INIT_SUCCEEDED);
    if(reason == REASON_PARAMETERS)
    {
        //InitParams();
        return(INIT_SUCCEEDED);                              
    }
    EventSetTimer(1);          // инициализация таймера на 1 сек
    return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason)
{
    if(reason==REASON_CHARTCHANGE || reason==REASON_TEMPLATE || reason==REASON_PARAMETERS)
        return;
    EventKillTimer();
}


void OnTimer()
{
// делаем работу
}

***

 
Konstantin Fedorov:
Пишу советника, который мониторит поступление котировок. Возник вопрос: как заставить советник проверять поступление котировок стабильно каждую минуту согласно времени на локальной машине, а не дожидаться поступления тика от инструмента, на котором был инициализирован советник. 

https://www.mql5.com/ru/code/19859

AccurateTimer
AccurateTimer
  • голосов: 15
  • 2018.02.02
  • fxsaber
  • www.mql5.com
Штатный таймер в MetaTrader 4/5 основан на вызове системного таймера, и поэтому может работать с погрешностью. Чтобы в этом убедиться, достаточно запустить простой советник: В комментарии чарта (левый-верхний угол) он показывает, как растет лаг таймера: На скриншоте видно, что всего за минуту работы секундный таймер создает лаг больше секунды...