CVD IQ [TradingIQ]Hello Traders!
🔹 CVD IQ
CVD IQ is a delta-driven analytical tool designed to reveal how aggressive buying and selling activity translates into price movement.
Instead of relying purely on price, this indicator reconstructs order flow dynamics using lower timeframe data , allowing you to see:
Where did the pressure come from… and how efficiently did it move price?
It focuses on answering a deeper question:
Was the move driven by real participation, or was it inefficient, absorbed, or divergent?
aggressive buy vs sell activity (CVD)
price vs delta divergences
efficiency of price movement relative to flow
cost of moving price (delta per tick)
absorption and imbalance conditions
multi-scale flow analysis (bar, day, swing)
classic divergence detection (RSI style)
🔹 What the indicator shows
🔸 Cumulative Volume Delta (CVD)
CVD is built using lower timeframe data to approximate aggressive buying and selling.
This allows you to track:
whether buyers or sellers are in control
how much pressure is building over time
when participation is increasing or fading
🔸 IMMEDIATE Divergence detection (Classic & Cost Models)
The indicator detects when price and delta are out of sync .
Classic divergence highlights:
price making new highs while delta weakens
price making new lows while delta strengthens
potential exhaustion or reversal conditions
Cost-based divergence goes further by evaluating:
how much delta was required to move price
whether moves are becoming more or less efficient
hidden weakness in “expensive” price movement
This shifts your perspective from:
“price is moving”
to:
“how much effort did it take to move price?”
🔸 CVD Cost Per Tick (Efficiency Analysis)
One of the most important features.
The indicator measures:
Delta per tick = how much aggressive volume was required to move price
This allows you to identify:
efficient moves (low cost → strong response)
inefficient moves (high cost → weak response)
potential exhaustion when cost rises sharply
Each swing is classified into categories like:
Very High Cost
High Cost
Normal Cost
Low Cost
Very Low Cost
High cost often signals absorption or resistance from opposing liquidity .
🔸 Swing-based flow analysis
The indicator breaks market structure into swings and evaluates:
delta across each swing
cost of movement between pivots
relative efficiency vs previous swings
This helps you understand:
whether trends are strengthening or weakening
if continuation is becoming harder
when liquidity is likely opposing the move
🔸 Delta-Implied Close (Expected Price)
The script estimates where price should have closed based on delta.
This gives insight into:
whether price overperformed or underperformed relative to flow
hidden absorption when price fails to match delta
inefficiencies between participation and result
Important Note
This model is adaptive and continuously updates based on changing market conditions. It is not a predictive engine, but rather a framework for interpreting how order flow is currently interacting with price.
🔸 Delta Analysis Table (Bar / Day / Swing)
A live table provides a structured breakdown of flow and price response across three contexts:
current bar
current day
current swing
It includes:
aggressive buy & sell volume
buy/sell percentages
net delta
imbalance ratios
price movement in ticks
close position within range
delta cost per tick
cost classification
absorption detection
This allows you to quickly answer:
Who is in control, and is price responding properly?
🔹 Table Overview
Metric
Name of the metric shown in each row.
Bar
Value calculated for the current bar only.
Day
Value accumulated from the start of the current day.
Swing
Value accumulated from the start of the current swing.
🔹 Flow
Aggressive Buys
Total buy-side market order volume. Higher values indicate stronger buying pressure.
Aggressive Sells
Total sell-side market order volume. Higher values indicate stronger selling pressure.
Buy %
Percentage of total aggressive volume coming from buyers. Higher values indicate buy-side dominance.
Sell %
Percentage of total aggressive volume coming from sellers. Higher values indicate sell-side dominance.
Net Delta
Aggressive buys minus aggressive sells. Positive values favor buyers, negative values favor sellers.
Imbalance Ratio
Relative dominance between buyers and sellers, expressed as a multiple. Higher values indicate stronger directional control.
🔹 Price Response
Total Aggression
Combined aggressive buy and sell volume. Represents total market participation.
Bar Tick Move
Price movement measured in ticks. Shows how far price moved over the period.
Close Position
Where price closed within its range. Higher values mean the close is nearer the high, lower values nearer the low.
🔹 Efficiency & Cost
Delta Cost / Tick
How much delta was required to move price by one tick. Higher values indicate less efficient movement and potential absorption.
Cost
Classification of how expensive the move is relative to recent conditions. High cost suggests resistance or absorption, low cost suggests efficient movement.
Ticks per 1k Delta
Number of ticks price moved per 1000 delta. Higher values indicate more efficient price movement.
Price Move per 1k Delta
Actual price movement per 1000 delta. Higher values indicate stronger price response to order flow.
🔹 Delta-Based Expectations
Delta-Implied Close
The price level where the bar would be expected to close based on the underlying delta.
Move Ratio
Actual price movement relative to the delta-implied move.
1.0 = expected response
1.0 = stronger than expected
<1.0 = weaker than expected
🔹 How to read it
Each component provides a different layer:
CVD → who is active
Divergence → when price and flow disagree
Cost → how efficient the move is
Table → structured confirmation across contexts
Together, this shifts your thinking from:
“price moved up”
to:
“buyers were aggressive - but did price actually respond?”
🔹 Example interpretations
strong delta + efficient move → clean continuation
strong delta + weak move → absorption
rising cost over time → trend weakening
divergence signals → potential reversal or trap
low cost + expansion → strong directional move
🔹 Why this indicator is useful
It gives you:
participation behind price
context for whether moves are efficient
early detection of exhaustion or absorption
a way to quantify “effort vs result”
multi-timeframe flow insight (bar, day, swing)
🔹 Best use cases
confirming trend strength
identifying weak breakouts
spotting absorption at key levels
analyzing liquidity interaction
enhancing price action or liquidity-based models
🔹 Important note
This script uses lower timeframe data to approximate aggressive volume.
This means:
accuracy depends on data availability
different symbols may behave differently
lower timeframe selection impacts results
🔹 Inputs you can customize
lower timeframe for CVD calculation
divergence models (Classic / Cost / Both)
divergence sensitivity (small, medium, large swings)
cost structure length and thresholds
visual styling and colors
delta analysis table size
Closing Notes
CVD IQ is built to show the relationship between participation and outcome .
As always, thank you PulseWire! Indicator

Institutional Footprint Divergence Engine🔹 Introduction
This indicator, the Institutional Footprint Divergence Engine, attempts to identify moments where price action and genuine order flow diverge — a condition that historically precedes reversals driven by smart money absorption and distribution. The core idea is this: if price makes a new swing high but the underlying buy-sell delta is contracting, the market is printing a higher high on less aggressive buying pressure, suggesting the move is being distributed into rather than genuinely accumulated. The inverse is equally meaningful at lows.
Unlike traditional divergence indicators that use derivative oscillators like RSI or MACD as the proxy for momentum, this script uses volume delta — the direct arithmetic difference between buying and selling volume at the bar level — sourced natively from PulseWire's newly released request.footprint() function where a Premium or Ultimate subscription is active. On standard charts, the indicator falls back to a tick-estimated delta approximation. The distinction matters, and I'll cover precisely why throughout this description.
Every detected divergence is assigned a composite quality score from 0 to 100, computed across five weighted dimensions that assess the structural strength, volume context, cumulative delta alignment, and volatility regime at the moment of detection. Only divergences that clear a user-defined score threshold are displayed — filtering the noise that plagues most divergence tools.
🔹 The Premise — Why Delta Divergence Reveals Institutional Behavior
🔸 What volume delta actually measures
Every transaction in a liquid market has a buyer and a seller. Volume delta measures the net directional aggression of those transactions: it is the sum of volume that traded at the ask (aggressive buying) minus the volume that traded at the bid (aggressive selling) within a single bar. A positive delta bar means buyers were more aggressive. A negative delta bar means sellers were more aggressive.
This is categorically different from price direction. A bar can close higher while posting a negative delta — meaning price moved up, but sellers were the more aggressive counterparty throughout the move. This is the fingerprint of absorption: a large participant or group of participants quietly selling into rising price, absorbing aggressive buy orders without allowing the market to fall. They want retail to push price higher. They're using that momentum as liquidity to distribute their position.
Delta divergence is the systematic detection of this condition across swing structures.
🔸 The mechanics of absorption at swing highs
Assume price has been in an uptrend and just made a swing high at $4,200 with a delta of +850 contracts — strong buyer aggression confirming the high. Price retraces, then pushes up again to $4,215, printing a higher high. But this time, the delta is only +210. Price went higher. The aggressive buying volume did not.
What does this tell you? The move to $4,215 required proportionally far less buyer aggression than the move to $4,200. Two possibilities explain this: either sellers are absorbing the buying (distribution), or organic buying interest is fading and the move is increasingly resting on passive limit sell orders being consumed by declining buy-side momentum. Either way, the structural message is identical — the higher high is not supported by the order flow that created it, and the probability of continuation has deteriorated meaningfully.
This is the ICT and Smart Money Concepts concept of distribution rendered in order flow terms rather than price structure terms alone.
🔸 The symmetric argument at swing lows
At swing lows, the bullish divergence condition is: price makes a lower low, but the negative delta at that low is less negative than the prior swing low. Less aggressive selling at a lower price. This is absorption at the demand side — large buyers accumulating into weakness, absorbing retail sell orders without allowing price to collapse further. The lower low prints because they let it — they need the price to be there to fill their orders. But the delta tells you that sellers were unable to drive the same aggression they managed at the prior low.
Harris (2003), in his foundational text on market microstructure, describes this phenomenon as informed traders systematically positioning against the uninformed flow — using the uninformed participants' aggression as liquidity.
Cont, Stoikov & Talreja (2010), in their research on limit order book dynamics, demonstrate empirically that large passive participants consistently exploit periods of high aggressive flow imbalance to establish positions at favorable prices.
Delta divergence is not a leading indicator in the traditional sense. It is a coincident indicator of order flow context that becomes meaningful when paired with a confirmed swing structure.
🔸 Why native footprint data changes the calculus
Prior to January 2026, Pine Script had no access to true intrabar volume distribution. Every "delta" calculation in PulseWire scripts was an estimate — typically assigning the bar's total volume directionally based on close position within the bar's range, or using up/down tick counting approximations. These methods are reasonable proxies but they introduce systematic errors: a bar that closes at its midpoint with heavy two-way activity looks identical to a quiet, directionless bar.
PulseWire's request.footprint() function changes this entirely. It exposes the actual buy and sell volume recorded at each price level (row) within the bar — the genuine transaction-level data that footprint chart platforms like Sierra Chart and Bookmap have historically required separate subscriptions and data feeds to access. The delta returned by fp.delta() is not an estimate. It is the arithmetic difference between actual ask-side and bid-side transactions aggregated across the bar.
This is the first time this data has been natively programmable in Pine Script, and IFDE is built specifically around it.
🔹 How It Works
🔸 Footprint Data and the Delta Fallback
On a Premium or Ultimate PulseWire account with a compatible symbol, request.footprint() returns a footprint object for each bar. IFDE calls fp.buy_volume() and fp.sell_volume() to get true directional volume, and fp.delta() for the bar's net delta. It also iterates every price row via fp.rows() and evaluates row.has_buy_imbalance() and row.has_sell_imbalance() — flagging bars where a disproportionate volume cluster exists at a specific price level, which often marks the precise price where institutional absorption occurred.
When footprint data is unavailable (standard account or non-supported symbol), the indicator falls back to a tick-estimated delta: up-close bars assign 100% of volume to the buy side; down-close bars assign 100% to the sell side; inside bars distribute proportionally based on close position within the range. This fallback is clearly flagged in the status label as ⚠️ ESTIMATED. The divergence logic functions identically in both modes — only the precision of the underlying delta changes.
The Ticks Per Footprint Row input controls the price granularity of the footprint: smaller values create more rows with finer resolution, larger values consolidate into fewer, broader rows. For index futures like ES and NQ, 4–10 ticks per row is typically appropriate. For crypto, you may need to experiment depending on the instrument's tick size.
🔸 Swing Pivot Detection
The indicator uses Pine's native ta.pivothigh() and ta.pivotlow() functions to identify confirmed swing highs and lows. The Swing Pivot Length input defines the lookback and lookahead symmetry of the pivot — a value of 10 means a bar must be the highest high within 10 bars on both sides to qualify as a pivot. Higher values find more significant structural swings but introduce more lag. Lower values are more responsive but noisier.
Critically, delta is sampled at the confirmed pivot bar using ta.valuewhen() — not at the current bar. This eliminates the most common repainting failure mode in divergence indicators: using the current bar's momentum reading to classify a past pivot. The delta value associated with each pivot is locked in the moment the pivot is confirmed.
🔸 Divergence Logic
Each time a new pivot high is confirmed, IFDE compares it against the previous confirmed pivot high. If the current price is higher but the current delta is lower, a bearish divergence is registered. The same comparison runs at pivot lows for bullish divergence, where current price lower and current delta less negative triggers the signal.
The Divergence Lookback setting controls the maximum bar distance between the two pivots being compared. Setting this too wide increases the chance of detecting structurally irrelevant comparisons — swings separated by 150 bars on a 5-minute chart may have no meaningful relationship. Setting it too tight misses legitimate multi-leg divergences. 40–60 bars is a reasonable starting point for most timeframes.
🔸 The ML Quality Score (0–100)
This is the engine's core differentiating feature. Every detected divergence is not displayed by default — it must first pass a composite quality score threshold. The score is calculated across five weighted dimensions:
Delta Magnitude is the most heavily weighted dimension by default (30%). It measures how extreme the opposing delta pressure is, normalised against the rolling maximum delta magnitude over the lookback window. A divergence where the delta is merely slightly less positive scores lower than one where the delta has completely reversed sign.
Volume Confirmation (25%) assesses whether total bar volume at the divergence pivot is above the 14-bar average. Low-volume divergences are structurally weaker — the absorption signal requires meaningful participation to be credible.
CVD Alignment (20%) checks whether the Cumulative Volume Delta — the running sum of all bar-level deltas, mean-reverted against its own moving average — is trending in the direction that supports the divergence. A bullish divergence at a price low carries far more weight when CVD has been quietly rising even as price made new lows.
Price Structure (15%) scores the magnitude of the price swing itself, relative to the current ATR. A divergence across a 0.5 ATR swing scores lower than one across a 2.5 ATR swing. Trivially small swings produce trivially meaningful divergence signals.
Regime Bonus (10%) applies a bonus or penalty based on the current volatility regime, described in detail below.
The weights are fully user-configurable in the 🤖 ML Score Weights input group. Shifting weight toward CVD Alignment, for example, will make the score more conservative and context-dependent. Shifting weight toward Delta Magnitude makes it more responsive to extreme single-bar order flow events. The scores are normalised internally so they always sum to 100 regardless of how you distribute the weights.
Only divergences scoring above the Min Quality Score threshold are displayed. The default of 55 is intentionally permissive to begin with. As you develop familiarity with the indicator on your instrument and timeframe, raising this to 65 or 70 will progressively filter toward only the highest-conviction setups.
🔸 Adaptive Regime Detection
The indicator compares the current 14-period ATR against its own simple moving average over the Regime Detection Period to classify the current volatility environment into three states: HIGH VOLATILITY, NORMAL, and LOW VOLATILITY.
In high volatility regimes, the score threshold is automatically scaled up by 20% — making it harder for a divergence to pass. This is because high-volatility environments produce frequent large delta swings that generate divergence signals with greater frequency but lower predictive value. The regime is tightening the filter precisely when noise is highest.
In low volatility regimes, the threshold is scaled down by 15%. Quiet, low-volatility markets are where institutional accumulation and distribution most commonly occurs under the radar — smaller delta contrasts carry more informational weight when total market activity is compressed.
The current regime and adjusted score floor are displayed in the status label in the top-left corner of the pane. A subtle background colour (green tint for low vol, red tint for high vol) is painted on the price chart to give continuous regime context at a glance.
🔸 The Pane Display
The indicator runs in its own pane below the price chart, containing three visual elements:
The delta histogram plots the smoothed EMA of bar-level delta as coloured columns — cyan for positive (net buying) and red for negative (net selling). The colour intensity scales with the magnitude of the delta relative to the recent maximum, so visually dominant bars correspond to the highest-conviction order flow readings.
The CVD deviation line in yellow shows the cumulative volume delta minus its moving average baseline. This is more useful than raw CVD for divergence context because it removes the secular trend in cumulative flow and focuses on relative shifts — making it easy to spot when CVD is rising or falling against price.
The zero line serves as the delta neutrality reference. Bars crossing from negative to positive delta, or vice versa, in the context of a divergence signal are particularly significant.
On the price chart, divergence lines connect the two pivot points being compared, with opacity scaling to score strength — higher-scoring divergences are rendered more vividly. Labels mark each divergence with its star rating (★ for score 55–69, ★★ for 70–84, ★★★ for 85–100) and the actual score value, along with whether live footprint data or tick estimation is in use.
🔹 Settings Reference
Swing Pivot Length — Controls pivot sensitivity. Lower = more signals, higher = more structural significance. Recommended: 8–15.
Divergence Lookback — Maximum bars between the two pivots being compared. Recommended: 30–75.
Min Quality Score — Score threshold below which divergences are hidden. Start at 55, tune upward as you calibrate to your instrument.
Ticks Per Footprint Row — Footprint granularity. Only relevant with live FP data. Tighter rows = more precision, more computation.
Delta Smoothing Period — EMA period applied to raw delta before divergence comparison. Smoothing reduces false triggers from single noisy bars. Recommended: 2–5.
CVD Baseline Length — Period of the SMA used to mean-revert the cumulative delta. Shorter = more responsive CVD; longer = smoother trend.
Alert Min Score — Score threshold for alert conditions. Set higher than the display threshold if you want alerts only for the strongest signals.
🔹 Closing Remarks
Delta divergence is one of the few conditions in technical analysis that has a genuinely defensible mechanical explanation rooted in market microstructure — it is not a pattern-matching heuristic but a direct observation of the imbalance between aggressive buying and selling pressure across a swing structure. The availability of native footprint data in Pine Script for the first time makes it possible to build this kind of tool without the estimations and approximations that have historically compromised order flow analysis within PulseWire.
That said, this indicator is a probabilistic model, not a signal generator. A score of 90 does not mean the trade works. It means the order flow context at that divergence was unusually well-structured relative to the five dimensions measured. Markets can and do continue trending through well-formed divergences, particularly in strongly trending regimes where institutional participants are not distributing but rather re-accumulating on every pullback.
The most effective use of IFDE is as a confluence filter — a condition that must be present alongside your existing structural, session, or macro framework before you engage a level. A bearish divergence at a weekly resistance level, in a high-volatility regime, scoring 82, with live footprint data showing 7 sell imbalance clusters, is a meaningfully different proposition than a 56-scoring divergence on estimated delta at a randomly selected intraday high.
Use the score. Respect the regime. Verify the data source. The rest is your edge.
🔹 References
Market Microstructure & Order Flow
Harris, L. (2003). Trading and Exchanges: Market Microstructure for Practitioners. Oxford University Press.
Cont, R., Stoikov, S., & Talreja, R. (2010). A stochastic model for order book dynamics. Operations Research, 58(3), 549–563.
Volume and Delta Analysis
Easley, D., & O'Hara, M. (1992). Time and the process of security price adjustment. Journal of Finance, 47(2), 577–605.
Easley, D., Hvidkjaer, S., & O'Hara, M. (2002). Is information risk a determinant of asset returns? Journal of Finance, 57(5), 2185–2221.
Institutional Order Flow & Smart Money
Chordia, T., Roll, R., & Subrahmanyam, A. (2002). Order imbalance, liquidity, and market returns. Journal of Financial Economics, 65(1), 111–130.
Grinblatt, M., & Keloharju, M. (2000). The investment behavior and performance of various investor types. Journal of Financial Economics, 55(1), 43–67. Indicator

Indicator

TickCharts [crlmx]Volume-based candlestick chart - each candle represents a fixed dollar volume, rather than a time interval. A configurable bar statistics table shows delta, CVD, and volume breakdowns per candle. Reveals market participation pace, institutional activity, and regime shifts through candle formation speed.
Key Features
Dollar volume threshold candles (default $1M)
Tick-accurate volume via PulseWire footprint API (Premium or above)
Bar statistics table with 6 configurable rows below candles
9 data types per row: Time, Volume, Delta, Buy, Sell, Delta %, Buy %, Sell %, Session CVD
Volume progress label showing dollar amount, threshold and percentage on the live candle
Streamlined input / UI brought to you by crlmx
Trading Applications
Volume candles compress during consolidation and expand during breakouts
Fast candle succession signals high participation; slow formation signals stalling
CVD tracks cumulative order flow direction across the visible range
Delta and CVD rows show buyer/seller dominance per candle
Recommended settings: Crypto (BTC/ETH): Candle Volume: $5M-$10M Index Futures (ES/NQ): Candle Volume: $1M-$2M
Commodities (Gold): Candle Volume: $500K-$1M
Version History
v0.42 (Latest - 07 Mar 2026)
Updated LTF Volume calculation to Footprint API
Added Bar statistics table with 6 configurable rows and 9 data types
Added row customisation Indicator

CVD Divergence & Absorption [UAlgo]CVD Divergence & Absorption is a dual context indicator that combines a cumulative volume delta (CVD) oscillator with price pivot structure to detect three important signal classes: Regular Divergence, Hidden Divergence, and Absorption. The script is designed to help traders compare price movement against directional volume participation and identify moments where price and CVD disagree, or where price stalls at similar levels while CVD continues to expand or contract.
The indicator runs in a separate pane ( overlay=false ) and plots a continuous CVD line, while signal labels and price side connecting lines are projected onto the main chart using force_overlay=true . This gives a clean workflow where you can monitor the CVD series in its own panel and still see exact divergence locations directly on price.
A key strength of this script is its lower timeframe volume decomposition. Instead of assigning the full chart bar volume to a single direction, it samples lower timeframe candles through request.security_lower_tf() , classifies each sub candle as up volume or down volume based on its close versus open, and aggregates the result into a bar level delta. That delta is then accumulated into the running CVD value. This approach is practical, efficient, and more granular than a simple chart timeframe approximation.
The script also includes quality controls for signal validation:
Pivot based comparisons for both price and CVD
Minimum and maximum bar distance filters between pivot comparisons
Equal price tolerance for absorption detection
A line of sight filter that rejects visually obstructed divergences where intervening candles violate the connecting path
The result is a professional divergence framework focused on cleaner, more interpretable signals rather than high frequency marking of every pivot mismatch.
Educational tool only. Not financial advice.
🔹 Features
🔸 1) Lower Timeframe CVD Construction (LTF Volume Decomposition)
The script builds CVD using lower timeframe candles selected by the user through the Lower Timeframe (LTF) input. For each chart bar, it retrieves arrays of lower timeframe open, close, and volume values and computes a signed delta:
Up LTF candle (close > open) adds volume
Down LTF candle (close < open) subtracts volume
Neutral LTF candle contributes zero
This produces a more refined bar delta than a single bar directional assumption and makes the CVD line more responsive to intrabar rotation.
🔸 2) Pivot Based Signal Engine for Price and CVD
Signal generation is anchored to confirmed price pivots using user defined left and right pivot bars. A signal candidate is considered only when:
A price pivot high/low is confirmed by ta.pivothigh or ta.pivotlow
The CVD value at that pivot location also behaves like a local high/low (simple local extremum check)
This means the script does not compare arbitrary points. It compares structurally meaningful swing locations.
🔸 3) Regular Divergence Detection (Bullish and Bearish)
The indicator supports classic regular divergence logic:
Bullish Regular Divergence: price makes a lower low while CVD makes a higher low
Bearish Regular Divergence: price makes a higher high while CVD makes a lower high
These signals can indicate weakening trend continuation pressure and potential reversal behavior, depending on context.
🔸 4) Hidden Divergence Detection (Bullish and Bearish)
The script also detects hidden divergence, which many traders use as continuation style confirmation:
Bullish Hidden Divergence: price makes a higher low while CVD makes a lower low
Bearish Hidden Divergence: price makes a lower high while CVD makes a higher high
Hidden divergence is optional and can be toggled independently from regular divergence.
🔸 5) Absorption Detection with Equal Price Tolerance
Absorption logic is included to capture situations where price prints near equal pivots, but CVD continues moving in a direction that suggests aggressive participation is being absorbed at the level:
Bearish Absorption (at highs): price is approximately equal high, but CVD is higher
Bullish Absorption (at lows): price is approximately equal low, but CVD is lower
The Equal Price Tolerance % input allows the script to treat two pivots as "equal" within a configurable percentage band. This makes absorption detection adaptable across instruments with different volatility profiles.
🔸 6) Minimum / Maximum Pivot Distance Filters
To avoid weak or overly stale comparisons, the script enforces:
A minimum number of bars between pivots
A maximum lookback distance for valid pivot pairing
This helps reduce noisy signals from pivots that are too close together and prevents pairing pivots that are too far apart to be contextually useful.
🔸 7) Line of Sight Validation (Signal Quality Filter)
Before accepting a pivot comparison, the script checks whether the straight line connecting the two price pivots is "clear" from intervening candle violations:
For bearish (high based) comparisons, intervening highs must not cross above the connecting line
For bullish (low based) comparisons, intervening lows must not cross below the connecting line
This is a strong visual integrity filter. It avoids many cluttered or ambiguous divergence lines that would look invalid once drawn on the chart.
🔸 8) Dual Visualization on Price and CVD
When a signal is detected, the script draws:
A label on price ("Reg", "Hid", or "Abs")
A line connecting the two relevant price pivots on the main chart
A line connecting the corresponding CVD pivot values in the CVD pane
Line styles are used to distinguish signal types:
Solid for Regular Divergence
Dashed for Hidden Divergence
Dotted for Absorption
This synchronized plotting makes it easy to verify the signal logic visually.
🔸 9) Conflict Handling for Cleaner Labels
Absorption labels are intentionally suppressed when a Hidden Divergence signal is already active on the same side in the same event block:
bullAbs and not bullHidDiv
bearAbs and not bearHidDiv
This prevents duplicate labels on the same pivot and improves chart readability.
🔸 10) Lightweight Pivot Memory Management
The script stores historical pivot comparison points in separate arrays for highs and lows and caps them using a helper method ( maxSize = 15 ). This keeps the logic efficient while preserving enough recent history for valid comparisons.
🔹 Calculations
1) Lower Timeframe Delta Aggregation
The script retrieves lower timeframe OHLCV arrays and computes bar delta by summing signed volume from each LTF candle:
array ltf_open = request.security_lower_tf(syminfo.tickerid, i_ltf, open)
array ltf_close = request.security_lower_tf(syminfo.tickerid, i_ltf, close)
array ltf_volume = request.security_lower_tf(syminfo.tickerid, i_ltf, volume)
if ltf_c > ltf_o
totalDelta += ltf_v
else if ltf_c < ltf_o
totalDelta -= ltf_v
Interpretation:
The script uses candle direction as a proxy for buying/selling pressure inside each chart bar.
This is an estimated delta model based on candle body direction, not true bid/ask tape delta.
2) CVD Accumulation
Bar delta is added into a running cumulative value stored inside a custom tracker object:
method update_cvd(CVD_Tracker this, float delta) =>
this.currentCVD += delta
this.currentCVD
The tracker persists across bars using:
var CVD_Tracker tracker = CVD_Tracker.new(0.0, array.new(), array.new())
This design keeps both the CVD value and pivot histories in one structured container.
3) Price Pivot Detection
Price pivots are confirmed using standard left/right pivot logic:
float ph = ta.pivothigh(high, i_left, i_right)
float pl = ta.pivotlow(low, i_left, i_right)
Because pivot confirmation occurs after i_right bars, signal labels and lines are placed at:
bar_index - i_right
This aligns the plotted signal with the actual pivot bar, not the confirmation bar.
4) CVD Pivot Confirmation at the Same Pivot Location
The script requires CVD to form a local extremum at the price pivot location using a simple 3-point comparison around currentCVD :
bool cvdIsPh = currentCVD > currentCVD and currentCVD > currentCVD
bool cvdIsPl = currentCVD < currentCVD and currentCVD < currentCVD
Then:
bool isPh = not na(ph) and cvdIsPh
bool isPl = not na(pl) and cvdIsPl
This ensures price and CVD are compared on synchronized pivot events rather than unrelated timestamps.
5) Pivot Pair Selection with Distance Constraints
When a new pivot is confirmed, the script scans prior pivots of the same type (highs with highs, lows with lows) and applies:
i_min_bars as the minimum spacing
i_max_bars as the maximum valid distance
if barsBetween < minBars
continue
if barsBetween > maxBars
break
This keeps comparisons within a user defined structural window.
6) Line of Sight Filter (Price Geometry Validation)
Before checking divergence conditions, the script verifies that the connecting price line is not invalidated by intervening candles.
For highs:
if barsBack >= 0 and high >= lineY
clear := false
For lows:
if barsBack >= 0 and low <= lineY
clear := false
Interpretation:
Bearish comparisons require a clean descending/ascending line between highs without intermediate highs breaking above it.
Bullish comparisons require a clean line between lows without intermediate lows breaking below it.
This is one of the script’s strongest anti-noise mechanisms.
7) Equal Price Tolerance for Absorption
The script calculates percentage difference between pivot prices and treats them as equal if the difference is within the tolerance:
float priceDiffPct = math.abs(newPivot.priceVal - histPivot.priceVal) / histPivot.priceVal * 100
bool isEqual = priceDiffPct <= eqTol
This enables absorption logic to work with approximate equal highs/lows instead of requiring perfect price matches, which are rare in live markets.
8) Bearish Signal Logic (Regular, Hidden, Absorption)
For pivot highs, the script compares a new pivot high against a historical pivot high after passing distance and line of sight checks.
Bearish Regular Divergence
newPivot.priceVal > histPivot.priceVal and not isEqual and newPivot.cvdVal < histPivot.cvdVal
Meaning:
Price makes a higher high
CVD makes a lower high
Bearish Hidden Divergence
newPivot.priceVal < histPivot.priceVal and not isEqual and newPivot.cvdVal > histPivot.cvdVal
Meaning:
Price makes a lower high
CVD makes a higher high
Bearish Absorption
isEqual and newPivot.cvdVal > histPivot.cvdVal
Meaning:
Price prints an approximately equal high
CVD pushes higher, suggesting buying effort is absorbed near the same price zone
9) Bullish Signal Logic (Regular, Hidden, Absorption)
For pivot lows, the script compares a new pivot low against a historical pivot low after passing distance and line of sight checks.
Bullish Regular Divergence
newPivot.priceVal < histPivot.priceVal and not isEqual and newPivot.cvdVal > histPivot.cvdVal
Meaning:
Price makes a lower low
CVD makes a higher low
Bullish Hidden Divergence
newPivot.priceVal > histPivot.priceVal and not isEqual and newPivot.cvdVal < histPivot.cvdVal
Meaning:
Price makes a higher low
CVD makes a lower low
Bullish Absorption
isEqual and newPivot.cvdVal < histPivot.cvdVal
Meaning:
Price prints an approximately equal low
CVD pushes lower, suggesting selling effort is absorbed near the same price zone
10) Signal Plotting and Visual Encoding
When a condition is confirmed, the script plots both price side and CVD side lines between the historical pivot and the new pivot, plus a compact label at the new pivot location.
Examples:
label.new(bar_index - i_right, low , text="Reg", ...)
line.new(bullLastPivot.loc, bullLastPivot.priceVal, bullNewPivot.loc, bullNewPivot.priceVal, ..., force_overlay=true)
line.new(bullLastPivot.loc, bullLastPivot.cvdVal, bullNewPivot.loc, bullNewPivot.cvdVal, ..., force_overlay=false)
Style mapping:
line.style_solid for Regular Divergence
line.style_dashed for Hidden Divergence
line.style_dotted for Absorption
11) Pivot History Storage and Capacity Control
Each confirmed pivot is stored in a side specific array (highs or lows) using a helper method:
method add_pivot(array this, Pivot p, int maxSize = 15) =>
this.push(p)
if this.size() > maxSize
this.shift()
This preserves recent structural history for future comparisons while keeping memory usage controlled. Indicator

