Подскажите почему не сробатывает? - страница 2

 

Самое что смешное если коментишь любой таймфрейм и оставляешь два то он работает!


Вот так:

if(
(iCustom(NULL,5,"ZigAndZag",5,ZZbar)!=0)
//&&(iCustom(NULL,60,"ZigAndZag",5,ZZbar)!=0)
&&(iCustom(NULL,240,"ZigAndZag",5,ZZbar)!=0)
)
{buy=true;SetArrow(241,1,true,Blue);}

if(
(iCustom(NULL,5,"ZigAndZag",6,ZZbar)!=0)
//&&(iCustom(NULL,60,"ZigAndZag",6,ZZbar)!=0)
&&(iCustom(NULL,240,"ZigAndZag",6,ZZbar)!=0)
)
{sell=true;SetArrow(242,1,false,Red);}

ПОЧЕМУ??? Как сделать что-бы 3 тайм фрейма учитывалось???

 
А как вы присваиваете ZZbar значение, прогоняете через цикл?
 

создай для каждого периода отдельные переменные и запоминай их !

а после уже рули ими!

 

Вы не проверяете каждый бар, который принадлежит бару более старшего таймфрейма. А ведь на один Н4 приходится 4 бара Н1 и 48 баров М5. Еще вы не учитываете, что экстремумы зигзага могут быть разнонаправленные. Вот пример для максимума зигзага:

if(iCustom(NULL,240,"ZigAndZag",5,ZZbar) == iHigh(Symbol(), 240, ZZbar))
  {
   //Находим начальный и конечный бары на Н1
   datetime H1BarBegin = iBarShift(Symbol(), 60, iTime(Symbol(), 240, ZZbar));
   datetime H1BarEnd = iBarShift(Symbol(), 60, iTime(Symbol(), 240, ZZbar-1));
   // --------------------------------------
   // Проверяем наличие максимума зигзага на каждом баре Н1, которые принадлежат данному бару Н4
   for(int i = H1BarBegin; i > H1BarEnd; i--)
     if(iCustom(NULL,60,"ZigAndZag",5,i) == iHigh(Symbol(), 60, i))
       break;
   // ------------------------------------------------------------------------------------------    
   if(i > H1BarEnd)
     {
      //Находим начальный и конечный бары на M5
      datetime M5BarBegin = iBarShift(Symbol(), 5, iTime(Symbol(), 240, ZZbar));
      datetime M5BarEnd = iBarShift(Symbol(), 5, iTime(Symbol(), 240, ZZbar-1));
      // --------------------------------------
      // Проверяем наличие максимума зигзага на каждом баре M5, которые принадлежат данному бару Н4
      for(i = M5BarBegin; i > M5BarEnd; i--)
        if(iCustom(NULL,5,"ZigAndZag",5,i) == iHigh(Symbol(), 5, i))
          break;
      // ------------------------------------------------------------------------------------------    
      if(i > M5BarEnd)
        {
         // стрелка!!!
        }
     }      
  }
Причина обращения: