Please Help on Fractals - page 2

 
oladapolaleye:

With what I searched and my understanding, I think this is the loop and I don't know what else to do please help.


As deVries mentioned, your loop is useless, you do nothing with the results. At the end of the loops you have only the last values (5., 10.).

You should check the values and do what you want INSIDE the loops.

BTW. fractals will never appear on 0. or 1. bars as it requires 2 higher lows or lower highs (bars) on each side.


It would be easier to give advice if you tell what result are you trying to achieve.

 

Oh, I see what you want. this is for upper fractals:


int fractal_cnt=0
int shift=0;
while (fractal_cnt<5)
{
   double Fup_1 = iFractals(NULL, 0, MODE_UPPER, shift);
   if (Fup_1==High[shift])
   {
      fractal_cnt++;
      Print("UPPER FRACTAL #",fractal_cnt," FOUND AT SHIFT: ", shift, " PRICE: ", DoubleToStr(Fup_1,Digits));      
   }
   shift++;
}
 
oladapolaleye: I want the values of four consecutive Fractals: Last but one upper Fractal, Last but one lower Fractal, Last upper Fractal, Last lower Fractal.
You have to find them
double fractals[4][2];
int nFractals=0;
for(int shift = 2; shift < Bars && nFractals < 4; shift++){ // Never a fractal on shift 1 as bar zero is forming.
   fractals[nFractals][0] = iFractals(NULL, 0, MODE_UPPER, shift);
   fractals[nFractals][1] = iFractals(NULL, 0, MODE_LOWER, shift);
   if(fractals[nFractals][0] != EMPTY_VALUE) nFractals++;  // Could have upper and lower
   if(fractals[nFractals][1] != EMPTY_VALUE) nFractals++;  // on the same (extra tall) bar.
}
 
oladapolaleye:

With what I searched and my understanding, I think this is the loop and I don't know what else to do please help.

If you cannot code a simple loop then you either need to learn: Book or get someone to code it for you: MT4 & MT5 coding

int LastUpperFractal, LastButOneUpperFractal, LastLowerFractal, LastButOneLowerFractal;
int BarNumber = 2;
double UpperFrctal, LowerFractal;

while(LastUpperFractal == 0 || LastButOneUpperFractal == 0 || LastLowerFractal == 0 || LastButOneLowerFractal == 0)
   {
   UpperFrctal = iFractals(NULL, 0, MODE_UPPER, BarNumber); 
   LowerFractal = iFractals(NULL, 0, MODE_LOWER, BarNumber);
   
   if(UpperFractal < EMPTY_VALUE - Point) 
      { 
      if(LastUpperFractal > 0)
         LastButOneUpperFractal = BarNumber;
      else LastUpperFractal = BarNumber;  
      }

   if(LowerFractal < EMPTY_VALUE - Point) 
      {
      if(LastLowrFractal > 0)
         LastButOneLowerFractal = BarNumber;
      else LastLowerFractal = BarNumber;  
      }
   BarNumber++;
   }

Print("LastUpperFractal: ", LastUpperFractal, " LastButOneUpperFractal: ", LastButOneUpperFractal, " LastLowerFractal: ", LastLowerFractal, " LastButOneLowerFractal: ", LastButOneLowerFractal);

Not compiled, not tested . . .

 
WHRoeder:


for(int shift = 2; shift < Bars && nFractals < 4; shift++){

nice way :-)

 

Thank you all. Look at this I just did compiled but tester didn't work.

   ticks++;
   if (ticks==1)
   for (int shift=0;Fup_1 < 5;shift++)
   {
   Fup_1 = iFractals(NULL, 0, MODE_UPPER, shift);
   }
      ticks++;
   if (ticks==1)
   for (shift=0;Fdn_1 < 5;shift++)
   {
   Fdn_1 = iFractals(NULL, 0, MODE_LOWER, shift);   
   }
   
   ticks++;
   if (ticks==1)
   for (shift=0;Fup_2 < 10;shift++)
   {
   Fup_2 = iFractals(NULL, 0, MODE_UPPER, shift);
   }
      ticks++;
   if (ticks==1)
   for (shift=0;Fdn_2 < 10;shift++)
   {
   Fdn_2 = iFractals(NULL, 0, MODE_LOWER, shift);   
   }
 
oladapolaleye:

Thank you all. Look at this I just did compiled but tester didn't work.


it seems you still don't understand what is loop or how the code should be written - or what was the problem with your code.
 
RaptorUK:

