◆ New — Strategy Validator, Code Fixer & Prop Compliance Checker are live. Try one free →
Home / Indicators / Traders Dynamic Index (TDI)
Momentum indicator

Traders Dynamic Index (TDI)

A forex-forum favorite that is really three familiar tools stacked on one RSI: a smoothed RSI, its signal line, and Bollinger Bands drawn on the RSI itself.

Illustrative diagram — not live market data.

What it is

The Traders Dynamic Index (TDI) is a composite indicator popularized on forex forums in the 2000s, commonly attributed to Dean Malone. Despite the imposing name and its reputation as an all-in-one 'market dashboard', its components are entirely ordinary: take a 13-period RSI, smooth it twice to create a fast 'price line' and a slower 'signal line', then draw Bollinger Bands (a 34-period moving average with volatility bands) on the RSI values themselves. That is the whole indicator — RSI plus moving averages of RSI plus Bollinger Bands of RSI, plotted together in one pane. Nothing in it is new math; the value, if any, is having momentum level, momentum smoothing, and momentum volatility visible in one place. TDI is often sold in packaged 'systems' with elaborate entry rules; none of that folklore is part of the calculation, and none of it has published evidence behind it. Like every indicator, TDI describes past price behavior and predicts nothing. This entry is educational only, not financial advice, and all trading carries risk of loss.

How it works

Every line in the TDI is derived from a single RSI series. Step one: compute a 13-period RSI of the close — a bounded 0-100 momentum reading. Step two: smooth that RSI with a 2-period simple moving average; this is the green 'RSI price line', a barely-smoothed copy of RSI that hugs it closely. Step three: smooth the same RSI with a 7-period SMA; this is the red 'trade signal line', a slower reference the fast line can cross. Step four: compute a 34-period SMA of the RSI — the 'market base line', read as the longer-term momentum drift. Step five: compute the standard deviation of RSI over the same 34 bars, multiply by a coefficient (1.6185 in the classic version — a number chosen by the author, with the golden-ratio flavor being decoration, not derivation), and add and subtract it from the base line to form 'volatility bands'. The result is Bollinger Band logic applied to RSI instead of price: when RSI readings have been swinging widely the bands are far apart, and when momentum has been quiet they contract. Because every layer is an average of past values of an average of past prices, all TDI lines lag by construction, and the fast/slow crossings inherit all the whipsaw behavior of any short moving-average pair.

How traders read it

Common settings

The classic configuration is RSI length 13 on the close; fast (price) line = 2-period SMA of RSI; slow (signal) line = 7-period SMA of RSI; band length 34 with a multiplier of 1.6185 on the standard deviation of RSI. Some versions use 21 or 34 for the RSI and different band multipliers (commonly 1.6185 or 2.0). Every one of these numbers is a convention someone chose; changing any of them changes every crossing and band touch, so state your settings explicitly when comparing results.

Strengths

Pitfalls to watch

Pine v6 example

//@version=6
indicator("Traders Dynamic Index (TDI)", overlay = false)

rsiLen   = input.int(13, "RSI Length", minval = 1)
fastLen  = input.int(2,  "Price Line Length", minval = 1)
slowLen  = input.int(7,  "Signal Line Length", minval = 1)
bandLen  = input.int(34, "Band Length", minval = 2)
bandMult = input.float(1.6185, "Band Multiplier", minval = 0.1, step = 0.05)

r = ta.rsi(close, rsiLen)
priceLine  = ta.sma(r, fastLen)
signalLine = ta.sma(r, slowLen)
baseLine   = ta.sma(r, bandLen)
dev        = bandMult * ta.stdev(r, bandLen)

plot(priceLine,      "RSI Price Line",  color = color.green)
plot(signalLine,     "Signal Line",     color = color.red)
plot(baseLine,       "Market Base",     color = color.orange)
plot(baseLine + dev, "Upper Band",      color = color.blue)
plot(baseLine - dev, "Lower Band",      color = color.blue)
hline(50, "Midline", color = color.gray)

Pro tip: Before adopting any TDI rule you read on a forum, decompose it: 'green crosses red above 50' just means a 2-bar average of RSI moved above a 7-bar average while RSI sat above midline — say it that way and evaluate whether that plain description deserves the weight the rule gives it. If you find TDI useful, it is likely as a compact momentum display, not as a signal machine. This is educational information only, not advice; TDI describes the past, predicts nothing, and all trading carries risk of loss.

Built an indicator from this? Run it through the Validator to catch look-ahead bias and repainting, or convert a strategy to Pine Script.

Educational only — not financial advice, not a recommendation to trade. No indicator is predictive; trading involves substantial risk of loss.

Catch the bug that compiles.Run auditGet Pro