Traders_Dynamic_Index_001
Download scriptThe Traders Dynamic Index (T.D.I.) is a comprehensive, hybrid technical analysis tool designed to give traders a multi-layered view of the market. Instead of relying on a single metric, it combines price action, trend direction, market strength, and volatility into one cohesive visual display. It is built to help you identify not just where the price is going, but how much momentum and "energy" is behind that movement.
Visual Components
To interpret the indicator, you will see several distinct lines and zones:
- Green Line (RSI Price Line): This represents the immediate price action and momentum.
- Red Line (Trade Signal Line): This acts as a moving average of the price line; it serves as your primary trigger for entry and exit signals.
- Blue Lines (Volatility Bands): These create a channel around the market base. They represent the "breathing room" of the market.
- Yellow Line (Market Base Line): This is the central equilibrium point, representing the overall trend direction.
Key Market Insights
1. Trend Direction
The tool allows you to distinguish between immediate moves and the long-term trend:
- Immediate Trend: Look at the relationship between the Green and Red lines. If the Green line is above the Red, the immediate price action is moving upward. If it is below, the momentum is downward.
- Overall Trend: Observe the Yellow line. When it moves generally between the levels of 32 and 68, pay attention to its "bounces." If it bounces off these boundaries, it may signal a reversal. Generally, trading above this line suggests a bullish environment, while trading below it suggests a bearish environment.
2. Market Strength & Volatility
The indicator also provides a "heartbeat" of the market:
- Strength: A steep slope on the Green line indicates strong momentum, while a flat or moderate slope suggests weakness or consolidation.
- Volatility: Look at the spacing of the Blue lines. When they expand outward, the market is in a strong trend. When they contract (constrict), it indicates a weak, ranging market. If they become extremely tight, it often warns of an upcoming "spike" due to economic news or significant market shifts.
Practical Trading Logic
The script provides specific logic based on your trading style:
- Scalping (Fast-paced): Look for the simplest crossovers. A Long is signaled when Green is over Red; a Short is signaled when Red is over Green.
- Active Trading: Requires more confirmation. A Long requires both the Green line to be above the Red line AND above the Yellow Market Base Line. A Short requires the Red line to be above the Green line AND below the Yellow Market Base Line.
- Moderate Trading: The most conservative approach, requiring the lines to align with a "50" level marker for maximum confirmation before entering a trade.
Exit Strategy
The indicator provides clear exit points to protect profits:
- Standard Exit: Close a Long position when the Green line crosses below the Red line; close a Short position when the Green line crosses above the Red line.
- Volatility Exit: If the Green line crosses outside of the Blue Volatility Bands, you should consider exiting once the Green line crosses back inside that band.
//+------------------------------------------------------------------+
//| Traders Dynamic Index.mq4 |
//| Copyright © 2006, Dean Malone |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| |
//| 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] |
//| 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 |
//| |
//| Good trading, |
//| |
//| Dean |
//+------------------------------------------------------------------+
#property indicator_buffers 6
#property indicator_color1 Black
#property indicator_color2 MediumBlue
#property indicator_color3 Yellow
#property indicator_color4 MediumBlue
#property indicator_color5 Green
#property indicator_color6 Red
#property indicator_separate_window
extern int RSI_Period = 13; //8-25
extern int RSI_Price = 0; //0-6
extern int Volatility_Band = 34; //20-40
extern int RSI_Price_Line = 2;
extern int RSI_Price_Type = 0; //0-3
extern int Trade_Signal_Line = 7;
extern int Trade_Signal_Type = 0; //0-3
double RSIBuf[],UpZone[],MdZone[],DnZone[],MaBuf[],MbBuf[];
int init()
{
IndicatorShortName("Traders Dynamic Index");
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,0,2);
SetIndexStyle(3,DRAW_LINE);
SetIndexStyle(4,DRAW_LINE,0,2);
SetIndexStyle(5,DRAW_LINE,0,2);
SetIndexLabel(0,NULL);
SetIndexLabel(1,"VB High");
SetIndexLabel(2,"Market Base Line");
SetIndexLabel(3,"VB Low");
SetIndexLabel(4,"RSI Price Line");
SetIndexLabel(5,"Trade Signal Line");
SetLevelValue(0,50);
SetLevelValue(1,68);
SetLevelValue(2,32);
SetLevelStyle(STYLE_DOT,1,DimGray);
return(0);
}
int start()
{
double MA,RSI[];
ArrayResize(RSI,Volatility_Band);
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,0,RSI_Price_Type,i));
MbBuf[i] = (iMAOnArray(RSIBuf,0,Trade_Signal_Line,0,Trade_Signal_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)));
}
//+------------------------------------------------------------------+
Comments