Что подставить вместо if(stop_expert == 1) return;
if(stop_expert == 1) return INIT_FAILED;Только это не перезапуск, выгрузка. Потом пользователь пусть сам снова запускает.
Только это не перезапуск, выгрузка. Потом пользователь пусть сам снова запускает.
Так не нужно. А что нельзя сделать, чтобы он сначала начал обработку событий?
К примеру нам не удалось получить некоторые значения и дальше советнику нет смысла выполняться. Надо чтобы он перезпустился и попытался снова.
Так если "нет смысла", то зачем пытаться? Что изменится от повторного расчета одних и тех же данных.
Теоретически можно зациклить эту функцию. Но практически делать такое не рекомендуется. На то это и инициализация. К примеру, ждать каких-то данных по ценам здесь не стоит. Такое переносится в OnTick() или OnTimer().
Господа экстрасенсы! Не отклоняемся от темы. Вопрос сформулирован достаточно ясно:
"Что подставить вместо if(stop_expert
== 1) return;"
Надо OnInit() переименовать, подшаманить чтобы возвращала truer/false, и вызывать ее из OnTick(). Еще переменная bool потребуется, если она false, то функция вызывается, как только функция вернула true, то переменной присваивается true и функция больше не будет вызываться.
void OnTick(){ if(!strt){ if(MyOnInit()){ strt=true; } else{ return; } } ... }
Надо OnInit() переименовать, подшаманить чтобы возвращала truer/false, и вызывать ее из OnTick(). Еще переменная bool потребуется, если она false, то функция вызывается, как только функция вернула true, то переменной присваивается true и функция больше не будет вызываться.
Надо OnInit() переименовать, подшаманить чтобы возвращала truer/false, и вызывать ее из OnTick(). Еще переменная bool потребуется, если она false, то функция вызывается, как только функция вернула true, то переменной присваивается true и функция больше не будет вызываться.
по идее можно-же и не переименовывать.. int OnInit() он и есть рядовая функция, но заодно и точка входа...
/// внутри OnTick()
if (OnInit()!=INIT_SUCCESSFULL) ExpertRemove();
else return;
только в самом OnInit() надо корректно всё инициализовать и помнить про RemoveReason
Специалисты, помогите пожалуйста. Как перезапустить советник с помощью функции? Нужно стобы при определенном значении переменной, сова начинала работать сначала.
Что подставить вместо if(stop_expert == 1) return;
Вот что у нас есть
Вместо return укажите код, приводящий к аварийному завершению советника и его рестарту. Это не сложно.
Специалисты, помогите пожалуйста. Как перезапустить советник с помощью функции? Нужно стобы при определенном значении переменной, сова начинала работать сначала.
Что подставить вместо if(stop_expert == 1) return;
Вот что у нас есть
какой то не верный код у Вас, т.к. инициализация не произойдет а советник все равно работать будет ......
советник можно перезапустить путем вызова OnInit из тела OnTick при некотором условии
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Специалисты, помогите пожалуйста. Как перезапустить советник с помощью функции? Нужно стобы при определенном значении переменной, сова начинала работать сначала.
Что подставить вместо if(stop_expert == 1) return;
Вот что у нас есть