Помогите с Fractals

 

Я только начинаю работать с MQL4. Ни как не могу сообразить как получить максимальную величину цены бара на котором сформировался последний UPP фрактал, цена которого выше текущей цены. Помогите кодом. Заранее благодарен.

 
double Fr=0;
for(int CurBar=0;Fr==0;CurBar++){
  Fr=iFractals(NULL,0,MODE_UPPER,CurBar);
  if(Fr!=0 && Fr<=Ask)
    Fr=0;
}
 
Fletcher писал(а) >>

Я наверное что то не понимаю, но мне нужно получить фактическую величину цены которая была на том баре где сформировался фрактал.

 
int i,z; double f;
   for(i=0;i<Bars;i++) 
   {f=iFractals(NULL,0,positionOffarctal,i);
   if(f!=0) z++;
   if(z==numberOffractal) break;
   }
      Alert("FRACTAL#",numberOffractal,"=",f," bar=",i);

вот скрипт демонстрирующий доступ к фракталам стандартного индикатора iFractals()
смотрим выдачу и сверяем ее с чартом.

...

в прикрепленном файле полный текст, размещать в папке скрипт.

Файлы:
 

Как я вас понял, вам нужно:

Wolder >>:

цены бара на котором сформировался последний UPP фрактал

Именно последний, но при этом:

Wolder >>:

цены бара на котором сформировался последний UPP фрактал, цена которого выше текущей цены

Вот я вам и сделал, чтобы цена верхнего фрактала не была выше текущей цены.

А вот то что сдела для вас Korey, это скрипт который алертит все верхние/нижние (на выбор) цены фракталов, которые найдет на всех загруженных барах.


Но если вы не поняли, что я написал в предидущем коменте, то давайте я вам сделаю фукцию:

double FractalPrice(){
  double Fr=0;
  for(int CurBar=0;Fr==0;CurBar++){
    Fr=iFractals(NULL,0,MODE_UPPER,CurBar);
    if(Fr!=0 && Fr<=Close[0])
      Fr=0;
  }
  return(Fr);
}
Но как же использовать эту функцию?
Да как угодно, вы можите ее запихнуть в тот же алерт:
Alert("Upper fractal price = ",FractalPrice());
Да или вообще куда хотите.

Короче говоря в чьи игрушки играть, выбирать вам. Удачи в начинаниях.

 

Ниже представлен вариант если вам нужно выбирать верхний фрактал или нижний:

double FractalPrice(int FPDirection){
  double Fr=0;
  for(int CurBar=0;Fr==0;CurBar++){
    Fr=iFractals(NULL,0,FPDirection,CurBar);
    if(Fr!=0)
      switch(FPDirection){
        case 1:
        if(Fr<=Close[0])
          Fr=0;
        break;
        
        case 2:
        if(Fr>=Close[0])
          Fr=0;
        break;
      }
  }
  return(Fr);
}     

Где FPDirection - это расположение фрактала, если 1 то это верхний, если 2 то это нижний.


Пример использования, запихнем его в коммент:


Comment("Upper fractal price = ",FractalPrice(1));
Comment("Downer fractal price = ",FractalPrice(2));