Разработчики, расскажите как работает функция старт

 
Отрабатывается она на каждом тике, это ясно. А если она не доработала (допустим много расчетов) и пришел новый тик, что будет? Терминал будет ждать когда закончится работа функции от предыдущего тика, или предыдущий процесс будет прекращен и сразу начнется вычисление на новом тике, или сразу начнется вычисление на новом тике, но незаконченный процесс от предыдущего тика будет ждать возможности завершить вычисления? Как на самом деле?
 
На самом деле тик запустит только тот старт, кот. к моменту тика уже достиг своего оператора return.
Это обстоятельство позволило мне построить эксперт, с зацикленным кодом внутри функции старт. Однажды попав в цикл, упраление никогда не передаётся наружу. И всё работает.
 
ААААА!!!! Понял! Даже если Старт запустится один раз и не завершится, он все равно будет получать последнюю цену. Вот в чем фишка:-) Т.е. Bid, Ask, Close[0] и т.п. будут те которые есть на самом деле, а не те которые были на момент запуска функции старт? Правильно?
 
А почему самому не проверить? И нам рассказать, я вот не уверен, а проверять лень :)
 
ААААА!!!! Понял! Даже если Старт запустится один раз и не завершится, он все равно будет получать последнюю цену. Вот в чем фишка:-) Т.е. Bid, Ask, Close[0] и т.п. будут те которые есть на самом деле, а не те которые были на момент запуска функции старт? Правильно?

Будет получать последнюю цену, если его хорошо поппросить, а именно - использовать RefreshRates();
Если этого не делать, то Bid, Ask, Close[0] и т.п. будут не обновлёнными. Эксперт забуксует.
 
Зато MarketInfo( Symbol(), MODE_BID ) даст свежую информацию ;) Без рефреша
Причина обращения: