VWAP indicator: settings and signals
VWAP is the volume-weighted average price: the level at which trades actually took place on average over a period.
What the indicator looks like on a real chart
Data: EUR/USD, daily bars, 2025-06-16 — 2026-07-20. The indicator is computed over 400 bars; the chart shows the last 180. Quote source: Binance Spot REST API (api.binance.com/api/v3/klines).
| Regime | Score |
|---|---|
| Trending market | 50 |
| Range | 46 |
| High volatility | 55 |
| Low volatility | 42 |
What the indicator actually measures
In an ordinary average all bars are equal; in VWAP the weight of a bar is determined by its volume. So the line is pulled toward the levels where large trading actually happened and ignores moves on a thin market — a property no moving average has.
Classic VWAP is calculated from the start of the trading session and resets every day: it is an intraday benchmark. Institutional executors use it as a criterion of execution quality — buying below VWAP means doing better than the average market.
On daily bars a session VWAP is undefined, so the cumulative variant shown on the chart is used: the volume-weighted price from the start of the sample. It answers a different question — what the average price of holding the asset over the whole period is — and serves as a long-term reference of a fair level.
Formula
The sum of the products of the typical price and volume, divided by the total volume. The typical price is the average of high, low and close. The larger a bar's volume, the more strongly it pulls the line toward its level.
Standard settings
| Parameter | Value |
|---|---|
| Calculation period | From session start |
| Deviation bands | ±1σ |
| Calculation specifics | Daily reset |
A session VWAP has no period — it is defined by the session boundaries. The only adjustable thing is the reset moment: day, week or start of the sample. Sometimes standard-deviation bands around VWAP are added, yielding an analogue of Bollinger Bands with volume weighting.
Implementation code (Python)
def vwap(high, low, close, volume):typical = (high + low + close) / 3return (typical * volume).cumsum() / volume.cumsum()
When the indicator stops working
- It requires reliable volume data, which interbank forex does not have.
- The cumulative variant becomes ever more inert as the sample grows: recent bars barely affect the line.
- It is not a signal tool — it is a level reference, not a direction indicator.
Common mistakes in use
- Using session VWAP on daily bars, where the notion of a trading session for the calculation is undefined.
- Treating a VWAP cross as a trading signal. It is a reference level, not an entry trigger.
- Applying VWAP to forex data with tick volume while expecting the same informativeness as on exchange instruments.
- Forgetting that cumulative VWAP grows more inert the longer the sample: by the end of the year a daily bar barely moves the line.
Who needs this and why
A core tool of intraday traders on exchange instruments and a standard for assessing the execution quality of large orders. For medium-term forex trading it has limited applicability.
Frequently asked questions
How does VWAP differ from a moving average?
In the weighting method. In a moving average all bars are equal or the weight declines with time; in VWAP the weight is determined by volume. So VWAP is pulled toward price levels with large turnover and reacts weakly to moves at low activity.
Why does VWAP reset every day?
Because classic VWAP is designed as an intraday execution benchmark: it answers whether a trade price was better or worse than the average of today's session. The cumulative variant without a reset solves a different task — it shows the average price of holding over a long period.
Does VWAP make sense on forex?
A limited one. There is no real centralized volume on the interbank market; the broker provides tick volume, so the weighting ends up by the number of price changes rather than by turnover. On crypto exchanges and exchange instruments the indicator works as intended.