OPEN-SOURCE SCRIPT

Triple MACD Momentum

979
What This Indicator Does

Triple MACD Momentum is a multi-layer momentum confluence indicator that runs three independent MACD calculations — each tuned to a different speed cycle — and displays them as nested histogram columns within a single pane. Rather than requiring a trader to open three separate MACD indicators and mentally cross-reference them, it unifies the reading into one visual structure and adds a composite momentum score that numerically quantifies cross-layer agreement.
snapshot

The three layers operate at short, medium, and long-term horizons. Their histograms are painted one inside the other (widest in the back, narrowest in front), and dynamic gradient coloring on each layer independently reflects whether momentum within that cycle is accelerating or decelerating. The indicator also provides six dedicated alert conditions, optional background shading on full alignment, and a user-toggleable anti-repainting gate — all computed directly on chart data without any request.security() calls.

How It Works

The indicator computes three standard MACD lines (fast EMA minus slow EMA), each with its own configurable fast length, slow length, signal smoothing length, and price source.

-Layer A (Short-term) uses default parameters 8/12/9. This is the most responsive layer. Its fast EMA (8) reacts within a few bars to price changes, while the slow EMA (12) provides the baseline. The resulting MACD line oscillates quickly around zero and captures intrabar and intraday momentum shifts. Because the spread between fast and slow is only 4 bars, this layer will cross zero frequently — that is intentional. It is designed to show every momentum impulse, including minor ones, so the trader can evaluate them in the context of the slower layers.

-Layer B (Medium-term) uses default parameters 16/30/9. The fast EMA (16) is roughly double Layer A's, creating a natural harmonic relationship. The slow EMA (30) provides a wider baseline that filters out the minor swings that Layer A captures. When Layer B crosses zero, it typically represents a momentum shift that persists for multiple sessions rather than a single bar — it is the "noise filter" that separates meaningful swings from intraday chop. The 16/30 spread (14 bars) is approximately 3.5x wider than Layer A's spread, ensuring it responds to genuinely different market dynamics rather than just being a lagged version of Layer A.

-Layer C (Long-term) uses default parameters 50/80/9. This is the structural layer. The 50-period fast EMA aligns with the widely-watched 50-period moving average that institutional traders and algorithms monitor. The 80-period slow EMA establishes the macro trend baseline. When Layer C is above zero, the dominant trend is bullish at a multi-week to multi-month scale (on daily charts); when below zero, the structural bias is bearish. Zero-line crosses on this layer are relatively rare events — they represent genuine regime shifts in market momentum. Because these crosses happen infrequently, each one carries significantly more weight than a Layer A or B cross.

All calculations use ta.macd() directly on the chart's price data. No request.security() is involved anywhere — the indicator reads only from the symbol and timeframe already loaded on the chart. This eliminates an entire category of repainting risk that arises from security context mismatches, lookahead settings, or real-time vs. historical data divergence in multi-security calls.

The Anti-Repaint Gate

Beyond avoiding request.security(), the indicator includes a dedicated "Wait for Bar Close" toggle (enabled by default) in the System settings group. When active, it uses barstate.isconfirmed to gate every value the indicator produces — MACD lines, signal lines, histogram values, momentum score, gradient coloring decisions, and alert evaluations. On the current forming (unclosed) bar, the indicator displays the previous confirmed bar's state instead of the live-updating values. The moment that bar closes and becomes confirmed, the indicator updates to reflect the new confirmed data. On historical bars, barstate.isconfirmed is always true, so this mechanism has zero impact on backtesting — it only affects the single live bar on a real-time chart. This means that if you screenshot a signal today and check it tomorrow, it will be in the same place with the same color. Traders who prefer to see live intra-bar updates can disable this toggle, understanding that the current bar's values may shift until close.

Momentum Score Calculation

The momentum score is a composite number that translates visual histogram information into a single numeric value. For each enabled layer, two components are evaluated:

1. Directional component: If the MACD line is above zero, the layer contributes +1 (bullish structural bias); if below zero, it contributes -1 (bearish structural bias). This captures the position of price momentum relative to its own moving average equilibrium.

2. Acceleration component: If the MACD line is above its own signal line, an additional +0.25 is added (momentum is accelerating or maintaining strength); if below the signal line, -0.25 is applied (momentum is decelerating or weakening). This is a subtler measure — a layer can be bullish (above zero) but decelerating (below its signal line), which is a common pre-reversal condition.

With all three layers enabled, the score ranges from -3.75 (all bearish and decelerating) to +3.75 (all bullish and accelerating). The fractional granularity means you can distinguish between, for example, "all layers bullish but Layer A is losing steam" (+2.75) vs. "all layers bullish and all accelerating" (+3.75) — a distinction that is difficult to make visually from histogram columns alone.
snapshot

Gradient Coloring Mechanics

Each layer's histogram bars are colored not just by polarity (above/below zero) but by whether the histogram value is growing or shrinking compared to the previous bar. This is implemented by comparing the current bar's histogram to the prior bar's histogram (both gated through the anti-repaint mechanism):

- When the histogram is growing (current > previous for bullish, or current < previous for bearish), the bar color is rendered at full brightness — momentum in that layer is accelerating.
- When the histogram is shrinking (moving back toward zero), the bar color dims to 50% transparency — momentum in that layer is decelerating.

This is functionally equivalent to monitoring the first derivative of the MACD histogram, which itself is the first derivative of the MACD line, which is the difference between two EMAs of price. In practical terms, the gradient coloring reflects the rate of change of momentum's rate of change. That may sound abstract, but visually it is intuitive: bright bars mean the trend is pushing harder, dim bars mean it is losing energy. You will typically see a sequence of bright bars at the start of a move, transitioning to dim bars as the move matures, before the MACD line eventually crosses zero. The gradient gives you that early read.
snapshot

Underlying Concepts

Multi-Cycle Momentum Decomposition

Markets generate price movements across multiple overlapping cycles simultaneously. A single MACD captures one frequency band determined by its parameter set. The fundamental limitation is that short parameters generate many signals (high sensitivity, low specificity — many false positives), while long parameters generate few signals (low sensitivity, high specificity — but late entries and exits). Neither alone solves the core problem of distinguishing a genuine trend initiation from a temporary counter-trend bounce.

Triple MACD Momentum addresses this by decomposing momentum into three frequency bands with harmonically-related parameters. "Harmonically-related" means the fast EMA lengths scale in approximate ratios (8 → 16 → 50, roughly 1x → 2x → 6x), so each layer responds to genuinely different market dynamics rather than overlapping time horizons. This creates a three-tier filter:

- Layer A catches the impulse first (sensitivity)
- Layer B confirms it is not just noise (intermediate filter)
- Layer C confirms the structural trend supports it (specificity)

When all three agree, the probability of a sustained directional move increases substantially because momentum at every measured frequency is pointing the same way. When they disagree — particularly when Layer A diverges from Layer C — it reveals that short-term price action is moving against the dominant trend, a condition that often precedes either a reversal or a temporary pullback followed by trend continuation.

Confluence as a Probability Filter

The momentum score formalizes what experienced discretionary traders do intuitively: weigh multiple confirming signals to assess conviction. A score of +3.75 does not guarantee price will rise, but it quantifies a state where short, medium, and long-term momentum all agree and are all accelerating — a relatively rare alignment that, empirically, tends to produce stronger directional follow-through than any single MACD reading alone. Conversely, a score near zero reveals genuine indecision across timescales — a state where entering directional trades carries higher risk because no dominant momentum regime exists.

Acceleration vs. Deceleration: Leading vs. Lagging Information

A standard MACD crossing zero is a lagging event — by the time the fast EMA crosses below the slow EMA, price has already reversed by a meaningful amount. The gradient coloring in this indicator provides a leading element: you can observe momentum decelerating (histogram bars dimming) well before the zero cross occurs. This does not predict the future, but it tells you that the current rate of momentum change is decreasing. In physical terms, it is the difference between an object still moving forward but slowing down (decelerating) versus one that has actually reversed direction (zero cross). Seeing deceleration first gives traders time to tighten stops, reduce position size, or prepare for a potential exit — actions that a zero-cross-only approach would trigger too late.

Why Three Layers Instead of Two (or Four)

Two layers (short + long) capture directional agreement but miss the intermediate filter. This often results in situations where the short layer flips frequently while the long layer stays steady, giving ambiguous signals during transitional phases. The medium layer resolves this: it confirms that the short layer's signal is more than noise but hasn't yet become a structural shift — it occupies the analytically useful middle ground.

Four or more layers would add visual complexity without proportional information gain. Three layers cover the primary momentum cycles that most market participants react to: intraday/scalping (Layer A), session/daily (Layer B), and weekly/monthly (Layer C). Additional layers would subdivide these same cycles with diminishing marginal insight.

What Makes It Original

Several open-source indicators display multiple MACDs. This indicator differs from those in the following specific ways:

- Numeric confluence quantification: Most multi-MACD indicators leave interpretation entirely visual. The momentum score converts three-layer agreement into a single number with defined ranges, enabling objective threshold-based analysis and alerting. A trader can set a rule like "I only take long entries when score is above +2.0" — something not possible with visual-only multi-MACD tools.

