Помогите с кодом в индикаторе.

 

Всем привет! Помогите, кто в курсе! Есть код (индикатора):

  for(i=limit;i<rates_total && !IsStopped();i++)

     {

cv=12;

cv2=8;

HighBuffer[i]=cv-cv2;

if (HighBuffer[i]<8 && HighBuffer[i]>-8)

     {     

ObjectCreate(0,(string)i,OBJ_HLINE,0,0,Close[i]);     

ObjectSetInteger(0,(string)i,OBJPROP_COLOR,clrYellow);

ObjectSetInteger(0,(string)i,OBJPROP_STYLE,STYLE_SOLID);

ObjectSetInteger(0,(string)i,OBJPROP_WIDTH,1);

ObjectSetInteger(0,(string)i,OBJPROP_BACK,false);

     }

// А вот этот оператор If else  уже не хочет работать !!!!

 if (HighBuffer[i]<10 && HighBuffer[i]>-10) // условие не имеет значения, горизонтальные линии НЕ РИСУЮТСЯ!!! В чем тут дело ?????

     {     

ObjectCreate(0,(string)i,OBJ_HLINE,0,0,Close[i]);     

ObjectSetInteger(0,(string)i,OBJPROP_COLOR,clrYellow);

ObjectSetInteger(0,(string)i,OBJPROP_STYLE,STYLE_SOLID);

ObjectSetInteger(0,(string)i,OBJPROP_WIDTH,1);

ObjectSetInteger(0,(string)i,OBJPROP_BACK,false);

     }

     }

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
 
дык они одинаковы где отличие? 
 

HighBuffer[i] = 4, первое условие срабатывает, имя (string)i, второе условие срабатывает, имя (string)i ...

Вроде в том же месте с тем же именем.

 
Money_Jin:

Всем привет! Помогите, кто в курсе! Есть код (индикатора):

 

for (i=limit;i<rates_total && !IsStopped();i++)
    {
     cv=12;
     cv2=8;
     HighBuffer[i]=cv-cv2; // 12-8 = 4
     if (HighBuffer[i]<8 && HighBuffer[i]>-8) // if (4<8 && 4>-8) вернет TRUE, объект будет создан, стили установлены
        {     
         ObjectCreate(0,(string)i,OBJ_HLINE,0,0,Close[i]);     
         ObjectSetInteger(0,(string)i,OBJPROP_COLOR,clrYellow);
         ObjectSetInteger(0,(string)i,OBJPROP_STYLE,STYLE_SOLID);
         ObjectSetInteger(0,(string)i,OBJPROP_WIDTH,1);
         ObjectSetInteger(0,(string)i,OBJPROP_BACK,false);
        }

// А вот этот оператор If else  уже не хочет работать !!!!
// условие не имеет значения, горизонтальные линии НЕ РИСУЮТСЯ!!! В чем тут дело ?????
     if (HighBuffer[i]<10 && HighBuffer[i]>-10) // if (4<10 && 4>-10) вернет тоже TRUE, объект создан не будет, так как уже существует объект с таким же именем на чарте, стиль, цвет, ширина должны установиться.
        {     
         ObjectCreate(0,(string)i,OBJ_HLINE,0,0,Close[i]);     
         ObjectSetInteger(0,(string)i,OBJPROP_COLOR,clrYellow);
         ObjectSetInteger(0,(string)i,OBJPROP_STYLE,STYLE_SOLID);
         ObjectSetInteger(0,(string)i,OBJPROP_WIDTH,1);
         ObjectSetInteger(0,(string)i,OBJPROP_BACK,false);
        }
    }
Вы пытаетесь создать объекты когда условия перекрываются, причем параметры объектов идентичны (цвет, ширина, стиль). Вот и не видите разницу.

Рекомендую протрассировать индикатор и убедиться. Все работает в соответствии с написанным кодом.

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