Скачать MetaTrader 5

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

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

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

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

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

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

Vladimir Karputov
Модератор
49268
Vladimir Karputov 2014.09.15 19:15  
algo1111:

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

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

1 

 

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

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

Andrew Petras
4672
Andrew Petras 2014.09.16 05:39  
algo1111:

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

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

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

Alexander Puzanov
29929
Alexander Puzanov 2014.09.16 07:41  
barabashkakvn:

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

Разве?

 

---

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

Dmitry Belunskiy
237
Dmitry Belunskiy 2014.09.16 16:56  
Silent:

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

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

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

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

 

 

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

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

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

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

 

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вызывается

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

REASON_CHARTCHANGE

3

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


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

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