Нужно остановить советник после просадки, не удаляя его с графика, а потом возобновить его работу нажав на ОК в окне запуска.
Останавливаю работу советника, устанавливаю значение флага Stop = true и в начале OnTick() пишу условие:
if (Stop) return;
Соответственно для возобновления работы советника в OnInit() устанавливаю значение флага Stop = false.
В МТ4 это работало, насколько я помню.
Но В МТ5 обнаружила, что если просто нажать на OK в окне запуска советника, не меняя его параметры, то функция OnInit() не вызывается и соответсьвенно флаг Stop остается равным true.
Не могу понять, как в МТ5 возобновить работу советника, не меняя его параметры, а просто нажав на OK. Был перерыв в программировании на MQL, не могу сообразить )
Буду благодарна за подсказку )
А переменная Stop откуда принимает значение? Если из input переменных, то меняя это значение OnInit выполняется. Уточните что откуда и куда…
Пока вижу только один способ возобновления работы советника - добавить кнопку на гафик
вариант:
при достижении просадки советник всё закрывает, кричит алертом и вызывает ExpertRemove.
возобновление работы потребует повторного вдумчивого запуска со стороны владельца.
минус решения : не пройдёт авто-тестирования в маркете.
а вообще с "кнопкой" правильнее.
Пока вижу только один способ возобновления работы советника - добавить кнопку на гафик
Уже же есть такая кнопка - называется Разрешить автоторговлю на конкретном графике. В MQL5 коде советник может (а в принципе - должен) проверять эту опцию MQL_TRADE_ALLOWED - её вставить вместо проверки if(Stop).
Проблема в том, что при повторной активизации советника c теми же параметрами OnInit() не вызывается. Если просто нажать OK, не меняя параметры. Я почему то считала, что в этом случае вызывается OnInit()

- www.mql5.com
Попробую, спасибо

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Нужно остановить советник после просадки, не удаляя его с графика, а потом возобновить его работу нажав на ОК в окне запуска.
Останавливаю работу советника, устанавливаю значение флага Stop = true и в начале OnTick() пишу условие:
if (Stop) return;
Соответственно для возобновления работы советника в OnInit() устанавливаю значение флага Stop = false.
В МТ4 это работало, насколько я помню.
Но В МТ5 обнаружила, что если просто нажать на OK в окне запуска советника, не меняя его параметры, то функция OnInit() не вызывается и соответсьвенно флаг Stop остается равным true.
Не могу понять, как в МТ5 возобновить работу советника, не меняя его параметры, а просто нажав на OK. Был перерыв в программировании на MQL, не могу сообразить )
Буду благодарна за подсказку )