Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
MQL5 Cloud Network ускоряет расчеты. Попробуй сам!
Forex Trader
114257
Forex Trader 2006.01.07 14:23 
В 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

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

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

В функции init рекомендуется производить только приготовительные операции без запросов рыночных условий. Также не нужно из init вызывать start в попытках запустить расчеты эксперта или индикатора раньше времени.
Forex Trader
114257
Forex Trader 2006.01.07 18:34  
Спасибо, а то иногда возникает сооблазн что-нибудь посчитать при инициализации.
Forex Trader
114257
Forex Trader 2006.01.09 08:28  
да.. странная фича..

приходится в старт() вставлять if(IndicatorCounted()==0) myinit();
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий