OPEN-SOURCE SCRIPT

Participation-Adjusted Momentum [TradeDots]

386
Participation-Adjusted Momentum [TradeDots]

Summary

This indicator computes a momentum oscillator that has been adjusted by participation quality. Raw momentum (standardized rate-of-change) is multiplied by a quality blend derived from volume percentile, close-location alignment within the bar, and range-per-volume efficiency. The intent is to differentiate strong momentum supported by participation from moves that look impressive on price alone but occur on thin volume or wide ranges with little net travel. The histogram is colored by one of five interpretable states (Strong Bull, Strong Bear, Thin, Quiet Accumulation, Noisy) so users see at a glance whether to trust a momentum reading.

What is original here

Momentum oscillators (rate-of-change, MACD, RSI) and volume oscillators (volume percentile, MFI) are widely available. This script's contribution is the deliberate combination into a single adjusted reading, plus the five-state classification that maps raw-momentum / participation combinations to labelled regimes. The "Quiet Accumulation" state (low momentum but rising volume percentile) and the "Thin" state (strong momentum but low participation) are specifically called out because they are the most actionable readings — both indicate that the price reading and the order-flow reading disagree, and that disagreement deserves a label.

How it works

Each bar, the following quantities are computed.

Raw momentum. Rate-of-change of close over a configurable length, then z-scored (subtract the mean, divide by the standard deviation) over the normalization lookback. The result is approximately bounded but can exceed plus or minus 3 in extreme moves.

EMA slope. A 50-period EMA's change over a configurable lookback, min-max normalized to 0-100. Used as a secondary directional bias (computed and exposed as a hidden plot, but not directly added to the displayed oscillator).

Volume percentile. Volume rank over the normalization lookback (typically 100 bars).

Close-location value. Where the close sits within the bar's high-low range, expressed as a percentage. For an upward-direction reading, a close near the bar's high indicates buyers won the bar; for a downward-direction reading, a close near the bar's low indicates sellers won.

Participation. Volume percentile (divided by 100) multiplied by direction-aligned close-location value (also normalized to 0-1). Result is in [0, 1]; higher means "good participation".

Range per volume. Bar range divided by volume. High range per volume means a wide candle moved on thin flow — typical of news spikes, illiquid prints, or false moves. The percentile rank of range-per-volume is inverted (low range-per-volume gives a high "efficiency score") and used as a quality factor.

Quality blend. A weighted combination: 0.4 * participation + 0.4 * range_efficiency + 0.2. The +0.2 floor ensures that even with zero participation and zero efficiency, the adjusted momentum retains 20% of the raw signal so the oscillator does not flatline completely.

Adjusted momentum = raw momentum × quality blend.

State classification (mutually exclusive):

  • Strong Bull : raw momentum at or above +threshold and participation at or above 0.55
  • Strong Bear : raw momentum at or below −threshold and participation at or above 0.55
  • Thin : absolute raw momentum at or above threshold and participation below 0.35 — momentum without volume, a warning state
  • Quiet Accumulation : absolute raw momentum below the quiet threshold and volume percentile above the quiet-volume floor — flat price but rising participation
  • Noisy / Low Quality : the catch-all when none of the above apply


The histogram bar color reflects the current state.

Repainting and data integrity

All factors are computed on confirmed bar values; alerts are gated by barstate.isconfirmed. No request.security() calls are made — the script operates entirely on the chart timeframe.

How to read the chart

  • The primary plot is the adjusted-momentum histogram, colored by state.
  • A thin overlay line shows the same value with continuous color for easy zero-line reading.
  • Reference lines at zero and at ±1 standard deviation provide context for how extreme the current reading is.
  • Hidden plots expose raw momentum, participation, volume percentile, and direction so they are available in the Data Window.
  • The dashboard panel shows the current state in the header, then numeric readings for raw momentum (in z-units), adjusted momentum, volume percentile, participation, range efficiency, and the quality blend.


Inputs

Inputs are grouped into three sections.

  • Core Settings: ROC length, percentile / z-score lookback, EMA slope length, slope lookback bars, strong-momentum z-threshold, quiet-accumulation maximum z, quiet-accumulation minimum volume percentile.
  • Visual Settings: zero-line toggle, ±1σ band toggle, dashboard toggle, panel position and size, panel background color.
  • Any Alert() function call conditions: per-alert toggles.


Alerts

Four alert conditions are provided, each firing on the first bar the state is entered:

  • Strong Bull Momentum
  • Strong Bear Momentum
  • Quiet Accumulation Detected
  • Momentum Without Volume (the "Thin" warning state)


Each is declared via alertcondition() and is fired programmatically through alert() when the corresponding input toggle is enabled, with alert.freq_once_per_bar_close. Alert messages include {{ticker}} and {{interval}} placeholders.

How to use this script

This is a confirmation indicator. It does not generate entries on its own.

  1. When considering an entry on price strength alone, check this indicator. A Strong Bull or Strong Bear state confirms that volume and close location support the move.
  2. The "Thin" state is a warning. A breakout that prints during a Thin reading should be treated more cautiously than the same breakout during Strong Bull.
  3. The Quiet Accumulation state can identify periods of base-building before a move and is useful as a "watchlist" signal.
  4. Use alongside a setup-specific indicator for entry timing.


Limitations and honest caveats

  • Volume quality varies dramatically between markets. On crypto exchanges, wash-trading and bot-driven order flow can produce misleading volume percentile readings. Apply with awareness.
  • Z-score normalization requires the lookback to contain a representative variety of states. On instruments with strong regime changes, early-bar z-scores may be unreliable until the lookback fills.
  • The close-location alignment factor reads single-bar close behavior. On gappy markets or after market closes, the alignment may not reflect intraday order flow.
  • The script does not signal direction independently; it adjusts and labels momentum that is already present.
  • The +0.2 floor in the quality blend is a design choice to avoid flat-lining the oscillator. Users who want a strict "zero adjustment when participation is zero" reading can set the participation weights higher and adjust the floor by modifying the source code.


Disclaimer

This script is published for informational and educational purposes. It is not investment advice and is not a recommendation to buy or sell any instrument. Adjusted momentum is a descriptive measure, not a prediction of future price. Users are solely responsible for their own trading decisions and risk management.

Haftungsausschluss

Die Informationen und Veröffentlichungen sind nicht als Finanz-, Anlage-, Handels- oder andere Arten von Ratschlägen oder Empfehlungen gedacht, die von TradingView bereitgestellt oder gebilligt werden, und stellen diese nicht dar. Lesen Sie mehr in den Nutzungsbedingungen.