
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Уже же есть такая кнопка - называется Разрешить автоторговлю на конкретном графике. В MQL5 коде советник может (а в принципе - должен) проверять эту опцию MQL_TRADE_ALLOWED - её вставить вместо проверки if(Stop).
Это просто опция проверки, с помощью нее никак нельзя приостановить, а потом возобновить работу советника из кода.
Можно добавить параметр-плацебо, к-рый ничего не значит и ни на что не влияет. Если нужно переинициализировать советник, то меняем значение этого параметра в настройках... Но имхо самый изящный способ подсказал выше Артём, с диалоговым окном.
Я рассмотрела этот вариант. Но заказчику надо, чтобы торговля советником просто останавливалась при просадке и потом через какое то время можно было ее продолжить. Получется, что все это время диалоговое окно должно быть открыто. Мне кажется изящнее просто добавить кнопу на график и по событию нажатия кнопки возобновлять торговлю советником.
Сейчас сделала так, что советник просто удаляется с графика после просадки, что тоже не самый изящный вариант )
Я рассмотрела этот вариант. Но заказчику надо, чтобы торговля советником просто останавливалась при просадке и потом через какое то время можно было ее продолжить. Получется, что все это время диалоговое окно должно быть открыто. Мне кажется изящнее просто добавить кнопу на график и по событию нажатия кнопки возобновлять торговлю советником.
Сейчас сделала так, что советник просто удаляется с графика после просадки, что тоже не самый изящный вариант )
Потом вариант с кнопкой будет работать и в Тестере в визуальном режиме, если я не ошибаюсь, а вариант с диалоговым окном -нет
Можно добавить параметр-плацебо, к-рый ничего не значит и ни на что не влияет. Если нужно переинициализировать советник, то меняем значение этого параметра в настройках... Но имхо самый изящный способ подсказал выше Артём, с диалоговым окном.
MessageBox это самый дерьмовый вариант из всего спектра возможных
его вообще можно использовать только в Services и только под подписку "осведомлены о последствиях"
MessageBox это самый дерьмовый вариант из всего спектра возможных
его вообще можно использовать только в Services и только под подписку "осведомлены о последствиях"
В целом вы правы, но учитывая это
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Как в MQL5 сделать возобновление работы советника после паузы?
Elena Baranova, 2023.11.07 16:16
Нужно остановить советник после просадки, не удаляя его с графика, а потом возобновить его работу нажав на ОК в окне запуска.
Останавливаю работу советника, устанавливаю значение флага Stop = true и в начале OnTick() пишу условие:
if (Stop) return;
Соответственно для возобновления работы советника в OnInit() устанавливаю значение флага Stop = false.
В МТ4 это работало, насколько я помню.
Но В МТ5 обнаружила, что если просто нажать на OK в окне запуска советника, не меняя его параметры, то функция OnInit() не вызывается и соответсьвенно флаг Stop остается равным true.
Не могу понять, как в МТ5 возобновить работу советника, не меняя его параметры, а просто нажав на OK. Был перерыв в программировании на MQL, не могу сообразить )
Буду благодарна за подсказку )
ничего страшного.
А вот если запретить открытие новых позиций\ордеров, а отслеживание или трейлинг надо оставить, то это катастрофа.
В целом вы правы, но учитывая это
ничего страшного.
А вот если запретить открытие новых позиций\ордеров, а отслеживание или трейлинг надо оставить, то это катастрофа.
MessageBox выкидывает системное окошко, и пока оно открыто советник (это отдельная нить) не получит новых сообщений OnXXX, но это не значит что их нет.
А вся система в целом (терминал) будет вынуждена эти сообщения/события к нему как-то чистить и слегка буферизовать.
---
MessageBox - удобное отладочное средство. Но в продакте его не должно быть.
Это просто опция проверки, с помощью нее никак нельзя приостановить, а потом возобновить работу советника из кода.
В зависимости от того, включена эта опция или нет, советник может включать или отключать торговлю на ходу, без всяких диалогов - и разумеется это из кода происходит, только не в OnInit, а в торговом событии (OnTick, например). Это та самая кнопка, которую вы дополнительно собираетесь делать.
Нужно остановить советник после просадки, не удаляя его с графика, а потом возобновить его работу нажав на ОК в окне запуска.
Останавливаю работу советника, устанавливаю значение флага Stop = true и в начале OnTick() пишу условие:
if (Stop) return;
Соответственно для возобновления работы советника в OnInit() устанавливаю значение флага Stop = false.
В МТ4 это работало, насколько я помню.
Но В МТ5 обнаружила, что если просто нажать на OK в окне запуска советника, не меняя его параметры, то функция OnInit() не вызывается и соответсьвенно флаг Stop остается равным true.
Не могу понять, как в МТ5 возобновить работу советника, не меняя его параметры, а просто нажав на OK. Был перерыв в программировании на MQL, не могу сообразить )
Буду благодарна за подсказку )
отслеживать просадку
и делов то
То есть просто не разрешать торговые операции
Зачем весь советник останавливать,? пусть работает
Флаг TRADE я обычно использую
if(TRADE==1)
{
...торговые операции
}