//+------------------------------------------------------------------+ //| MAadaptive (rsi+r2).mq4 | //| | //| based on MA adaptive R2 and | //| MA adaptive RSI by Perry Kaufman | //+------------------------------------------------------------------+ //mod2009fxtsd vel #property copyright "copyleft mladen" #property link "mladenfx@gmail.com" #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Lime //#property indicator_color2 Lime // // // // // extern int MAadaptive.rsi.period = 20; extern int MAadaptive.rsi.price = PRICE_CLOSE; extern int MAadaptive.r2.period = 20; extern int MAadaptive.r2.price = PRICE_CLOSE; //extern int Vel.period = 1; // // // // // double buffer1[]; double buffer2[]; double buffer1cd[]; double prices1[]; double prices2[]; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ // // // // // int init() { IndicatorBuffers(5); SetIndexBuffer(0,buffer1cd); SetIndexBuffer(1,buffer1); SetIndexBuffer(2,buffer2); SetIndexBuffer(3,prices1); SetIndexBuffer(4,prices2); IndicatorShortName("MAadaptive(rsi+r2) cd ("+MAadaptive.rsi.period+","+MAadaptive.r2.period+") "); return(0); } int deinit() { return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ // // // // // int start() { int countedBars=IndicatorCounted(); int i,limit; if (countedBars<0) return(-1); if (countedBars>0) countedBars--; limit = Bars-countedBars; // // // // // for(i = limit; i >=0; i--) { prices1[i] = iMA(NULL,0,1,0,MODE_SMA,MAadaptive.rsi.price,i); prices2[i] = iMA(NULL,0,1,0,MODE_SMA,MAadaptive.r2.price ,i); // // // // // if (i>Bars-MAadaptive.rsi.period) buffer1[i]=prices1[i]; else { double sc = 2.0*MathAbs(iRSI(NULL,0,MAadaptive.rsi.period,MAadaptive.rsi.price,i)/100.0-0.5); buffer1[i] = buffer1[i+1] + sc*(prices1[i]-buffer1[i+1]); } if (i>Bars-MAadaptive.r2.period) buffer2[i]=prices2[i]; else { double r2 = MathPow(iCorrelation(prices2,MAadaptive.r2.period,i),2); buffer2[i] = buffer2[i+1] + r2*(prices2[i]-buffer2[i+1]); buffer1cd[i]= buffer1[i] - buffer2[i]; } } // // // // // return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ // // // // // double iCorrelation(double& array[],int period,int i) { int matches = 0; for (int k=0; k<period; k++) { if (array[i+k] <= array[i+k+1]) continue; matches++; } return (2.0*matches/period-1); }
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Moving average indicator
Relative strength index
Custom Indicators Used:
Order Management characteristics:
Other Features: