Скачать MetaTrader 5

Проблема с удалением объектов при закрытии терминала.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Запусти агентов на свободном компьютере. Это принесет доход!
Dmitry Voronkov
5766
Dmitry Voronkov 2010.03.29 23:35 

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

Все работает нормально. Но при выключении терминала почему то не происходит удаление объекта OBJ_LABEL хотя я его удаляю:

void OnDeinit(const int reason)
  {
   EventKillTimer();
   ObjectDelete(0,TimerName);
  }

 и при следующем запуске, в случе изменения номера окна (что иногда бывает) получается наложение старого OBJ_LABEL и нового OBJ_LABEL.

 

 подскажите как от этого избавится!!!

Кстати в другом моем индикаторе https://www.mql5.com/ru/code/84  иногда происходит тоже самое.

Anton
1846
Anton 2010.03.30 11:40  
vdv2001 писал(а) # :

  подскажите как от этого избавится!!!

Пока нет возможности гарантировать вызов OnDeinit() кастомного индикатора до закрытия окна чарта. Это связано с тем, что для кастомных индикаторов не проектировался доступ к чарту, втч к графическим объектам чарта. На данный момент кастомный индикатор деининициализируется и выгружается независимо от закрытия окна чарта, в другом потоке и как правило уже после закрытия чарта. Мы постараемся решить эту проблему в ближайшее время.
Dmitry Voronkov
5766
Dmitry Voronkov 2010.03.30 16:07  
antt писал(а) # :
Пока нет возможности гарантировать вызов OnDeinit() кастомного индикатора до закрытия окна чарта. Это связано с тем, что для кастомных индикаторов не проектировался доступ к чарту, втч к графическим объектам чарта. На данный момент кастомный индикатор деининициализируется и выгружается независимо от закрытия окна чарта, в другом потоке и как правило уже после закрытия чарта. Мы постараемся решить эту проблему в ближайшее время.

 

Может комуто будет интересно, данном случае выкрутился через

IndicatorSetString(INDICATOR_SHORTNAME,"WoodiesCCI "+PeriodToString(InpPeriod)+"["+IntegerToString(second)+" sec ]");

Но это применимо далеко не во всех  индикаторах ;)) и поиграть с цветом не получится.

 

 

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