/*-----------------------------+ | | | 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 6 #property indicator_color1 White #property indicator_color2 Red #property indicator_color3 White #property indicator_color4 Red #property indicator_color5 White #property indicator_color6 Red //---- buffers double Buffer1[]; double Buffer2[]; double Buffer3[]; double Buffer4[]; double Buffer5[]; double Buffer6[]; // User Input extern double MovingAvg=10; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //|------------------------------------------------------------------| int init() { // 233 up arrow // 234 down arrow // 159 big dot // 158 little dot // 168 open square // 120 box with X SetIndexStyle(0,DRAW_ARROW); SetIndexBuffer(0, Buffer1); SetIndexArrow(0,159); //big dot SetIndexStyle(1,DRAW_ARROW); SetIndexBuffer(1, Buffer2); SetIndexArrow(1,159); //big dot SetIndexStyle(2,DRAW_ARROW); SetIndexBuffer(2, Buffer3); SetIndexArrow(2,158); //little dot SetIndexStyle(3,DRAW_ARROW); SetIndexBuffer(3, Buffer4); SetIndexArrow(3,158); //little dot SetIndexStyle(4,DRAW_ARROW); SetIndexBuffer(4, Buffer5); SetIndexArrow(4,233); //arrow SetIndexStyle(5,DRAW_ARROW); SetIndexBuffer(5, Buffer6); SetIndexArrow(5,234); //arrow 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; return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int pos=Bars-100; // leave room for moving average periods double cMA=0, pMA=0; bool found=false; bool rising=false; bool falling=false; bool bought=false; bool sold=false; int cnt=0; int err=0; while(pos>=0) { // get 1 & 2 MA (avoid 0, as it's too noisy) // (possible mod - open of 0 and 1 has no noise) cMA=iMA(Symbol(), 0, MovingAvg, 0, MODE_LWMA, PRICE_CLOSE, pos); pMA=iMA(Symbol(), 0, MovingAvg, 0, MODE_LWMA, PRICE_CLOSE, pos+1); if (pMA<=cMA) {rising=true; falling=false; Buffer3[pos]=High[pos];} if (pMA>=cMA) {rising=false; falling=true; Buffer4[pos]=Low[pos];} // Does the Symbol() have an open order for(cnt=0;cnt<OrdersTotal();cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol()==Symbol()) { // if found, get all the trailing stoploss data // from bar 1 not 0 found=true; if (OrderType()==0) {bought=true; sold=false;} if (OrderType()==1) {bought=false; sold=true;} break; } else { found=false; } } // Draw a big dot if there // is an order open so user // can tell it's in progress if (found && bought) { Buffer1[pos]=High[pos]; return(0); } if (found && sold) { Buffer2[pos]=Low[pos]; return(0); } if (rising && sold) //existing sell { Buffer6[pos]=Low[pos]; } if (falling && bought) // existing buy { Buffer5[pos]=High[pos]; } 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
Custom Indicators Used:
Order Management characteristics:
Checks for the total of open orders
Other Features: