Почему советник запускается повторно после ExpertRemove() ?

 

Почему советник запускается повторно после ExpertRemove() ?

 Всем привет. Ситуация такая. Открываюсь не кнопкой buy/sell, а простым советником с целью поймать лучший спрэд.

В конце советника использую функцию ExpertRemove ("Прекращает работу эксперта и выгружает его с графика" - по документации). Советник успешно выгружается с графика и действительно ничего больше не делает.

 Однако, если закрыть MT4, а потом запустить опять, то иногда (вроде бы не всегда), советник опять автоматически загружается и открывает позицию, не смотря на то, что я его к графику не присоединял.

Что нужно сделать, чтобы не было неразрешенной мной загрузки советника после старта терминала? Ниже исходник и скриншоты вкладок терминала "Эксперты" и "История счёта".

----------------

input int Best_Spread = 12;

input double Lots = 0.01;

bool opensell;

void OnTick()

{

if (Best_Spread >= MarketInfo(Symbol(),MODE_SPREAD))

  {opensell=OrderSend(Symbol(), OP_SELL, Lots, Bid, 0, Ask+200*Point, Bid-200*Point, " ", 111, 0, Red);

  ExpertRemove();

}

 
sdm02808:

Почему советник запускается повторно после ExpertRemove() ?

 Всем привет. Ситуация такая. Открываюсь не кнопкой buy/sell, а простым советником с целью поймать лучший спрэд.

В конце советника использую функцию ExpertRemove ("Прекращает работу эксперта и выгружает его с графика" - по документации). Советник успешно выгружается с графика и действительно ничего больше не делает.

 Однако, если закрыть MT4, а потом запустить опять, то иногда (вроде бы не всегда), советник опять автоматически загружается и открывает позицию, не смотря на то, что я его к графику не присоединял.

Что нужно сделать, чтобы не было неразрешенной мной загрузки советника после старта терминала? Ниже исходник.


После ExpertRemove() надо добавить return().

И читать справку не по диагонали, там написано. 

Для публикации кода есть кнопочка SRC на верхней панели редактирвания сообщения.
 
Припоминаю, что, когда мне надо было, чтобы при перезапуске терминала эксперт и скрипт сразу самостоятельно появлялись на графике, я указывал их то ли в шаблоне графика, то ли в файле конфигурации при старте (там, где можно задать логин и пароль к счету). Может быть, у Вас там где-нибудь указано именно так?
 
Vitalie Postolache:

После ExpertRemove() надо добавить return().

И читать справку не по диагонали, там написано. 

Для публикации кода есть кнопочка SRC на верхней панели редактирвания сообщения.

Остановка эксперта не происходит немедленно при вызове функции ExpertRemove(), производится лишь взвод флага для прекращения работы эксперта. Т.е., любое следующее событие эксперт обрабатывать уже не будет, произойдет вызов OnDeinit() и выгрузка с удалением с графика.  

А на счет шаблона, то это скорее всего так и есть, другого объяснения этому не находятся...

Причина обращения: