Почему событие OnCalculate() выполняется раньше, чем завершается OnDeinit()

 

Сегодня заметил, что довольно часто при переходе на разные ТФ, событие OnCalculate() происходит раньше, чем завершается OnDeinit().

В моем случае получается что объекты выводятся на график быстрее чем удаляются, и в результате они иногда просто удаляются.

 
vdv2001 писал(а)  :

Сегодня заметил, что довольно часто при переходе на разные ТФ, событие OnCalculate() происходит раньше, чем завершается OnDeinit().

В моем случае получается что объекты выводятся на график быстрее чем удаляются, и в результате они иногда просто удаляются.

При смене ТФ создается новая копия индикатора, а старая освобождается. Если индикатор больше никому не нужен (чарту для отрисовки, эксперту или другому индикатору), то он удаляется. События создание одного индикатора и удаление другого не синхронизированы.
 

antt:
При смене ТФ создается новая копия индикатора, а старая освобождается. Если индикатор больше никому не нужен (чарту для отрисовки, эксперту или другому индикатору), то он удаляется. События создание одного индикатора и удаление другого не синхронизированы. 

Т.е. Просто в имени объекта фиксировать таймфрейм, я правильно понял?

Кстати есть ограничение кол-ва объектов? Спрашиваю, потому, что у мения их несколько тысяч, а теперь получится в два раза больше ;)) 

 
vdv2001:

Т.е. Просто в имени объекта фиксировать таймфрейм, я правильно понял?

Можно использовать таймфрейм, либо иной идентификатор данной копии индикатора.


Кстати есть ограничение кол-ва объектов? Спрашиваю, потому, что у мения их несколько тысяч, а теперь получится в два раза больше ;)) 

Ограничение по ресурсам, программного ограничения нет (при тестировании использовались сотни тысяч объектов).
 
А тоже заметил этот баг с графическими объектами. Явно должны быть ограничения на последовательность действий. При смене тф должен деинициализироваться индикатор, потом подгружаться котировки, а потом рисоваться опять, иначе терминал просто виснет, так было и в четверке.