Ошибка в программе или ошибка во мне?

 

Задача:

Определить при прикреплении эксперта к графику наличие на графике горизонтальных линий и удалить их с графика, не удаляя возможно присутствующих других графических объектов.

Решение задачи:

int init()
{InitLines(); return(0);}
int deinit()
{return(0);}
int start()
{return(0);}
//----
void InitLines()
{
int lines;
string object_name;
lines=ObjectsTotal(OBJ_HLINE);

if (UninitializeReason()!=3 && lines!=0)
{
for (int i=0; i<ObjectsTotal(); i++)
{
object_name=ObjectName(i);
if (ObjectType(object_name)==OBJ_HLINE) ObjectDelete(object_name);
}
}
return;
}

------------------------------------------------------------------

Проблема:

Ни советник, ни скрипт не удаляют горизонтальные линии с графика полностью

Файлы:
 

Стандартная, уже ставшая классической, ошибка в организации цикла обхода объектов. Нужно:

for (int i=ObjectsTotal()-1; i>=0; i--)
 

Спасибо.

Забавно, что я попался на классике :-))))))

Причина обращения: