Ошибка в функции WindowFind().

 
Вопрос №1 к Метаквотам.
При загрузке индикатора, предназначенного для работы в отдельном окне, в подокно основного графика функция WindowFind() возвращает правильное значение только в старте.
"-1" в ините и значение соответствующее индексу подокна в старте.
Это так и должно быть?
======
Вопрос №2 к Метаквотам.
При загрузке индикатора, предназначенного для работы в отдельном окне, в подокно графика №1 и более функция WindowFind() возвращает значение "-1" в ините и в старте.
Это так и должно быть?
======
Ниже код, с помощью, которого это можно проверить.
//+------------------------------------------------------------------+
//|                                        Checking_WindowFind().mq4 |
//|                      Copyright © 2006, MetaQuotes Software Corp. |
//|                                        https://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link      "https://www.metaquotes.net/"
 
#property indicator_separate_window
//----
int    window_init;
int    window_start;
string name = "Checking_WindowFind()";
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorShortName (name);
   window_init = WindowFind (name);
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   window_start = WindowFind (name);
   Comment ("window_init = ", window_init, "\nwindow_start = ", window_start);
   return(0);
  }
//+------------------------------------------------------------------+
 
1. по логике надо чтобы в ините правильно имя своего окна (только что назначенного в самом ините) опознавало. будем исправлять.
2. так и должно быть. владельцем окна является первый индикатор, создавший окно.
 
Спасибо!
 
Renat:
2. так и должно быть. владельцем окна является первый индикатор, создавший окно.
Может быть сделать так, чтобы WindowFind() определяла номер подокна в любом случае?
Ведь в любое дополнительное подокно может быть загружено несколько индикаторов.
 

Индикатор вставляется в список индикаторов только после того, как он удачно проинициализирован. Для пользовательского индикатора в процессе инициализации участвует функция init.

Так как индикатор во время выполнения функции init ещё не внесён в список, то и WindowFind возвращает -1 (если это первый индикатор в подокне). А если не первый, то всё равно нет возможности определить его присутствие именно в этом списке.

Здесь можно провести аналогию с объектами в C++. Пока объект не сконструирован, он не считается полноценным. Функция init - это аналог конструктора.

Причина обращения: