![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Это время на часах, а не дельта. Дельта=5*3600 задаётся в секундах.
И не забывайте переинициализировать StartTime новым временем, когда условие будет выполнено.
Что за ChangeChart()?
Вам выше самое простое решение посоветовали, смену периода графика, которая автоматически запускает полную инициализацию всех программ на графике, почему бы не попробовать это, прежде чем выдумывать себе новые "непреодолимые" задачи?
Достаточно просто задать период, потом обратно поменять на прежний. Или не менять, если в советнике привязка к периоду жестко задана. Но чаще всего период везде в коде пишут как PERIOD_CURRENT, а значит, надо обратно менять.
Там мультитаймфреймовый/мультивалютный советник, поэтому не требуется этого делать. Однако хотелось бы понимать, в каком месте конкретно вставлять эту функцию и как ее отработать. Т.к. если сразу же после ошибки изменять период, то успевает еще несколько итераций пройти, прежде чем сменится период/инструмент
Вставьте распринтовку в самом начале OnInit, получите по итогу только один раз нулевой test.
Вызов OnInit - это не перезапуск советника. До OnInit при запуске советника идет присвоение глобальных переменных/объектов. Например, в Вашем примере ДО OnInit выполняется конструктор объекта newbar.
Советникам совершенно не нужны OnInit и OnDeinit (скриптам - OnStart). Перекочевали из старого MQL4.
эт кому видимо как повезет
у меня в МТ4 и в МТ5 всё гудд
ну вставьте в самом низу OnInit() еще и OnTick() или OnStart() тогда, и будет Вам полный перезапуск советника, какие проблемы?
Насчет необходимости в OnInit() я бы сильно поспорил, т.к.. к примеру, у меня инициализация в 20 раз больше OnStart()........... и что? //не буду же я пересчитывать одни и те же параметры на каждом тике, а можно только при сбое...
Мало написать АТС, гораздо сложнее добиться надежной работы советника без вмешательства человека...
какие проблемы?
эт кому видимо как повезет
у меня в МТ4 и в МТ5 всё гудд
ну вставьте в самом низу OnInit() еще и OnTick() или OnStart() тогда, и будет Вам полный перезапуск советника, какие проблемы?
Насчет необходимости в OnInit() я бы сильно поспорил, т.к.. к примеру, у меня инициализация в 20 раз больше OnStart()........... и что? //не буду же я пересчитывать одни и те же параметры на каждом тике, а можно только при сбое...
Мало написать АТС, гораздо сложнее добиться надежной работы советника без вмешательства человека...
Вызывая DeInit и затем OnInit - вы фактически перезапускаете советник.
Это при условии что в DeInit записаны все необходимые функции. Типа обнулить и убрать все глобальные переменные, удалить все объекты на чартах ну прочее.
Это при условии что в DeInit записаны все необходимые функции. Типа обнулить и убрать все глобальные переменные, удалить все объекты на чартах ну прочее.
Если есть объекта класса, определенный на глобальном уровне, то никакая функция не сможет его уничтожить. Тоже самое касается всех static-объектов и некоторых static-переменных. В общем, нужно выгружать полностью советник и запускать его с нуля.