Странно функция ExpertRemove не останавливает работу скрипта

 

if (Percent > 10)  {                     // Задано ошибочно ..

          ExpertRemove();                   

          Print("Превышен максимальный процент риска");

           Message("Превышен максимальный процент риска");

           }

 if (screenshot)fscreen(); // разве может выполнятся этот кусок кода, после вызова функции ExpertRemove();    

 

 

Хоть и выполняется функция ExpertRemove. скрипт успевает выполнить следуюшие  за ним функции. Вроде должно событие прекрашение, работы скрипта произойти или я чего то не понял.

 
subutai:

if (Percent > 10)  {                     // Задано ошибочно ..

          ExpertRemove();                   

          Print("Превышен максимальный процент риска");

           Message("Превышен максимальный процент риска");

           }

 if (screenshot)fscreen(); // разве может выполнятся этот кусок кода, после вызова функции ExpertRemove();    

 

 

Хоть и выполняется функция ExpertRemove. скрипт успевает выполнить следуюшие  за ним функции. Вроде должно событие прекрашение, работы скрипта произойти или я чего то не понял.

функция должна закончить свою работу. Команда на завершение работы советника отправлена
 
Vinin:
функция должна закончить свою работу. Команда на завершение работы советника отправлена
Но скрин шоты, появляются хоть и скрипт останавливает работу.
 
Vinin:
функция должна закончить свою работу. Команда на завершение работы советника отправлена
А вы имеете ввиду функцию Start но в теле функции есть куски кода, не только со скрин шотом, и они нормально после команды ExpertRemove();    не выполняются.         
 

Вы документацию читали?

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

 
stringo:

Вы документацию читали?


Ну да что то я не до глядел. Но вот в чем еще большая странность уже как 3 года пользуюсь этой функцией, для остановки работы скрипта, все как часы  скрипт открывал позицию, только когда когда были условия. Хотя функция открытия позиции в теле есть.
 
Vinin:
функция должна закончить свою работу. Команда на завершение работы советника отправлена

Довьте return  и будет OK, вот так, например:

if (Percent > 10)  {                     // Задано ошибочно ..

          ExpertRemove();                   

          Print("Превышен максимальный процент риска");

           Message("Превышен максимальный процент риска");

return(0);  

           }

 if (screenshot)fscreen(); // разве может выполнятся этот кусок кода, после вызова функции ExpertRemove();