CVD Z-Score [SolQuant]The CVD Z-Score indicator measures cumulative buying versus selling pressure, normalized as a statistical z-score, to detect volume-price divergences and accumulation/distribution phases. It displays a smoothed oscillator that highlights when volume delta reaches statistical extremes, identifies effort-versus-result efficiency, and flags potential spot accumulation setups where rising CVD coincides with flat price action and declining open interest.
█ USAGE
Reading the Z-Score Oscillator
The main line oscillates around zero. Positive values indicate net buying pressure is above its recent average; negative values indicate net selling pressure. The line is colored blue when bullish and pink when bearish. The further the line moves from zero, the more statistically significant the current volume delta is relative to its recent history. A gradient fill extends from the zero line to the oscillator, making momentum direction and strength immediately visible.
The neutral zone between +1.0 and -1.0 represents normal statistical variation. Values beyond ±1.0 indicate increasingly meaningful directional pressure. Values beyond ±2.0 are statistically extreme.
Climax Zone Warnings
When the Z-Score first crosses above +2.0 or below -2.0, a diamond marker appears on the oscillator. These climax entries indicate that buying or selling pressure has reached a statistical extreme — a condition that often precedes exhaustion or reversal. While the Z-Score remains in the extreme zone, a subtle background highlight persists as a visual reminder that conditions are overextended.
Diamonds mark only the first bar entering the extreme zone, not every bar within it. This keeps the chart clean while still flagging the transition into climax territory.
Spot Accumulation Signals
Blue circle markers appear at the bottom of the oscillator when three conditions align simultaneously:
1 — The CVD Z-Score is positive and rising (buying pressure increasing)
2 — Price action is flat (range is contained within 1.5x ATR)
3 — Open Interest is declining (futures positions are unwinding)
This combination suggests that buying is occurring in the spot market while futures traders are reducing exposure — a pattern often associated with accumulation phases before a move higher.
Dashboard
An optional dashboard displays three real-time metrics:
• Z-Score: Current value with trend arrow and extreme zone highlighting. Green background at extreme overbought, red at extreme oversold.
• Efficiency: Shows whether the current market is in a "Breakout" state (price responding to volume), "Churn" state (volume active but price stalling), or "Balanced."
• Phase: Displays the current signal state — "Accumulation" when spot accumulation conditions are met, "Climax" when the Z-Score is in an extreme zone, or "Neutral."
█ DETAILS
CVD Calculation
Cumulative Volume Delta is built bar-by-bar. Bullish bars (close > open) add their full volume to the running total. Bearish bars (close < open) subtract their full volume. Doji bars (close = open) contribute zero. The resulting cumulative line tracks the net balance of buying versus selling pressure over time.
Z-Score Normalization
The raw CVD value is normalized into a z-score by subtracting its Simple Moving Average and dividing by its Standard Deviation, both calculated over the configurable lookback period (default: 20). This transforms the CVD into a standardized measure of how far current buying/selling pressure deviates from its recent norm. An EMA of the configurable smoothing length (default: 5) is applied to reduce noise while preserving responsiveness.
Efficiency Analysis (Effort vs Result)
The efficiency metric compares price movement to CVD movement over the last 5 bars. The ratio is calculated as the absolute price change divided by the absolute CVD change, scaled for readability. High efficiency (above 5) indicates a "Breakout" — price is moving significantly relative to volume delta, suggesting genuine directional commitment. Low efficiency (below 0.5) indicates "Churn" — volume delta is active but price is not responding, which may signal absorption, distribution, or range-bound conditions.
Open Interest Integration
Open Interest data is fetched from a configurable ticker (default: BINANCE:BTCUSDT.P_OI). The change in OI is used exclusively for spot accumulation signal detection. Declining OI combined with rising CVD and flat price suggests that buying pressure is coming from the spot market rather than leveraged futures positions.
█ SETTINGS
Z-Score Settings
• Z-Score Lookback Period: SMA and Standard Deviation period for z-score normalization (default: 20). Higher values produce a smoother baseline but slower response to regime changes.
• Smoothing Length (EMA): EMA period applied to the raw z-score (default: 5). Higher values reduce noise; lower values increase sensitivity.
Data Source
• OI Ticker: Symbol for Open Interest data used in spot accumulation detection (default: BINANCE:BTCUSDT.P_OI). Change this to match the asset being analyzed.
Signals
• Show Spot Accumulation Signals: Toggle blue circle markers when CVD is rising with flat price and declining OI.
• Show Climax Zone Warnings: Toggle diamond markers and background highlights at extreme z-score levels (±2.0).
Dashboard
• Show Dashboard: Toggle the multi-metric information panel.
• Dashboard Position: Place the dashboard at any of seven screen positions.
• Dashboard Size: Choose between Tiny, Small, or Medium text sizes.
This indicator measures statistical extremes in volume delta and does not predict price direction. Accumulation signals identify a specific volume-price-OI pattern that does not guarantee a subsequent move. Climax events indicate statistical extremes that may not result in reversals. It does not constitute financial advice. Past performance does not guarantee future results.
Indicator

Indicator

Kalman Absorption/Distribution Tracker 3-State EKFQuant-Grade Institutional Flow: 3-State EKF Absorption Tracker
SUMMARY
An advanced, open-source implementation of a 3-State Extended Kalman Filter (EKF) designed to track institutional Order Flow. By analyzing 1-second intrabar microstructure data, this script estimates the true Position, Velocity, and Volatility of the Cumulative Volume Delta (CVD), revealing hidden Absorption and Distribution events in real-time.
INTRODUCTION: THE SIGNAL AMIDST THE NOISE
In the world of technical analysis, noise is the enemy. Traditional indicators rely on Moving Averages (SMA, EMA) to smooth out price and volume data. The problem is the "Lag vs. Noise" paradox: to get a smooth signal, you must accept lag; to get a fast signal, you must accept noise.
This indicator solves that paradox by introducing aerospace-grade mathematics to the PulseWire community: The 3-State Extended Kalman Filter (EKF).
Unlike moving averages that blindly average past data, a Kalman Filter is a probabilistic state-space model. It constantly predicts where the order flow "should" be, compares it to the actual measurement, and updates its internal model based on the calculated uncertainty of the market.
This script is not just another volume oscillator. It is a full microstructure analysis engine that digests intrabar data (down to 1-second resolution) to track the true intent of "Smart Money" while filtering out the noise of retail chop.
THE INNOVATION: WHY 3 STATES?
Most Kalman Filters found in public libraries are "1-State" (tracking price only) or occasionally "2-State" (tracking price and velocity). This script introduces a highly advanced 3-State EKF.
The filter tracks three distinct variables simultaneously in a feedback loop:
State 1: Position (The True CVD)
This is the noise-filtered estimate of the Cumulative Volume Delta. It represents the actual inventory accumulation of aggressive buyers versus sellers, stripped of random noise.
State 2: Velocity (The Momentum)
This tracks the rate of change of the order flow. Is buying accelerating? Is selling pressure fading even as price drops? This provides a leading signal before the cumulative value even turns.
State 3: Volatility (The Adaptive Regime)
This is the game-changer. The filter estimates the current volatility of the order flow (Log-Volatility). In high-volatility environments (like news events), the filter automatically widens its uncertainty bands (Covariance) and reacts faster. In low-volatility environments (chop), it tightens up and ignores minor fluctuations.
THE LOGIC: DETECTING ABSORPTION AND DISTRIBUTION
The core philosophy of this indicator is based on Wyckoff Logic: Effort vs. Result.
-- Effort: Represented by the CVD (Buying/Selling pressure).
-- Result: Represented by Price Movement.
When these two diverge, we have an actionable signal. The script uses the EKF Velocity state to detect these moments:
Absorption (Bullish)
This occurs when the EKF detects high negative Velocity (aggressive selling), but Price refuses to drop. The "Smart Money" is absorbing the sell orders via limit buys. The indicator highlights this as a Blue Event in the dashboard.
Distribution (Bearish)
This occurs when the EKF detects high positive Velocity (aggressive buying), but Price refuses to rise. Limit sellers are capping the market. The indicator highlights this as an Orange Event.
TECHNICAL DEEP DIVE: UNDER THE HOOD
For the developers and quants, here is how the Pine Script is architected using the "type" and "method" features of Pine Script v5.
1. Data Ingestion (Microstructure)
The script uses "request.security_lower_tf" to pull intrabar data regardless of your chart timeframe. This allows the script to see "inside" the bar. A 5-minute candle might look green, but the microstructure might reveal that 80% of the volume was selling absorption at the wick. This script sees that.
2. Tick Classification
Standard CVD assumes that if Price Close is greater than Price Open, all volume is buying. This is often flawed. This script offers three modes of tick handling, including a "High-Low Distribution" method that statistically apportions volume based on where the tick closed relative to its high and low.
3. The EKF Mathematics
The script implements the standard Extended Kalman Filter equations manually. It calculates the Jacobian matrix to handle the non-linear relationship between volatility and price. The "Process Noise Matrix" (Q) is dynamically scaled by the Volatility State. This means the mathematics of the indicator literally "breathe" with the market conditions—expanding during expansion and contracting during consolidation.
THE DASHBOARD & VISUALS:
The indicator features a professional-grade HUD (Heads Up Display) located on the chart table.
-- EKF State Vector: Displays the real-time Position, Velocity, and Volatility values derived from the matrix.
-- Ease of Movement (Wyckoff): Calculates how much price moves per 1,000 contracts of CVD. For example, if Price moves +5 points per 1k Buy CVD, but only -2 points per 1k Sell CVD, the "Path of Least Resistance" is clearly UP.
-- Session State: Tracks cumulative confirmed Bullish vs. Bearish events for Today, Yesterday, and the Day Before (3-Day Profile).
-- Bias Summary: An algorithmic conclusion telling you if the day is "Confirmed Bullish," "Accumulating," or "Neutral."
HOW TO TRADE THIS INDICATOR
Strategy A: The Reversal (Absorption Play)
Look for price making a Lower Low.
Look for the EKF Velocity (Histogram) to be Deep Red (High Selling Pressure).
Watch the Dashboard "Absorption" count increase.
SIGNAL: When EKF Velocity crosses back toward zero and turns grey/green, the absorption is complete. This indicates sellers are exhausted and limit buyers have control.
Strategy B: The Trend Continuation (Ease of Movement)
Check the Dashboard "Ease of Movement" section.
If "Price per +1K CVD" is significantly higher than "Price per -1K CVD", buyers are efficient.
Wait for a pullback where EKF Velocity hits the "Neutral Zone" (Gray).
SIGNAL: Enter Long when Velocity ticks positive again, aligning with the dominant Ease of Movement stats.
CONFIGURATION GUIDE:
Because this is a quant-grade tool, the settings allow for fine-tuning the physics of the filter.
-- Velocity Decay: Controls how fast momentum resets to zero. Set high (0.98) for trending markets, or lower (0.85) for mean-reverting chop.
-- Volatility Persistence: Controls how "sticky" volatility regimes are.
-- Process Noise: Increase this if the filter feels too laggy; decrease it if the filter feels too jittery (noisy).
-- Measurement Noise: Increase this to trust the Mathematical Model more than the Price Data (smoother output).
WHY OPEN SOURCE?
Complex statistical filtering is often sold behind closed doors in expensive "Black Box" algorithms. By releasing this 3-State EKF open source, the goal is to raise the standard of development on PulseWire.
I encourage the community to inspect the code, specifically the "ekf_update_3state" function, to understand how matrix operations can be simulated in Pine Script to create adaptive, self-correcting indicators. And also update me for improvements.
DISCLAIMER:
This tool analyzes microstructure volume data. It requires a subscription plan that supports Intrabar inspection (Premium/Pro recommended for best results). Past performance of the Kalman Filter logic does not guarantee future results. Volume analysis is subjective and should be used as part of a comprehensive strategy.
SUGGESTED SETTINGS
-- Timeframe: Works best on 1m, 3m, or 5m charts (Intrabar data is fetched from 1S).
-- Asset Class: Highly effective on Futures (ES, NQ, BTC) and high-volume Forex/Crypto pairs where volume data is reliable.
-- Background: Dark mode recommended for Dashboard visibility.
WHAT IS A KALMAN FILTER?
Imagine driving a car into a tunnel where your GPS signal is lost.
Prediction: Your car knows its last speed (Velocity) and position. It predicts where you are every second inside the tunnel.
Update: When you exit the tunnel, the GPS connects again. The system compares where it thought you were versus where the satellite says you are.
Correction: It corrects your position and updates its estimate of your speed.
Now apply this to trading:
-- The Tunnel: Market Noise, wicks, and Fake-outs.
-- The Car: The True Market Trend.
-- This Indicator: The navigation system that tells you where the market actually is, ignoring the noise of the tunnel.
Enjoy the indicator and trade safe!
Dr. Jay Desai
(Investment Management & Derivatives Area, Gujarat University)
Indicator

Cumulative Volume Delta (CVD) Suite [QuantAlgo]🟢 Overview
The Cumulative Volume Delta (CVD) Suite is a comprehensive toolkit that tracks the net difference between buying and selling pressure over time, helping traders identify significant accumulation/distribution patterns, spot divergences with price action, and confirm trend strength. By visualizing the running balance of volume flow, this indicator reveals underlying market sentiment that often precedes significant price movements.
🟢 How It Works
The indicator begins by determining the optimal timeframe for delta calculation. When auto-select is enabled, it automatically chooses a lower timeframe based on your chart period, e.g., using 1-second bars for minute charts, 5-second bars for 5-minute charts, and progressively larger intervals for higher timeframes. This granular approach captures volume flow dynamics that might be missed at the chart level.
Once the timeframe is established, the indicator calculates volume delta for each bar using directional classification:
getDelta() =>
close > open ? volume : close < open ? -volume : 0
When a bar closes higher than it opens (bullish candle), the entire volume is counted as positive delta representing buying pressure. Conversely, when a bar closes lower than its open (bearish candle), volume becomes negative delta representing selling pressure. This classification is applied to every bar in the selected lower timeframe, then aggregated upward to construct the delta for each chart bar:
array deltaValues = request.security_lower_tf(syminfo.tickerid, lowerTimeframe, getDelta())
float barDelta = 0.0
if array.size(deltaValues) > 0
for i = 0 to array.size(deltaValues) - 1
barDelta := barDelta + array.get(deltaValues, i)
This aggregation process sums all the individual delta values from the lower timeframe bars that comprise each chart bar, capturing the complete volume flow activity within that period. The resulting bar delta then feeds into the various display calculations:
rawCVD = ta.cum(barDelta) // Cumulative sum from chart start
smoothCVD = ta.sma(rawCVD, smoothingLength) // Smoothed for noise reduction
rollingCVD = math.sum(barDelta, rollingLength) // Rolling window calculation
Note: This directional bar approach differs from exchange-level orderflow CVD, which uses tick data to separate aggressive buy orders (executed at the ask price) from aggressive sell orders (executed at the bid price). While this method provides a volume flow approximation rather than pure tape-reading precision, it offers a practical and accessible way to analyze buying and selling dynamics across all timeframes and instruments without requiring specialized data feeds on PulseWire.
🟢 Key Features
The indicator offers five distinct visualization modes, each designed to reveal different aspects of volume flow dynamics and cater to various trading strategies and market conditions.
1. Oscillator (Raw): Displays the true cumulative volume delta from the beginning of chart history, accompanied by an EMA signal line that helps identify trend direction and momentum shifts. When CVD crosses above the signal line, it indicates strengthening buying pressure; crosses below suggest increasing selling pressure. This mode is particularly valuable for spotting long-term accumulation/distribution phases and identifying divergences where CVD makes new highs/lows while price fails to confirm, often signaling potential reversals.
2. Oscillator (Smooth): Applies a simple moving average to the raw CVD to filter out noise while preserving the underlying trend structure, creating smoother signal line crossovers. Use this when trading trending instruments where you need confirmation of genuine volume-backed moves versus temporary volatility spikes.
3. Oscillator (Rolling): Calculates cumulative delta over only the most recent N bars (configurable window length), effectively resetting the baseline and removing the influence of distant historical data. This approach focuses exclusively on current market dynamics, making it highly responsive to recent shifts in volume pressure and particularly useful in markets that have undergone regime changes or structural shifts. This mode can be beneficial for traders when they want to analyze "what's happening now" without legacy bias from months or years of prior data affecting the readings.
4. Histogram: Renders the per-bar volume delta as individual histogram bars rather than cumulative values, showing the immediate buying or selling pressure that occurred during each specific candle. Positive (green) bars indicate that bar closed higher than it opened with buying volume, while negative (red) bars show selling volume dominance. This mode excels at identifying sudden volume surges, exhaustion points where large delta bars fail to move price, and bar-by-bar absorption patterns where one side is aggressively consuming the other's volume.
5. Candles: Transforms CVD data into OHLC candlestick format, where each candle's open represents the CVD at the start of the bar and subsequent intra-bar delta changes create the high, low, and close values. This visualization reveals the internal volume flow dynamics within each time period, showing whether buying or selling pressure dominated throughout the bar's formation and exposing intra-bar reversals or sustained directional pressure. Use candle wicks and bodies to identify volume acceptance/rejection at specific CVD levels, similar to how price candles show acceptance/rejection at price levels.
▶ Built-in Alert System: Comprehensive alerts for all display modes including bullish/bearish momentum shifts (CVD crossing signal line), buying/selling pressure detection (histogram mode), and bullish/bearish CVD candle formations. Fully customizable with exchange and timeframe placeholders.
▶ Visual Customization: Choose from 5 color presets (Classic, Aqua, Cosmic, Ember, Neon) or create your own custom color schemes. Optional price bar coloring feature overlays CVD trend colors directly onto your main chart candles, providing instant visual confirmation of volume flow and making divergences immediately apparent. Optional info label with configurable position and size displays current CVD values, data source timeframe, and mode at a glance.
Indicator

Futures Ultra CVD (Pure )Futures Ultra CVD (Pure)
Futures Ultra CVD (Pure) is a volume-driven Cumulative Volume Delta (CVD) indicator designed to expose real buying and selling pressure behind price movement. Unlike price-only indicators, this script analyzes how volume is distributed within each bar to determine whether aggressive buyers or sellers are in control, then tracks how that pressure evolves over time.
This version is intentionally pure and ungated: it does not rely on external symbols, market filters, session bias, or macro confirmation. All signals are derived strictly from price, volume, and delta behavior of the active chart, making it suitable for futures, equities, crypto, and FX.
Core Concept: How CVD Is Calculated
For each bar, volume is split into buying pressure and selling pressure using the bar’s price position:
Buying volume increases as price closes closer to the high
Selling volume increases as price closes closer to the low
The difference between buying and selling volume forms Delta:
Positive delta = net aggressive buying
Negative delta = net aggressive selling
This delta is then accumulated into Cumulative Volume Delta (CVD) using one of three user-selectable modes:
Total – running cumulative sum of all delta values
Periodic – rolling sum over a fixed lookback period
EMA – smoothed cumulative delta using an exponential average
This flexibility allows traders to choose between raw order-flow tracking or smoother, trend-like behavior depending on timeframe and instrument.
Visual Structure & Histogram Logic
The CVD is displayed as a column histogram, not a line, to emphasize momentum and pressure shifts.
Enhanced coloring provides additional context:
Brighter green/red bars indicate increasing momentum
Muted colors indicate stalling or weakening pressure
Optional footprint-style highlights appear when buy or sell volume overwhelms the opposite side by a user-defined imbalance factor
This allows traders to visually distinguish:
Strength vs weakness
Continuation vs exhaustion
Absorption and aggressive participation
Built-In Order Flow Signals
The script automatically detects and labels key order-flow events:
Strong Delta
Triggered when delta exceeds a user-defined threshold, highlighting unusually aggressive buying or selling.
Delta Surge
Detects sudden expansion in delta compared to the prior bar, often associated with breakout attempts or liquidation events.
Zero-Line Crosses
Marks transitions between net bullish and bearish participation as CVD crosses above or below zero.
CVD Continuation Logic (Trend Confirmation)
Beyond raw delta, the script evaluates CVD structure to identify continuation conditions:
A bullish continuation requires:
Positive and rising CVD
Strong buy delta
Confirmation from at least one of the following:
CVD above its EMA and SMA
Bullish price expansion
Sustained positive delta pressure
Bearish continuation follows the inverse logic.
These continuation signals are designed to confirm participation strength, not predict reversals.
Conflict Detection (Divergence Warning)
The indicator also flags conflict conditions, where:
Strong buying occurs while CVD remains negative
Strong selling occurs while CVD remains positive
These scenarios often precede failed breakouts, absorption zones, or short-term reversals and can be used as cautionary signals.
Alerts & Practical Use
All major events include built-in alerts:
Strong delta
Delta surge
CVD continuations
Zero-line crosses
Buy/sell imbalances
Conflict signals
Alerts can be set to trigger on bar close or intrabar in real time, depending on trader preference.
How Traders Typically Use This Indicator
Confirm breakouts with delta participation
Validate trends using CVD continuation instead of price alone
Identify absorption or exhaustion via conflicts and imbalances
Combine with price structure, VWAP, or market profile tools
This script is not a trading system by itself. It is a decision-support tool designed to reveal what price alone cannot: who is actually in control of the market.
On-Chart Symbols & What They Mean
This script uses a small number of visual symbols to communicate order-flow events clearly and consistently. All symbols are derived directly from the Cumulative Volume Delta calculations described above.
Δ+ (Green Up Arrow)
Strong Buy Delta
Indicates that buying pressure on the current bar exceeded the Strong Delta Threshold
Represents aggressive market buying dominating selling volume
Often appears during breakouts, trend acceleration, or initiative buying
This symbol does not imply direction by itself; it only confirms strong buyer participation.
Δ− (Red Down Arrow)
Strong Sell Delta
Indicates that selling pressure on the current bar exceeded the Strong Delta Threshold
Represents aggressive market selling dominating buying volume
Often appears during breakdowns, liquidation events, or initiative selling
Like Δ+, this symbol measures participation strength, not trade direction.
↑ (Green Label Up)
CVD Bullish Continuation
Appears when all of the following are present:
CVD is positive and increasing
Strong buy delta is detected
At least one confirmation condition is met:
CVD is above its EMA and SMA
Price shows bullish expansion
Consecutive positive delta bars (sustained buying pressure)
This symbol highlights trend continuation supported by volume, not a reversal signal.
↓ (Red Label Down)
CVD Bearish Continuation
Appears when:
CVD is negative and decreasing
Strong sell delta is detected
At least one confirmation condition is met:
CVD is below its EMA and SMA
Price shows bearish expansion
Consecutive negative delta bars (sustained selling pressure)
This indicates bearish continuation with participation confirmation.
Cyan / Orange Histogram Bars
Footprint-Style Volume Imbalance
Cyan bars indicate buy volume exceeds sell volume by the imbalance factor
Orange bars indicate sell volume exceeds buy volume by the imbalance factor
These bars highlight areas where one side is overwhelming the other, often associated with absorption, initiative moves, or failed auctions.
Bright vs Muted Histogram Colors
CVD Momentum State
Bright colors = CVD increasing in the direction of its current bias
Muted colors = CVD losing momentum or stalling
This allows quick visual identification of strengthening vs weakening participation.
Conflict Alerts (No Symbol by Default)
Delta vs CVD Disagreement
These conditions trigger alerts (but no fixed chart icon):
Strong buying while CVD remains negative
Strong selling while CVD remains positive
Conflicts often signal absorption, trap conditions, or short-term exhaustion.
Important Usage Notes
All symbols are informational, not trade entries.
Signals are calculated from price-based volume distribution, not true bid/ask data.
Results depend on the quality of volume data provided by the exchange and PulseWire.
Indicator