- Acceleration-aware coloring: Standard MACD histograms use fixed colors for above/below zero. This indicator's gradient coloring adds the histogram's direction (growing vs. shrinking) as a visual dimension, providing deceleration warnings that standard coloring cannot show. The bright-to-dim transition within a bullish or bearish phase is a distinct visual signal not present in conventional MACD presentations.
snapshot

- Transparent anti-repaint architecture: The barstate.isconfirmed gate is exposed as a user-facing toggle with a detailed tooltip, not hidden in the code logic. This lets traders make an informed decision about the repaint/responsiveness tradeoff and ensures that the indicator's behavior is fully transparent. All downstream calculations — score, coloring, alignment, and alerts — flow through this gate.

- Harmonic parameter design: The defaults are not arbitrary. The 8/16/50 fast EMA progression creates approximately 1x/2x/6x harmonic scaling, ensuring each layer responds to a different market cycle rather than slightly shifted versions of the same one. The slow EMAs (12/30/80) maintain proportional spreads that produce meaningful MACD oscillation amplitude at each scale.

- Alert architecture tied to confluence events: The six alert conditions focus on multi-layer events (full alignment formed, alignment broken, score threshold crossings) rather than single-layer crossovers. This means alerts fire on confluent events that carry more analytical weight than individual MACD crosses.

How to Use It

Reading the histogram layers

The chart displays three sets of histogram columns overlaid from back to front. Layer C (long-term) uses white for bullish and black for bearish, rendering as the widest column. Layer B (medium-term) uses dark green for bullish and dark red for bearish, rendering slightly narrower. Layer A (short-term) uses bright green for bullish and bright red for bearish, rendering as the narrowest column in the foreground. This nesting creates a visual "traffic light" where you can see all three layers' directional state on every bar without any interpretation effort.

When all columns on a bar share the same polarity (all above or all below zero), momentum is aligned across all three cycles. When they diverge — for example, Layer C (wide white column) extends above zero while Layer A (narrow red column) drops below zero — you are looking at a short-term pullback within a structurally bullish environment. This specific pattern often precedes a continuation opportunity once Layer A re-aligns upward.

Interpreting the momentum score

The numeric label displays the composite score on the last bar. Use it as a quick directional conviction check:

- +3.0 to +3.75: Maximum bullish confluence. All layers bullish and at least some are accelerating. This is the strongest possible momentum regime. Pullbacks in this state tend to be shallow and short-lived.
- +2.0 to +2.99: Strong bullish bias. Most layers agree, though one may be decelerating. Trend-following entries still favorable, but position sizing may be slightly more conservative than in the +3.0 zone.
- +1.0 to +1.99: Mild bullish bias. Typically one layer disagrees or multiple layers are decelerating. The trend exists but lacks full conviction — suitable for reduced-size positions or waiting for higher confirmation.
- -0.99 to +0.99: Neutral zone. Layers are mixed or offsetting each other. Directional trades in this zone carry elevated risk because no dominant momentum regime is established. Consider this a "no-trade" or "range-trade" zone for directional momentum traders.
- -1.0 to -1.99: Mild bearish bias. Mirror of the +1 to +2 zone.
- -2.0 to -2.99: Strong bearish bias. Mirror of the +2 to +3 zone.
- -3.0 to -3.75: Maximum bearish confluence. Mirror of the +3 to +3.75 zone.

Using gradient coloring for timing

The transition from bright to dim bars within a layer is one of the indicator's most actionable patterns. Here are specific situations to watch:

- Entry timing: After all layers align bullish, wait for Layer A to show a sequence of dimming bars (deceleration) followed by a return to bright bars. That transition from dim back to bright indicates that a pullback has completed and momentum is re-accelerating in the trend direction — often a higher-quality entry point than the initial alignment.

- Exit or tighten stops: When Layer A and Layer B both begin dimming simultaneously while still in bullish territory, the move is maturing. If Layer C also starts dimming, the entire momentum structure is decelerating — a condition that frequently precedes a meaningful correction or reversal.

Setting and using alerts

Six alert conditions are available in the indicator's alert menu:

- Full Bullish Alignment / Full Bearish Alignment: Fires when all enabled layers simultaneously cross into the same polarity for the first time. This is the "all green lights" or "all red lights" event. Useful for swing traders monitoring multiple instruments — set this alert on your watchlist and only check the chart when alignment forms.

- Alignment Formed / Alignment Lost: A broader version — "Formed" fires when any full alignment (bullish or bearish) begins; "Lost" fires when a previously aligned state breaks (at least one layer diverges). The "Lost" alert is particularly useful as a risk management trigger: if you entered on alignment and alignment breaks, it may be time to re-evaluate the position.

