OPEN-SOURCE SCRIPT
Doppler Velocity Shift [JOAT]

DOPPLER VELOCITY SHIFT [JOAT]
A trend-acceleration / exhaustion detector built on the Doppler shift principle: a stationary observer (the baseline frequency) compared to a moving source (the instant frequency) produces a measurable shift whose sign tells you whether the source is approaching (compression / acceleration) or receding (rarefaction / exhaustion). For markets the analogue is simple: when the residual wave's oscillation frequency is slower than its long-run baseline, momentum is accelerating into the trend; when it is faster than baseline, the trend is exhausting into chop.

The Doppler analogue, translated
The script's pipeline:
The output is a percentage that is intuitive to read: +0.30 means oscillations are 30% faster than baseline (approaching exhaustion); −0.30 means 30% slower (accelerating into trend).
Two-threshold event detection
A configurable Event Cooldown (default 8 bars) prevents same-type events from stacking. A multi-bar confirmation gate prevents single-bar noise from triggering events.
Visual system
A locked Cyber Aqua palette (electric blue acceleration / hot pink exhaustion / muted blue-gray stable on a near-black ground) gives the indicator a distinctive physics-inspired identity.
Dashboard
Monospaced table, positionable to any of nine corners, with row-fade gradient. Surfaces:

Alerts
Three alert conditions, each independently controllable:
How to read it
Two reads, in order of conviction:
The Frequency Anomaly alert is the script's headline event — when |shift| spikes far past threshold the market is in an extreme state, almost always associated with either an explosive breakout (acceleration anomaly) or an exhaustion blowoff (exhaustion anomaly).
Suggested settings
Defaults (detrend EMA 20, frequency window 40, baseline window 200, smoothing EMA 3, ±0.30 thresholds, 3-bar confirmation) are tuned for 15m–1H on liquid markets. For lower timeframes drop windows proportionally (10 / 20 / 100). For HTF (4H+) raise windows (30 / 80 / 400). The ATR-normalised residual is the recommended default — without it, the script's behaviour drifts on instruments with changing volatility levels.
Originality
The Doppler shift is a fundamental result of classical physics; the financial-market analogue and its implementation here are original. The pipeline — the EMA-detrended residual wave with optional ATR normalisation, the rolling zero-crossing frequency estimator at two scales, the (instant − baseline) / baseline shift formula, the EMA-smoothed shift, the multi-bar confirmed event classifier with cooldown, the anomaly multiplier layer, the vertical event line render, the pane-companion three-series overlay, and the dashboard — is JOAT-original. No third-party code reused. The use of oscillation-frequency shift as a trend acceleration / exhaustion metric is the original quantitative contribution.
Limitations
Zero-crossing frequency estimation is noisy on short windows; the smoothing input (default 3) exists to suppress that. The frequency-anomaly trigger is a heuristic — it tells you the market is in a rare state, not which direction it will resolve. Events confirm only after the multi-bar threshold; events are non-repainting but lag by the confirmation window.
-made with passion by jackofalltrades
A trend-acceleration / exhaustion detector built on the Doppler shift principle: a stationary observer (the baseline frequency) compared to a moving source (the instant frequency) produces a measurable shift whose sign tells you whether the source is approaching (compression / acceleration) or receding (rarefaction / exhaustion). For markets the analogue is simple: when the residual wave's oscillation frequency is slower than its long-run baseline, momentum is accelerating into the trend; when it is faster than baseline, the trend is exhausting into chop.
The Doppler analogue, translated
The script's pipeline:
- Detrend price by subtracting an EMA (configurable length). The result is a residual wave oscillating around zero.
- Optionally normalise by ATR so the wave amplitude is regime-aware.
- Count zero-crossings of the residual over a short window — this gives the instant frequency.
- Count zero-crossings over a long window — this gives the baseline frequency.
- Compute the Doppler shift = (instant − baseline) / baseline. Positive shift = faster than baseline → exhaustion. Negative shift = slower than baseline → acceleration.
- EMA-smooth the shift to reduce flicker.
The output is a percentage that is intuitive to read: +0.30 means oscillations are 30% faster than baseline (approaching exhaustion); −0.30 means 30% slower (accelerating into trend).
Two-threshold event detection
- Exhaustion — shift > +exhaustion threshold (default +0.30) for N consecutive bars (configurable, default 3). Fires the Exhaustion label.
- Acceleration — shift < −acceleration threshold (default −0.30) for N consecutive bars. Fires the Acceleration label.
- Frequency Anomaly — when |shift| crosses threshold × multiplier (default 2.0× → ±0.60). The anomaly alert fires and the chart background tints accordingly.
A configurable Event Cooldown (default 8 bars) prevents same-type events from stacking. A multi-bar confirmation gate prevents single-bar noise from triggering events.
Visual system
- Detrend residual line (overlay) with configurable transparency and cosmetic display scale.
- Vertical event lines at each Acceleration / Exhaustion event, with optional full-height extension for emphasis.
- Event labels — Unicode glyphs by default (toggleable to plain text ACCEL / EXHAUST).
- Frequency anomaly background tint when the |shift| crosses the anomaly trigger.
- Pane companion (toggleable, on by default) — plots instant frequency, baseline frequency, and Doppler shift % in a separate pane below the chart.
A locked Cyber Aqua palette (electric blue acceleration / hot pink exhaustion / muted blue-gray stable on a near-black ground) gives the indicator a distinctive physics-inspired identity.
Dashboard
Monospaced table, positionable to any of nine corners, with row-fade gradient. Surfaces:
- Instant frequency (zero-crossings in the short window).
- Baseline frequency (zero-crossings in the long window).
- Doppler shift % (signed).
- Current status (ACCEL / EXHAUST / STABLE).
- Last event direction with bars-ago.
- Configuration: detrend length, frequency window, baseline window.
- Anomaly flag when triggered.
Alerts
Three alert conditions, each independently controllable:
- Trend Acceleration (shift < −threshold for N bars)
- Approaching Exhaustion (shift > +threshold for N bars)
- Frequency Anomaly (|shift| > threshold × multiplier)
How to read it
Two reads, in order of conviction:
- Acceleration label after a quiet period — the script's intended trend-entry signal. Frequency has slowed, meaning the residual is making fewer mid-line crossings — the wave has lengthened and is now committed in one direction. Pair with a directional indicator for entry.
- Exhaustion label inside an extended trend — the script's intended trend-exit signal. Frequency has risen above baseline — the residual is making more crossings, meaning the trend is fragmenting. Reduce / exit trend exposure; the next move is often a reversal.
The Frequency Anomaly alert is the script's headline event — when |shift| spikes far past threshold the market is in an extreme state, almost always associated with either an explosive breakout (acceleration anomaly) or an exhaustion blowoff (exhaustion anomaly).
Suggested settings
Defaults (detrend EMA 20, frequency window 40, baseline window 200, smoothing EMA 3, ±0.30 thresholds, 3-bar confirmation) are tuned for 15m–1H on liquid markets. For lower timeframes drop windows proportionally (10 / 20 / 100). For HTF (4H+) raise windows (30 / 80 / 400). The ATR-normalised residual is the recommended default — without it, the script's behaviour drifts on instruments with changing volatility levels.
Originality
The Doppler shift is a fundamental result of classical physics; the financial-market analogue and its implementation here are original. The pipeline — the EMA-detrended residual wave with optional ATR normalisation, the rolling zero-crossing frequency estimator at two scales, the (instant − baseline) / baseline shift formula, the EMA-smoothed shift, the multi-bar confirmed event classifier with cooldown, the anomaly multiplier layer, the vertical event line render, the pane-companion three-series overlay, and the dashboard — is JOAT-original. No third-party code reused. The use of oscillation-frequency shift as a trend acceleration / exhaustion metric is the original quantitative contribution.
Limitations
Zero-crossing frequency estimation is noisy on short windows; the smoothing input (default 3) exists to suppress that. The frequency-anomaly trigger is a heuristic — it tells you the market is in a rare state, not which direction it will resolve. Events confirm only after the multi-bar threshold; events are non-repainting but lag by the confirmation window.
-made with passion by jackofalltrades
Script open-source
Dans l'esprit TradingView, le créateur de ce script l'a rendu open source afin que les traders puissent examiner et vérifier ses fonctionnalités. Bravo à l'auteur! Bien que vous puissiez l'utiliser gratuitement, n'oubliez pas que la republication du code est soumise à nos Règles.
The AI Trading Ecosystem, Built to win trades 📈
Get Full Access 👇
jackofalltrades.vip 🌐
t.me/jackofalltradesvip 🃏
Get Full Access 👇
jackofalltrades.vip 🌐
t.me/jackofalltradesvip 🃏
Clause de non-responsabilité
Les informations et publications ne sont pas destinées à être, et ne constituent pas, des conseils ou recommandations financiers, d'investissement, de trading ou autres fournis ou approuvés par TradingView. Pour en savoir plus, consultez les Conditions d'utilisation.
Script open-source
Dans l'esprit TradingView, le créateur de ce script l'a rendu open source afin que les traders puissent examiner et vérifier ses fonctionnalités. Bravo à l'auteur! Bien que vous puissiez l'utiliser gratuitement, n'oubliez pas que la republication du code est soumise à nos Règles.
The AI Trading Ecosystem, Built to win trades 📈
Get Full Access 👇
jackofalltrades.vip 🌐
t.me/jackofalltradesvip 🃏
Get Full Access 👇
jackofalltrades.vip 🌐
t.me/jackofalltradesvip 🃏
Clause de non-responsabilité
Les informations et publications ne sont pas destinées à être, et ne constituent pas, des conseils ou recommandations financiers, d'investissement, de trading ou autres fournis ou approuvés par TradingView. Pour en savoir plus, consultez les Conditions d'utilisation.