//+------------------------------------------------------------------+ //| RSI_DynamicZone_TDI(mtf) Traders Dynamic Index.mq4 | //| Copyright © 2006, Dean Malone | //| www.compassfx.com | //+------------------------------------------------------------------+ //mtf2008ForexTSD mladen f.la ki //+------------------------------------------------------------------+ //| | //| Traders Dynamic Index | //| | //| This hybrid indicator is developed to assist traders in their | //| ability to decipher and monitor market conditions related to | //| trend direction, market strength, and market volatility. | //| | //| Even though comprehensive, the T.D.I. is easy to read and use. | //| | //| Green line = RSI Price line | //| Red line = Trade Signal line | //| Blue lines = Volatility Band | //| Yellow line = Market Base Line | //| | //| Trend Direction - Immediate and Overall | //| Immediate = Green over Red...price action is moving up. | //| Red over Green...price action is moving down. | //| | //| Overall = Yellow line trends up and down generally between the | //| lines 32 & 68. Watch for Yellow line to bounces off | //| these lines for market reversal. Trade long when | //| price is above the Yellow line, and trade short when | //| price is below. | //| | //| Market Strength & Volatility - Immediate and Overall | //| Immediate = Green Line - Strong = Steep slope up or down. | //| Weak = Moderate to Flat slope. | //| | //| Overall = Blue Lines - When expanding, market is strong and | //| trending. When constricting, market is weak and | //| in a range. When the Blue lines are extremely tight | //| in a narrow range, expect an economic announcement | //| or other market condition to spike the market. | //| | //| | //| Entry conditions | //| Scalping - Long = Green over Red, Short = Red over Green | //| Active - Long = Green over Red & Yellow lines | //| Short = Red over Green & Yellow lines | //| Moderate - Long = Green over Red, Yellow, & 50 lines | //| Short= Red over Green, Green below Yellow & 50 line | //| | //| Exit conditions* | //| Long = Green crosses below Red | //| Short = Green crosses above Red | //| * If Green crosses either Blue lines, consider exiting when | //| when the Green line crosses back over the Blue line. | //| | //| | //| IMPORTANT: The default settings are well tested and proven. | //| But, you can change the settings to fit your | //| trading style. | //| | //| | //| Price & Line Type settings: | //| RSI Price settings | //| 0 = Close price [DEFAULT] (COHLMTW) | //| 1 = Open price. | //| 2 = High price. | //| 3 = Low price. | //| 4 = Median price, (high+low)/2. | //| 5 = Typical price, (high+low+close)/3. | //| 6 = Weighted close price, (high+low+close+close)/4. | //| | //| RSI Price Line & Signal Line Type settings | //| 0 = Simple moving average [DEFAULT] | //| 1 = Exponential moving average | //| 2 = Smoothed moving average | //| 3 = Linear weighted moving average | //| SMA EMA SMMA LWMA | //| Good trading, | //| | //| Dean | //+------------------------------------------------------------------+ #property indicator_separate_window #property indicator_buffers 6 #property indicator_color1 Black #property indicator_color2 MediumBlue #property indicator_color3 Goldenrod #property indicator_color4 MediumBlue #property indicator_color5 Green #property indicator_color6 Red #property indicator_width5 2 #property indicator_width6 1 #property indicator_level1 76.4 #property indicator_level2 61.8 #property indicator_level3 50.0 #property indicator_level4 38.2 #property indicator_level5 23.6 #property indicator_levelstyle 2 #property indicator_levelcolor C'60,75,33' //-- extern int RSI_Period = 13; //8-25 extern int RSI_Price = 0; //0-6 (COHLMTW) extern int Volatility_Band = 34; //20-40 extern int RSI_Price_Line_Period = 2; extern int RSI_Price_Line_Type = 0; //0-3 extern int Trade_Signal_Line_Period = 7; extern int Trade_Signal_Line_Type = 0; //0-3 (SMA EMA SMMA LWMA) extern int timeFrame = 0; extern string note_timeFrames = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN|0currentTF"; extern string appliedPrice_ = "0C 1O 2H 3L 4Md 5Tp 6WghC, Md(HL/2)4,Tp(HLC/3)5,Wgh(HLCC/4)6"; extern string MA_Type_ = "SMA0 EMA1 SMMA2 LWMA3"; string IndicatorFileName; double RSIBuf[],UpZone[],MdZone[],DnZone[],MaBuf[],MbBuf[]; //+------------------------------------------------------------------+ int init() { SetIndexBuffer(0,RSIBuf); SetIndexBuffer(1,UpZone); SetIndexBuffer(2,MdZone); SetIndexBuffer(3,DnZone); SetIndexBuffer(4,MaBuf); SetIndexBuffer(5,MbBuf); SetIndexStyle(0,DRAW_NONE); SetIndexStyle(1,DRAW_LINE); SetIndexStyle(2,DRAW_LINE); SetIndexStyle(3,DRAW_LINE); SetIndexStyle(4,DRAW_LINE); SetIndexStyle(5,DRAW_LINE); SetIndexLabel(0,NULL); SetIndexLabel(1,"VolBand("+Volatility_Band+") High"); SetIndexLabel(2,"MarketBaseLine(VolBand"+Volatility_Band+")"); SetIndexLabel(3,"VolBand("+Volatility_Band+") Low"); SetIndexLabel(4,"RSI("+RSI_Period+","+RSI_Price_Line_Period+") Price Line"); SetIndexLabel(5,"Trade RSI_Signal_Line("+Trade_Signal_Line_Period+")"); switch(timeFrame) { case 1: string TimeFrameStr = "M1"; break; case 5 : TimeFrameStr = "M5"; break; case 15 : TimeFrameStr = "M15"; break; case 30 : TimeFrameStr = "M30"; break; case 60 : TimeFrameStr = "H1"; break; case 240 : TimeFrameStr = "H4"; break; case 1440 : TimeFrameStr = "D1"; break; case 10080 : TimeFrameStr = "W1"; break; case 43200 : TimeFrameStr = "MN1"; break; default : TimeFrameStr = "TF0"; } IndicatorShortName("DynRSI_TDI["+TimeFrameStr+"] RSI("+RSI_Period+";"+RSI_Price_Line_Period+") SigL("+Trade_Signal_Line_Period+") B("+Volatility_Band+")"); IndicatorFileName = WindowExpertName(); if (timeFrame < Period()) timeFrame = Period(); return(0); } int start() { double MA,RSI[]; ArrayResize(RSI,Volatility_Band); int counted_bars1=IndicatorCounted(); int limit1,i1; if(counted_bars1 < 0) return(-1); limit1 = Bars-counted_bars1; // // // MTF mode operating // // if (timeFrame != Period()) { limit1 = MathMax(limit1,timeFrame/Period()); datetime TimeArray[]; ArrayCopySeries(TimeArray ,MODE_TIME ,NULL,timeFrame); // // // // // for(i1=0,int y=0; i1<limit1; i1++) { if(Time[i1]<TimeArray[y]) y++; RSIBuf[i1] = iCustom(NULL,timeFrame,IndicatorFileName, RSI_Period,RSI_Price,Volatility_Band, RSI_Price_Line_Period,RSI_Price_Line_Type, Trade_Signal_Line_Period,Trade_Signal_Line_Type,0,y); UpZone[i1] = iCustom(NULL,timeFrame,IndicatorFileName, RSI_Period,RSI_Price,Volatility_Band, RSI_Price_Line_Period,RSI_Price_Line_Type, Trade_Signal_Line_Period,Trade_Signal_Line_Type,1,y); MdZone[i1] = iCustom(NULL,timeFrame,IndicatorFileName, RSI_Period,RSI_Price,Volatility_Band, RSI_Price_Line_Period,RSI_Price_Line_Type, Trade_Signal_Line_Period,Trade_Signal_Line_Type,2,y); DnZone[i1] = iCustom(NULL,timeFrame,IndicatorFileName, RSI_Period,RSI_Price,Volatility_Band, RSI_Price_Line_Period,RSI_Price_Line_Type, Trade_Signal_Line_Period,Trade_Signal_Line_Type,3,y); MaBuf[i1] = iCustom(NULL,timeFrame,IndicatorFileName, RSI_Period,RSI_Price,Volatility_Band, RSI_Price_Line_Period,RSI_Price_Line_Type, Trade_Signal_Line_Period,Trade_Signal_Line_Type,4,y); MbBuf[i1] = iCustom(NULL,timeFrame,IndicatorFileName, RSI_Period,RSI_Price,Volatility_Band, RSI_Price_Line_Period,RSI_Price_Line_Type, Trade_Signal_Line_Period,Trade_Signal_Line_Type,5,y); } return(0); } // // // // // int counted_bars=IndicatorCounted(); int limit = Bars-counted_bars-1; for(int i=limit; i>=0; i--) { RSIBuf[i] = (iRSI(NULL,0,RSI_Period,RSI_Price,i)); MA = 0; for(int x=i; x<i+Volatility_Band; x++) { RSI[x-i] = RSIBuf[x]; MA += RSIBuf[x]/Volatility_Band; } UpZone[i] = (MA + (1.6185 * StDev(RSI,Volatility_Band))); DnZone[i] = (MA - (1.6185 * StDev(RSI,Volatility_Band))); MdZone[i] = ((UpZone[i] + DnZone[i])/2); } for (i=limit-1;i>=0;i--) { MaBuf[i] = (iMAOnArray(RSIBuf,0,RSI_Price_Line_Period,0,RSI_Price_Line_Type,i)); MbBuf[i] = (iMAOnArray(RSIBuf,0,Trade_Signal_Line_Period,0,Trade_Signal_Line_Type,i)); } //---- return(0); } double StDev(double& Data[], int Per) {return(MathSqrt(Variance(Data,Per))); } double Variance(double& Data[], int Per) {double sum, ssum; for (int i=0; i<Per; i++) {sum += Data[i]; ssum += MathPow(Data[i],2); } return((ssum*Per - sum*sum)/(Per*(Per-1))); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains open time of each bar
Indicator Curves created:
Implements a curve of type DRAW_NONE
Implements a curve of type DRAW_LINE
Indicators Used:
Relative strength index
Moving average indicator
Custom Indicators Used:
Order Management characteristics:
Other Features: