Скачать MetaTrader 5

Проблема с ObjectDelete MQL5.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Знаете ли вы, что MQL5 способен создавать собственные графические инструменты?
Вадим Платонов
1179
Вадим Платонов 2012.05.12 05:24 

Господа, помогите плиз. Я наверное сегодня туплю, но вот уже час бьюсь о грабли и не могу пройти )).

Написал банальную функцию деинициализации индикатора:

//////////////////////////////////////////////////////////////////////////////// 
void OnDeinit(const int code){
//////////////////////////////////////////////////////////////////////////////// 
  Alert("deinit");
  ObjectDelete(0,"crossline");
  bool res;
  for(int i=1;i<=maxoffset;i++){
     string name="lineup_"+i;
     res=ObjectDelete(0,name);
    
     Alert(name+" res="+res+" lasterr="+GetLastError());
     ResetLastError();
     if(!res){
       Alert(" res="+res+" lasterr="+GetLastError());
     }
    
     ObjectDelete(0,"linedn_"+i);
     ObjectDelete(0,"textl_up_"+i);
     ObjectDelete(0,"textl_dn_"+i);
  }

}

функция вызывается, алерты идут, результат вызова ObjectDelete положительный, ошибок нет, но объекты с чарта не убиваются. Перерыл все хелпы - все банально, все должно работать - но не работает.

Чего я недопрочитал в хелпах. на MQL4 ни когда таких граблей не видел

Документация по MQL5: Графические объекты / ObjectDelete
Документация по MQL5: Графические объекты / ObjectDelete
  • www.mql5.com
Графические объекты / ObjectDelete - Документация по MQL5
Yury Kulikov
29938
Yury Kulikov 2012.05.12 05:33  
vadimpl:


Наверно не хватает времени на исполнение вашего кода. Время выполнения OnDeinit() ограничено.
Вадим Платонов
1179
Вадим Платонов 2012.05.12 06:41  
Yurich:
Наверно не хватает времени на исполнение вашего кода. Время выполнения OnDeinit() ограничено.
Тогда  по идее алерты должны были бы обрезаться в момент выгрузки. А алерты говорят что все ок - все объекты удалились. Да и вообще - самый первый ОbjectDelete не срабатывает ((
Вадим Платонов
1179
Вадим Платонов 2012.05.12 06:59  

Сам победил - воткнул в конце ChartRedraw(0); - и все заработало )).
Olegs Kucerenko
12041
Olegs Kucerenko 2012.05.12 07:22  
ChartRedraw(0); в конце OnDeinit добавьте. // как то долго я писал свое сообщение )))
Вадим Платонов
1179
Вадим Платонов 2012.05.18 23:36  
Karlson:
ChartRedraw(0); в конце OnDeinit добавьте. // как то долго я писал свое сообщение )))
Все равно спасибо за ответ )))
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий