OPEN-SOURCE SCRIPT
OBS Volume Spike Reaction Fade [NQ]

OBS is a mean-reversion strategy that fades extreme volume-spike bars on NQ futures
(1-minute chart). When a bar prints with abnormally high volume AND an abnormally wide
range, price has usually overshot; this strategy places symmetric limit orders just
beyond both extremes of that "reaction bar" and trades the snap-back toward the middle
of the bar.
HOW IT WORKS
A reaction bar must pass every gate below before any orders are placed:
1. Volume spike — bar volume >= N x the 20-bar volume SMA. Separate multipliers for
regular hours (default 3x) and overnight (default 5x), because overnight volume
baselines are much lower.
2. Range overshoot — bar range >= an absolute minimum (default 20 points) AND >= 3x
the average range of the prior 30 bars. This second "relative" gate is what
separates a genuine exhaustion bar from ordinary volatility, and can be toggled off.
3. Cluster filter — skip if another spike fired in the prior N bars (default 3), so one
news event doesn't generate a chain of overlapping signals.
4. Time filters — Asia and London sessions are skipped by default (historically poor
for this setup), as is a +/-10-minute buffer around session opens/closes where
volume spikes are structural rather than informative. Scheduled-news windows are
INCLUDED by default — this setup is designed to fade news-driven overshoots.
5. Optional filters — a candle-anatomy filter (only near-marubozu or indecision bars)
and a simple trend-regime filter, both off by default.
When a bar qualifies, two limit orders are placed: a buy below the low and a sell above
the high, each offset by 0.25x the bar's range. They are placed in an OCA group, so the
first fill cancels the other leg, and internal locking guarantees ONE trade per reaction
bar — a later rebound cannot re-arm the same setup. Unfilled orders expire after a
configurable time-to-live (default 60 minutes).
TRADE GEOMETRY — TWO PRESETS
* Default: stop 1.0x range beyond entry, target at the bar midpoint. Lower win rate,
but the best return per dollar risked in my testing.
* Aggressive: wider stop (1.75x range beyond the extreme), closer target (0.25x range
into the bar). Higher historical win rate and a smoother curve, but it risks more to
make the same per trade — the extra win rate buys smoothness, not money.
* Custom: set entry/stop/target multiples yourself.
IMPORTANT BACKTESTING NOTE: with the Aggressive preset on 1-minute bars, the target is
often inside the same bar as the fill, and the Strategy Tester's default intrabar
assumptions will OVERSTATE results. Enable Bar Magnifier in the strategy properties
before evaluating it. This applies to any close-target configuration, not just this
script.
STATIC LEVEL FILTER (OPTIONAL)
The script includes a hard-coded table of multi-timeframe Fibonacci confluence levels
for NQ, generated externally from daily and weekly retracements over October 2025 -
April 2026 (only levels that recurred across anchors are kept). In "avoid" mode
(default) the strategy skips entries that land within a few points of one of these
levels, on the logic that a fade entering straight into a strong level behaves
differently. Set it to "off" if you are outside that date range or on another symbol —
the levels are static and will go stale. The filter auto-disables on MNQ because the
levels were calibrated on the NQ continuous contract.
PROPERTIES AND HONEST LIMITATIONS
* Built and tested on NQ 1-minute. The order-expiry input assumes 1-minute bars.
* Default properties: $25,000 initial capital, 1 contract, $1.50 commission per
contract, 1 tick slippage. Risk per trade is range-dependent (roughly 1x the
reaction bar's range), typically a low single-digit percent of the default capital.
* Signals are infrequent by design — the filters are strict. Use deep 1-minute history
to get a meaningful sample.
* This is a research tool, not financial advice. Past performance does not guarantee
future results.
Alerts are included for both long and short signals.
(1-minute chart). When a bar prints with abnormally high volume AND an abnormally wide
range, price has usually overshot; this strategy places symmetric limit orders just
beyond both extremes of that "reaction bar" and trades the snap-back toward the middle
of the bar.
HOW IT WORKS
A reaction bar must pass every gate below before any orders are placed:
1. Volume spike — bar volume >= N x the 20-bar volume SMA. Separate multipliers for
regular hours (default 3x) and overnight (default 5x), because overnight volume
baselines are much lower.
2. Range overshoot — bar range >= an absolute minimum (default 20 points) AND >= 3x
the average range of the prior 30 bars. This second "relative" gate is what
separates a genuine exhaustion bar from ordinary volatility, and can be toggled off.
3. Cluster filter — skip if another spike fired in the prior N bars (default 3), so one
news event doesn't generate a chain of overlapping signals.
4. Time filters — Asia and London sessions are skipped by default (historically poor
for this setup), as is a +/-10-minute buffer around session opens/closes where
volume spikes are structural rather than informative. Scheduled-news windows are
INCLUDED by default — this setup is designed to fade news-driven overshoots.
5. Optional filters — a candle-anatomy filter (only near-marubozu or indecision bars)
and a simple trend-regime filter, both off by default.
When a bar qualifies, two limit orders are placed: a buy below the low and a sell above
the high, each offset by 0.25x the bar's range. They are placed in an OCA group, so the
first fill cancels the other leg, and internal locking guarantees ONE trade per reaction
bar — a later rebound cannot re-arm the same setup. Unfilled orders expire after a
configurable time-to-live (default 60 minutes).
TRADE GEOMETRY — TWO PRESETS
* Default: stop 1.0x range beyond entry, target at the bar midpoint. Lower win rate,
but the best return per dollar risked in my testing.
* Aggressive: wider stop (1.75x range beyond the extreme), closer target (0.25x range
into the bar). Higher historical win rate and a smoother curve, but it risks more to
make the same per trade — the extra win rate buys smoothness, not money.
* Custom: set entry/stop/target multiples yourself.
IMPORTANT BACKTESTING NOTE: with the Aggressive preset on 1-minute bars, the target is
often inside the same bar as the fill, and the Strategy Tester's default intrabar
assumptions will OVERSTATE results. Enable Bar Magnifier in the strategy properties
before evaluating it. This applies to any close-target configuration, not just this
script.
STATIC LEVEL FILTER (OPTIONAL)
The script includes a hard-coded table of multi-timeframe Fibonacci confluence levels
for NQ, generated externally from daily and weekly retracements over October 2025 -
April 2026 (only levels that recurred across anchors are kept). In "avoid" mode
(default) the strategy skips entries that land within a few points of one of these
levels, on the logic that a fade entering straight into a strong level behaves
differently. Set it to "off" if you are outside that date range or on another symbol —
the levels are static and will go stale. The filter auto-disables on MNQ because the
levels were calibrated on the NQ continuous contract.
PROPERTIES AND HONEST LIMITATIONS
* Built and tested on NQ 1-minute. The order-expiry input assumes 1-minute bars.
* Default properties: $25,000 initial capital, 1 contract, $1.50 commission per
contract, 1 tick slippage. Risk per trade is range-dependent (roughly 1x the
reaction bar's range), typically a low single-digit percent of the default capital.
* Signals are infrequent by design — the filters are strict. Use deep 1-minute history
to get a meaningful sample.
* This is a research tool, not financial advice. Past performance does not guarantee
future results.
Alerts are included for both long and short signals.
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.