OPEN-SOURCE SCRIPT
Trend Continuation Momentum Detector

TCMD v3 — Trend Continuation Momentum Detector
Core Concept
TCMD is a weighted multi-factor momentum scoring system built on Heiken Ashi candles. Instead of one signal triggering everything, it blends five independent measurements of "how strong is this move" into a composite Momentum Score (0–100), then layers state logic, filters, and risk levels on top.
The five scoring factors
Body Expansion (30% weight) — Is this candle's body unusually large? Calculated as HA body / 20-bar avg body, scaled to 0–100.
Wick Quality (25% weight) — Is the move "clean" (no rejection)? The wick opposing the candle's direction is measured as a % of body size — a small opposing wick scores high.
Trend Slope (20% weight) — Is the EMA of HA close actually rising/falling with conviction? EMA slope over slopeLookback bars, normalized by ATR, then multiplied by a sensitivity factor.
Volume (15% weight) — Is volume confirming the move? volume / 20-bar avg volume, scaled.
Z-Score / distance from mean (10% weight) — Is price extended from its own EMA in a statistically meaningful (but not extreme) way? (HA close − EMA) / stdev, scored with a bell-shaped curve peaking around 0.5–2.0 SD and decaying past 3 SD (overextended).
These combine into a weighted average (weights auto-normalize even if they don't sum to 100) to produce momentumScore.
Why Heiken Ashi
HA smooths noise so body size/wick logic reflects sustained pressure rather than single-tick noise — important since body expansion and wick quality are core inputs.
Signal Logic — 5-State Machine
Each confirmed bar is classified as:
STRONG BUY — momentumScore > threshold (default 75) AND bullish HA candle AND clean wick AND body > average AND HA close above EMA AND (optional) close above VWAP AND (optional) delta positive
STRONG SELL — mirror conditions to the downside
BUY / SELL (bias) — looser: HA close vs EMA + VWAP direction + momentumScore ≥ 50, no wick/body purity required
NEUTRAL — none of the above
This state drives everything downstream: candle coloring, markers, warnings, and TP/SL.
"One-Shot + EMA Reset" Entry Logic
The key anti-spam mechanism: a Strong Buy/Sell marker fires once per cycle, then locks. It won't fire again until price pulls back and touches the EMA (low touches EMA resets buy-side, high touches EMA resets sell-side). This stops multiple entry signals stacking up during one continuous trending move — you get one entry, then must wait for a retest before the next is valid.
Warning System
Light Warning (diamond) — Strong Buy/Sell degrades to plain Buy/Sell, same direction, losing steam
Heavy Warning (x-cross) — Strong Buy/Sell degrades to Neutral or flips to the opposite bias — reversal risk
These are degradation alerts for managing an existing position, not new directional entries.
VWAP & Delta as Confirmation Filters
VWAP filter — Strong signals optionally require price on the "correct" side of session VWAP. Most meaningful intraday since VWAP resets each session.
Delta filter — pulls real buy/sell volume from a lower timeframe (default 1-min) and requires it to agree with signal direction. Falls back to candle direction (close vs open) when lower-timeframe data isn't available in deep history.
Mean Reversion (MR) Signal — separate counter-trend logic
MR looks for momentum exhaustion at a statistical extreme, the opposite philosophy from the trend signals. It fires when:
Price is ≥ mrSdThreshold VWAP standard deviations away (default 1.8 ≈ near the 2SD band)
Momentum Score is weak (< mrMomentumMax) and optionally fading vs the prior bar
The current HA body is small (neutral) and its real high/low engulfs the previous candle's body — a rejection pattern
Session warm-up (mrMinBars) and minimum VWAP SD width (mrMinSdPct) guards are satisfied so it doesn't fire on noisy early bars
MR has its own optional dotted TP/SL lines and alerts, independent of trend-following TP/SL.
TP / SL Levels
When a fresh Strong Buy/Sell fires, TP1/TP2/SL are calculated from the signal candle's HA range (high−low), drawn from the next bar's real open:
Long: TP1 = entry + 2×range, TP2 = entry + 4×range, SL = entry − 1.5×range
Short: mirrored
An "Active SL" is tracked internally; if close crosses through it, an SL-hit marker/alert fires and clears the level.
How to Use It in Practice
Check the current state first — Strong Buy/Sell, Buy/Sell, or Neutral — as your top-line read.
Strong Buy/Sell circle = entry trigger. TP/SL lines (if enabled) auto-draw on the next bar's open.
Diamond (light warning) = start thinking about trimming/tightening — momentum easing, direction unchanged.
X-cross (heavy warning) = treat as an exit signal for the prior position, not a new entry.
Consecutive strong bars = move is extended, higher risk of a sharp mean-reversion snap — cross-check against MR triangles.
VWAP Z-Score / SD bands — gauge how stretched price is; MR triangles are your explicit counter-trend cue at extremes.
ATR — elevated/high readings mean volatility regime has shifted; sanity-check your TP/SL multiples still fit the current range.
Delta — cross-check real order flow agrees with the HA/EMA-based signal, useful for scalping confirmation beyond price action alone.
One thing worth flagging for your GC/NQ intraday use: the VWAP filter and MR signal are most meaningful on session-based intraday timeframes given the session-reset VWAP — on higher timeframes or across sessions, those two features lose some of their intended meaning.
Core Concept
TCMD is a weighted multi-factor momentum scoring system built on Heiken Ashi candles. Instead of one signal triggering everything, it blends five independent measurements of "how strong is this move" into a composite Momentum Score (0–100), then layers state logic, filters, and risk levels on top.
The five scoring factors
Body Expansion (30% weight) — Is this candle's body unusually large? Calculated as HA body / 20-bar avg body, scaled to 0–100.
Wick Quality (25% weight) — Is the move "clean" (no rejection)? The wick opposing the candle's direction is measured as a % of body size — a small opposing wick scores high.
Trend Slope (20% weight) — Is the EMA of HA close actually rising/falling with conviction? EMA slope over slopeLookback bars, normalized by ATR, then multiplied by a sensitivity factor.
Volume (15% weight) — Is volume confirming the move? volume / 20-bar avg volume, scaled.
Z-Score / distance from mean (10% weight) — Is price extended from its own EMA in a statistically meaningful (but not extreme) way? (HA close − EMA) / stdev, scored with a bell-shaped curve peaking around 0.5–2.0 SD and decaying past 3 SD (overextended).
These combine into a weighted average (weights auto-normalize even if they don't sum to 100) to produce momentumScore.
Why Heiken Ashi
HA smooths noise so body size/wick logic reflects sustained pressure rather than single-tick noise — important since body expansion and wick quality are core inputs.
Signal Logic — 5-State Machine
Each confirmed bar is classified as:
STRONG BUY — momentumScore > threshold (default 75) AND bullish HA candle AND clean wick AND body > average AND HA close above EMA AND (optional) close above VWAP AND (optional) delta positive
STRONG SELL — mirror conditions to the downside
BUY / SELL (bias) — looser: HA close vs EMA + VWAP direction + momentumScore ≥ 50, no wick/body purity required
NEUTRAL — none of the above
This state drives everything downstream: candle coloring, markers, warnings, and TP/SL.
"One-Shot + EMA Reset" Entry Logic
The key anti-spam mechanism: a Strong Buy/Sell marker fires once per cycle, then locks. It won't fire again until price pulls back and touches the EMA (low touches EMA resets buy-side, high touches EMA resets sell-side). This stops multiple entry signals stacking up during one continuous trending move — you get one entry, then must wait for a retest before the next is valid.
Warning System
Light Warning (diamond) — Strong Buy/Sell degrades to plain Buy/Sell, same direction, losing steam
Heavy Warning (x-cross) — Strong Buy/Sell degrades to Neutral or flips to the opposite bias — reversal risk
These are degradation alerts for managing an existing position, not new directional entries.
VWAP & Delta as Confirmation Filters
VWAP filter — Strong signals optionally require price on the "correct" side of session VWAP. Most meaningful intraday since VWAP resets each session.
Delta filter — pulls real buy/sell volume from a lower timeframe (default 1-min) and requires it to agree with signal direction. Falls back to candle direction (close vs open) when lower-timeframe data isn't available in deep history.
Mean Reversion (MR) Signal — separate counter-trend logic
MR looks for momentum exhaustion at a statistical extreme, the opposite philosophy from the trend signals. It fires when:
Price is ≥ mrSdThreshold VWAP standard deviations away (default 1.8 ≈ near the 2SD band)
Momentum Score is weak (< mrMomentumMax) and optionally fading vs the prior bar
The current HA body is small (neutral) and its real high/low engulfs the previous candle's body — a rejection pattern
Session warm-up (mrMinBars) and minimum VWAP SD width (mrMinSdPct) guards are satisfied so it doesn't fire on noisy early bars
MR has its own optional dotted TP/SL lines and alerts, independent of trend-following TP/SL.
TP / SL Levels
When a fresh Strong Buy/Sell fires, TP1/TP2/SL are calculated from the signal candle's HA range (high−low), drawn from the next bar's real open:
Long: TP1 = entry + 2×range, TP2 = entry + 4×range, SL = entry − 1.5×range
Short: mirrored
An "Active SL" is tracked internally; if close crosses through it, an SL-hit marker/alert fires and clears the level.
How to Use It in Practice
Check the current state first — Strong Buy/Sell, Buy/Sell, or Neutral — as your top-line read.
Strong Buy/Sell circle = entry trigger. TP/SL lines (if enabled) auto-draw on the next bar's open.
Diamond (light warning) = start thinking about trimming/tightening — momentum easing, direction unchanged.
X-cross (heavy warning) = treat as an exit signal for the prior position, not a new entry.
Consecutive strong bars = move is extended, higher risk of a sharp mean-reversion snap — cross-check against MR triangles.
VWAP Z-Score / SD bands — gauge how stretched price is; MR triangles are your explicit counter-trend cue at extremes.
ATR — elevated/high readings mean volatility regime has shifted; sanity-check your TP/SL multiples still fit the current range.
Delta — cross-check real order flow agrees with the HA/EMA-based signal, useful for scalping confirmation beyond price action alone.
One thing worth flagging for your GC/NQ intraday use: the VWAP filter and MR signal are most meaningful on session-based intraday timeframes given the session-reset VWAP — on higher timeframes or across sessions, those two features lose some of their intended meaning.
Script de código aberto
Em verdadeiro espírito do TradingView, o criador deste script o tornou de código aberto, para que os traders possam revisar e verificar sua funcionalidade. Parabéns ao autor! Embora você possa usá-lo gratuitamente, lembre-se de que a republicação do código está sujeita às nossas Regras da Casa.
Aviso legal
As informações e publicações não se destinam a ser, e não constituem, conselhos ou recomendações financeiras, de investimento, comerciais ou de outro tipo fornecidos ou endossados pela TradingView. Leia mais nos Termos de Uso.
Script de código aberto
Em verdadeiro espírito do TradingView, o criador deste script o tornou de código aberto, para que os traders possam revisar e verificar sua funcionalidade. Parabéns ao autor! Embora você possa usá-lo gratuitamente, lembre-se de que a republicação do código está sujeita às nossas Regras da Casa.
Aviso legal
As informações e publicações não se destinam a ser, e não constituem, conselhos ou recomendações financeiras, de investimento, comerciais ou de outro tipo fornecidos ou endossados pela TradingView. Leia mais nos Termos de Uso.