При вызове iBars() начинается построение таймфрейма. Происходит это не мгновенно. С учетом этого и надо проектировать свои программы.
Про выполнение всех предварительных расчетов в ините стоит вообще забыть.
Все эти предварительные расчеты делать в OnCalculate() или OnTick(). Объявить статическую или глобальную переменную. Если она false,
делать попытки, пока не будет успешного завершение, после этого установить переменной true, чтобы больше не повторять попытки.
Если в индикаторе, то выполнять подготовительные расчет при prev_calculated=0 и возвращать 0 при неудаче, чтобы на следуем тике был повтор.При вызове iBars() начинается построение таймфрейма. Происходит это не мгновенно. С учетом этого и надо проектировать свои программы.
Про выполнение всех предварительных расчетов в ините стоит вообще забыть.
Все эти предварительные расчеты делать в OnCalculate() или OnTick(). Объявить статическую или глобальную переменную. Если она false,
делать попытки, пока не будет успешного завершение, после этого установить переменной true, чтобы больше не повторять попытки.
Если в индикаторе, то выполнять подготовительные расчет при prev_calculated=0 и возвращать 0 при неудаче, чтобы на следуем тике был повтор.Спасибо. Но вопрос: почему в советниках это происходит мгновенно? т.е. окружение уже известно
Спасибо. Но вопрос: почему в советниках это происходит мгновенно? т.е. окружение уже известно
Как-то были разговоры, что терминал ждет подготовки всего окружения, нужного для работы эксперта, а потом вызывается инит.
В МТ4 это относилось только к свойствам символа графика.
В МТ5 по работе тестера наглядно видно, что тестер сначала подгружает все требуемые данные, а потом запускается тестирование.
Значит, терминал умеет определять все данные, которые нужны для работы эксперта. Значит, и при работе на графике сначала
подгружаются все данные, а потом вызывается инит. Круто! Но не знаю, стоит ли этому доверять. В индикаторах этого точно нет.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Код банальный MQL5
Порядок действий:
Включаю терминал, запускаю ПЕРВЫЙ раз индикатор.
Внутри индикатора вызываю кусок кода, указанный выше, больше там ничего нет. Этот принт находится в OnInit. Запуск на ТФ ниже, чем D1, получаю 0.
В OnCalculate получаю сначала 0, на следующем тике нормальное значение.
В чем заключается такая особенность? Или это баг? в экспертах все сразу подтягивается.
Из-за такой штуки я не могу подготовить расчетные данные перед запуском.