//+------------------------------------------------------------------+ //| One Side Gaussian Support Resistance Rate | //| mladen | //| | //| original idea and first implementation by : Tinytjan | //| (http://codebase.mql4.com/ru/2735) | //+------------------------------------------------------------------+ #property copyright "mladen" #property link "mladenfxgmail.com" #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Red #property indicator_minimum 0 #property indicator_maximum 1 #property indicator_level1 0.5 #property indicator_levelcolor DarkSlateGray // // // // // extern int SRPeriod = 40; extern int SmoothType = 3; // // // // // double SmoothHigh[]; double SmoothLow[]; double Rate[]; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ #import "OneSideGaussianLibrary.ex4" void BuffersInit(); double Smooth(int version,int price,int i); #import // // // // // int init() { BuffersInit(); IndicatorBuffers(3); SetIndexBuffer(0, Rate); SetIndexBuffer(1, SmoothHigh); SetIndexBuffer(2, SmoothLow); SmoothType = MathMax(MathMin(SmoothType,7),0); IndicatorShortName("One side Gaussian SR rate("+SRPeriod+","+SmoothType+")"); return(0); } // // // // // int start() { int counted_bars = IndicatorCounted(); int i,limit; if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; // // // // // for(i = limit; i >= 0; i--) { SmoothLow[i] = Smooth(SmoothType,PRICE_LOW, i); SmoothHigh[i] = Smooth(SmoothType,PRICE_HIGH,i); double Min = SmoothLow [ArrayMinimum(SmoothLow ,SRPeriod,i)]; double Max = SmoothHigh[ArrayMaximum(SmoothHigh,SRPeriod,i)]; if (Min == Max) Rate[i] = 0; else Rate[i] = (Smooth(SmoothType,PRICE_WEIGHTED,i)-Min)/(Max - Min); } return(0); }