Как проверить наличие индикатора в главном окне ?!

 

Наткнулся на непонятную ситуацию: присоединяю индикатор в главное окно и потом в скрипте пытаюсь проверить его наличие (например, чтобы получить с него данные).

Читаю документацию:

void IndicatorShortName( string name)
Установка "короткого" имени пользовательского индикатора для отображения в подокне индикатора и в окне DataWindow.

int WindowFind( string name)
Возвращает номер подокна графика, содержащего индикатор с указанным именем name, если он найден, иначе возвращается -1.
WindowFind() возвращает -1, если пользовательский индикатор ищет сам себя в процессе инициализации init().

и (вроде) делаю все по ней:

#property indicator_chart_window
#property indicator_buffers 1
#define _indictorName_ "NameToFind"
#define _labeName_ "LabelToFind"

double iBuf[];
int init()
{
  IndicatorBuffers(1);
  SetIndexBuffer(0,iBuf);
  IndicatorShortName(_indictorName_);
  // SetIndexLabel(0,_labeName_);
  iBuf[0]=0.5;
}  

int start()
{
  iBuf[0]=0.5;
}

и скрипт проверяющий его наличие:

#define _indictorName_ "NameToFind"
#define _labeName_ "LabelToFind"

int start()
{
  Print(WindowFind(_indictorName_));
  Print(WindowFind(_labeName_));
}

ожидаю увидеть хоть один 0 как признак того что индикатор обнаружен в главном окне, но вместо этого получаю две -1 - т.е. индикатор не находится никак :(


ну и теперь subj собственно: Как проверить наличие индикатора в главном окне ?! (без установки в индикаторе глобальных переменных, как маркера наличия индикатора, и использования их в скрипте).

Файлы:
codes.zip  1 kb
 
Тоже сегодня наткнулся на такое. WindowFind() не находит окно, если индикатор на графике.
 

трудности с главным окном были давно, я определял индикаторы в подокнах, но в главном окне не распознавалась обыкновенная МА,
'Грaфические ордера == метаязык графических линий - торговых приказов, доработка советника GTerminal'
т.е. беру МА без ее поиска, но индикаторы в подокнах с поиском.

...
MQ по этому вопросу никто не беспокоил, а вообще - надо бы.

string s="Bar Timer[1]";
string s2="Moving Average (14)";
string s3="StdDev(20)";
string s4="Bolinger Bands (20)";
WindowRedraw();
Print(WindowFind(s));
Print(WindowFind(s2));
Print(WindowFind(s3));
Print(WindowFind(s4));