MQL5 to MQL4

To add comments, please log in or register
gouki1001
383
gouki1001  

//+------------------------------------------------------------------+

//|                                                          ROC.mq5 |

//|                   Copyright 2009-2017, MetaQuotes Software Corp. |

//|                                              http://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright   "2009-2017, MetaQuotes Software Corp."

#property link        "http://www.mql5.com"

#property description "Rate of Change"

//--- indicator settings

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_plots   1

#property indicator_type1   DRAW_LINE

#property indicator_color1  LightSeaGreen

//--- input parameters

input int InpRocPeriod=12; // Period

//--- indicator buffers

double    ExtRocBuffer[];

//--- global variable

int       ExtRocPeriod;

//+------------------------------------------------------------------+

//| Rate of Change initialization function                           |

//+------------------------------------------------------------------+

void OnInit()

  {

//--- check for input

   if(InpRocPeriod<1)

     {

      ExtRocPeriod=12;

      Print("Incorrect value for input variable InpRocPeriod =",InpRocPeriod,

            "Indicator will use value =",ExtRocPeriod,"for calculations.");

     }

   else ExtRocPeriod=InpRocPeriod;

//--- indicator buffers mapping

   SetIndexBuffer(0,ExtRocBuffer,INDICATOR_DATA);

//--- set accuracy

   IndicatorSetInteger(INDICATOR_DIGITS,2);

//--- name for DataWindow and indicator subwindow label

   IndicatorSetString(INDICATOR_SHORTNAME,"ROC("+string(ExtRocPeriod)+")");

//--- sets first bar from what index will be drawn

   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,ExtRocPeriod);

//--- initialization done

  }

//+------------------------------------------------------------------+

//| Rate of Change                                                   |

//+------------------------------------------------------------------+

int OnCalculate(const int rates_total,const int prev_calculated,const int begin,const double &price[])

  {

//--- check for rates count

   if(rates_total<ExtRocPeriod)

      return(0);

//--- preliminary calculations

   int pos=prev_calculated-1; // set calc position

   if(pos<ExtRocPeriod)

      pos=ExtRocPeriod;

//--- the main loop of calculations

   for(int i=pos;i<rates_total && !IsStopped();i++)

     {

      if(price[i]==0.0)

         ExtRocBuffer[i]=0.0;

      else

         ExtRocBuffer[i]=(price[i]-price[i-ExtRocPeriod])/price[i]*100;

     }

//--- OnCalculate done. Return new prev_calculated.

   return(rates_total);

  }

//+------------------------------------------------------------------+



Trying to convert this simple indicator to work with mt4.

Sergey Golubev
Moderator
117547
Sergey Golubev  

Forum on trading, automated trading systems and testing trading strategies

When you post code please use the CODE button (Alt-S)!

Use the CODE button


To add comments, please log in or register