Время работы советника

Время работы или как сделать паузу в работе советника для MT4

Время

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

Итак, внешние параметры:

input bool   p           = false; // задействовать паузу или нет
input string TimeStart   = "0:00"; // время старта паузы
input string TimeEnd     = "0:00"; // конец паузы

Формат: ЧАС:МИНУТЫ.

В OnTick() советника объявляем две переменные типа datetime:

datetime StartPause,EndPause;

Далее, переводим строки TimeStart и TimeEnd в формат datetime:

StartPause = StrToTime(TimeStart);  
EndPause   = StrToTime(TimeEnd);

Далее сам код паузы:

if((p && StartPause < EndPause && (TimeCurrent() > StartPause &&  TimeCurrent() < EndPause)))
{
            Comment("Пауза в работе советника");
            return;
}

if((p && StartPause > EndPause && (TimeCurrent() > StartPause ||  TimeCurrent() < EndPause)))
{
            Comment("Пауза в работе советника");
            return;
}

Как видно, здесь 2 вида паузы:

  1. Когда время Начала паузы МЕНЬШЕ времени КОНЦА паузы, т.е. когда паузу не надо переносить через полночь.
  2. Когда время Начала паузы БОЛЬШЕ времени КОНЦА паузы, т.е. когда паузу надо переносить через полночь.

Данная конструкция работает прекрасно и корректно. Конечно, есть и другие способы реализации паузы в торговых экспертах, но, я пользуюсь такой. Всем добра.


Поделись с друзьями:

Один комментарий на “Время работы советника

  1. Евгений

    Отлично, просто и понятно.
    Именно такую реализацию контроля времени искал для своего советника.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *