Ок, просто в таком виде канал Bary использовать нет смысла - он просто рисуется графически и эксперт его не учитывает.
Почему ж.......все вроде учитывает...... вот процедуры, которые определеяют верхнюю и нижнюю линии канала, независимо это канал барри, либо горизонтальные линии, либо сам пользователь их нарисовал. Берут самые крайние линии. Конечно чуть чуть помассивней получилось нежели в твоем варианте
double UP_Chanel(int shift)
{
double verh_kanala = 0;
for (int i = 0; i < ObjectsTotal(); i++)
{
if (StringFind(ObjectName(i),"#",0) < 0)
{
if (ObjectType(ObjectName(i)) == 1)
{
if (verh_kanala < ObjectGet(ObjectName(i),OBJPROP_PRICE1))
{
verh_kanala = ObjectGet(ObjectName(i),OBJPROP_PRICE1);
}
}
if (ObjectType(ObjectName(i)) == 2)
{
if (verh_kanala < ObjectGetValueByShift(ObjectName(i),shift))
{
verh_kanala = ObjectGetValueByShift(ObjectName(i),shift);
}
}
}
}
return(verh_kanala);}
double DN_Chanel(int shift)
{
double niz_kanala = 9999;
for (int i = 0; i < ObjectsTotal(); i++)
{
if (StringFind(ObjectName(i),"#",0) < 0)
{
if (ObjectType(ObjectName(i)) == 1)
{
if ((niz_kanala > ObjectGet(ObjectName(i),OBJPROP_PRICE1)) && (ObjectGet(ObjectName(i),OBJPROP_PRICE1) > 0))
{
niz_kanala = ObjectGet(ObjectName(i),OBJPROP_PRICE1);
}
}
if (ObjectType(ObjectName(i)) == 2)
{
if ((niz_kanala > ObjectGetValueByShift(ObjectName(i),shift)) && (ObjectGetValueByShift(ObjectName(i),shift) > 0))
{
niz_kanala = ObjectGetValueByShift(ObjectName(i),shift);
}
}
}
}
return(niz_kanala);}