Работа init() при перекомпиляции индикатора

 
В init() индикатора присутствует строка
  Print("При работе init() индикатора значение Bars: ", Bars);

Индикатор прикрепляется к графику, затем(не удаляясь) перекомпилируется. Вот лог:

14:06:53 Indicator EURUSD,M1: loaded successfully
14:06:55 Indicator EURUSD,M1: При работе init() индикатора значение Bars: 27066
14:06:55 Indicator EURUSD,M1: initialized
14:07:27 Indicator EURUSD,M1: deinitialized
14:07:27 Indicator EURUSD,M1: loaded successfully
14:07:27 Indicator EURUSD,M1: При работе init() индикатора значение Bars: 0
14:07:27 Indicator EURUSD,M1: initialized

Это так и должно быть?

 
Да.
В блоке инициализации вообще не рекомендуется работать с "рыночным окружением". Инициализация может происходить на пустом, не загруженном графике, без цен bid/ask, вообще на пустом месте. Только при штатном вызове функции start можно быть уверенным, что рыночное окружение нормальное.

В функции init рекомендуется производить только приготовительные операции без запросов рыночных условий. Также не нужно из init вызывать start в попытках запустить расчеты эксперта или индикатора раньше времени.
 
Спасибо, а то иногда возникает сооблазн что-нибудь посчитать при инициализации.
 
да.. странная фича..

приходится в старт() вставлять if(IndicatorCounted()==0) myinit();
Причина обращения: