Magic online - страница 3

 
Petr Vorob'ev #:
Похоже потерялся сам смысл задачи. А он заключается в следующем. В индикаторе есть начальные параметры показа / скрытия графических объектов после их расчета. Но в процессе работы индикатора, пользователь сам может их скрывать / показывать через гор. клавиши. И статус этих объектов в конкретный момент должен быть сохранен, чтобы при следующей инициализации (Запуска терминала / OnInit / prev_calculated == 0) эти объекты отобразились также как пользователь их "накликал".
Это легко решается если при накидывании индикатора, вручную задать "magic" и он бы выступал идентификатором индикатора, по которому и сохранять статусы гр. объектов в моменте.

Так вот задача в том чтобы заменить этот ручной  "magic" на автоматический при накидывании индикатора на график пользователем.

тут проще и можно обойтись без magic - граф. объекты независимо сохраняются при рестарте индикатора. В профиле.

просто не удаляйте их в OnDeinit (в зависимости от причин выгрузки)

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

 
Maxim Kuznetsov #:
OnDeinit (в зависимости

Как написал выше - гр. объекты не статичны, они считаются (изменяются)

 
Petr Vorob'ev #:
при следующей инициализации (Запуска терминала

т.е. переинициализация - это перезапуск терминала?

 
Ivan Titov #:

т.е. переинициализация - это перезапуск терминала?

в том числе. этого достаточно чтобы индикатор должен знать свой "magic"

 
Petr Vorob'ev #:

в том числе. этого достаточно чтобы индикатор должен знать свой "magic"

Для Id используйте ChartID() + номер подокна + порядковый номер индикатора в подокне (либо имя). В OnDeinit() сохраняйте настройки под этим Id в нужных случаях, в остальных - удаляйте. В OnInit() считывайте настройки под этим Id, если есть.

 
Ivan Titov #:
порядковый номер индикатора

порядковый номер индикатора после перезапуска терминала не изменяется?

 
Petr Vorob'ev #:
Похоже потерялся сам смысл задачи. А он заключается в следующем. В индикаторе есть начальные параметры показа / скрытия графических объектов после их расчета. Но в процессе работы индикатора, пользователь сам может их скрывать / показывать через гор. клавиши. И статус этих объектов в конкретный момент должен быть сохранен, чтобы при следующей инициализации (Запуска терминала / OnInit / prev_calculated == 0) эти объекты отобразились также как пользователь их "накликал".
Это легко решается если при накидывании индикатора, вручную задать "magic" и он бы выступал идентификатором индикатора, по которому и сохранять статусы гр. объектов в моменте.

Так вот задача в том чтобы заменить этот ручной  "magic" на автоматический при накидывании индикатора на график пользователем.

По моему вы перемудрили. Если на графике есть какие-то графические объекты ГО и при деинициализации индикатора их не удалять, то при следующем запуске, хоть индикатора, хоть всего терминала то в индикаторе достаточно просто проверять наличие ГО с таким именем и заново его не создавать и не менять его свойства.


зы. Ну да, я не посмотрел, что есть ещё страница и там есть такое предложение.

 
Alexey Viktorov #:
при деинициализации индикатора их не удалять,

он их удаляет и рассчитывает заново. эти ГО имеют  свои группы. Вот эти группы и могут скрываться или отображаться.

Вариант предложенный Иваном Т. - подходи. Т.е. если в окне только один индикатор, то достаточно одного  ChartID() . Если несколько, то нужно добавить порядковый номер индикатора на графике (если он постоянен после перезагрузки).


 

 
Petr Vorob'ev #:
Похоже потерялся сам смысл задачи. А он заключается в следующем. В индикаторе есть начальные параметры показа / скрытия графических объектов после их расчета. Но в процессе работы индикатора, пользователь сам может их скрывать / показывать через гор. клавиши. И статус этих объектов в конкретный момент должен быть сохранен, чтобы при следующей инициализации (Запуска терминала / OnInit / prev_calculated == 0) эти объекты отобразились также как пользователь их "накликал".
Это легко решается если при накидывании индикатора, вручную задать "magic" и он бы выступал идентификатором индикатора, по которому и сохранять статусы гр. объектов в моменте.

Так вот задача в том чтобы заменить этот ручной  "magic" на автоматический при накидывании индикатора на график пользователем.

То есть индикатор должен сгенерировать ID только в том случае, если он только что был подключен к чарту, а если произошла его переинициализация (все причины деинициализации, кроме ручного удаления индикатора с графика), то новый ID генерировать не нужно. Так стоит задача? Если так, то решение тоже есть, просто оно в другой плоскости.

 
Ihor Herasko #:
То есть индикатор должен сгенерировать ID только в том случае, если он только что был подключен к чарту

да именно в этом. Аналог magic в советнике