Помогите, при переборе в отрицательном направлении выдает бред

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Lenar Shajdullin
288
Lenar Shajdullin  
//+------------------------------------------------------------------+
//Находит ближайший уровень
//+------------------------------------------------------------------+
double level(int num=0) {
string name;
double x=0,y=0;
int q=0,z=0,w=0;
   for(int i=ObjectsTotal()-1; i>=0; i--) {
   name=ObjectName(i);
      if((x==0 || x>MathAbs(Bid-ObjectGet(name,OBJPROP_PRICE1))) && ObjectType(name)==OBJ_HLINE) {
      x=MathAbs(Bid-ObjectGet(name,OBJPROP_PRICE1));
      y=ObjectGet(name,OBJPROP_PRICE1);
      q=i;
      }
   }

if(num>0) {
   for(int i=q+1; i<q+100; i++) {
      name=ObjectName(i);
         if(ObjectType(name)==OBJ_HLINE) {
            z++;
            y=ObjectGet(name,OBJPROP_PRICE1);
               if(z==num) break;
               }
            }
         }
if(num<0) {
   for(int i=q-1; i>=0; i--) {
      name=ObjectName(i);
         if(ObjectType(name)==OBJ_HLINE) {
            w--;
            y=ObjectGet(name,OBJPROP_PRICE1);
               if(w==num) break;
               }
            }
         }
y=NormalizeDouble(y,Digits);
   return(y);
}

Lenar Shajdullin
288
Lenar Shajdullin  
На графике нарисованы некоторые горизонтальные линии, эта функция ищет ближайшую линию или любую по счету вверх или вниз, вверх находит все идеально, вниз ищет только первый уровень, со второго и далее выдает или отрицательные значения или ближе к нулю, хотя ближайший уровень 1,3830
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий