Markets › FX · EURUSD, 4-hour bars (broker clock) from 1-minute data
TDI Indicator Strategy Backtest: 22 Years of EUR/USD on the 4-Hour Chart
The Traders Dynamic Index is one of the most discussed indicators on Forex Factory. We took the rules a well-known thread teaches for it, the green/red cross, the conservative entry and the quick exit, and traded them on every EUR/USD 4-hour bar since 2004.
Buried · CostsGreen crossed red six thousand times. The spread kept the score.
Variants tried: 3 · Passed every gate: 0 · Positive before costs: 3 · Holdout opened: yes (already used)
Short answer: not after costs. On EUR/USD 4-hour bars from 2004 to 2026, the TDI green/red cross made +0.92 pips a trade before costs and -0.08 pips after a 1-pip round trip, over 6,189 trades; the conservative entry and the hook exit did worse, and all three lost money from 2020 on.How much costs took here, compared across all 54 of our tests →
00The verdict in three lines
- We tested the TDI indicator strategy on EUR/USD 4-hour bars from 2004 to September 2026, in three readings of the rules taught in a popular Forex Factory thread: the green/red cross (always in), Dean Malone's conservative entry (green above red, the yellow line and 50), and an exit at the first hook of the green line. No stop, 1 pip a round trip.
- Positive before costs, negative after. The plain cross made +0.92 pips a trade before costs and -0.08 after, over 6,189 trades; the conservative entry and the hook exit did worse (-0.69 and -0.62).
- In the first period, 2004 to 2012, all three made money; they lost it in the later periods. Buried, cause Costs.
01What is the TDI indicator (Traders Dynamic Index)?
The Traders Dynamic Index was published by Dean Malone and is distributed free with CompassFX's Synergy template for MetaTrader. It is built entirely from the RSI:
- Green line (RSI price line): a 2-period moving average of RSI(13).
- Red line (trade signal line): a 7-period moving average of the same RSI.
- Yellow line (market base line): a 34-period average of RSI, with volatility bands 1.6185 standard deviations above and below it.
- Levels 32, 50 and 68: 50 splits bullish from bearish; 68 and 32 are read as stretched.
TDI indicator settings: those are the defaults of the common MetaTrader version (RSI period 13, price line 2, signal line 7, volatility band 34, 1.6185 deviations), and the ones we used.
02The TDI trading strategies we tested
The rules come from a compilation of posts by “Big E” in a long Forex Factory thread, sent to us by the site's owner. The author draws Heikin Ashi candles and a 5-period EMA on the price chart, but says the TDI drives most of his decisions, and he states three rules plainly enough to test:
- TDI-X, the green and red line cross: long when green crosses above red, short when it crosses below, each cross reversing the position (his rule for daily charts). A touch is not a cross: green must end above red.
- TDI-50, the conservative entry: long when green is above red, above the yellow line and above 50 (short: below all three), the entry he attributes to Dean Malone; out at the next opposite cross.
- TDI-HOOK, the aggressive exit: enter at the cross, and leave at the first “hook”, the first bar where the green line turns against the trade, or at the opposite cross. This is our fixed reading of his exit advice (green going flat, hooking over or reversing).
He trades 1-hour to daily charts and says the 4-hour chart is his favourite; we used EUR/USD 4-hour bars cut on the broker's clock, as on his MetaTrader charts. He often trades without a stop on these charts, so the test used none and reports the worst open loss. What he calls experience (support and resistance, consolidation, news, judgement) cannot be written as a rule and is not in the test; the results he posts in the thread are his chosen examples and play no part here.
03How we tested it
EUR/USD from the IC Markets MetaTrader 4 history, 1-minute bars from January 2004 to 28 September 2026, built into 35,378 four-hour bars closing at 01:00, 05:00, 09:00, 13:00, 17:00 and 21:00 New York. Signals at the close of a bar, fills at the next bar's first minute. Costs: 1.0 pip a round trip, also shown at 1.5 and 2.5 times, and a swap stress of 0.5 pip per night. Periods: 2004 to 2012, 2013 to 2019, and a holdout from 2020 already used by earlier EUR/USD tests. First-period bar t ≥ 2.5: many strategies have been tried on this pair, and the TDI itself was looked at in earlier unpublished work for the site's owner. Control: each version's trades moved together by a random number of bars, 500 times, keeping direction and length. Engine check: the bars on the broker's clock, the RSI, the three lines and the bands against hand calculations, crosses (including a touch that is not one), the conservative entry, the hook exit, and an independent re-implementation that matched every one of the 16,186 trades (tdi_selftest_result.txt).
04Results: does the TDI strategy work?
| Variant | Rule | Trades | Win rate (95% range) | Gross pips per trade | Net pips per trade | Net total | Profit factor | Verdict |
|---|---|---|---|---|---|---|---|---|
| TDI-X | Green/red cross; always in the market, each cross reverses | 6,189 | 36.4% (35% to 38%) | +0.92 | -0.08 | -469 pips | 1.00 | Buried |
| TDI-50 | Green above red, yellow and 50 (or below all three); out at the opposite cross | 3,808 | 37.0% (36% to 39%) | +0.31 | -0.69 | -2,628 pips | 0.97 | Buried |
| TDI-HOOK | Enter at the green/red cross; out at the first hook of the green line or the opposite cross | 6,189 | 36.6% (35% to 38%) | +0.38 | -0.62 | -3,859 pips | 0.96 | Buried |
Cumulative net pips by month. * Holdout already used before this test.
Holding time, costs and open losses
| Variant | Median hold | Time in the market | Net per trade at 1.5x cost | With swap stress | Worst open loss, median trade (pips) | Worst open loss, any trade (pips) |
|---|---|---|---|---|---|---|
| TDI-X | 20 h | 98.6% | -0.58 | -0.74 | -28.4 | -506 |
| TDI-50 | 20 h | 55.0% | -1.19 | -1.29 | -27.0 | -333 |
| TDI-HOOK | 8 h | 49.9% | -1.12 | -0.99 | -19.0 | -306 |
The green and red lines crossed about every 5.6 four-hour bars. Each crossing earned less than a pip before costs, so the cost decided the result. The hook exit cut the typical open loss (median -19 pips against -28) but cut the winners as well.
05TDI signals or random timing?
| Variant | Trades | Real net pips per trade | Shifted, median | Shifted, 5th to 95th | Percentile (95 needed) |
|---|---|---|---|---|---|
| TDI-X | 6,189 | -0.08 | -1.02 | -2.42 to +0.43 | 85.8 |
| TDI-50 | 3,808 | -0.69 | -1.04 | -2.73 to +0.54 | 61.4 |
| TDI-HOOK | 6,189 | -0.62 | -1.00 | -2.06 to -0.10 | 75.8 |
The control keeps each version's trades, with their direction and length, and moves them to other bars. The real signals did a little better than the median random placement and none reached the 95th percentile: some timing information, not enough to separate from chance or to pay the cost.
06By period and by year
| Variant | 2004 to 2012, net pips per trade (trades) | 2013 to 2019 (trades) | Holdout* 2020 to Sep 2026 (trades) | t, first period | PF, second period |
|---|---|---|---|---|---|
| TDI-X | +2.05 (2,351) | -0.57 (1,911) | -2.18 (1,927) | 1.17 | 0.97 |
| TDI-50 | +1.33 (1,460) | -2.03 (1,164) | -1.87 (1,184) | 0.63 | 0.89 |
| TDI-HOOK | +0.36 (2,351) | -0.48 (1,911) | -1.96 (1,927) | 0.31 | 0.96 |
| Year | TDI-X net (trades) | TDI-50 net (trades) | TDI-HOOK net (trades) |
|---|---|---|---|
| 2004 | +64 pips (189) | +204 pips (112) | +129 pips (189) |
| 2005 | +129 pips (274) | +313 pips (167) | -833 pips (274) |
| 2006 | +819 pips (249) | -246 pips (164) | -119 pips (249) |
| 2007 | -395 pips (269) | -76 pips (164) | -1,044 pips (269) |
| 2008 | +954 pips (268) | +407 pips (164) | +1,258 pips (268) |
| 2009 | +26 pips (281) | -824 pips (179) | -180 pips (281) |
| 2010 | +1,311 pips (270) | +887 pips (169) | +1,097 pips (270) |
| 2011 | +1,737 pips (262) | +996 pips (164) | +254 pips (262) |
| 2012 | +168 pips (289) | +286 pips (177) | +283 pips (289) |
| 2013 | -1,024 pips (270) | -1,244 pips (165) | -9 pips (270) |
| 2014 | -796 pips (262) | -1,243 pips (163) | +384 pips (262) |
| 2015 | +1,549 pips (272) | +853 pips (172) | +400 pips (272) |
| 2016 | -848 pips (284) | -960 pips (172) | -452 pips (284) |
| 2017 | +534 pips (271) | -136 pips (164) | +229 pips (271) |
| 2018 | +135 pips (262) | +257 pips (157) | -209 pips (262) |
| 2019 | -635 pips (290) | +115 pips (171) | -1,262 pips (290) |
| 2020 | -722 pips (281) | +308 pips (171) | -638 pips (281) |
| 2021 | -1,064 pips (301) | -930 pips (188) | -330 pips (301) |
| 2022 | -2,126 pips (286) | -653 pips (172) | -2,334 pips (286) |
| 2023 | +580 pips (277) | -9 pips (172) | +428 pips (277) |
| 2024 | -871 pips (284) | -950 pips (175) | -346 pips (284) |
| 2025 | +50 pips (280) | +98 pips (174) | -186 pips (280) |
| 2026 (to 28 Sep) | -45 pips (218) | -82 pips (132) | -376 pips (218) |
07The gates
| Variant | Trades | 1. PF ≥ 1.2 in validation | 2. ≥ 50 trades in each period | 3. t ≥ 2.5 on development | 4. Above the 95th percentile of the shifted-holdings control | 5. Positive without the 10 best trades | 6. Holdout net positive (already used) |
|---|---|---|---|---|---|---|---|
| TDI-X | 6,189 | fail | pass | fail | fail | fail | fail |
| TDI-50 | 3,808 | fail | pass | fail | fail | fail | fail |
| TDI-HOOK | 6,189 | fail | pass | fail | fail | fail | fail |
| Variant | Cause | Gates failed | Verdict |
|---|---|---|---|
| TDI-X | Costs | 1, 3, 4, 5, 6 | Buried |
| TDI-50 | Costs | 1, 3, 4, 5, 6 | Buried |
| TDI-HOOK | Costs | 1, 3, 4, 5, 6 | Buried |
The data-gap check removed 163, 86 and 97 trades open across a suspect gap; without them the plain cross fell to -1.05 pips a trade, and no verdict changed. Costs: positive before costs, negative after.
The complete rules: after this test the site's owner pointed us to the author's own thread, “Trading Made Simple”, which adds a candle-count rule, bounce re-entries, a stochastic filter and a night-time routine on 4-hour charts. We tested those rules separately, stating that the test came after this result: all three versions were buried; the author's night routine made -0.39 pips a trade after costs (Trading Made Simple backtested).
TWhat this shows, and what to take into your own tests
What the results show
- The TDI's green/red cross, traded mechanically on EUR/USD 4-hour bars from 2004 to 2026, made +0.92 pips a trade before costs and -0.08 after a 1-pip round trip, over 6,189 trades: about breakeven, with a cross every 5.6 bars.
- In the first period, 2004 to 2012, all three readings made money; in the holdout period, from 2020, they lost, and none beat the same trades shifted in time at the 95% level.
- The "safer" entry (green above red, the yellow line and 50) and the quick exit at the first hook both did worse than the plain cross.
What remains unknown
- Discretion. The rules come from a trader who says the method needs experience; reading support and resistance, consolidation and news is not in our test.
- Other timeframes and pairs. The author trades eight pairs on 1-hour to daily charts; we tested EUR/USD on 4-hour bars.
- Stops. Following the author, the test used none; the worst open loss inside one trade was 506 pips. A stop would change every number.
Why it was buried
The green line is a 2-period average of RSI and the red one a 7-period average, so they cross often: every 5.6 four-hour bars on EUR/USD. Each cross earned under a pip before costs, and a 1-pip round trip took it. The early years carried the result (+4,814 pips for the always-in cross from 2004 to 2012), then validation and the holdout gave it back (-1,086 pips and -4,198 pips).
What you can apply to your own tests
- Count how often your oscillator lines cross, and multiply by your cost. Fast lines mean many trades, and each one pays the spread.
- Test the "safer" version too. Here waiting for green to clear the yellow line and 50 entered later and did worse.
- If you trade without a stop, look at the worst open loss, not the closed-trade results: here it reached hundreds of pips.
A note on the numbers: drawdown figures are measured on closed trades unless a table says it includes open losses. Open losses inside a trade are not counted in a closed-trade drawdown, so real account risk is higher, especially for systems with no stop. Backtests are not live trading.
FAQCommon questions
What is the TDI indicator?
The Traders Dynamic Index, by Dean Malone: an RSI(13) drawn as a green line (its 2-period average), a red signal line (its 7-period average) and a yellow base line (its 34-period average) with volatility bands, plus levels at 32, 50 and 68.
What are the default TDI indicator settings?
RSI period 13, price line 2, signal line 7, volatility band 34 with 1.6185 standard deviations, and levels 32, 50 and 68, as in the common MetaTrader version. We tested those defaults.
Does the TDI green and red line cross work?
Not well enough to pay costs in our test: on EUR/USD 4-hour bars the lines crossed about every 5.6 bars, each cross earned less than a pip before costs, and the strategy finished at -0.08 pips a trade after a 1-pip round trip.
Is the conservative TDI entry (green above red, yellow and 50) better?
No: waiting for all three conditions entered later and made -0.69 pips a trade after costs, worse than the plain cross.
How was the TDI strategy tested?
On EUR/USD 1-minute data from 2004 to 2026, built into 4-hour bars on the broker's clock, without a stop as the method's author trades it, 1 pip a round trip and rules written and dated before the data was run, costs included on every trade, results split into development, validation and holdout periods, a random-entry control as the benchmark, and every variant reported. Read the protocol.
08Check our arithmetic
tdi_spec.md
tdi_lib.js · tdi_ref.js · tdi_selftest.js · tdi_run.js
control_audit_lib.js · fx_data.js · gh_lib.js · gx_lib.js · hourly_lib.js · ma_lib.js · rsi2_protocol.js
tdi_selftest_result.txt · tdi_results.txt · tdi_summary.json
Code provenance: our own code, written from the specification and the published TDI formula; the thread is cited for its rules only, and we have no connection with its author or with CompassFX.
09Data notes
Source. IC Markets MetaTrader 4 EUR/USD 1-minute bid history (a demo server), the file of our other EUR/USD tests; the 4-hour bars are cut on the server's clock (New York + 7 hours), as its own charts are. Trades open across a suspect gap in the data are listed in the gap check above. Fills: the first minute of the bar after the signal; no extra slippage beyond the 1-pip cost.
10Corrections
22 Oct 2026, navigation: added a link to the new guide comparing trading costs across all our tests. No result changed. 22 Oct 2026, navigation: added a link to the new guide comparing trend following and mean reversion across all our tests. No result changed.
+More tests and guides
- Tdi heikin ashi strategy
- Parabolic sar strategy
- Adx indicator strategy
- Stochastic rsi macd strategy
- Trend following vs mean reversion: this test next to the others of its style
- Free prop firm challenge calculator
- What all the backtests found so far
- The backtesting protocol
- How to backtest a trading strategy without fooling yourself
- Backtesting glossary