If you cannot code a simple loop then you either need to learn: Book or get someone to code it for you: MT4 & MT5 coding

Not compiled, not tested . . .


Thanks for your help. I compiled and tested your code but I don't understand the result on tester's journal as follows:

2013.08.19 14:25:24 2013.02.01 18:55 Fractest EURUSD,H1: LastUpperFractal: 2 LastButOneUpperFractal: 3 LastLowerFractal: 2 LastButOneLowerFractal: 3
2013.08.19 14:25:24 2013.02.01 18:55 Fractest EURUSD,H1: LastUpperFractal: 2 LastButOneUpperFractal: 3 LastLowerFractal: 2 LastButOneLowerFractal: 3
2013.08.19 14:25:24 2013.02.01 18:55 Fractest EURUSD,H1: LastUpperFractal: 2 LastButOneUpperFractal: 3 LastLowerFractal: 2 LastButOneLowerFractal: 3
2013.08.19 14:25:24 2013.02.01 18:55 Fractest EURUSD,H1: LastUpperFractal: 2 LastButOneUpperFractal: 3 LastLowerFractal: 2 LastButOneLowerFractal: 3
2013.08.19 14:25:24 2013.02.01 18:55 Fractest EURUSD,H1: LastUpperFractal: 2 LastButOneUpperFractal: 3 LastLowerFractal: 2 LastButOneLowerFractal: 3
2013.08.19 14:25:24 2013.02.01 18:55 Fractest EURUSD,H1: LastUpperFractal: 2 LastButOneUpperFractal: 3 LastLowerFractal: 2 LastButOneLowerFractal: 3
2013.08.19 14:25:24 2013.02.01 18:55 Fractest EURUSD,H1: LastUpperFractal: 2 LastButOneUpperFractal: 3 LastLowerFractal: 2 LastButOneLowerFractal: 3
2013.08.19 14:25:24 2013.02.01 18:55 Fractest EURUSD,H1: LastUpperFractal: 2 LastButOneUpperFractal: 3 LastLowerFractal: 2 LastButOneLowerFractal: 3
2013.08.19 14:25:24 2013.02.01 18:55 Fractest EURUSD,H1: LastUpperFractal: 2 LastButOneUpperFractal: 3 LastLowerFractal: 2 LastButOneLowerFractal: 3
2013.08.19 14:25:24 2013.02.01 18:55 Fractest EURUSD,H1: LastUpperFractal: 2 LastButOneUpperFractal: 3 LastLowerFractal: 2 LastButOneLowerFractal: 3

 
oladapolaleye:

Thanks for your help. I compiled and tested your code but I don't understand the result on tester's journal as follows:

That is what . . . "Not compiled, not tested . . ." means . . .

   int LastUpperFractal, LastButOneUpperFractal, LastLowerFractal, LastButOneLowerFractal;
   int BarNumber = 2;
   double UpperFractal, LowerFractal;

   while(LastUpperFractal == 0 || LastButOneUpperFractal == 0 || LastLowerFractal == 0 || LastButOneLowerFractal == 0)
      {
      UpperFractal = iFractals(NULL, 0, MODE_UPPER, BarNumber); 
      LowerFractal = iFractals(NULL, 0, MODE_LOWER, BarNumber);
      
      Print("Bar: ", BarNumber, " UpperFractal: ",  UpperFractal, " LowerFractal: ", LowerFractal);
      
      if(UpperFractal > 0.0) 
         { 
         if(LastUpperFractal > 0)
            LastButOneUpperFractal = BarNumber;
         else LastUpperFractal = BarNumber;  
         }

      if(LowerFractal > 0.0) 
         {
         if(LastLowerFractal > 0)
            LastButOneLowerFractal = BarNumber;
         else LastLowerFractal = BarNumber;  
         }
      BarNumber++;
      }

   Print("LastUpperFractal: ", LastUpperFractal, " LastButOneUpperFractal: ", LastButOneUpperFractal, " LastLowerFractal: ", LastLowerFractal, " LastButOneLowerFractal: ", LastButOneLowerFractal);

Compiled, tested . . . it works.

 
RaptorUK:

That is what . . . "Not compiled, not tested . . ." means . . .

Compiled, tested . . . it works.


Thank you very much. It works now. But one thing more, the LastUpperFractal, LastButOneUpperFractal, LastLowerFractal, LastButOneLowerFractal returned BarNumber instead of the value of the Fractals. Please what else could be done to have these values.

Thanks again.

Reason: