Help with iFractals

 

Hey guys, I'm trying to convert my MQL4 indicator that I wrote to MQL5 and having problems at the first step unfortunately. When outputting the two arrays, i get only zeros. Can ANYONE please help?

   int IndicatorHandle;
   double fu[];
   double fl[];

 if (H4 || Period()==PERIOD_H4) {
      IndicatorHandle = iFractals(Symbol(),PERIOD_H4);
      CopyBuffer(IndicatorHandle,0,0,fractals_limit,fu);
      CopyBuffer(IndicatorHandle,1,0,fractals_limit,fl);   
      for(int i = fractals_limit-1; i>=0; i--) {
         H4_arryFU[i]=0;
         H4_arryFL[i]=0;
         
         Print(i + " Up " + fu[i]);
         Print(i + " Down " + fl[i]);         
             
         if (fu[i]> 0) {
            H4_arryFU[i]=fu[i];
        
        }
        if (fl[i] > 0) {
            H4_arryFL[i]=fl[i];
        }
      }
   }
 
You need to create the handle inside OnInit.


 
      IndicatorHandle = iFractals(Symbol(),PERIOD_H4);
      CopyBuffer(IndicatorHandle,0,0,fractals_limit,fu);

Perhaps you should read the manual, especially the examples.
   How To Ask Questions The Smart Way. (2004)
      How To Interpret Answers.
         RTFM and STFW: How To Tell You've Seriously Screwed Up.

They all (including iCustom) return a handle (an int). You get that in OnInit. In OnTick/OnCalculate (after the indicator has updated its buffers), you use the handle, shift and count to get the data.
          Technical Indicators - Reference on algorithmic/automated trading language for MetaTrader 5
          Timeseries and Indicators Access / CopyBuffer - Reference on algorithmic/automated trading language for MetaTrader 5
          How to start with MQL5 - General - MQL5 programming forum - Page 3 #22 (2020)
          How to start with MQL5 - MetaTrader 5 - General - MQL5 programming forum - Page 7 #61 (2020)
          How to call indicators in MQL5 - MQL5 Articles (2010)

 
vish4al #:

Hey guys, thanks a lot of the help, but I have changed the handle creation to OnInit and it is still outputting zeros. Any further help would be much appreaciated:


I managed to fix it, putting the handle creation to OnInint and declaring the arrays that store the data globally seems to have done the trick!


Thanks a lot!

Reason: