1. Overview
CVD Pro is a professional-grade Cumulative Volume Delta indicator for TradingView. It aggregates buy and sell volume pressure from up to eight data feeds simultaneously — four futures exchanges (USDT perpetuals) and four spot exchanges (USDT pairs) — at a user-defined precision timeframe, and plots the resulting CVD in multiple configurable styles.
CVD Pro operates on a strict all-or-nothing validity model: every enabled exchange must supply valid data on every bar for the aggregation to plot. This ensures that every plotted value represents a complete, consistent measurement across all selected feeds — never a silent partial aggregate.
A companion range analysis table captures CVD values at user-defined start and end times and computes changes across all dimensions in both absolute and percentage terms.
1.1 What CVD Pro Does
For each enabled exchange feed, CVD Pro:
- Fetches OHLCV data at the configured Precision Timeframe via request.security.
- Classifies each precision bar’s volume as buy or sell using the standard tick rule.
- Accumulates a running buy-minus-sell delta within each main chart bar, resetting at every configured Reset Period boundary.
- Constructs OHLCV-style CVD values (open, high, low, close of the running delta) per chart bar.
- Aggregates all enabled feeds into spot, futures, and combined totals.
- Plots the result in the selected style across two independent, simultaneously active plot slots.
- Populates the range analysis table for the defined time window.
1.2 What CVD Pro Is Not
CVD Pro does not generate buy or sell signals, fire alerts, or include oscillators, order flow imbalance scoring, or footprint chart functionality. It is a precision aggregation and display tool for practitioners who need accurate, multi-exchange CVD with full analytical context.
1.3 Compatibility
| Attribute | Value |
| Platform | TradingView (any plan) |
| Pine Script Version | v6 |
| Panel | Separate pane below the price chart (not overlay) |
| Primary Use | Crypto perpetuals and spot markets with USDT pairs |
| Plot Slots | 2 simultaneous, independently configurable |
| Exchange Feeds | Up to 4 Futures + 4 Spot = 8 total |
2. Installation
2.1 Adding CVD Pro to Your Chart
- Open TradingView and navigate to any chart.
- Click the Indicators button at the top of the chart (or press the / key).
- Type “CVD Pro” in the search box and press Enter.
- Click CVD Pro in the results. It loads in a separate pane below the price chart.
- The Settings panel opens automatically. The default configuration is fully active on load.
- Click OK to confirm.
2.2 Accessing Settings After Installation
- Hover over the CVD Pro label in the pane header and click the gear icon (⚙).
- Alternatively, double-click any plotted line or candle in the CVD Pro pane.
💡 Quick StartCVD Pro plots immediately on load with its default configuration: • Primary style: Spot + Futures (Candles) If no data appears, verify that your chart shows a crypto USDT pair and that the Precision Timeframe is appropriate for your chart’s visible date range. |
3. Settings Reference
CVD Pro’s settings are organised into four groups: Data Collection, Futures Exchanges, Spot Exchanges, and CVD Data Analysis & Table.
3.1 Data Collection Group
| Setting | Default | Range / Options | Description |
| Reset Period | 1D | Any TradingView timeframe string | The interval at which the cumulative delta resets to zero. A vertical line marks every boundary on the chart. Common values: 1D, 4H, 1H. |
| Precision Timeframe | 1S | Any TF ≤ chart timeframe | The timeframe at which buy/sell volume classification occurs. Lower means more accurate. Must be ≤ the chart timeframe. 1S provides maximum precision on supported exchanges. |
| Primary Plot Type & Style | Spot + Futures (Candles) | See Section 4 | The data source and visual style for the first plot slot. |
| Secondary Plot Type & Style | None | See Section 4 | The data source and visual style for the second plot slot. Set to None to disable. |
| Disable Aggregation / Use Chart’s Exchange:Pair | Off | On / Off | When enabled, all exchange configuration is ignored and CVD is computed directly from the chart’s own ticker (syminfo.tickerid). |
⚠️ Precision Timeframe ConstraintThe Precision Timeframe must be ≤ the chart’s timeframe. CVD Pro enforces this at runtime with an error if the constraint is violated. On higher timeframe charts, 1S may be unavailable due to TradingView data limits. Choose the lowest precision TF that loads the full visible date range without error. |
3.2 Futures Exchanges Group
Configures up to four futures exchange feeds. Each feed is constructed as EXCHANGE:BASECURRENCYUSDT.P (e.g. BINANCE:BTCUSDT.P when the chart shows BTCUSDT).
| Control | Default | Description |
| Aggregate (toggle) | On | Includes this exchange in the aggregated futures CVD. When off, excluded from both aggregation and the validity check. |
| Exchange Name | BINANCE / BYBIT / BITGET / COINW | TradingView exchange identifier. Must exactly match TradingView’s exchange codes for the USDT perpetual market. |
| Force Plot (toggle) | Off | Plots this exchange’s individual CVD close as a separate line, independent of aggregation status. |
| Color | Per exchange | Color for this exchange’s Force Plot line. |
3.3 Spot Exchanges Group
Identical structure to the Futures Exchanges group. Each spot feed is constructed as EXCHANGE:BASECURRENCYUSDT (e.g. BINANCE:BTCUSDT). Default exchanges: BINANCE, BYBIT, MEXC, OKX.
| Control | Default | Description |
| Aggregate (toggle) | On | Includes this exchange in the aggregated spot CVD. |
| Exchange Name | BINANCE / BYBIT / MEXC / OKX | TradingView exchange identifier for the spot USDT pair. |
| Force Plot (toggle) | Off | Plots this spot exchange’s individual CVD close as a separate line. |
| Color | Per exchange | Color for this exchange’s Force Plot line. |
3.4 CVD Data Analysis & Table Group
| Setting | Default | Options | Description |
| From | 2025-12-12 00:00 UTC | Any date/time | Start of the analysis range. CVD Pro captures the CVD value at the first bar on or after this timestamp. |
| To | 2025-12-13 00:00 UTC | Any date/time | End of the analysis range. Ignored when Override End Date is enabled. |
| Override End Date | On | On / Off | When on, the To date is ignored and the range extends to the current live bar. The table updates in real time. |
| Delta Percent Changes | On | On / Off | Displays percentage change columns showing how much each CVD dimension changed relative to its starting value. |
| Delta Absolute Changes | Off | On / Off | Displays raw numeric CVD change columns. Both modes can be active simultaneously. |
4. Plot Styles Reference
Both plot slots share the same style list. The separator entries in the dropdown are visual groupers only — selecting them produces no output.
| Style | Data Source | Visual Output | Description |
| Spot + Futures (Candles) | S + F combined | OHLC candles | Fully aggregated CVD as candles. Teal when close ≥ open, pink when close < open. |
| Spot + Futures (High/Low Lines) | S + F combined | 2 lines | Aggregated CVD high (teal) and low (pink) as continuous lines. |
| Spot + Futures (Close Line) |
S + F combined | 1 line (blue) | Aggregated CVD close as a single line. |
| Spot Only (Candles) |
Spot only | OHLC candles | Spot CVD only, displayed as candles. |
| Spot Only (High/Low Lines) |
Spot only | 2 lines (green) | Spot CVD high and low as lines. |
| Spot Only (Close Line) |
Spot only | 1 line (green) | Spot CVD close as a line. |
| Futures Only (Candles) |
Futures only | OHLC candles | Futures CVD only, displayed as candles. |
| Futures Only (High/Low Lines) | Futures only | 2 lines (purple) | Futures CVD high and low as lines. |
| Futures Only (Close Line) |
Futures only | 1 line (purple) | Futures CVD close as a line. |
| Spot X Futures (High/Low Lines) | S and F separately | 4 lines | Spot high/low (green) and Futures high/low (purple) simultaneously in the same pane. |
| Spot X Futures (Close Line) |
S and F separately | 2 lines | Spot close (green) and Futures close (purple) as separate lines. |
| Spot X Futures (Close Line + Delta) |
S, F, and delta | 3 lines | Spot close (green), Futures close (purple), and divergence magnitude (gold). |
| Spot X Futures (Delta) |
Divergence magnitude | 1 line (red) | Absolute difference between Spot and Futures CVD close. Pure divergence signal. |
💡 Spot+Futures vs. Spot X FuturesSpot + Futures modes aggregate both markets into one signal — total directional pressure across all selected venues. Use this for an overall market read. Spot X Futures modes let you see whether spot and futures participants agree. When futures CVD climbs while spot CVD is flat, futures traders are expressing leveraged directional conviction. The reverse — spot accumulating while futures are quiet — is a structurally different scenario that the combined view would obscure. |
5. Data Pipeline In Depth
5.1 The Precision Timeframe
Rather than classifying a chart bar’s entire volume as buy or sell from that bar alone, CVD Pro fetches data at a finer timeframe and classifies many sub-bars individually. The accumulated result of those individual classifications becomes the chart bar’s CVD value.
At 1S precision on a 1-minute chart, each 1-minute CVD bar represents the accumulation of up to 60 one-second classifications. Each second’s volume is independently assigned to buy or sell before being summed. This is substantially more accurate than single-bar classification.
5.1.1 Buy / Sell Classification (Tick Rule)
Volume on each precision bar is classified as follows:
| Condition | Classification |
| close > open | Buy |
| close < open | Sell |
| close == open AND close > close[1] | Buy (tick rule) |
| close == open AND close < close[1] | Sell (tick rule) |
| close == open AND close == close[1] | Inherits previous bar’s classification (tick rule) |
The final case — a perfect doji with no prior movement — inherits the last unambiguous bar’s direction. This is standard CVD practice and ensures no volume is left unclassified.
5.1.2 CVD OHLCV Construction
For each chart bar, CVD Pro tracks four values from the running delta across all precision sub-bars:
| CVD OHLC Component | Definition |
| Open | The cumulative delta at the start of this chart bar (carried from the previous bar’s close, or 0 at a reset boundary). |
| High | The maximum value the running delta reached at any point within this chart bar. |
| Low | The minimum value the running delta reached at any point within this chart bar. |
| Close | The cumulative delta at the end of this chart bar. |
5.2 Exchange Aggregation and Validity Gating
CVD Pro aggregates enabled feeds by summing their OHLCV CVD values bar by bar. The aggregated futures close, for example, is the sum of all enabled futures exchanges’ individual CVD close values on that bar.
Before aggregating, every enabled exchange is checked for valid (non-na) data. If any enabled feed fails this check on a given bar, the entire aggregated series returns na and the chart shows nothing for that bar.
💡 Why All-or-Nothing?An aggregated CVD from three exchanges is not the same metric as one from four. Plotting partial data as if it were complete would make bars structurally incomparable across time — a quiet but serious analytical error. CVD Pro prioritises consistency and precision over continuity. Blank bars mean a feed was temporarily unavailable. When all feeds return, the series resumes with the full complement. Every plotted bar reflects exactly the same set of exchanges. |
5.3 Chart Ticker Mode
When Disable Aggregation / Use Chart’s Exchange:Pair is enabled, CVD Pro bypasses all exchange configuration and computes CVD directly from the chart’s own ticker using syminfo.tickerid. All exchange toggles and name fields are ignored. Use this for single-exchange analysis or for symbols not available across multiple exchanges.
6. Range Analysis Table
The range analysis table captures a CVD snapshot at a user-defined start time and end time, then computes how every CVD dimension changed between the two.
6.1 How the Table Works
- CVD Pro scans every bar from left to right across the chart.
- The first bar whose timestamp is ≥ the From date is captured as the start snapshot: spot, futures, and total CVD (close/high/low) plus price (close/high/low) are all recorded.
- Every bar whose timestamp is ≤ the To date (or the live bar if Override End Date is on) continuously updates the end snapshot. The last qualifying bar is used.
- The table displays the change between start and end for every dimension.
- The chart background within the range window is shaded to delineate the measured period clearly.
6.2 Table Columns
| Column | Description |
| Δ (row label) | The change metric for that row: Low, Close, or High CVD. |
| Price | Percentage change in the asset’s price (close, high, or low) over the range. |
| Spot Vol | Change in aggregated Spot CVD over the range. |
| Fut. Vol | Change in aggregated Futures CVD over the range. |
| Tot. Vol | Change in combined Spot + Futures CVD over the range. |
| Δ(S/F Δ) | Change in the Spot-minus-Futures spread over the range, as a symmetric percentage. Measures how much the divergence between spot and futures changed. |
6.3 Table Rows
| Row | Description |
| Low (%) | Change from the Low CVD value at range start to the Low CVD value at range end. |
| Close (%) | Change from the Close CVD at range start to Close CVD at range end. The primary directional metric. |
| High (%) | Change from the High CVD at range start to the High CVD at range end. |
When Delta Absolute Changes is enabled, additional columns show the raw numeric change rather than the percentage. Both modes can be active simultaneously, producing up to six data columns.
6.4 Table Color Coding
| Color | Meaning |
| Teal (#16D3B2) | Positive change: CVD increased, or price rose, over the range. |
| Pink (#E82370) | Negative or zero change: CVD decreased, or price fell, over the range. |
| White (70% opacity) | Neutral: row labels, the Δ(S/F Δ) column, and column headers. |
| Orange (#F7931A) | Emphasis headers: the Δ label, Price, Tot. Vol, and Δ(S/F Δ). |
7. Individual Exchange Force Plot Lines
Each of the eight exchange feeds has a Force Plot toggle. When enabled, CVD Pro draws an additional line showing that specific exchange’s CVD close in its configured color, independent of aggregation.
An exchange can be excluded from aggregation but still force-plotted, letting you monitor it without including it in the main signal. Futures force-plot lines are drawn at linewidth 2; spot lines at linewidth 1 for visual differentiation.
💡 Practical Use of Force PlotUse Force Plot to compare individual exchanges within your aggregation. If BINANCE futures CVD is surging while BYBIT futures CVD is flat, the aggregated line shows the sum — but Force Plot lines on both reveal who is driving the move. Force Plot is also useful for validating that a specific feed is active and supplying consistent data before committing it to your aggregation. |
8. Reset Period and Session Lines
The Reset Period defines the interval at which the cumulative delta resets to zero. At each boundary, a white vertical line (50% opacity, extended both directions) marks the chart.
| Reset Period | Use Case |
| 1D (Daily) | Standard for most crypto CVD analysis. Resets at the start of each UTC day. |
| 1W (Weekly) | Long-term CVD accumulation. Useful for swing and position analysis. |
| 4H / 1H | Intraday reset tied to fixed clock intervals. |
| Session-based | Resets aligned with TradingView’s session boundaries for the active instrument. |
The reset affects CVD OHLC construction: the open of the first chart bar after a boundary is always 0, and the high/low track only post-reset extremes.
9. Info Table
CVD Pro displays a small label at the bottom centre of the pane showing the currently active primary and secondary plot styles plus the Precision Timeframe, in the format:
Spot + Futures (Candles) & None @ 1S
This label is created on the first bar and updates automatically when settings are changed, since the script reruns from bar zero on any input change.
10. Frequently Asked Questions
Why is the chart blank even though exchanges are enabled?
The most common causes are: (1) the Precision Timeframe is set lower than TradingView can serve for your visible chart range — try 1M or 5S; (2) one or more enabled exchanges do not list your chart’s symbol. CVD Pro also throws a NO VOLUME DATA runtime error if the chart carries no volume data at all.
Why does the chart go blank for some bars and then return?
One or more enabled exchange feeds had no valid data for those bars. CVD Pro’s all-or-nothing validity model requires every enabled feed to return valid data simultaneously. Bars where any feed fails are left blank. This is correct and intentional — see Section 5.2.
Can I aggregate fewer than four exchanges?
Yes. Disable any exchanges you do not need via the Aggregate toggle. A disabled exchange is excluded from both the aggregation and the validity check. You can run as few as one exchange per market type.
Can I run a futures-only or spot-only configuration?
Yes. Disable all spot exchanges and select a Futures Only plot style, or vice versa. The disabled market’s aggregation returns na, but the active market’s plot functions normally.
The 1S Precision Timeframe throws an error. Why?
Your visible chart range likely requires more 1-second bars than TradingView’s request.security can serve in one run. Try a coarser precision TF (5S, 15S, 1M) or zoom into a narrower time window.
Why does the Δ(S/F Δ) column show 0.00%?
Both the initial and final Spot-minus-Futures spreads are zero — spot and futures CVD were perfectly synchronised at both ends of the range. Zero is the mathematically correct result.
Can I add more than four exchanges per market?
Not in the current version. TradingView limits the number of request.security calls per indicator, and CVD Pro uses all available slots across its eight feeds plus the chart ticker feed.
Can CVD Pro be used on non-crypto charts?
CVD Pro constructs exchange symbols by appending USDT to the chart’s base currency, which is specific to crypto markets. On non-crypto charts, use Chart Ticker Mode — it computes CVD directly from the chart’s own ticker without constructing a symbol.
Force Plot is on but no line appears. Why?
Check that Chart Ticker Mode is not enabled. When Chart Ticker Mode is active, all exchange-specific Force Plot lines are suppressed in favour of the chart ticker calculation.
Why does the higher-timeframe Reset Period create a bump in volume at boundaries?
At each reset boundary the CVD delta resets to zero and begins re-accumulating. Volume flow itself has not changed — only the starting point of the accumulation. The vertical session line marks every boundary so these structural resets are always visible.
11. Appendix: Quick Reference
11.1 Default Configuration
| Setting | Default Value |
| Primary Plot Style | Spot + Futures (Candles) |
| Secondary Plot Style | None |
| Reset Period | 1D |
| Precision Timeframe | 1S |
| Futures Exchanges | BINANCE, BYBIT, BITGET, COINW (all enabled) |
| Spot Exchanges | BINANCE, BYBIT, MEXC, OKX (all enabled) |
| All Force Plot toggles | Off |
| Override End Date | On |
| Delta Percent Changes | On |
| Delta Absolute Changes | Off |
11.2 Plot Style Quick Reference
| Style | Feeds Used | Lines / Type |
| Spot + Futures (Candles) | S + F combined | 1 candle series |
| Spot + Futures (High/Low Lines) | S + F combined | 2 lines: teal high, pink low |
| Spot + Futures (Close Line) | S + F combined | 1 line: blue |
| Spot Only (Candles) | Spot only | 1 candle series |
| Spot Only (High/Low Lines) | Spot only | 2 lines: green |
| Spot Only (Close Line) | Spot only | 1 line: green |
| Futures Only (Candles) | Futures only | 1 candle series |
| Futures Only (High/Low Lines) | Futures only | 2 lines: purple |
| Futures Only (Close Line) | Futures only | 1 line: purple |
| Spot X Futures (High/Low Lines) | S and F separately | 4 lines: green S, purple F |
| Spot X Futures (Close Line) | S and F separately | 2 lines: green S, purple F |
| Spot X Futures (Close Line+Delta) | S, F, and delta | 3 lines: green, purple, gold |
| Spot X Futures (Delta) | Divergence only | 1 line: red |
11.3 Validity Logic Summary
| Condition | Result |
| All enabled futures and spot feeds valid | Full aggregation plotted normally. |
| One or more enabled futures feeds return na | Futures aggregation = na. Futures-inclusive styles blank; Spot Only styles continue. |
| One or more enabled spot feeds return na | Spot aggregation = na. Spot-inclusive styles blank; Futures Only styles continue. |
| Both sides partially invalid | Both aggregations = na. All styles blank. |
| Chart Ticker Mode enabled | All exchange aggregation bypassed. Chart ticker CVD plotted directly. |
| No volume on chart ticker | Runtime error: NO VOLUME DATA. |