Volume Pressure OscillatorThe Volume Pressure Oscillator (VPO) is a momentum-based indicator that measures the directional pressure of cumulative volume delta (CVD) combined with price efficiency. It oscillates between 0 and 100, with readings above 50 indicating net buying pressure and readings below 50 indicating net selling pressure.
The indicator is designed to identify the strength and sustainability of volume-driven trends while remaining responsive during consolidation periods.
How the Indicator Works
The VPO analyzes volume flow by examining price action at lower timeframes to build a Cumulative Volume Delta (CVD). For each chart bar, the indicator looks at intrabar price movements to classify volume as either buying volume or selling volume. These classifications are accumulated into a running total that tracks net directional volume.
The indicator then measures the momentum of this CVD over both short-term and longer-term periods, providing responsiveness to recent changes while maintaining awareness of the broader trend. These momentum readings are normalized using percentile ranking, which creates a stable 0-100 scale that works consistently across different instruments and market conditions.
A key feature is the extreme zone persistence mechanism. When the indicator enters extreme zones (above 80 or below 20), it maintains elevated readings as long as volume pressure continues in the same direction. This allows the VPO to stay in extreme zones during strong trends rather than quickly reverting to neutral, making it useful for identifying sustained volume pressure rather than just temporary spikes.
What Makes This Indicator Different
While many indicators measure volume or volume delta, the VPO specifically measures how aggressively CVD is currently changing and whether that pressure is being sustained. It's the difference between knowing "more volume has accumulated on the buy side" versus "buying pressure is intensifying right now and shows signs of continuation."
1. Focus on CVD Momentum, Not CVD Levels
Most CVD indicators display the cumulative volume delta as a line that trends up or down indefinitely. The VPO is fundamentally different - it measures the slope of CVD rather than the absolute level. This transforms CVD from an unbounded cumulative metric into a bounded 0-100 oscillator that shows the intensity and direction of current volume pressure, not just the historical accumulation.
2. Designed to Stay in Extremes During Trends
Unlike traditional oscillators that treat extreme readings (above 80 or below 20) as overbought/oversold reversal signals, the VPO is engineered to oscillate within extreme zones during strong trends. When sustained buying or selling pressure exists, the indicator remains elevated (e.g., 80-95 or 5-20) rather than quickly reverting to neutral. This makes it useful for trend continuation identification rather than exclusively for reversal trading.
3. Percentile-Based Normalization
The VPO uses percentile ranking over a lookback window, which provides consistent behavior across different instruments, timeframes, and volatility regimes without constant recalibration.
4. Dual-Timeframe Momentum Synthesis
The indicator simultaneously considers short-term CVD momentum (responsive to recent changes) and longer-term CVD momentum (tracking trend direction), weighted and combined with a slow-moving trend bias. This multi-timeframe approach helps it stay responsive in ranging markets while maintaining context during trends.
How to Use the Indicator
Understanding the Zones:
80-100 (Strong Buying Pressure): CVD momentum is strongly positive. In trending markets, the indicator oscillates within this zone rather than immediately reverting to neutral. This suggests sustained accumulation and trend continuation probability.
60-80 (Moderate Buying): Positive volume pressure but not extreme. Suitable for identifying pullback entry opportunities within uptrends.
40-60 (Neutral Zone): Volume pressure is balanced or unclear. No strong directional edge from volume. Often seen during consolidation or trend transitions.
20-40 (Moderate Selling): Negative volume pressure developing. May indicate distribution or downtrend continuation setups.
0-20 (Strong Selling Pressure): CVD momentum is strongly negative. During downtrends, sustained readings in this zone suggest continued distribution and downside follow-through probability.
Practical Applications:
Trend Confirmation: When price makes new highs/lows, check if VPO confirms with similarly elevated readings. Divergences (price making new highs while VPO fails to reach prior highs) may indicate weakening momentum.
Range Trading: During consolidation, the VPO typically oscillates between 30-70. Readings toward the low end of the range (30-40) may present accumulation opportunities, while readings at the high end (60-70) may indicate distribution zones.
Extreme Persistence: If VPO reaches 90+ or drops below 10, this indicates exceptional volume pressure. Rather than fading these extremes immediately, monitor whether the indicator stays elevated. Sustained extreme readings suggest strong trend continuation potential.
Context with Price Action: The VPO is most effective when combined with price action or other orderflow indicators. Use the indicator to gauge whether volume is confirming or contradicting.
What the Indicator Does NOT Do:
It does not provide specific entry or exit signals
It does not predict future price direction
It does not guarantee profitable trades
It should not be used as a standalone trading system
Settings Explanation
Momentum Period (Default: 14)
This parameter controls the lookback period for CVD rate-of-change calculations.
Lower values (5-10): Make the indicator more responsive to recent volume changes. Useful for shorter-term trading and more active oscillation. May produce more whipsaws in choppy markets.
Default value (14): Provides balanced responsiveness while filtering out most noise. Suitable for swing trading and daily timeframe analysis.
Higher values (20-50): Create smoother readings and focus on longer-term volume trends. Better for position trading and reducing false signals, but with slower reaction to genuine changes in volume pressure.
Important Notes:
This indicator requires intrabar data to function properly. On some instruments or timeframes where lower timeframe data is not available, the indicator may not display.
The indicator uses request.security_lower_tf() which has a limit of intrabars. On higher timeframes, this provides extensive history, but on very low timeframes (<1-minute charts), the indicator may only cover limited historical bars.
Volume data quality varies by exchange and instrument. The indicator's effectiveness depends on accurate volume reporting from the data feed.
Indicator

