//+------------------------------------------------------------------+ //| ParabolicSAR_.mq5 | //+------------------------------------------------------------------+ //--- indicator settings #property indicator_chart_window #property indicator_buffers 2 #property indicator_plots 2 #property indicator_type1 DRAW_LINE #property indicator_type2 DRAW_LINE #property indicator_color1 Red//Yellow #property indicator_color2 Blue //--- input parameters input int ParabolicSARPeriod=10; // Period //--- indicator buffers double ExtHighBuffer[]; double ExtLowBuffer[]; double max,min; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ void OnInit() { SetIndexBuffer(0,ExtHighBuffer,INDICATOR_DATA); SetIndexBuffer(1,ExtLowBuffer,INDICATOR_DATA); IndicatorSetInteger(INDICATOR_DIGITS,_Digits); PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,ParabolicSARPeriod); PlotIndexSetInteger(0,PLOT_SHIFT,2); PlotIndexSetInteger(1,PLOT_SHIFT,2); IndicatorSetString(INDICATOR_SHORTNAME,"Parabolic("+string(ParabolicSARPeriod)+")"); PlotIndexSetString(0,PLOT_LABEL,"Channel("+string(ParabolicSARPeriod)+") max" ); PlotIndexSetString(1,PLOT_LABEL," Channel("+string(ParabolicSARPeriod)+") min"); PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0); PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0.0); } //+------------------------------------------------------------------+ //| get highest value for range | //+------------------------------------------------------------------+ double Highest(const double &array[],int range,int fromIndex) { double res; int i; //--- res=array[fromIndex]; for(i=fromIndex;i>fromIndex-range && i>=0;i--) { if(resfromIndex-range && i>=0;i--) { if(res>array[i]) res=array[i]; } //--- return(res); } //+------------------------------------------------------------------+ //| Price Channell | //+------------------------------------------------------------------+ 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 &TickVolume[], const long &Volume[], const int &Spread[]) { int i,limit; //--- check for rates if(rates_total