Скачать MetaTrader 5

Прошу помощи - не смог найти в мануале

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Dmitry Belunskiy
237
Dmitry Belunskiy  

Подскажите пожалуйста, как внутри индикатора можно прочитать его маску видимости, т.е. то, на каких таймфреймах он отображается? Это нужно для своевременного изменения маски видимости у графических объектов, которые создает этот индикатор.

Заранее спасибо. Просьба сильно не ругаться, если спросил очевидное. Реально не смог найти в хэлпе

Andrew Petras
4696
Andrew Petras  
Через ObjectGetInteger
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Видимость объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Видимость объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Видимость объектов - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Dmitry Belunskiy
237
Dmitry Belunskiy  

Это понятно, здесь речь идет о свойствах (в том числе о видимости) графических объектов. Мне же нужно получить область видимости индикатора в целом, чтобы потом установить область видимости графических объектов.

Vladimir Karputov
Модератор
55819
Vladimir Karputov  
algo1111:

Это понятно, здесь речь идет о свойствах (в том числе о видимости) графических объектов. Мне же нужно получить область видимости индикатора в целом, чтобы потом установить область видимости графических объектов.

Похоже, что такие свойства для пользовательского индикатора задать нельзя:

1 

 

Но, применительно к Вашей задаче - как я понял Вы хотите вслед за индикатором  рисовать объекты?

Так как при смене периода графика для индикатора вызываются события OnInit() и DeInit() нужно просто рисовать объекты в OnIOnit() и удалять их в DeInit().

Andrew Petras
4696
Andrew Petras  
algo1111:

Это понятно, здесь речь идет о свойствах (в том числе о видимости) графических объектов. Мне же нужно получить область видимости индикатора в целом, чтобы потом установить область видимости графических объектов.

Выделенное растолкуйте, как понимать.

Индикатор в своем окне? Размер окна?

Alexander Puzanov
31472
Alexander Puzanov  
barabashkakvn:

Похоже, что такие свойства для пользовательского индикатора задать нельзя:

Разве?

 

---

Вопрос интересный, тоже хотелось бы знать. Если не для 4 то для 5

Dmitry Belunskiy
237
Dmitry Belunskiy  
Silent:

Выделенное растолкуйте, как понимать.

Индикатор в своем окне? Размер окна?

"Областью видимости индикатора" я назвал совокупность таймфреймов, на которых он должен отображаться, например:
PERIOD_M1 | PERIOD_M5 | PERIOD_H1
Эти таймфреймы можно задавать, как показано на скринах выше. А вот можно ли программно прочитать эту информацию в процессе выполнения?
Dmitry Belunskiy
237
Dmitry Belunskiy  
barabashkakvn:

Похоже, что такие свойства для пользовательского индикатора задать нельзя:

 

 

Но, применительно к Вашей задаче - как я понял Вы хотите вслед за индикатором  рисовать объекты?

Так как при смене периода графика для индикатора вызываются события OnInit() и DeInit() нужно просто рисовать объекты в OnIOnit() и удалять их в DeInit().

Увы - нет. При смене периода не вызывается функция DeInit().... ИМХО.
Dmitry Belunskiy
237
Dmitry Belunskiy  
barabashkakvn:

Похоже, что такие свойства для пользовательского индикатора задать нельзя:

 

 

Но, применительно к Вашей задаче - как я понял Вы хотите вслед за индикатором  рисовать объекты?

Так как при смене периода графика для индикатора вызываются события OnInit() и DeInit() нужно просто рисовать объекты в OnIOnit() и удалять их в DeInit().

Поясню про постановку задачи.

Есть индикатор, который создает графический объект (FiboTimeZone), а затем строит собственно линию индикатора.

Если при смене таймфрейма я попадаю на "запрещенный" ТФ, линия индикатора исчезает, не строится, а вот ФибоТайм остается и загромождает график.  В функции DeInit() предусмотрено уничтожение графического объекта, но это не помогает.

Vladimir Karputov
Модератор
55819
Vladimir Karputov  
algo1111:
Увы - нет. При смене периода не вызывается функция DeInit().... ИМХО.

Вот проверочный код для OnDeinit() индикатора:

void OnDeinit(const int reason)
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
  {
   Print(__FUNCTION__);
  }

и для OnInit() индикатора:

void OnInit()
  {
   Print(__FUNCTION__);
//--- тут Ваш код
  }

При смене периода происходит OnDeinit(), после загрузки периода происходит OnInit().

Andrew Petras
4696
Andrew Petras  
algo1111:
"Областью видимости индикатора" я назвал совокупность таймфреймов, на которых он должен отображаться, например: Эти таймфреймы можно задавать, как показано на скринах выше. А вот можно ли программно прочитать эту информацию в процессе выполнения?

"Целиком" для индикатора, по моему, нет. Напишите предложение в сервисдеск.

algo1111:
Увы - нет. При смене периода не вызывается функция DeInit().... ИМХО.

Вызывается

https://www.mql5.com/ru/docs/runtime/running

REASON_CHARTCHANGE

3

Символ или период графика был изменен


https://www.mql5.com/ru/docs/constants/namedconstants/uninit

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий