Directional Volume Pressure (DVP) Directional Volume Pressure (DVP)
Directional Volume Pressure (DVP) is a volume-based oscillator that estimates who is “winning” inside each candle (buyers or sellers), then smooths and optionally normalizes that estimate into a clean signal you can use for trend confirmation, momentum shifts, absorption spotting, and divergence.
Unlike many “up volume vs down volume” tools that only look at whether the candle closed green/red, DVP also considers how much of the candle was real body vs wick. That matters, because a big wick often represents rejection, while a big body often represents acceptance/commitment.
DVP outputs a histogram that oscillates around 0:
Above 0 = net buying pressure (bulls dominating)
Below 0 = net selling pressure (bears dominating)
Crossing 0 = potential regime shift / momentum flip
You can optionally add:
Fast/Slow moving averages of the pressure (for regime + cross signals)
Absorption detection (high volume, low real movement = likely large passive liquidity)
Divergence detection (price makes new extreme, pressure fails to confirm)
±1 “zone” lines (when normalized) to highlight stronger-than-normal pressure
1) What the indicator is measuring (plain English)
Every candle has:
Range = high - low
Body = abs(close - open)
Body ratio = body / range (how much of the candle is “real move” vs wicks)
DVP uses body ratio as a proxy for conviction:
Large body / small wicks → stronger directional intent
Small body / large wicks → more indecision / rejection
Then it allocates the candle’s volume into two buckets:
Bull volume
Bear volume
Finally it computes:
Net Pressure = bull_volume - bear_volume
Smooth it over time
Normalize (optional) so it’s easier to compare across assets/timeframes
This gives you a single line/histogram that answers:
“Is volume pressure currently more bullish or bearish—and how unusually strong is it compared to recent history?”
2) How DVP splits volume into bullish vs bearish (how it works)
A) If the candle closes green (close > open)
The candle is treated as bull-dominant, and the body ratio decides how dominant:
bull_volume = volume * body_ratio
bear_volume = volume * (1 - body_ratio)
So:
Big green body → bull volume gets most of the volume
Green candle with long wicks → bull volume gets less (because conviction is weaker)
B) If the candle closes red (close < open)
Mirror logic:
bull_volume = volume * (1 - body_ratio)
bear_volume = volume * body_ratio
So:
Big red body → bear volume gets most of the volume
Red candle with long wicks → bear volume gets less
C) If the candle is a doji (close == open)
It uses a simple heuristic:
Find the candle midpoint (high + low)/2
If the close is above the midpoint, it leans bullish; otherwise bearish
It assigns 60/40 instead of 50/50 to avoid flatlining
This prevents doji candles from always being “neutral” (because in real trading they often aren’t).
3) The smoothing pipeline (why it’s there)
Raw volume pressure is noisy. So DVP smooths in two stages:
Pressure sum
pressure_sum = EMA(net_pressure, period)
Final smoothing
pressure_smooth = EMA(pressure_sum, smooth)
What these do:
Period controls the “memory” of pressure (how many bars matter).
Smoothing is a final noise filter so the histogram isn’t jittery.
Typical use:
Lower timeframes (1m–15m): increase smoothing a bit
Higher timeframes (4H–1D): you can reduce smoothing
4) Normalization options (how to choose)
DVP offers 4 normalization modes. This is important because raw volume values are not comparable across markets (BTC vs a low-cap alt, or NY session vs Asia session, etc.).
4.1 Raw
Shows the smoothed net pressure in absolute units.
Best if you only trade one instrument and want pure, unscaled behavior.
Downside: A volume regime change can distort interpretation.
4.2 Percent
pressure_smooth / EMA(volume, period)
Converts pressure into a relative fraction of recent volume
Good for comparing across instruments a bit more fairly than Raw.
Downside: Still not “statistically standardized.”
4.3 Z-Score (recommended)
It computes a Z-score of pressure vs its recent history:
mean = SMA(pressure_smooth, stat_period)
std = StDev(pressure_smooth, stat_period)
z = (pressure - mean) / std
Then it clamps to avoid extreme outliers and rescales:
clamp z to
divide by 2 → roughly maps into about
Why it’s powerful:
Z-score tells you when pressure is unusually strong relative to the last stat_period bars.
This is the best mode if you want:
consistent “strong/weak” thresholds
zone lines (±1) to mean something
4.4 Adaptive
Scales pressure to a rolling min/max range:
norm_adaptive = 2*(pressure - low)/(high-low) - 1
This forces output into based on recent extremes.
Use it when:
You want clean bounded visuals
You trade assets with wildly changing volatility/volume
Downside: It’s relative to the window, so extreme prints can “compress” everything else until they roll off.
5) Reading the histogram (the core skill)
5.1 Basic interpretation
Green bars above 0: bullish pressure dominance
Red bars below 0: bearish pressure dominance
5.2 Strength and “trend quality”
In Z-score or Adaptive, the height of the bars matters a lot.
Taller bars = stronger imbalance between bull vs bear volume allocation.
A healthy trend often shows:
bullish trend → consistent positive bars, pullbacks don’t push deeply negative
bearish trend → consistent negative bars, bounces don’t push deeply positive
5.3 The “tell”
One of the strongest tells is price moving up while DVP falls, or price moving down while DVP rises. That’s where absorption/divergence logic becomes useful.
6) Moving averages, regimes, and crosses (optional overlays)
DVP can plot:
Fast MA (default 9)
Slow MA (default 21)
MA type: SMA / EMA / WMA / VWMA
6.1 Regime definition
Bullish regime: ma_fast > ma_slow
Bearish regime: ma_fast < ma_slow
The histogram color intensity changes depending on regime:
When pressure aligns with regime, colors are “stronger”
When pressure contradicts regime, colors are “faded”
6.2 Cross signals
Bullish cross: fast MA crosses above slow MA
Bearish cross: fast MA crosses below slow MA
These are best used as:
confirmation after a structure break
early warning when pressure trend flips before price
Tip: Crosses are more meaningful when:
they occur near the zero line, or
they occur alongside a strong Z-score push
7) Absorption detection (optional)
Idea: Sometimes volume explodes, but price barely moves. That often implies absorption:
large passive limit orders absorbing aggressive market orders
“someone big” taking the other side without allowing progress
How DVP flags absorption
It checks two things:
Volume Z-score is high
Computes Z-score of volume over stat_period
Triggers when it exceeds absorption_threshold (default 2.0 sigma)
Price movement is small (relative to ATR)
Measures body size vs ATR(14)
Triggers if body/ATR is small (< 0.5)
Then it classifies:
If absorption happens while DVP is positive → bullish absorption marker
If absorption happens while DVP is negative → bearish absorption marker
How to use it
Absorption is not automatically bullish or bearish. It’s more like:
Bullish absorption can indicate “sellers got absorbed” and a base is forming
Bearish absorption can indicate “buyers got absorbed” near tops/distribution
Best practice:
Use absorption at key levels (prior highs/lows, VWAP bands, value areas, trendlines)
Combine with follow-through: the next few candles should confirm direction
8) Divergence detection (optional)
DVP can look for simple divergence patterns over div_lookback bars:
Bullish divergence (the concept)
Price prints a lower low
DVP prints a higher low
And DVP is below 0 (selling pressure context)
This often means:
“Price pushed lower, but the selling pressure did not expand—downside may be weakening.”
Bearish divergence (the concept)
Price prints a higher high
DVP prints a lower high
And DVP is above 0 (buying pressure context)
This often means:
“Price pushed higher, but the buying pressure did not expand—upside may be weakening.”
Important: Divergence works best when:
it appears after an extended move
it forms at prior liquidity (previous highs/lows)
it’s followed by a clear structure break or zero-line shift in DVP
9) The ±1 zone lines (optional)
If you enable Show ±1 Zones and you are not in Raw mode, the script plots:
+1 zone
−1 zone
In Z-score mode, those zones are especially useful because they represent “unusually strong” pressure relative to recent history.
Simple rule of thumb:
Sustained bars beyond +1 → strong bullish control
Sustained bars beyond −1 → strong bearish control
Failure to reach zones during trend continuation attempts → weakening trend
10) Practical setups (copy/paste playbooks)
Setup A — Clean trend confirmation (recommended)
Normalization: Z-Score
Period: 14
Smoothing: 3–5
Show MAs: ON (9/21 EMA)
Show Crosses: optional
How to trade it:
Bias long when DVP > 0 and fast MA > slow MA
Bias short when DVP < 0 and fast MA < slow MA
Reduce risk when DVP starts contradicting regime repeatedly
Setup B — Momentum shift + entries
Z-Score
Show Crosses: ON
Watch for:
pressure crossing 0
MA cross
bar height expansion (strong push)
Use it to confirm a breakout:
Breakout candle + DVP expansion + bullish regime = higher quality breakout
Setup C — Reversal hunting (advanced)
Show Absorption: ON
Show Divergence: ON
Use Z-score zones
Reversal checklist:
Divergence near a key level
Absorption print occurs around the same zone
DVP crosses 0 or MA cross confirms
Price breaks minor structure (swing high/low)
11) Common mistakes
Treating DVP as a standalone entry signal. It’s strongest as a confirmation tool.
Using Raw mode across multiple assets/timeframes and expecting consistent thresholds.
Over-trusting divergence in choppy ranges without structure confirmation.
Ignoring session effects (volume regimes change dramatically in some markets).
12) What each setting does (quick reference)
Core Settings
Period: lookback for pressure EMA (bigger = smoother/laggier)
Smoothing: extra EMA smoothing on top (bigger = less noise)
Normalization
Raw: absolute pressure
Percent: pressure relative to volume
Z-Score: statistically standardized pressure (best for thresholds)
Adaptive: min/max scaled to
Statistical Period: lookback for Z-score + adaptive range
Moving Averages
Show MAs: plots fast/slow MA on pressure
Show Crosses: plots ▲/▼ when fast crosses slow
Fast / Slow MA: sensitivity vs stability
MA Type: smoothing style
Signals
Show Absorption: highlights absorption bars + A markers
Absorption Threshold: how extreme volume must be (sigma)
Show Divergence: plots D markers
Divergence Lookback: scan window for extremes
Show ±1 Zones: plots zone lines when normalized
13) Short “store page” style summary (if you need it)
Directional Volume Pressure (DVP) estimates buyer vs seller dominance by allocating each candle’s volume based on body-to-range structure, then smoothing and normalizing it into an oscillator around zero. Use it to confirm trends (pressure above/below zero), identify regime shifts (MA crosses and zero-line flips), spot absorption (high volume with low real movement), and detect divergences when price extremes are not confirmed by volume pressure. Z-score normalization is recommended for consistent thresholds and zone-based interpretation across markets and timeframes.
مؤشر Pine Script®






















