Где живёт индикатор...? Продолжение темы:Где живёт индикатор созданный в режиме тестирования без визуализации? - страница 2

 
Yury Kirillov:

Из логов видно что хэндлы одинаковы.

Первый запуск:

Создание.

Удаление.

Второй запуск:

Создание.

Удаление.

Однако при повторном запуске индикатор даже не появляется на чарте и в списке индикаторов чарта. Хотя операции создания индикатора и размещения на чарт выдают признаки удачного завершения.

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

Или вопрос поставлен принципиально, удалён, значит должен быть убит?

 
Alexey Viktorov:

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

Или вопрос поставлен принципиально, удалён, значит должен быть убит?


К вопросу убит-не убит. Например мой индикатор принтует строку. Если я его удалил, должна ли это строка продолжать принтоваться?

Что значит создать второй индикатор? С другим именем? А потом третий создавать и так далее что ли?

При создании индикатора в повторном запуске советника, хендл создаётся тот-же, что и при первом запуске. 

Советник тупо не видит остатков индикатора в памяти. Но разместить вновь созданный индикатор на чарт не может.

Хотя операция размещения говорит - ок! размещено! 

 

Решение получено!

С подсказки fxsaber что ChartIndicatorGet() изменяет счетчик индикатора на +1 и после вызова

ThisIndicatorHandle=ChartIndicatorGet(ChartID(),ChartWindowFind(ChartID(),ThisIndicatorName),ThisIndicatorName);

необходимо использовать IndicatorRelease() для его изменения на -1

IndicatorRelease(ThisIndicatorHandle);

Однако остался нерешенный вопрос:

Где взять список какие функции и насколько увеличивают/уменьшают счетчик индикатора? 

Пока известен следующий список.

ФункцияИзменение счетчика индикатора
iCustom()
+1
ChartIndicatorAdd()
+1
ChartIndicatorDelete()
-1
IndicatorRelease()
-1
ChartIndicatorGet()
+1
 
Опечатка? ChartIndicatorGet должно быть +1?
 
Stanislav Korotky:
Опечатка? ChartIndicatorGet должно быть +1?

Спасибо, поправил.

 
Yury Kirillov:

Решение получено!

С подсказки fxsaber что ChartIndicatorGet() изменяет счетчик индикатора на +1 и после вызова

необходимо использовать IndicatorRelease() для его изменения на -1

Однако остался нерешенный вопрос:

Где взять список какие функции и насколько увеличивают/уменьшают счетчик индикатора? 

Пока известен следующий список.

Функция Изменение счетчика индикатора
iCustom()
+1
ChartIndicatorAdd()
+1
ChartIndicatorDelete()
-1
IndicatorRelease()
-1
ChartIndicatorGet()
+1

то есть, чтобы надежно убить индикатор, надо прописать в код эту конструкцию? Я так понимаю, 1-й в инит, 2-й в деинит?

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