//+------------------------------------------------------------------+ //| Standard Deviation.mq4 | //| Copyright © 2005, MetaQuotes Software Corp. | //| http://www.metaquotes.net/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, MetaQuotes Software Corp." #property link "http://www.metaquotes.net/" #property indicator_separate_window #property indicator_minimum 0 #property indicator_buffers 1 #property indicator_color1 Blue //---- input parameters extern int ExtStdDevPeriod=20; extern int ExtStdDevMAMethod=0; extern int ExtStdDevAppliedPrice=0; extern int ExtStdDevShift=0; //---- buffers double ExtStdDevBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { string sShortName; //---- indicator buffer mapping SetIndexBuffer(0,ExtStdDevBuffer); //---- indicator line SetIndexStyle(0,DRAW_LINE); //---- line shifts when drawing SetIndexShift(0,ExtStdDevShift); //---- name for DataWindow and indicator subwindow label sShortName="StdDev("+ExtStdDevPeriod+")"; IndicatorShortName(sShortName); SetIndexLabel(0,sShortName); //---- first values aren't drawn SetIndexDrawBegin(0,ExtStdDevPeriod); //---- return(0); } //+------------------------------------------------------------------+ //| Standard Deviation | //+------------------------------------------------------------------+ int start() { int i,j,nLimit,nCountedBars; double dAPrice,dAmount,dMovingAverage; //---- insufficient data if(Bars<=ExtStdDevPeriod) return(0); //---- bars count that does not changed after last indicator launch. nCountedBars=IndicatorCounted(); //----Standard Deviation calculation i=Bars-ExtStdDevPeriod-1; if(nCountedBars>ExtStdDevPeriod) i=Bars-nCountedBars; while(i>=0) { dAmount=0.0; dMovingAverage=iMA(NULL,0,ExtStdDevPeriod,0,ExtStdDevMAMethod,ExtStdDevAppliedPrice,i); for(j=0; j