Загрузка индикаторов из профиля.

 

Есть какое-нибудь отличие загрузки индикатора из профиля от загрузки из навигатора или из шаблона?

У меня почему-то при загрузке из профиля не работают файловые функции в init().

Ещё есть такая функция:

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

Она вполне работает из init(). Даже возвращает номер окна при самопоиске, но не при загрузке из профиля.

Может профиль не при чём? Есть какие-нибудь ограничения?

Что-то изменил в коде, уже не помню что. Изменения не относятся  к init(). До изменений всё работало.

 

Кстати, функция "WindowFind()" теперь не работает в init(). Возвращает "-1".

Чудеса!!! Что это было?

 
Zhunko писал (а) >>

Кстати, функция "WindowFind()" теперь не работает в init(). Возвращает "-1".

Чудеса!!! Что это было?

Дежавю

 

Кое что нашёл!

Дескриптор окна равен нулю при загрузке из профиля.

//+------------------------------------------------------------------+
//|                                           CheckingDescriptor.mq4 |
//|                                               Copyright © Zhunko |
//|                                                  vadim@zhunko.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © Zhunko"
#property link      "vadim@zhunko.ru"
 
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void init()
 {
  Comment ("Descriptor = ", WindowHandle (Symbol(), Period()));
 }
//-------------------------------------------------------------------
Этот индикатор всегда показывает ноль при загрузке из профиля.
 

Вот ещё вариант. Он показывает, что дескриптор окна не появляется даже в фукции "start()" на первом тике!!!

На втором появляется.

За одно показывает, что у функции "WindowFind ()" не предусмотрено возвращение номера основного окна.

Она постоянно возвращает "-1".

//+------------------------------------------------------------------+
//|                                           CheckingDescriptor.mq4 |
//|                                               Copyright © Zhunko |
//|                                                  vadim@zhunko.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © Zhunko"
#property link      "vadim@zhunko.ru"
 
#property indicator_chart_window
int i = 0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void init()
 {
  IndicatorShortName ("CheckingDescriptor");
 }
void start()
 {
  i++;
  int Window = WindowFind ("CheckingDescriptor");
  if (i == 1) Comment ("Window = ", Window, "\nWindowDescriptor = ", WindowHandle (Symbol(), Period()));
 }
//-------------------------------------------------------------------
 

Метаквоты молчат...

Может кто-нибудь знает, как отличить загрузку из профиля от загрузки из шаблона и от загрузки из навигатора?

Как понять откуда был загружен индикатор?

 

:-(

Может кто-нибудь из Метаквотов ответит?

 
Zhunko писал (а) >>

Кое что нашёл!

Дескриптор окна равен нулю при загрузке из профиля.

Этот индикатор всегда показывает ноль при загрузке из профиля.


При загрузке из профиля о вновь созаднном окне еще ничего не известно, и поэтому возвращается нулевой дескриптор на текущее окно.

 

Спасибо. Понятно.

Может, всё-таки, доделаете функцию "WindowFind ()"?

Весьма криво работает. Нужная функция. Много проблем решает. Но воспользоваться невозможно ей. Там, где она нужна, она не работает. Например в init(). Чтобы показывала номер окна без зависимости от количества в нём индикаторов.

Вот теперь при загрузке из профиля ещё новые проблемы...

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