- Strong Bullish Score / Strong Bearish Score: Fires when the momentum score crosses the +2.5 or -2.5 threshold from the weaker side. These are threshold-based alerts for traders who use the numeric score as an objective entry filter.

All alerts operate on gated (anti-repaint) values when the anti-repaint setting is enabled, meaning they will only fire after the bar closes and confirms.

Adjusting parameters for different markets and timeframes

The defaults (8/12/9, 16/30/9, 50/80/9) are calibrated for general-purpose use on 5m to Daily charts across liquid markets. If you trade on very short timeframes (1m-3m), consider increasing Layer A's slow EMA from 12 to 17-21 to reduce noise from microstructure volatility. If you trade weekly charts, consider increasing Layer C's signal length from 9 to 14 to reduce whipsaw crossovers that lack structural significance on that timeframe. The key principle when adjusting: maintain meaningful separation between layers. If Layer A's slow EMA gets too close to Layer B's fast EMA, the two layers begin measuring the same momentum cycle and the confluence reading becomes redundant rather than additive.

Combining with other analysis

This indicator is most effective as a momentum confluence confirmation layer within a broader methodology. It tells you what momentum is doing across multiple cycles but does not identify price levels, volume patterns, or market structure on its own. Practical combinations include using it alongside horizontal support/resistance levels (enter when momentum aligns at a key level), volume profile (confirm that momentum alignment coincides with high-volume nodes), or candlestick patterns (use Layer A gradient transitions to validate reversal candle signals). Avoid combining it with other oscillators that measure similar things (like RSI or Stochastic) — adding another momentum oscillator would be redundant rather than complementary.

Suitability

Markets: Suitable for any liquid market — Forex pairs (majors and liquid crosses), Cryptocurrency (BTC, ETH, and major altcoins on established exchanges), Stocks (equities with adequate daily volume), Futures (equity indices, commodities, rates), and broad market Indices. Illiquid markets with wide spreads or thin order books may produce unreliable MACD readings on lower timeframes due to price gaps and erratic tick-level movements.

Timeframes and trading styles:

- Momentum scalping (1m to 5m): Use Layer A as the primary trigger within the structural bias set by Layer C. The gradient coloring on Layer A provides entry-to-exit timing within individual momentum impulses lasting minutes. Focus on score above +2.0 (or below -2.0) before initiating a scalp in that direction. Because scalping on these timeframes involves rapid decisions, consider disabling the anti-repaint gate for real-time intra-bar responsiveness, understanding that signals may shift before bar close.

- Intraday momentum trading (5m to 15m): All three layers contribute meaningfully. Layer C establishes the session bias (is the day trending or ranging?), Layer B confirms the dominant intraday swing direction, and Layer A provides entry timing. Keep anti-repaint enabled for signal reliability. The gradient coloring on Layer B is particularly useful here — dimming on Layer B during an intraday trend signals that the current swing is maturing.

- Day trading (15m to 1H): At this resolution, Layer B becomes the primary directional tool and Layer A serves as an entry optimizer. Layer C acts as a structural backdrop — if Layer C is bearish on the 1H chart, bullish signals from A and B are counter-trend trades with lower probability. Set "Alignment Formed" and "Alignment Lost" alerts to monitor transitions without watching every bar.

- Swing trading (4H to Daily): Layer C zero-line crosses become significant swing trade signals. When Layer C crosses above zero and Layer B confirms by also being above zero, a multi-day to multi-week bullish swing is likely underway. Layer A's gradient coloring identifies pullback entries within the swing. Consider increasing Layer C's signal length to 12-14 on the Daily to reduce minor whipsaws.

- Position trading (Daily to Weekly): Focus primarily on Layer C and the momentum score. A score transition from negative to above +2.0 on the Daily or Weekly chart signals a potential regime change worth investigating for longer-term allocation. Layer A and B serve as timing tools for entry and exit within the position. On Weekly charts, all signal lengths may benefit from being increased to 12-14.

Disclaimer

This indicator is a technical analysis tool provided for educational and analytical purposes. It does not constitute financial advice, investment recommendations, or a solicitation to trade. No indicator, regardless of its complexity or the number of confirming layers, can predict future market direction with certainty. All signals generated — including alignment events, momentum scores, and gradient color transitions — reflect historical and current price data; they do not guarantee future performance. Always apply proper risk management, define your position sizing relative to account equity before entering any trade, and use this indicator as one component within a complete trading methodology. Past performance observed on backtests or historical charts does not ensure similar results in live markets due to slippage, spread variability, liquidity conditions, and changing market regimes.

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.