Как в MQL5 сделать возобновление работы советника после паузы?

 

Нужно остановить советник после просадки, не удаляя его с графика, а потом возобновить его работу нажав на ОК в окне запуска.

Останавливаю работу советника, устанавливаю значение флага Stop = true и в начале OnTick() пишу условие:

if (Stop) return;

Соответственно для возобновления работы советника в OnInit() устанавливаю значение флага  Stop = false. 

В МТ4 это работало, насколько я помню.

Но В МТ5 обнаружила, что если просто нажать на OK в окне запуска советника, не меняя его параметры, то функция OnInit() не вызывается и соответсьвенно флаг Stop остается равным true.

Не могу понять, как в МТ5 возобновить работу советника, не меняя его параметры, а просто нажав на OK. Был перерыв в программировании на MQL, не могу сообразить )

Буду благодарна за подсказку ) 

 
Elena Baranova:

Нужно остановить советник после просадки, не удаляя его с графика, а потом возобновить его работу нажав на ОК в окне запуска.

Останавливаю работу советника, устанавливаю значение флага Stop = true и в начале OnTick() пишу условие:

if (Stop) return;

Соответственно для возобновления работы советника в OnInit() устанавливаю значение флага  Stop = false. 

В МТ4 это работало, насколько я помню.

Но В МТ5 обнаружила, что если просто нажать на OK в окне запуска советника, не меняя его параметры, то функция OnInit() не вызывается и соответсьвенно флаг Stop остается равным true.

Не могу понять, как в МТ5 возобновить работу советника, не меняя его параметры, а просто нажав на OK. Был перерыв в программировании на MQL, не могу сообразить )

Буду благодарна за подсказку ) 

А переменная Stop откуда принимает значение? Если из input переменных, то меняя это значение OnInit выполняется. Уточните что откуда и куда…

 
Alexey Viktorov #:

А переменная Stop откуда принимает значение? Если из input переменных, то меняя это значение OnInit выполняется. Уточните что откуда и куда…

В OnInit()  Stop задаю равным false. 

 
Elena Baranova #:

В OnInit()  Stop задаю равным false. 

Проблема в том, что при повторной активизации советника c теми же параметрами OnInit() не вызывается. Если просто нажать OK, не меняя параметры. Я почему то считала, что в этом случае вызывается OnInit()


 

Пока вижу только один способ возобновления работы советника - добавить кнопку  на гафик

 
Elena Baranova #:

Пока вижу только один способ возобновления работы советника - добавить кнопку  на гафик

Я делал вот так:


 

вариант:

при достижении просадки советник всё закрывает, кричит алертом и вызывает ExpertRemove.

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

минус решения : не пройдёт авто-тестирования в маркете. 

а вообще с "кнопкой" правильнее.

 
Elena Baranova #:

Пока вижу только один способ возобновления работы советника - добавить кнопку  на гафик

Уже же есть такая кнопка - называется Разрешить автоторговлю на конкретном графике. В MQL5 коде советник может (а в принципе - должен) проверять эту опцию MQL_TRADE_ALLOWED - её вставить вместо проверки if(Stop).

 
Elena Baranova #:

Проблема в том, что при повторной активизации советника c теми же параметрами OnInit() не вызывается. Если просто нажать OK, не меняя параметры. Я почему то считала, что в этом случае вызывается OnInit()


Попробуйте.
Документация по MQL5: Общие функции / MessageBox
Документация по MQL5: Общие функции / MessageBox
  • www.mql5.com
MessageBox - Общие функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin #:
Попробуйте.

Попробую, спасибо

 
Всем Спасибо за советы