Вопрос таков: Как эксперт сможет опознать, что перейдя на обработку следующего бара он окажется уже обработанным?
Аналогичная ситуация возникает и при старте терминала, когда он начинает подкачивать историю start иногда не успевает доработать полностью.
Я решил проблему так: завел себе статическую переменную FullExecuteDone. В init проинитил ее значением false. В самом конце start ( перед закрывающей } ) написал FullExecuteDone=true;
Ну а внутри по коду анализирую if(FullExecuteDone).... /* хотябы раз полностью выполнилось */ else ... /* вычисления были прерваны */
Возможно есть более изящный способ, но этот мою проблему решил и я пока успокоился :)
Если с таким кодом - то перед началом цикла можно запомнить количество баров (BarsStart=Bars;) а внутри цикла проверять условие BarsStart==Bars и решать что с ними делать.
Или по другому: перед началом цикла можно запомнить время нулевого бара (BarsStartTime=Time[0];) а внутри цикла проверять условие BarsStartTime==Time[0] и решать что с ними делать.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Эксперт, установленный на минутном графике выполняет расчеты с барами. Причем расчеты занимают достаточно большое время (больше периода графика).
Примерно на середине цикла появится новый бар и произойдет смещение порядкового номера бара.
То есть когда цикл перейдет на новую итерацию, то бар окажется тем же, что обработался на предыдущей итерации.
Вопрос таков: Как эксперт сможет опознать эту ситуацию?