В МТ4 работает, в МТ5 не хочет. Баг? Где проблема?

 

Открываем любой график, добавляем на него простейший индикатор:

#property indicator_separate_window
#property indicator_minimum 1
#property indicator_maximum 10

string short_name;

int OnInit()
  {
   Print("Инициализация");
   int i = 0;
   string tmpstr;
   while(true)
     {
      i++;
      tmpstr = "WW" + IntegerToString(i);
      Print(i + " = " + tmpstr);
      if (ChartWindowFind(0, tmpstr) == -1)
        {
         short_name = tmpstr;
         IndicatorSetString(INDICATOR_SHORTNAME, short_name);
         break;
        }
     }
   //---
   return(0);
  }

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
  {
   return(rates_total);
  }

Добавляем ещё раз - не вызывается инициализация!



Так должно быть или я туплю?

 
AlexSTAL:

Открываем любой график, добавляем на него простейший индикатор:

Добавляем ещё раз - не вызывается инициализация!


Так должно быть или я туплю?

Смотрите Технические индикаторы:

Все функции типа iMA, iAC, iMACD, iIchimoku и т.п., создают в глобальном кеше клиентского терминала копию соответствующего технического индикатора. Если копия индикатора с этими параметрами уже существует, то новая копия не создается, а увеличивается счетчик ссылок на данную копию.

Эти функции возвращают хэндл соответствующей копии индикатора. Используя этот хэндл в дальнейшем можно получать данные, рассчитанные соответствующим индикатором. Данные соответствующего буфера (технические индикаторы содержат рассчитанные данные в своих внутренних буферах, которых, в зависимости от индикатора, может быть от 1 до 5) можно копировать в mql5-программу при помощи функции CopyBuffer().


 
О как! Т.е. идентификация копий идёт только по суммарным значениям Input-переменных данного индикатора?
 
И уже давно - с самого начала.