следом поставьте return
Возникает в связи с этим вопрос - как должна в терминале отрабатываться команда "ExpertRemove()"? Должна ли работа программного кода прерываться немедленно, или должен отработаться весь текущий цикл "OnTick()", а только на следующем после этого новом тике выполниться выгрузка советника? Или ещё какой-то вариант ?
Из документации:
Остановка эксперта не происходит немедленно при вызове функции ExpertRemove(), производится лишь взвод флага для прекращения работы эксперта. Т.е., любое следующее событие эксперт обрабатывать уже не будет, произойдет вызов OnDeinit() и выгрузка с удалением с графика.
Поэтому да, если ExpertRemove() вызван из "OnTick()" весь текущий цикл "OnTick()" будет все равно пройден до конца, если не выйти принудительно раньше.
Из документации:
Поэтому да, если ExpertRemove() вызван из "OnTick()" весь текущий цикл "OnTick()" будет все равно пройден до конца, если не выйти принудительно раньше.
Спасибо. Чё-то я (наверно ночь тому причина) провтыкал и не смог сам в документации этого увидеть...
И таки рекомендация Alexander Bereznyak помогла разрулить проблему.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
При прогоне в тестере после наступления заданного условия в журнале наблюдаю:
RF 3 01:44:07.861 Core 1 2016.01.04 13:57:51 ExpertRemove() function called
После чего советник успевает совершить торговую операцию и только после этого выдаёт в журнале:
QH 2 01:44:07.861 Core 1 removed itself within OnTick
Возникает в связи с этим вопрос - как должна в терминале отрабатываться команда "ExpertRemove()"? Должна ли работа программного кода прерываться немедленно, или должен отработаться весь текущий цикл "OnTick()", а только на следующем после этого новом тике выполниться выгрузка советника? Или ещё какой-то вариант ?