Почему не удаляется горизонталь? Скрипт прилагается.
Сделал функцию для удаления группы объектов имеющих несколько одинаковых символов в начале имени. Решил протестировать. В скрипте создаю 2 горизонтальные линии , паузу, чтобы было визуально видно, что линии созданы, а затем их удаление. Но почему-то удаляется только одна линия. Помогите найти ошибку. Вроде код простой и всё на виду однако ж...)
Покажите код удаления
Такая конструкция удаляет всё
string _prefix="lsc_"; for(int k=ObjectsTotal()-1; k>=0; k--) { if(StringSubstr(ObjectName(k),0,4)==_prefix) { // 4 символа в префиксе ObjectDelete(ObjectName(k)); } }
Удаляйте с конца, а не с начала: for(int i=0;i<obj_total;i++)
P.S.
Можно использовать так, это лучше
// Функция удаляет объект по префиксу void DeleteObj() { for(int k=ObjectsTotal()-1; k>=0; k--) { if(StringSubstr(ObjectName(k),0,4)==_prefix) { Obj_Delete(ObjectName(k)); } } } // Функция удаляет объект по имени void Obj_Delete(string txt) { if(ObjectFind(0,txt)!=-1) { ObjectDelete(0,txt); } }
Покажите код удаления
Такая конструкция удаляет всё
Покажите код удаления
Такая конструкция удаляет всё
Удаляйте с конца, а не с начала: for(int i=0;i<obj_total;i++)
P.S.
Можно использовать так, это лучше
Так действительно работает, а я когда проверял с конца здесь for(int k=ObjectsTotal()-1; k>=0; k--) вместо > по запарке < поставил. Поэтому тоже не работало, думал, что причина в чём то другом. А зачем же они в документации неправильные примеры дают. Я с ордерами то знал этот нюанс. Ну подумал, здесь объекты может здесь можно и с начала, тем более пример в документации.
Спасибо.
void DeleteAll(string sfind="") { string del[]; string spattern=spfx; if(sfind!="") spattern=sfind; int i; ArrayResize(del,ObjectsTotal()); for(i=ObjectsTotal()-1;i>=0;i--) del[i]=ObjectName(i); for(i=0;i<ArraySize(del);i++) { if(del[i]!="" && (StringFind(del[i],spattern,0)>=0 || spattern=="")) { ObjectDelete(del[i]); } } }как вариант еще можете так удалять.
Сделал функцию для удаления группы объектов имеющих несколько одинаковых символов в начале имени
И в MQL4 и в MQL5 есть штатная функция удаления объектов с фильтром по префиксу ObjectDeleteAll - зачем вам самописка?
как вариант еще можете так удалять.
А вы вдруг с луны свалились? Нужна для того, чтобы удалять только свои объекты и не удалять созданные другими индикаторами и экспертами. Это 580 работ в job'e.
Вы слезьте с луны своей, може и работ прибавится
"чтобы удалять только свои объекты и не удалять созданные другими индикаторами и экспертами" делайте так:
string gs_Prefix = "Мои_объекты"; ... ObjectsDeleteAll(0, gs_Prefix);
Сходите таки по ссылке. Если конечно лунное там или собственное сияние справку читать не мешает :)
Вы слезьте с луны своей, може и работ прибавится
"чтобы удалять только свои объекты и не удалять созданные другими индикаторами и экспертами" делайте так:
Сходите таки по ссылке. Если конечно лунное там или собственное сияние справку читать не мешает :)
Когда появился этот вариант функции знаешь?

- www.mql5.com

- Бесплатные приложения для трейдинга
- Форексный VPS бесплатно на 24 часа
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Сделал функцию для удаления группы объектов имеющих несколько одинаковых символов в начале имени. Решил протестировать. В скрипте создаю 2 горизонтальные линии , паузу, чтобы было визуально видно, что линии созданы, а затем их удаление. Но почему-то удаляется только одна линия. Помогите найти ошибку. Вроде код простой и всё на виду однако ж...)