Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
sdm02808
33
sdm02808  

Почему советник запускается повторно после 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();

}

Vitalie Postolache
12472
Vitalie Postolache  
sdm02808:

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

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

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

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

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


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

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

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

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

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

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

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

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий