/*-----------------------------+ | | | Shared by www.Aptrafx.com | | | +------------------------------*/ //+------------------------------------------------------------------+ //| 5 Min RSI 12-period qual INDICATOR | //+------------------------------------------------------------------+ #property copyright "Ron T" #property link "http://www.lightpatch.com" #property indicator_chart_window #property indicator_buffers 8 #property indicator_color1 Red #property indicator_color2 HotPink #property indicator_color3 Red #property indicator_color4 MistyRose #property indicator_color5 White #property indicator_color6 LightGray #property indicator_color7 White #property indicator_color8 DarkGray //---- buffers double Buffer1[]; double Buffer2[]; double Buffer3[]; double Buffer4[]; double Buffer5[]; double Buffer6[]; double Buffer7[]; double Buffer8[]; // User Input //+------------------------------------------------------------------+ //| Custom indicator initialization function | //|------------------------------------------------------------------| int init() { // 233 up arrow // 234 down arrow // 159 big dot // 168 open square // 120 box with X SetIndexStyle(0,DRAW_ARROW); SetIndexBuffer(0, Buffer1); SetIndexArrow(0,159); //up SetIndexStyle(1,DRAW_ARROW); SetIndexBuffer(1, Buffer2); SetIndexArrow(1,159); //down SetIndexStyle(2,DRAW_ARROW); SetIndexBuffer(2, Buffer3); SetIndexArrow(2,120); SetIndexStyle(3,DRAW_ARROW); SetIndexBuffer(3, Buffer4); SetIndexArrow(3,159); SetIndexStyle(4,DRAW_ARROW); SetIndexBuffer(4, Buffer5); SetIndexArrow(4,159); SetIndexStyle(5,DRAW_ARROW); SetIndexBuffer(5, Buffer6); SetIndexArrow(5,159); SetIndexStyle(6,DRAW_ARROW); SetIndexBuffer(6, Buffer7); SetIndexArrow(6,120); SetIndexStyle(7,DRAW_ARROW); SetIndexBuffer(7, Buffer8); SetIndexArrow(7,159); return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { int i; for( i=0; i<Bars; i++ ) Buffer1[i]=0; for( i=0; i<Bars; i++ ) Buffer2[i]=0; for( i=0; i<Bars; i++ ) Buffer3[i]=0; for( i=0; i<Bars; i++ ) Buffer4[i]=0; for( i=0; i<Bars; i++ ) Buffer5[i]=0; for( i=0; i<Bars; i++ ) Buffer6[i]=0; for( i=0; i<Bars; i++ ) Buffer7[i]=0; for( i=0; i<Bars; i++ ) Buffer8[i]=0; return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ // Current position if 55/45 or over/under. Does any of // the previous 'qual' period ever fall below55/above45? (last11) // // If qual*2 periods have been above55/below45 // then lets not try to transact any more (last22) int start() { int pos=Bars-100; // leave room for moving average periods double cEMA10=0, pEMA10=0; double cEMA40=0, pEMA40=0; double cSAR=0, pSAR=10; double pip=Point(); double spread=pip*3; int pTRANS; // how many periods since last MA cross int above=0; // how long SAR has been up int below=0; // how long SAR has been down while(pos>=0) { pTRANS++; cEMA10=iMA(Symbol(),0,10,0,MODE_EMA,PRICE_CLOSE, pos); pEMA10=iMA(Symbol(),0,10,0,MODE_EMA,PRICE_CLOSE, pos+1); cEMA40=iMA(Symbol(),0,40,0,MODE_EMA,PRICE_CLOSE, pos); pEMA40=iMA(Symbol(),0,40,0,MODE_EMA,PRICE_CLOSE, pos+1); cSAR=iSAR(Symbol(),0,0.02,0.2,pos); pSAR=iSAR(Symbol(),0,0.02,0.2,pos+1); if (pEMA10<cEMA40 && cEMA10>cEMA40) { Buffer1[pos]=cEMA10; // rising cross pTRANS=0; // clear period counter } if (pEMA10>cEMA40 && cEMA10<cEMA40) { Buffer5[pos]=cEMA10; // falling cross pTRANS=0; // clear period counter } if (pSAR<cSAR && cSAR>=High[pos]) { Buffer2[pos]=cSAR; // rising SAR if (below<=7 && pTRANS>=7) Buffer3[pos]=cSAR; // Box Indicator above=0; below=0; } if (pSAR>cSAR && cSAR<=Low[pos]) { Buffer6[pos]=cSAR; // falling SAR if (above<=7 && pTRANS>=7) Buffer7[pos]=cSAR; // Box Indicator above=0; below=0; } if (pSAR<cEMA40 && cSAR>cEMA40) Buffer4[pos]=cEMA40; //rising SAR/EMA40 cross if (pSAR>cEMA40 && cSAR<cEMA40) Buffer8[pos]=cEMA40; //falling SAR/EMA40 cross if (cSAR>High[pos]) above++; // count how long SAR has been up if (cSAR<Low[pos]) below++; // count how long SAR has been down pos--; } return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Indicator Curves created:
Implements a curve of type DRAW_ARROW
Indicators Used:
Moving average indicator
Parabolic Stop and Reverse system
Custom Indicators Used:
Order Management characteristics:
Other Features: