_UninitReason и UninitializeReason() в индикаторах.

 
Почему _UninitReason и UninitializeReason() в событии OnInit() индикатора всегда возвращает 0 независимо от причины деинциализации?
 
Ivan Titov:
Почему _UninitReason и UninitializeReason() в событии OnInit() индикатора всегда возвращает 0 независимо от причины деинциализации?
Почитайте справку об этом. 
 
Artyom Trishkin #:
Почитайте справку об этом. 

Читал, разумеетя, потому и спрашиваю. Нет ничего про то, что это не работает в индикаторах.

 
Ivan Titov #:

Читал, разумеетя, потому и спрашиваю. Нет ничего про то, что это не работает в индикаторах.

Т. е. мне нужно для Вас найти? 
Индикаторы всегда выгружаются и запускается новый экземпляр. 
 
Artyom Trishkin #:
Индикаторы всегда выгружаются и запускается новый экземпляр.

Что это, где Вы для меня это нашли, а главное зачем? Вопрос был другой.

 
Ivan Titov:
Почему _UninitReason и UninitializeReason() в событии OnInit() индикатора всегда возвращает 0 независимо от причины деинциализации?

При каком сценарии видится правильным ненулевое значение в OnInit?

 
fxsaber #:

При каком сценарии видится правильным ненулевое значение в OnInit?

При любом из этих:



 
Ivan Titov #:

При любом из этих:

Но эти события не наступают во время выполнения OnInit.

 
fxsaber #:

Но эти события не наступают во время выполнения OnInit.

Почему должны?

 
Ivan Titov #:

При любом из этих:



Не так давно я перечитывал обсуждение последовательности выполнения OnInit и OnDeinit в индикаторах. Обсуждение длинное, не всегда понятное, но в каждом сообщении Славы, кажется он участвовал в этом обсуждении, звучало именно то, что сказал Артём. При любой причине деинициализации, загружается новый индикатор который ничего не знает о существовании какого-то «родственника». И последовательность выполнения, для меня так и осталось тайной, в каких-то случаях выгружается «родственник», а потом загружается новорожденный, а в каких-то наоборот. Сначала новый, а потом выгружается «убитый».

 
Ivan Titov #:

Почему должны?

В MT5-индикаторах OnInit не может вызваться повторно.

#property indicator_chart_window
#property indicator_plots 0

void OnInit()
{
  static int i = 0;

  Print(__FUNCSIG__ + ": " + (string)i++);
}

int OnCalculate( const int rates_total, const int, const int, const double &[] )
{
  return(rates_total);
}
Даже если меняете счет без смены символа.