провел 4 часа в экспериментах. узнал что удаляется ровно половина обьектов. а потом 2017.08.07 00:50:10.218 _T+copy EURUSD,M5: array out of range in '_T+copy.mq4' (31,79)
1) См.строчку 31
2) Считайте с конца
for(int i;i<obj_total;i++)
for(int i=total-1;i>=0;i--)
Вы удалением меняете порядок объектов
3) Не инициализировать переменные - очень плохая примета (см. счетчик)
------
И зачем вообще перебирать объекты? Можно задавать заранее единый префикс и потом удалить одной строчкой - ObjectsDeleteAll
1) См.строчку 31 --- выделил в коде к чему относится ошибка
2) Считайте с конца --- пробую/ РАБОТАЕТ!!! хоть и не понимаю зачем -1, но без него не работает.
for(int i;i<obj_total;i++)
for(int i=total-1;i>=0;i--)
Вы удалением меняете порядок объектов ---хммм....даже и представить не мог такое, спасибо
3) Не инициализировать переменные - очень плохая примета (см. счетчик) ---- не понял
4) И что находится в массиве z также загадка... --- там имя обьектов разбитое разделителем. "прогаваська версия четыре". в ячейках каждое слово по порядку
СПАСИБО!!))
"И зачем вообще перебирать объекты? Можно задавать заранее единый префикс и потом удалить одной строчкой - ObjectsDeleteAll "
что за чертовщина !!?!? давно обновили эту ф-цию ???? заглянул в справку и никогда такого не видел, что б префикс .... извините. спасибо!
провел 4 часа в экспериментах. узнал что удаляется ровно половина обьектов. а потом 2017.08.07 00:50:10.218 _T+copy EURUSD,M5: array out of range in '_T+copy.mq4' (31,79)
и кстати есть стандартная функция ObjectsDeleteAll() которая заменяет то что вы написали. Вы же хотели удалить все объекты начинающиеся с NAME ??
ObjectsDeleteAll(0,"NAME ") вам в помощь :-) Только обратите внимание что сепаратор " " включен в имя, чтобы случайно не поудалялись "NAMEFOO"
Вот здесь объяснено для ордеров. Для объектов то же самое...
да, спасибо, почитал. просто я не думал что номера плавающие.
и кстати есть стандартная функция ObjectsDeleteAll() которая заменяет то что вы написали. Вы же хотели удалить все объекты начинающиеся с NAME ??
ObjectsDeleteAll(0,"NAME ") вам в помощь :-) Только обратите внимание что сепаратор " " включен в имя, чтобы случайно не поудалялись "NAMEFOO"
спасибо, просто не знал что там есть параметры, почему то.
и кстати есть стандартная функция ObjectsDeleteAll() которая заменяет то что вы написали. Вы же хотели удалить все объекты начинающиеся с NAME ??
ObjectsDeleteAll(0,"NAME ") вам в помощь :-) Только обратите внимание что сепаратор " " включен в имя, чтобы случайно не поудалялись "NAMEFOO"
у меня почему то не работает это
string magic = "fibo_label "; string obj_name = magic + time[i]+" "+high[i]; ObjectCreate(0,obj_name,OBJ_FIBO,0,time[i],high[i],time[i]+3600,low[i]); ObjectSetInteger(0,obj_name,OBJPROP_LEVELS,1); ChartRedraw(); void OnDeinit() { ObjectsDeleteAll(0,magic,-1,-1); ChartRedraw(); }
индикатор в подокне у меня, а объекты на главном графике
у меня почему то не работает это
индикатор в подокне у меня, а объекты на главном графике
Ищет объекты с похожим названием и удаляет все разом
string magic = "fibo_label "; void OnDeinit(const int reason) { DellObj(magic); EventKillTimer(); //--- destroy timer } //+------------------------------------------------------------------+ //| Удаление объектов с графика | //+------------------------------------------------------------------+ void DellObj(string obj){ string name; for(int cnt=ObjectsTotal()-1;cnt>=0;cnt--){ name=ObjectName(cnt); if(StringFind(name,obj,0)>-1) ObjectDelete(name); WindowRedraw();}}
Ищет объекты с похожим названием и удаляет все разом
ObjectsDeleteAll(0,"odj_name");
Ищет объекты с похожим названием и удаляет все разом
да я так могу...непонятно, почему стандартная функция не пашет
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
провел 4 часа в экспериментах. узнал что удаляется ровно половина обьектов. а потом 2017.08.07 00:50:10.218 _T+copy EURUSD,M5: array out of range in '_T+copy.mq4' (31,79)