Почему не работает условие

 

Собственно сабж. При индефикаторе MODE_LOWER, данное условие не работает, если изменить его на MODE_UPPER, все будет впорядке
if(iFractals(Symbol(),0,MODE_LOWER,i)<iFractals(Symbol(),0,MODE_LOWER,i+1))
{
//--
}


 

Два фрактала не могут находиться на двух соседних барах по определению.

RTFM. А еще считается хорошим тоном вопросы новичков задавать в ветке для вопросов новичков.

 
TheXpert:

Два фрактала не могут находиться на двух соседних барах по определению.

RTFM. А еще считается хорошим тоном вопросы новичков задавать в ветке для вопросов новичков.

Не в бровь, а в глаз:)))
 


Уточню:

double Fractal_up[1000];
double Fractal_down[1000];
int n=1000,  
    k=1000;  

//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
 {
 int counted_bars=IndicatorCounted();
 int i;
 i=Bars-counted_bars-1;
 while(i>=0)
 { 
 if(iFractals(Symbol(),0,MODE_LOWER,i)!=0)
 { 
 Fractal_down[n]=iFractals(Symbol(),0,MODE_LOWER,i); 
 if(Fractal_down[k]<Fractal_down[k+1])              //Сравнение фракталов вниз
 Alert("1");
 }
 if(iFractals(Symbol(),0,MODE_UPPER,i)!=0)
 {
 Fractal_up[k]=iFractals(Symbol(),0,MODE_UPPER,i);
 if(Fractal_up[k]>Fractal_up[k+1])                //Сравнение фракталов вверх
 Alert("2"); 
 }
 n--; 
 k--; 
 i--;
 }
 return(0);
 } 

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

 
tim:


Уточню:

ничего не происходит, хотя все данные поступают в него исправно

Уточню, данные поступят один раз при старте и больше поступать не будут и очень быстро программа вылетит по ошибке.

Резюме, переделывайте код, так обрабатывать фракталы нельзя.

 

тебе нужно 2 верхние и 2 нижние точки фракталов?

   int shift=0;
   while(true) // хай 1
      {
      HigH1 = iFractals(Symbol(),0,MODE_UPPER,shift);  // цена ближайшего верхнего фрактала
      if (HigH1>0) { HighN1=shift; shift=0; break; }   // HighN1 - номер бара на котором он стоит
      shift++;
      }
   while(true) // хай 2
      {
      HigH2 = iFractals(Symbol(),0,MODE_UPPER,HighN1+1+shift); // цена второго верхнего фрактала
      if (HigH2>0) { HighN2=HighN1+1+shift; shift=0; break;}   // HighN2 - номер бара на котором он стоит
      shift++;
      }
   while(true) // лоу 1
      {
      LoW1 = iFractals(Symbol(),0,MODE_LOWER,shift); // цена ближайшего нижнего фрактала
      if (LoW1>0) { LowN1=shift; shift=0; break; }   // LowN1- номер бара на котором он стоит
      shift++;
      }
   while(true)  // лоу 2
      {
      LoW2 = iFractals(Symbol(),0,MODE_LOWER,LowN1+1+shift);  // цена второго нижнего фрактала
      if (LoW2>0) { LowN2=LowN1+1+shift; shift=0; break; }    // LowN2- номер бара на котором он стоит
      shift++;
      }
 
TheXpert:

Два фрактала не могут находиться на двух соседних барах по определению.


Если стандартные в МТ4, то могут

 
Europa:


Если стандартные в МТ4, то могут


И где же Вы это увидели? На рисунке этого нет
 
третий и четвертый слева
 
Пардон, наверное речь идет об однонаправленных, че-то я тупанул :))
 
Europa:
третий и четвертый слева

А пересчитать бары не пробовали. У каждого фрактала (изображенного на картинке) слева и справа есть два меньших бара. Я про верхние фракталы
Причина обращения: