Please, format a source code properly, read article MQL5.community
- User Memo
The
button of the object inserting menu is intended to insert the initial
MQL code into the text of the message. An empty window to paste the code
in appears as soon as you press this button. In order to finish code
adding you should press the Insert button. To cancel the
operation you should press the Cancel button. The example of
inserting the code is given at the corresponding section.
The

//+------------------------------------------------------------------+ //| RMA_Minor_shift.mq5 | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "2009, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property description "RMA Minor Shift" //--- indicator settings #property indicator_level1 40 #property indicator_level2 60 #property indicator_separate_window // indicator will be displayed in the separate subwindow #property indicator_buffers 3 // buffers used #property indicator_plots 2 // buffers displayed #property indicator_color1 Black // we use 2 colors #property indicator_type1 DRAW_LINE // and special color style #property indicator_color2 Red // we use 2 colors #property indicator_type2 DRAW_LINE // and special color style //---- buffers double Minor[]; // buffer for values double Minor_shift[]; // buffer for values double RoC_Minor[]; // buffer for values // indicator input parameters int RSIPeriod = 7; int MAPeriod = 7; int shift_prd = 5; // variable to store indicator handle int Handle_minor,MAHandle_minor; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnInit() { // set the indicator buffers // set Values as a buffer for displaying SetIndexBuffer(0,RoC_Minor, INDICATOR_DATA); SetIndexBuffer(1,Minor, INDICATOR_DATA); //--- set accuracy IndicatorSetInteger(INDICATOR_DIGITS,2); // Set beginning of Values buffer drawing PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,RSIPeriod); // Shifting the plot //PlotIndexSetInteger(0,PLOT_SHIFT,shift_prd); // Set indicator name IndicatorSetString(INDICATOR_SHORTNAME,"RMA Minor shift"); // Set the name of the plot lines PlotIndexSetString(0,PLOT_LABEL,"Minor"); PlotIndexSetString(1,PLOT_LABEL,"Minor Shift by "+(string)shift_prd); // Set empty value for Values buffer PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE); PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,EMPTY_VALUE); Handle_minor=iRSI(NULL,0,RSIPeriod,PRICE_CLOSE); MAHandle_minor=iMA(NULL,0,MAPeriod,0,MODE_EMA,Handle_minor); // Set the indexation order for buffers (as series) ArraySetAsSeries(Minor,true); ArraySetAsSeries(Minor_shift,true); ArraySetAsSeries(RoC_Minor,true); return(0); } // note that the function parameters can be renamed int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { int toCount=(int)MathMin(rates_total,rates_total-prev_calculated+1); if(prev_calculated<0 || prev_calculated>rates_total) { toCount = rates_total; } int copied= CopyBuffer(MAHandle_minor,0,0,toCount,Minor); if(copied == -1) { Print("Error while copying Minor shift. Error №",GetLastError()); return 0; } int pos = prev_calculated-1; Print(pos); for(int i=0;i<100;i++) { Minor_shift[i]=Minor[i]; //Minor_shift[i]=Minor[i]; } for(int i=0;i<100;i++) { RoC_Minor[i]=Minor[i]-Minor[i+shift_prd]; } return rates_total; } // the function is not obligatory in a code /* void OnDeinit() {} */ //+------------------------------------------------------------------+
kjitender:
You should specify Minor_shift[] as indicator buffer calculation.
SetIndexBuffer(2,Minor_shift, INDICATOR_CALCULATIONS);

You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
hi,
I get the error Array out of rnage with the following code.
Please hlep me out of this.