Программная задержка в тестере

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

Кто-нибудь делал программную задержку для тестера, чтобы он работал более-менее плавно с разумным темпом и масштабом времени? 

По идее надо в OnTick делать паузу в зависимости от меток времени тиков и точно измеренного локального времени.

Но что-то никак не придумаю как это сделать не привлекая DLL, исключительно средствами MQL..

Может у кого-нибудть это получалось и даже код есть который не жалко ? :-) 

или по крайней мере идеи как это сделать

Mikhail Zhitnev
28021
Mikhail Zhitnev  
А если добавить холстой цикл... скажем, от 1 до миллиарда ?
Maxim Kuznetsov
13701
Maxim Kuznetsov  
Mikhail Zhitnev:
А если добавить холстой цикл... скажем, от 1 до миллиарда ?

чтобы получить "плавный ход" надо рассчитать пределы (время исполнения) холостого цикла.

Если цикл всегда одинаковый, то "дергатня" останется, тестер всё также будет то тащиться черепахой то стремительно пробегать. Разве что это будет медленнее и терминал станет менее отзывчив

очень не удобно из-за таких рывков и торможений отлаживать именно стратегию, а не просто робота. 

Igor Makanu
9909
Igor Makanu  

в MQL-программе нет времени, есть события, а что Вы будете с событием делать - обрабатывать или игнорировать, дело Ваше - исходите из этого прежде всего

если попытаться делать пропуск тиков - будет время быстро идти в тестере

если попытаться сделать сложный расчет.... или зависнет или будет некая пауза, но обязательно нужно сделать выход после такой "паузы" - тогда, думаю, будет, что то корректно работать

примерно так:

void OnTick()
{  
#define  PRG_SLEEP 5    //- это значение нужно попытаться подобрать
   static int tick_count = PRG_SLEEP;
   if(tick_count-- <=0)
   {
      tick_count = PRG_SLEEP;
   // тут сложный расчет, для имитации задержки
      return;
   }
//основной код
}
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий