//+------------------------------------------------------------------+ //| StdDev.mq5 | //| Copyright 2000-2025, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2000-2025, MetaQuotes Ltd." #property link "https://www.mql5.com" #property description "Standard Deviation" #include #property indicator_separate_window #property indicator_buffers 2 #property indicator_plots 1 #property indicator_type1 DRAW_LINE #property indicator_color1 clrMediumSeaGreen #property indicator_style1 STYLE_SOLID //--- input parametrs input int InpStdDevPeriod=20; // Period input int InpStdDevShift=0; // Shift input ENUM_MA_METHOD InpMAMethod=MODE_SMA; // Method //--- indicator buffers double ExtStdDevBuffer[]; double ExtMABuffer[]; int ExtStdDevPeriod,ExtStdDevShift; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ void OnInit() { //--- check for input values if(InpStdDevPeriod<=1) { ExtStdDevPeriod=20; PrintFormat("Incorrect value for input variable InpStdDevPeriod=%d. Indicator will use value %d for calculations.", InpStdDevPeriod,ExtStdDevPeriod); } else ExtStdDevPeriod=InpStdDevPeriod; if(InpStdDevShift<0) { ExtStdDevShift=0; PrintFormat("Incorrect value for input variable InpStdDevShift=%d. Indicator will use value %d for calculations.", InpStdDevShift,ExtStdDevShift); } else ExtStdDevShift=InpStdDevShift; //--- define indicator buffers as indexes SetIndexBuffer(0,ExtStdDevBuffer); SetIndexBuffer(1,ExtMABuffer,INDICATOR_CALCULATIONS); //--- set indicator short name string short_name=StringFormat("StdDev(%d)",ExtStdDevPeriod); IndicatorSetString(INDICATOR_SHORTNAME,short_name); PlotIndexSetString(0,PLOT_LABEL,short_name); //--- set index shift PlotIndexSetInteger(0,PLOT_SHIFT,ExtStdDevShift); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total,const int prev_calculated,const int begin,const double &price[]) { if(rates_total