CVD [able0.1]# CVD Overlay iOS Style - Complete User Guide
## 📖 Table of Contents
1. (#what-is-cvd)
2. (#installation-guide)
3. (#understanding-the-display)
4. (#reading-the-info-table)
5. (#settings--customization)
6. (#trading-strategies)
7. (#common-mistakes-to-avoid)
---
## 🎯 What is CVD?
**CVD (Cumulative Volume Delta)** tracks the **difference between buying and selling pressure** over time.
### Simple Explanation:
- **Positive CVD** (Orange) = More buying than selling = Bulls winning
- **Negative CVD** (Gray) = More selling than buying = Bears winning
- **Rising CVD** = Increasing buying pressure = Potential uptrend
- **Falling CVD** = Increasing selling pressure = Potential downtrend
### Why It Matters:
CVD helps you see **who's really in control** of the market - not just price movement, but actual buying/selling volume.
---
## 🚀 Installation Guide
### Step 1: Open Pine Editor
1. Go to PulseWire
2. Click the **"Pine Editor"** tab at the bottom of the screen
3. Click **"New"** or open an existing script
### Step 2: Copy & Paste the Code
1. Select all existing code (Ctrl+A / Cmd+A)
2. Delete it
3. Copy the entire CVD iOS Style code
4. Paste it into Pine Editor
### Step 3: Add to Chart
1. Click **"Save"** button (or Ctrl+S / Cmd+S)
2. Click **"Add to Chart"** button
3. The indicator will appear on your chart!
### Step 4: Initial Setup
- The indicator appears as an **overlay** on your price chart
- You'll see an **orange/gray line** following price
- An **info table** appears in the top-right corner
---
## 📊 Understanding the Display
### Main Chart Elements:
#### 1. **CVD Line** (Orange/Gray)
- **Orange Line** = Positive CVD (buying pressure)
- **Gray Line** = Negative CVD (selling pressure)
- This line moves with your price chart but shows volume delta
#### 2. **CVD Zone** (Shaded Area)
- Light shaded box around the CVD line
- Shows the "range" of CVD movement
- Helps visualize CVD boundaries
#### 3. **Center Line** (Dotted)
- Gray dotted line in the middle of the zone
- Represents the "neutral" point
- CVD crossing this = shift in market control
#### 4. **Reference Asset Line** (Light Gray)
- Shows Bitcoin (BTC) price movement for comparison
- Helps you see if your asset moves with or against BTC
- Can be changed to any asset you want
#### 5. **CVD Label**
- Shows current CVD value
- Positioned above/below zone to avoid overlap
- Updates in real-time
#### 6. **Reset Background** (Very Light Gray)
- Appears when CVD resets
- Indicates a new calculation period
---
## 📋 Reading the Info Table
The info table (top-right) shows **8 key metrics**:
### Row 1: **Header**
```
╔═ CVD able ═╗ | 15m | ████████ | able
```
- **CVD able** = Indicator name + creator
- **15m** = Current timeframe
- **████████** = Visual decoration
- **able** = Creator signature
### Row 2: **CVD Value**
```
CVD▲ | 7.39K | ████████ | █
█
█
```
- **CVD▲** = CVD with trend arrow
- ▲ = CVD increasing
- ▼ = CVD decreasing
- ► = CVD unchanged
- **7.39K** = Actual CVD number
- **Progress Bar** = Visual strength (darker = stronger)
- **Vertical Bars** = Height shows intensity
### Row 3: **Delta**
```
◆DELTA | -1.274K | ████░░░░ | ░
░
```
- **Delta** = Volume change THIS BAR ONLY
- **Negative** = More selling this bar
- **Positive** = More buying this bar
- Shows **immediate** pressure (not cumulative)
### Row 4: **UP Volume**
```
UP↑ | -1.263K | ████████ | █
█
█
```
- Total **buying volume** this bar
- Higher = Stronger buying pressure
- Green/Orange vertical bars = Bullish strength
### Row 5: **DOWN Volume**
```
DN↓ | 2.643K | ████████ | ░
░
░
```
- Total **selling volume** this bar
- Higher = Stronger selling pressure
- Gray vertical bars = Bearish strength
### Row 6-7: **Reference Asset** (if enabled)
```
══ REF ══ | ══════ | ████████ | █
█
PRICE▲ | 4130.300 | ████████ | █
█
```
- **REF** = Reference asset header
- **PRICE▲** = Reference price with trend
- Shows if BTC (or chosen asset) is rising/falling
- Compare with your chart to see correlation
### Row 8: **Market Status**
```
◄STATUS► | NEUT | ████░░░░ | ▒
▒
```
- **BULL** = CVD positive + Delta positive = Strong buying
- **BEAR** = CVD negative + Delta negative = Strong selling
- **NEUT** = Mixed signals = Wait for clarity
**Status Colors:**
- **Orange background** = Bullish (good for long)
- **Gray background** = Bearish (good for short)
- **White background** = Neutral (no clear signal)
---
## ⚙️ Settings & Customization
### Main Settings (⚙️)
#### **CVD Reset**
- **None** = CVD never resets (from beginning of data)
- **On Higher Timeframe** = Resets when HTF candle closes
- 15m chart → Resets hourly
- 1h chart → Resets daily
- Recommended for most traders
- **On Session Start** = Resets at market open
- **On Visible Chart** = Resets from leftmost visible bar
#### **Precision**
- **Low (Fast)** = Uses 1m data, faster but less accurate
- **Medium** = Uses 5m data, balanced (recommended)
- **High** = Uses 15m data, most accurate but slower
#### **Cumulative**
- ✅ On = CVD accumulates over time (recommended)
- ❌ Off = Shows only current bar delta
#### **Show Labels**
- ✅ On = Shows CVD value label on chart
- ❌ Off = Cleaner chart, no label
#### **Show Info Table**
- ✅ On = Shows info table (recommended for beginners)
- ❌ Off = Hide table for minimalist view
---
### 🎨 iOS Style Colors
You can customize **every color** to match your chart theme:
#### **Primary Colors**
- **Primary (Orange)** = Main bullish color (#FF9500)
- **Secondary (Gray)** = Main bearish color (#8E8E93)
- **Background** = Table background (#FFFFFF)
- **Text** = Text color (#1C1C1E)
#### **Bullish/Bearish**
- **Bullish (Orange)** = Positive CVD color
- **Bearish (Gray)** = Negative CVD color
- **Opacity** = Zone transparency (0-100%)
- **Show Zone** = Enable/disable shaded area
#### **Table Colors** (📋)
- **Header Background** = Top row background
- **Header Text** = Top row text color
- **Cell Background** = Data cells background
- **Cell Text** = Data cells text color
- **Border** = Table border color
- **Accent Background** = Special rows background
- **Alert Background** = Warning/status background
---
### 📊 Reference Asset Settings
#### **Enable**
- ✅ On = Shows reference asset line
- ❌ Off = Hide reference asset
#### **Symbol**
- Default: `BINANCE:BTCUSDT`
- Can change to any asset:
- `BINANCE:ETHUSDT` (Ethereum)
- `SPX` (S&P 500)
- `DXY` (US Dollar Index)
- Any ticker symbol
#### **Color & Width**
- Customize line appearance
- Width: 1-4 (thickness)
---
## 💡 Trading Strategies
### Strategy 1: CVD Divergence (Beginner-Friendly)
**What to Look For:**
- Price making **higher highs** but CVD making **lower highs** = Bearish divergence
- Price making **lower lows** but CVD making **higher lows** = Bullish divergence
**How to Trade:**
1. Wait for divergence to form
2. Look for confirmation (price reversal, candlestick pattern)
3. Enter trade in divergence direction
4. Stop loss beyond recent high/low
**Example:**
```
Price: /\ /\ /\ (higher highs)
CVD: /\ / \/ (lower highs) = Bearish signal
```
### Strategy 2: CVD Trend Following (Intermediate)
**What to Look For:**
- **Strongly rising CVD** + **rising price** = Strong uptrend
- **Strongly falling CVD** + **falling price** = Strong downtrend
**How to Trade:**
1. Wait for CVD and price moving in same direction
2. Enter on pullbacks to support/resistance
3. Stay in trade while CVD trend continues
4. Exit when CVD trend breaks
**Signals:**
- CVD ▲▲▲ + Price ↑ = Go LONG
- CVD ▼▼▼ + Price ↓ = Go SHORT
### Strategy 3: CVD + Reference Asset (Advanced)
**What to Look For:**
- Your asset **rising** but BTC (reference) **falling** = Relative strength
- Your asset **falling** but BTC (reference) **rising** = Relative weakness
**How to Trade:**
1. Compare CVD movement with BTC
2. If your CVD rises faster than BTC = Buy signal
3. If your CVD falls faster than BTC = Sell signal
4. Use for **pair trading** or **asset selection**
### Strategy 4: Volume Delta Confirmation
**What to Look For:**
- **Large positive Delta** = Strong buying this bar
- **Large negative Delta** = Strong selling this bar
**How to Trade:**
1. Price breaks resistance + Large positive Delta = Confirmed breakout
2. Price breaks support + Large negative Delta = Confirmed breakdown
3. Use Delta to **confirm** price moves, not predict them
**Rules:**
- Delta > 2x average = Very strong pressure
- Delta near zero at key level = Weak move, likely false breakout
---
## 🎓 Reading Real Scenarios
### Scenario 1: Strong Buying Pressure
```
Table Shows:
CVD▲ | 12.5K | ████████ | ████ (CVD rising)
◆DELTA | +2.8K | ████████ | ▲ (Positive delta)
UP↑ | 3.1K | ████████ | ████ (High buy volume)
DN↓ | 0.3K | ██░░░░░░ | ░ (Low sell volume)
◄STATUS► | BULL | ████████ | ████ (Orange background)
```
**Interpretation:** Strong buying, good for LONG trades
### Scenario 2: Distribution (Hidden Selling)
```
Table Shows:
CVD► | 8.2K | ████░░░░ | ▒▒ (CVD flat)
◆DELTA | -1.5K | ████████ | ▼ (Negative delta)
UP↑ | 0.8K | ███░░░░░ | ░ (Low buy volume)
DN↓ | 2.3K | ████████ | ████ (High sell volume)
◄STATUS► | BEAR | ████████ | ░░░░ (Gray background)
```
**Interpretation:** Price may look stable, but selling increasing = Prepare for drop
### Scenario 3: Neutral/Choppy Market
```
Table Shows:
CVD► | 5.1K | ████░░░░ | ▒ (CVD sideways)
◆DELTA | +0.2K | ██░░░░░░ | ─ (Small delta)
UP↑ | 1.2K | ████░░░░ | ▒ (Medium buy)
DN↓ | 1.0K | ████░░░░ | ▒ (Medium sell)
◄STATUS► | NEUT | ████░░░░ | ▒▒ (White background)
```
**Interpretation:** No clear direction = Stay out or reduce position size
---
## ⚠️ Common Mistakes to Avoid
### Mistake 1: Trading on CVD Alone
- ❌ **Wrong:** "CVD is rising, I'll buy immediately"
- ✅ **Right:** "CVD is rising, let me check price structure, support/resistance, and wait for confirmation"
### Mistake 2: Ignoring Delta
- ❌ **Wrong:** Looking only at cumulative CVD
- ✅ **Right:** Watch both CVD (trend) and Delta (momentum)
- Delta shows **immediate** pressure changes
### Mistake 3: Wrong Timeframe
- ❌ **Wrong:** Using 1m chart with High Precision (too slow)
- ✅ **Right:** Match precision to timeframe:
- 1m-5m → Low Precision
- 15m-1h → Medium Precision
- 4h+ → High Precision
### Mistake 4: Not Using Reset
- ❌ **Wrong:** Using "None" reset for intraday trading
- ✅ **Right:** Use "On Higher Timeframe" to see fresh CVD each session
### Mistake 5: Overtrading Neutral Status
- ❌ **Wrong:** Forcing trades when STATUS = NEUT
- ✅ **Right:** Only trade clear BULL or BEAR status
### Mistake 6: Ignoring Reference Asset
- ❌ **Wrong:** Trading altcoin without checking BTC
- ✅ **Right:** Always check if BTC CVD agrees with your asset
---
## 🔥 Pro Tips
### Tip 1: Multi-Timeframe Analysis
- Check CVD on **3 timeframes**:
- Lower TF (15m) = Entry timing
- Current TF (1h) = Trade direction
- Higher TF (4h) = Overall trend
### Tip 2: Volume Confirmation
- Big price move + Small Delta = **Weak move** (likely reversal)
- Small price move + Big Delta = **Strong accumulation** (continuation)
### Tip 3: CVD Reset Zones
- Pay attention to **reset backgrounds** (light gray)
- Often marks **session starts** = High volatility periods
### Tip 4: Divergence + Status
- Bearish divergence + STATUS = BEAR = **Strongest short signal**
- Bullish divergence + STATUS = BULL = **Strongest long signal**
### Tip 5: Color Psychology
- **Orange** (Bullish) is **warm** = Buying energy
- **Gray** (Bearish) is **cool** = Selling pressure
- Train your eye to read colors instantly
### Tip 6: Table as Quick Scan
- Glance at table without reading numbers:
- **All orange** = Bullish
- **All gray** = Bearish
- **Mixed** = Wait
---
## 📱 Quick Reference Card
| Signal | CVD | Delta | Status | Action |
|--------|-----|-------|--------|--------|
| **Strong Buy** | ▲▲ High | ++ Positive | BULL | Long Entry |
| **Strong Sell** | ▼▼ Low | -- Negative | BEAR | Short Entry |
| **Divergence Buy** | ▲ Rising | Price ▼ | → BULL | Long Setup |
| **Divergence Sell** | ▼ Falling | Price ▲ | → BEAR | Short Setup |
| **Neutral** | → Flat | ~0 Near Zero | NEUT | Stay Out |
| **Accumulation** | → Flat | ++ Positive | NEUT→BULL | Watch for Breakout |
| **Distribution** | → Flat | -- Negative | NEUT→BEAR | Watch for Breakdown |
---
## 🆘 Troubleshooting
### Issue: "Indicator not showing"
- **Solution:** Make sure overlay=true in code, re-add to chart
### Issue: "Table overlaps with price"
- **Solution:** Change table position in code or use PulseWire's "Move" feature
### Issue: "CVD line too far from price"
- **Solution:** This is normal! CVD is volume-based, not price-based. Focus on CVD direction, not position
### Issue: "Too many lines on chart"
- **Solution:** Disable "Show Zone" and "Show Labels" in settings for cleaner view
### Issue: "Calculations too slow"
- **Solution:** Change Precision to "Low (Fast)" or use higher timeframe
### Issue: "Reference asset not showing"
- **Solution:** Check if "Enable" is ON and symbol is valid (e.g., BINANCE:BTCUSDT)
---
## 🎬 Getting Started Checklist
- Install indicator on PulseWire
- Set precision to "Medium"
- Set reset to "On Higher Timeframe"
- Enable info table
- Add reference asset (BTC)
- Practice reading the table on demo account
- Test on different timeframes (15m, 1h, 4h)
- Compare CVD with your current strategy
- Paper trade for 1 week before going live
- Keep a trading journal of CVD signals
---
## 📚 Summary
**CVD shows WHO is winning: Buyers or Sellers**
**Key Points:**
1. **Orange/Rising CVD** = Buying pressure = Bullish
2. **Gray/Falling CVD** = Selling pressure = Bearish
3. **Delta** = Immediate momentum THIS BAR
4. **Status** = Overall market condition
5. **Always confirm** with price action & other indicators
**Remember:**
- CVD is a **tool**, not a crystal ball
- Use with proper risk management
- Practice makes perfect
- Stay disciplined!
---
**Created by: able**
**Version:** iOS Style v1.0
**Contact:** For questions, refer to PulseWire community
Happy Trading! 🚀📈 Indicator

Indicator

Cumulative Volume Profile DeltaThis indicator calculates the Cumulative Volume Profile Delta (CVPD). It constructs a high-resolution volume profile for each bar using intra-bar data, then derives and accumulates the delta from that profile to show net buying/selling pressure.
Key Features:
Statistical Volume Profile Engine: For each bar, the indicator builds a high-resolution volume profile on a lower 'Intra-Bar Timeframe'. Instead of simple tick counting, it uses statistical models ('PDF' allocation) to distribute volume across price levels and advanced classifiers ('Dynamic' split) to determine the buy/sell pressure before accumulation.
Periodic Accumulation: The CVPD accumulation is anchored to a user-defined 'Anchor Timeframe' (e.g., daily, weekly). This cyclical reset allows to analyze the build-up of pressure within specific trading periods.
"Delta Candle" Visualization: The periodic CVPD is shown as a candle, where:
Open: The CVPD value at the start of the period (or zero).
High/Low: Represent the peak buying (CVD High) and selling (CVD Low) pressure within that period's profile.
Close: The final net delta value (CVD) for the period.
Dual CVD & Divergence Engine: The indicator calculates two CVPDs: a Periodic one (for plotting) and a Continuous one (non-resetting). The continuous line is used as a stable source for the built-in divergence engine (detecting Regular, Hidden, and Exaggerated).
Dynamic Divergence Plotting: Divergence markers are plotted relative to the periodic (candle) CVPD. They automatically adjust their vertical position after a reset to remain visually aligned with the plotted candles.
Note on Confirmation (Lag): Divergence signals rely on a pivot confirmation method to ensure they do not repaint.
The Start of a- divergence is only detected after the confirming pivot is fully formed (a delay based on Pivot Right Bars).
The End of a divergence is detected either instantly (if the signal is invalidated by price action) or with a delay (when a new, non-divergent pivot is confirmed).
Multi-Timeframe (MTF) Capability:
MTF Output: The entire analysis (Delta Candles, Divergences) can be calculated on a higher timeframe (using the Timeframe input), with standard options to handle gaps (Fill Gaps) and prevent repainting (Wait for...).
Limitation: The Divergence detection engine (pivDiv) is disabled if a Higher Timeframe (HTF) is selected.
Integrated Alerts: Includes 18 comprehensive alerts for:
The start and end of all 6 divergence types.
The periodic CVPD crossing the zero line.
Conditions of agreement or disagreement between the delta and the main bar's direction.
Caution: Real-Time Data Behavior (Intra-Bar Repainting) This indicator uses high-resolution intra-bar data. As a result, the values on the current, unclosed bar (the real-time bar) will update dynamically as new intra-bar data arrives. This behavior is normal and necessary for this type of analysis. Signals should only be considered final after the main chart bar has closed.
DISCLAIMER
For Informational/Educational Use Only: This indicator is provided for informational and educational purposes only. It does not constitute financial, investment, or trading advice, nor is it a recommendation to buy or sell any asset.
Use at Your Own Risk: All trading decisions you make based on the information or signals generated by this indicator are made solely at your own risk.
No Guarantee of Performance: Past performance is not an indicator of future results. The author makes no guarantee regarding the accuracy of the signals or future profitability.
No Liability: The author shall not be held liable for any financial losses or damages incurred directly or indirectly from the use of this indicator.
Signals Are Not Recommendations: The alerts and visual signals (e.Example: crossovers) generated by this tool are not direct recommendations to buy or sell. They are technical observations for your own analysis and consideration. Indicator

Cumulative Volume DeltaThis Cumulative Volume Delta (CVD) indicator analyzes intra-bar volume dynamics. It introduces a periodic reset mechanism, anchoring the accumulation to a user-defined timeframe (e.g., daily, weekly) for cyclical analysis.
Key Features:
Dual CVD Calculation: The indicator computes two CVD values simultaneously:
Periodic CVD: Resets on the user-defined 'Anchor Timeframe'. This is plotted as "Delta Candles".
Continuous CVD: Accumulates volume continuously (non-resetting) and is used as the source for divergence detection.
Intra-Bar Delta Analysis: Uses a lower timeframe ('Intra-Bar Timeframe') to calculate buy/sell pressure based on the direction of the intra-bar candles.
"Delta Candle" Visualization: The periodic CVD is shown as a candle, where:
Open: The CVD value at the start of the period (or zero).
High/Low: Represent the peak buying (CVD High) and selling (CVD Low) pressure within that period.
Close: The final net delta value for that period.
Full Divergence Suite (Class A, B, C): A built-in engine automatically detects and plots Regular (A), Hidden (B), and Exaggerated (C) divergences between price and the continuous CVD line.
Dynamic Divergence Plotting: Divergence markers are plotted relative to the periodic (candle) CVD. They automatically adjust their vertical position after a reset to remain visually aligned with the plotted candles.
Note on Confirmation (Lag): Divergence signals rely on a pivot confirmation method to ensure they do not repaint.
The Start of a- divergence is only detected after the confirming pivot is fully formed (a delay based on Pivot Right Bars).
The End of a divergence is detected either instantly (if the signal is invalidated by price action) or with a delay (when a new, non-divergent pivot is confirmed).
Multi-Timeframe (MTF) Capability:
MTF Output: The entire dual-CVD analysis can be run on a higher timeframe (using the Timeframe input), with standard options to handle gaps (Fill Gaps) and prevent repainting (Wait for...).
Limitation: The Divergence detection engine (pivDiv) is disabled if a Higher Timeframe (HTF) is selected.
Integrated Alerts: Includes 18 comprehensive alerts for:
The start and end of all 6 divergence types.
The periodic CVD crossing the zero line.
Conditions of agreement or disagreement between the delta and the main bar's direction.
Caution: Real-Time Data Behavior (Intra-Bar Repainting) This indicator uses high-resolution intra-bar data. As a result, the values on the current, unclosed bar (the real-time bar) will update dynamically as new intra-bar data arrives. This behavior is normal and necessary for this type of analysis. Signals should only be considered final after the main chart bar has closed.
DISCLAIMER
For Informational/Educational Use Only: This indicator is provided for informational and educational purposes only. It does not constitute financial, investment, or trading advice, nor is it a recommendation to buy or sell any asset.
Use at Your Own Risk: All trading decisions you make based on the information or signals generated by this indicator are made solely at your own risk.
No Guarantee of Performance: Past performance is not an indicator of future results. The author makes no guarantee regarding the accuracy of the signals or future profitability.
No Liability: The author shall not be held liable for any financial losses or damages incurred directly or indirectly from the use of this indicator.
Signals Are Not Recommendations: The alerts and visual signals (e.g., crossovers) generated by this tool are not direct recommendations to buy or sell. They are technical observations for your own analysis and consideration. Indicator

LibVolmLibrary "LibVolm"
This library provides a collection of core functions for volume and
money flow analysis. It offers implementations of several classic
volume-based indicators, with a focus on flexibility
for applications like multi-timeframe and session-based analysis.
Key Features:
1. **Suite of Classic Volume Indicators:** Includes standard
implementations of several foundational indicators:
- **On Balance Volume (`obv`):** A momentum indicator that
accumulates volume based on price direction.
- **Accumulation/Distribution Line (`adLine`):** Measures cumulative
money flow using the close's position within the bar's range.
- **Chaikin Money Flow (`cmf`):** An oscillator version of the ADL
that measures money flow over a specified lookback period.
2. **Anchored/Resettable Indicators:** The library includes flexible,
resettable indicators ideal for cyclical analysis:
- **Anchored VWAP (`vwap`):** Calculates a Volume Weighted Average
Price that can be reset on any user-defined `reset` condition.
It returns both the VWAP and the number of bars (`prdBars`) in
the current period.
- **Resettable CVD (`cvd`):** Computes a Cumulative Volume Delta
that can be reset on a custom `reset` anchor. The function
also tracks and returns the highest (`hi`) and lowest (`lo`)
delta values reached within the current period.
(Note: The delta sign is determined by a specific logic:
it first checks close vs. open, then close vs. prior
close, and persists the last non-zero sign).
3. **Volume Sanitization:** All functions that use the built-in
`volume` variable automatically sanitize it via an internal
function. This process replaces `na` values with 0 and ensures
no negative volume values are used, providing stable calculations.
---
**DISCLAIMER**
This library is provided "AS IS" and for informational and
educational purposes only. It does not constitute financial,
investment, or trading advice.
The author assumes no liability for any errors, inaccuracies,
or omissions in the code. Using this library to build
trading indicators or strategies is entirely at your own risk.
As a developer using this library, you are solely responsible
for the rigorous testing, validation, and performance of any
scripts you create based on these functions. The author shall
not be held liable for any financial losses incurred directly
or indirectly from the use of this library or any scripts
derived from it.
obv(price)
Calculates the On Balance Volume (OBV) cumulative indicator.
Parameters:
price (float) : series float Source price series, typically the close.
Returns: series float Cumulative OBV value.
adLine()
Computes the Accumulation/Distribution Line (AD Line).
Returns: series float Cumulative AD Line value.
cmf(length)
Computes Chaikin Money Flow (CMF).
Parameters:
length (int) : series int Lookback length for the CMF calculation.
Returns: series float CMF value.
vwap(price, reset)
Calculates an anchored Volume Weighted Average Price (VWAP).
Parameters:
price (float) : series float Source price series (usually *close*).
reset (bool) : series bool A signal that is *true* on the bar where the
accumulation should be reset.
Returns:
vwap series float The calculated Volume Weighted Average Price for the current period.
prdBars series int The number of bars that have passed since the last reset.
cvd(reset)
Calculates a resettable, cumulative Volume Delta (CVD).
It accumulates volume delta and tracks its high/low range. The
accumulation is reset to zero whenever the `reset` condition is true.
This is useful for session-based analysis, intra-bar calculations,
or any other custom-anchored accumulation.
Parameters:
reset (bool) : series bool A signal that is *true* on the bar where the
accumulation should be reset.
Returns:
cum series float The current cumulative volume delta.
hi series float The highest peak the cumulative delta has reached in the current period.
lo series float The lowest trough the cumulative delta has reached in the current period. Library

Indicator

Indicator

Order Flow RSI - Price / CVD / OIOrder Flow RSI blends three powerful market perspectives — Price , Cumulative Volume Delta (CVD) , and Open Interest (OI) — into one unified RSI-style oscillator.
It reveals momentum and imbalance across these data streams and highlights situations where participation, liquidity, and positioning disagree — moments that often precede reversals.
What it does
The indicator converts:
Price → RSI (classic momentum),
CVD → RSI (buy/sell pressure balance),
OI → RSI (position expansion/contraction)
…then plots all three RSIs together on the same 0–100 scale.
A fourth Consensus RSI (average of any two or all three) can optionally be shown to simplify the view.
Core logic
CVD engine – based on PulseWire’s native volume-delta request.
Modes: Continuous (default, smooth line), Anchored (resets each session), Rolling window.
Open Interest – pulled automatically from the symbol’s “_OI” feed; aligns to chart timeframe for real-time flow.
RSI calculation – standard RSI applied to each data stream, optionally smoothed (SMA / EMA / RMA / WMA / VWMA).
Signals – optional background highlights when:
All three RSIs are overbought (red) or oversold (green), or
Any pair show opposite extremes (e.g., price overbought + OI oversold).
Consensus RSI – arithmetic mean of the selected RSIs, summarizing overall market tone.
Inputs overview
CVD settings: anchor period, lower-TF delta, mode, rolling length
RSI lengths: separate for price, CVD, OI
Smoothing: type + period applied to all RSIs at once
Consensus: choose which RSIs to average
Signals: enable/disable each combination; optional alerts
Levels: adjustable OB/MID/OS (default 70 / 50 / 30)
Visuals: fill between active RSIs, background highlights, level lines, colors in Style tab
How to read it
All 3 overbought (red): broad exhaustion → possible correction
All 3 oversold (green): broad depletion → possible bounce
Opposite pairs: divergence between price and participation
Price↑ but OI↓ (red) → weak rally, fading participation
Price↓ but CVD↑ (green) → hidden accumulation
Combine with structure and volume profile for confirmation.
Notes
Works best on assets with full CVD + OI data (futures, BTC, etc.).
Use Continuous CVD for smooth RSI, Anchored for session analysis.
Smoothing 2–5 EMA is a good starting point to reduce noise.
All styling (colors, line types, thickness) is adjustable in the Style tab.
Limitations & caveats
CVD requires accurate tick/volume/delta data from your data feed. Performance may differ across instruments.
OI availability varies by exchange / symbol. Where OI is absent, pairwise OI signals are not evaluated.
This indicator is a tool — it generates signals of interest, not guaranteed profitable trades. Backtest and combine with your risk rules.
Smoothing introduces lag; longer smoothing reduces noise but delays signals.
Order Flow RSI bridges traditional momentum analysis and order-flow context — giving a multi-dimensional view of when markets are truly stretched or quietly reloading.
Sometimes it works, sometimes it doesn't. Indicator

Cumulative Volume Delta Z Score [BackQuant]Cumulative Volume Delta Z Score
The Cumulative Volume Delta Z Score indicator is a sophisticated tool that combines the cumulative volume delta (CVD) with Z-Score normalization to provide traders with a clearer view of market dynamics. By analyzing volume imbalances and standardizing them through a Z-Score, this tool helps identify significant price movements and market trends while filtering out noise.
Core Concept of Cumulative Volume Delta (CVD)
Cumulative Volume Delta (CVD) is a popular indicator that tracks the net difference between buying and selling volume over time. CVD helps traders understand whether buying or selling pressure is dominating the market. Positive CVD signals buying pressure, while negative CVD indicates selling pressure.
The addition of Z-Score normalization to CVD makes it easier to evaluate whether current volume imbalances are unusual compared to past behavior. Z-Score helps in detecting extreme conditions by showing how far the current CVD is from its historical mean in terms of standard deviations.
Key Features
Cumulative Volume Delta (CVD): Tracks the net buying vs. selling volume, allowing traders to gauge the overall market sentiment.
Z-Score Normalization: Converts CVD into a standardized value to highlight extreme movements in volume that are statistically significant.
Divergence Detection: The indicator can spot bullish and bearish divergences between price and CVD, which can signal potential trend reversals.
Pivot-Based Divergence: Identifies price and CVD pivots, highlighting divergence patterns that are crucial for predicting price changes.
Trend Analysis: Colors bars according to trend direction, providing a visual indication of bullish or bearish conditions based on Z-Score.
How It Works
Cumulative Volume Delta (CVD): The CVD is calculated by summing the difference between buying and selling volume for each bar. It represents the net buying or selling pressure, giving insights into market sentiment.
Z-Score Normalization: The Z-Score is applied to the CVD to normalize its values, making it easier to compare current conditions with historical averages. A Z-Score greater than 0 indicates a bullish market, while a Z-Score less than 0 signals a bearish market.
Divergence Detection: The indicator detects regular and hidden bullish and bearish divergences between price and CVD. These divergences often precede trend reversals, offering traders a potential entry point.
Pivot-Based Analysis: The indicator uses pivot highs and lows in both price and CVD to identify divergence patterns. A bullish divergence occurs when price makes a lower low, but CVD fails to follow, suggesting weakening selling pressure. Conversely, a bearish divergence happens when price makes a higher high, but CVD doesn't confirm the move, indicating potential selling pressure.
Trend Coloring: The bars are colored based on the trend direction. Green bars indicate an uptrend (CVD is positive), and red bars indicate a downtrend (CVD is negative). This provides an easy-to-read visualization of market conditions.
Standard Deviation Levels: The indicator plots ±1σ, ±2σ, and ±3σ levels to indicate the degree of deviation from the average CVD. These levels act as thresholds for identifying extreme buying or selling pressure.
Customization Options
Anchor Timeframe: The user can define an anchor timeframe to aggregate the CVD, which can be customized based on the trader’s needs (e.g., daily, weekly, custom lower timeframes).
Z-Score Period: The period for calculating the Z-Score can be adjusted, allowing traders to fine-tune the indicator's sensitivity.
Divergence Detection: The tool offers controls to enable or disable divergence detection, with the ability to adjust the lookback periods for pivot detection.
Trend Coloring and Visuals: Traders can choose whether to color bars based on trend direction, display standard deviation levels, or visualize the data as a histogram or line plot.
Display Options: The indicator also allows for various display options, including showing the Z-Score values and divergence signals, with customizable colors and line widths.
Alerts and Signals
The Cumulative Volume Delta Z Score comes with pre-configured alert conditions for:
Z-Score Crossovers: Alerts are triggered when the Z-Score crosses the 0 line, indicating a potential trend reversal.
Shifting Trend: Alerts for when the Z-Score shifts direction, signaling a change in market sentiment.
Divergence Detection: Alerts for both regular and hidden bullish and bearish divergences, offering potential reversal signals.
Extreme Imbalances: Alerts when the Z-Score reaches extreme positive or negative levels, indicating overbought or oversold market conditions.
Applications in Trading
Trend Identification: Use the Z-Score to confirm bullish or bearish trends based on cumulative volume data, filtering out noise and false signals.
Reversal Signals: Divergences between price and CVD can help identify potential trend reversals, making it a powerful tool for swing traders.
Volume-Based Confirmation: The Z-Score allows traders to confirm price movements with volume data, providing more reliable signals compared to price action alone.
Divergence Strategy: Use the divergence signals to identify potential points of entry, particularly when regular or hidden divergences appear.
Volatility and Market Sentiment: The Z-Score provides insights into market volatility by measuring the deviation of CVD from its historical mean, helping to predict price movement strength.
The Cumulative Volume Delta Z Score is a powerful tool that combines volume analysis with statistical normalization. By focusing on volume imbalances and applying Z-Score normalization, this indicator provides clear, reliable signals for trend identification and potential reversals. It is especially useful for filtering out market noise and ensuring that trades are based on significant price movements driven by substantial volume changes.
This indicator is perfect for traders looking to add volume-based analysis to their strategy, offering a more robust and accurate way to gauge market sentiment and trend strength.
Indicator

Cumulative Volume Delta Profile and Heatmap [BackQuant]Cumulative Volume Delta Profile and Heatmap
A multi-view CVD workstation that measures buying vs selling pressure, renders a price-aligned CVD profile with Point of Control, paints an optional heatmap of delta intensity, and detects classical CVD divergences using pivot logic. Built for reading who is in control, where participation clustered, and when effort is failing to produce result.
What is CVD
Cumulative Volume Delta accumulates the difference between aggressive buys and aggressive sells over time. When CVD rises, buyers are lifting the offer more than sellers are hitting the bid. When CVD falls, the opposite is true. Plotting CVD alongside price helps you judge whether price moves are supported by real participation or are running on fumes.
Core Features
Visual Analysis Components
CVD Columns - Plot of cumulative delta, colored by side, for quick read of participation bias.
CVD Profile - Price-aligned histogram of CVD accumulation using user-set bins. Shows where net initiative clustered.
Split Buy and Sell CVD - Optional two-sided profile that separates positive and negative CVD into distinct wings.
POC - Point of Control - The price level with the highest absolute CVD accumulation, labeled and line-marked.
Heatmap - Semi-transparent blocks behind price that encode CVD intensity across the last N bars.
Divergence Engine - Pivot-based detection of Bearish and Bullish CVD divergences with optional lines and labels.
Stats Panel - Top level metrics: Total CVD, Buy and Sell totals with percentages, Delta Ratio, and current POC price.
How it works
Delta source and sampling
You select an Anchor Timeframe that defines the higher time aggregation for reading the trend of CVD.
The script pulls lower timeframe volume delta and aggregates it to the anchor window. You can let it auto-select the lower timeframe or force a custom one.
CVD is then accumulated bar by bar to form a running total. This plot shows the direction and persistence of initiative.
Profile construction
The recent price range is split into Profile Granularity bins.
As price traverses a bin, the current delta contribution is added to that bin.
If Split Buy and Sell CVD is enabled, positive CVD goes to the right wing and negative CVD to the left wing.
Widths are scaled by each side’s maximum so you can compare distribution shape at a glance.
The Point of Control is the bin with the highest absolute CVD. This marks where initiative concentrated the most.
Heatmap
For each bin, the script computes intensity as absolute CVD relative to the maximum bin value.
Color is derived from the side in control in that bin and shaded by intensity.
Heatmap Length sets how far back the panels extend, highlighting recurring participation zones.
Divergence model
You define pivot sensitivity with Pivot Left and Right .
Bearish divergence triggers when price confirms a higher high while CVD fails to make a higher high within a configurable Delta Tolerance .
Bullish divergence triggers when price confirms a lower low while CVD fails to make a lower low.
On trigger, optional link lines and labels are drawn at the pivots for immediate context.
Key Settings
Delta Source
Anchor Timeframe - Higher TF for the CVD narrative.
Custom Lower TF and Lower Timeframe - Force the sampling TF if desired.
Pivot Logic
Pivot Left and Right - Bars to each side for swing confirmation.
Delta Tolerance - Small allowance to avoid near-miss false positives.
CVD Profile
Show CVD Profile - Toggle profile rendering.
Split Buy and Sell CVD - Two-sided profile for clearer side attribution.
Show Heatmap - Project intensity panels behind price.
Show POC and POC Color - Mark the dominant CVD node.
Profile Granularity - Number of bins across the visible price range.
Profile Offset and Profile Width - Position and scale the profile.
Profile Position - Right, Left, or Current bar alignment.
Visuals
Bullish Div Color and Bearish Div Color - Colors for divergence artifacts.
Show Divergence Lines and Labels - Visualize pivots and annotations.
Plot CVD - Column plot of total CVD.
Show Statistics and Position - Toggle and place the summary table.
Reading the display
CVD columns
Rising CVD confirms buyers are in control. Falling CVD confirms sellers.
Flat or choppy CVD during wide price moves hints at passive or exhausted participation.
CVD profile wings
Thick right wing near a price zone implies heavy buy initiative accumulated there.
Thick left wing implies heavy sell initiative.
POC marks the strongest initiative node. Expect reactions on first touch and rotations around this level when the tape is balanced.
Heatmap
Brighter blocks indicate stronger historical net initiative at that price.
Stacked bright bands form CVD high volume nodes. These often behave like magnets or shelves for future trade.
Divergences
Bearish - Price prints a higher high while CVD fails to do so. Effort is not producing result. Potential fade or pause.
Bullish - Price prints a lower low while CVD fails to do so. Capitulation lacks initiative. Potential bounce or reversal.
Stats panel
Total CVD - Net initiative over the window.
Buy and Sell volume with percentages - Side composition.
Delta Ratio - Buy over Sell. Values above 1 favor buyers, below 1 favor sellers.
POC Price - Current control node for plan and risk.
Workflows
Trend following
Choose an Anchor Timeframe that matches your holding period.
Trade in the direction of CVD slope while price holds above a bullish POC or below a bearish POC.
Use pullbacks to CVD nodes on your profile as entry locations.
Trend weakens when price makes new highs but CVD stalls, or new lows while CVD recovers.
Mean reversion
Look for divergences at or near prior CVD nodes, especially the POC.
Fade tests into thick wings when the side that dominated there now fails to push CVD further.
Target rotations back toward the POC or the opposite wing edge.
Liquidity and execution map
Treat strong wings and heatmap bands as probable passive interest zones.
Expect pauses, partial fills, or flips at these shelves.
Stops make sense beyond the far edge of the active wing supporting your idea.
Alerts included
CVD Bearish Divergence and CVD Bullish Divergence.
Price Cross Above POC and Price Cross Below POC.
Extreme Buy Imbalance and Extreme Sell Imbalance from Delta Ratio.
CVD Turn Bullish and CVD Turn Bearish when net CVD crosses zero.
Price Near POC proximity alert.
Best practices
Use a higher Anchor Timeframe to stabilize the CVD story and a sensible Profile Granularity so wings are readable without clutter.
Keep Split mode on when you want to separate initiative attribution. Turn it off when you prefer a single net profile.
Tune Pivot Left and Right by instrument to avoid overfitting. Larger values find swing divergences. Smaller values find micro fades.
If volume is thin or synthetic for the symbol, CVD will be less reliable. The script will warn if volume is zero.
Trading applications
Context - Confirm or question breakouts with CVD slope.
Location - Build entries at CVD nodes and POC.
Timing - Use divergence and POC crosses for triggers.
Risk - Place stops beyond the opposite wing or outside the POC shelf.
Important notes and limits
This is a price and volume based study. It does not access off-book or venue-level order flow.
CVD profiles are built from the data available on your chart and the chosen lower timeframe sampling.
Like all volume tools, readings can distort during roll periods, holidays, or feed anomalies. Validate on your instrument.
Technical notes
Delta is aggregated from a lower timeframe into an Anchor Timeframe narrative.
Profile bins update in real time. Splitting by side scales each wing independently so both are readable in the same panel.
Divergences are confirmed using standard pivot definitions with user-set tolerances.
All profile drawing uses fixed X offsets so panels and POC do not swim when you scroll.
Quick start
Anchor Timeframe = Daily for intraday context.
Split Buy and Sell CVD = On.
Profile Granularity = 100 to 200, Profile Position = Right, Width to taste.
Pivot Left and Right around 8 to 12 to start, then adapt.
Turn on Heatmap for a fast map of interest bands.
Bottom line
CVD tells you who is doing the lifting. The profile shows where they did it. Divergences tell you when effort stops paying. Put them together and you get a clear read on control, location, and timing for both trend and mean reversion.
Indicator

CVD Polarity Indicator (With Rolling Smoothed)📊 CVD Polarity Indicator (with Rolling Smoothing)
Purpose
The CVD Polarity Indicator combines Cumulative Volume Delta (CVD) with price bar direction to measure whether buying or selling pressure is in agreement with price action. It then smooths that signal over time, making it easier to see underlying volume-driven market trends.
This indicator is essentially a volume–price agreement oscillator:
- It compares price direction with volume delta (CVD).
- Translates that into per-bar polarity.
- Smooths it into a rolling sum for clarity.
- Adds a short EMA to highlight turning points.
The end result: a tool that helps you see when price action is backed by real volume flows versus when it’s running on weak participation.
__________________________________________________________________________________
1. Cumulative Volume Delta (CVD)
What it is:
CVD is the cumulative sum of buying vs. selling pressure measured by volume.
- If a bar closes higher than it opens → that bar’s volume is treated as buying pressure (+volume).
- If a bar closes lower than it opens → that bar’s volume is treated as selling pressure (–volume).
Rolling version:
Instead of accumulating indefinitely (which just creates a line that trends forever), this indicator uses a rolling sum over a user-defined number of bars (cumulation_length, default 14).
- This shows the net delta in recent bars, making the CVD more responsive and localized.
2. Bar Direction vs. CVD Change
Each bar has two pieces of directional information:
1. Bar direction: Whether the candle closed above or below its open (close - open).
2. CVD change: Whether cumulative delta increased or decreased from the prior bar (cvd - cvd ).
By comparing these two:
- Agreement (both up or both down):
→ Polarity = +volume (if bullish) or –volume (if bearish).
- Disagreement (bar up but CVD down, or bar down but CVD up):
→ Polarity flips sign, signaling divergence between price and volume.
Thus, raw polarity = a per-bar measure of whether price action and volume delta are in sync.
3. Polarity Smoothing (Rolling Polarity)
- Problem with raw polarity:
It flips bar-to-bar and looks very jagged — not great for seeing trends.
- Solution:
The indicator applies a rolling sum over the past polarity_length bars (default 14).
- This creates a smoother curve, representing the net polarity over time.
- Positive values = net bullish alignment (buyers stronger).
- Negative values = net bearish alignment (sellers stronger).
Think of it like an oscillator showing whether buyers or sellers have had control recently.
4. EMA Smoothing
Finally, a 10-period EMA is applied on top of the rolling polarity line:
- This further reduces noise.
- It helps highlight shifts in the underlying polarity trend.
- Crossovers of the polarity line and its EMA can serve as trade signals (bullish/bearish inflection points).
________________________________________________________________________________
How to Read It
1. Polarity above zero → Recent bars show more bullish agreement between price and volume.
2. Polarity below zero → Recent bars show more bearish agreement.
3. Polarity diverging from price → If price goes up but polarity trends down, it signals weakening buying pressure (potential reversal).
4. EMA crossovers →
- Polarity crossing above its EMA = bullish momentum shift.
- Polarity crossing below its EMA = bearish momentum shift.
Practical Use Cases
- Trend Confirmation
Use polarity to confirm whether a price move is supported by volume. If price rallies but
polarity stays negative, the move is weak.
- Divergence Signals
Watch for divergences between price trend and polarity trend (e.g., higher highs in price but
lower highs in polarity).
- Momentum Shifts
Use EMA crossovers as signals that the underlying balance of buying/selling has flipped.
Indicator

CVD Absorption + Confirmation [Orderflow & Volume]This indicator detects bullish and bearish absorption setups by combining Cumulative Volume Delta (CVD) with price action, candlestick, and volume confirmations.
🔹 What is Absorption?
Absorption happens when aggressive buyers/sellers push CVD to new highs or lows, but price fails to follow through.
Bearish absorption: CVD makes a higher high, but price does not.
Bullish absorption: CVD makes a lower low, but price does not.
This often signals that limit orders are absorbing aggressive market orders, creating potential reversal points.
🔹 Confirmation Patterns
Absorption signals are only shown if they are validated by one of the following patterns:
Engulfing candle with low volume → reversal faces little resistance.
Engulfing candle with high volume → strong aggressive participation.
Pin bar with high volume → absorption visible in the wick.
CVD flattening / slope reversal → shift in aggressive order flow.
🔹 Signals
✅ Bullish absorption confirmed → Green label below the bar.
❌ Bearish absorption confirmed → Red label above the bar.
Each label represents a potential reversal setup after orderflow absorption is validated.
🔹 Alerts
Built-in alerts are included for both bullish and bearish confirmations, so you can track setups in real-time without watching the chart 24/7.
📌 How to Use:
Best applied at key levels (supply/demand, VWAP, OR, liquidity zones).
Look for confluence with your trading strategy before taking entries.
Works on all markets and timeframes where volume is reliable.
Indicator
