Big Trades [Volume Anomalies] (Enhanced)The script is a **volume-anomaly “big trades” detector** for futures that tries to (1) split each candle’s volume into a **buy-pressure** and **sell-pressure** estimate, (2) flag **statistically extreme** candles (tiers), and (3) optionally label those extremes as **initiative (follow-through)** vs **absorbed (no follow-through)** using a forward-style confirmation window.
Here’s what it does, piece by piece.
---
## 1) What it’s trying to detect
It’s not true “whale prints” or real bid/ask delta. It detects:
* **unusually large participation** (volume anomaly)
* with a **directional guess** (buy-ish vs sell-ish)
* and then checks whether price **continued** after that anomaly
So it’s: **“big participation + did it work?”**
---
## 2) The “buy vs sell volume” estimate
For each candle, it builds a **weight** for buy and sell pressure:
* **close location within the candle**
* close near high → more buy weight
* close near low → more sell weight
* **body direction (close–open)**
* bullish body adds buy boost
* bearish body adds sell boost
Then it computes:
* `raw_buy = volume * buy_weight`
* `raw_sell = volume * sell_weight`
This is an **OHLC-based proxy** for pressure, not real aggressor volume.
---
## 3) Normalization (makes it behave across sessions)
If enabled, it divides by ATR:
* `norm_buy = raw_buy / ATR`
* `norm_sell = raw_sell / ATR`
This helps a lot on futures because volume/volatility regimes differ between Asia/London/NY.
---
## 4) Statistical anomaly detection (z-score logic)
It calculates “what’s normal” using the last `lookback` bars, but **uses ` `** so the current bar doesn’t contaminate the stats (reduces flicker):
* `avg_buy = sma(norm_buy, lookback) `
* `std_buy = stdev(norm_buy, lookback) `
(and same for sell)
Then it computes **z-scores**:
* `z_buy = (norm_buy - avg_buy) / std_buy`
* `z_sell = (norm_sell - avg_sell) / std_sell`
If z-score crosses thresholds, it triggers tiers:
* Tier 1: `sigma`
* Tier 2: `sigma + tier_step1`
* Tier 3: `sigma + tier_step2`
So **Tier 3 = “big bubble”**.
---
## 5) Optional VWAP bias filter
It computes VWAP correctly as:
* `vwapv = ta.vwap(hlc3)`
If enabled:
* buys only when `close >= vwap`
* sells only when `close <= vwap`
This is just a **trend/bias filter** to reduce counter-trend bubbles.
---
## 6) Plotting (how bubbles appear)
It places markers at:
* buys around `(close+low)/2` (lower-ish)
* sells around `(close+high)/2` (upper-ish)
And draws:
* small/medium/large circles (depending on tier)
* with optional INIT/ABS overlays (explained next)
---
## 7) “Initiative vs Absorbed” classification (the smart part)
Because Pine can’t see the future on the same bar, your script does a **delayed evaluation**:
* It waits `N = confirm_bars`
* Looks at what happened from the signal bar to the current bar
* Decides if price moved far enough in the intended direction
It uses:
* `hh_window = highest(high, N+1)`
* `ll_window = lowest(low, N+1)`
(these cover the last N+1 bars: from signal bar to now)
Then it measures follow-through:
* For a buy signal N bars ago:
`buy_move = hh_window - high `
* For a sell signal N bars ago:
`sell_move = low - ll_window`
It compares to an ATR-based threshold anchored to the signal bar:
* `thr_move_sig = ATR * move_mult_atr`
If move > threshold → **INIT**
Else → **ABS**
Then it **plots back onto the original signal bar** using `offset=-N` so it visually marks the candle that caused it.
To make it obvious:
* **INIT** = circle
* **ABS** = X
This part is “accurate” in the sense that it’s purely **price-outcome based**.
---
## 8) Labels (optional)
If enabled, it prints labels on those large signals with:
* INIT/ABS
* the z-score at the signal bar
* and a “delta proxy” (`norm_buy - norm_sell`), not true delta
---
## In one sentence
The script flags **statistically extreme volume-pressure candles** (buy/sell proxy), and then classifies those extremes as **worked (initiative)** or **failed (absorbed)** based on **subsequent price movement** within `confirm_bars`.
Pine Script® Indikator






















