VWAP: The Market's True Average Price
Discover how the Volume Weighted Average Price provides a more accurate representation of market value and creates powerful trading opportunities.
Volume-Weighted
Prices reflect actual traded volume
Fair Value Anchor
Identifies where institutions traded
Dynamic Support/Resistance
Real-time levels that adapt to price
The VWAP Formula
Where Typical Price (TP) = (High + Low + Close) ÷ 3
What Is VWAP and Why Does It Matter?
The Volume Weighted Average Price (VWAP) is one of the most widely used indicators by institutional traders, market makers, and algorithmic systems. Unlike a simple moving average that treats every price equally, VWAP weights each price by the volume traded at that level — giving you a true picture of where the market has actually been doing business throughout the session.
For Forex EA developers and traders, VWAP is valuable both as a standalone signal and as a filter to confirm whether price is trading at a premium or discount relative to fair value.
How VWAP Is Calculated
VWAP accumulates throughout the trading session and resets at the start of each new session or day. It is calculated using the following steps:
Step-by-Step VWAP Calculation:
- 1 Typical Price (TP) = (High + Low + Close) ÷ 3
- 2 TP × Volume = Multiply each bar's typical price by its volume
- 3 Cumulate both — sum TP×Vol and sum Vol from session start
- 4 VWAP = Σ(TP × Volume) ÷ Σ(Volume)
5 Reasons VWAP Is a Powerful Trading Tool
1. Identifies Fair Value
VWAP represents the average price at which all volume has been traded throughout the session. Price above VWAP signals a premium — buyers are in control. Price below VWAP signals a discount — sellers dominate. This makes it a powerful anchor for gauging whether a move has stretched too far.
Example: If EUR/USD has been trending up all session but price suddenly drops back to VWAP, institutions may see it as a reversion to fair value — a potential long opportunity.
2. Acts as Dynamic Support and Resistance
Because VWAP reflects where the bulk of volume was traded, it acts as a magnet for price. During trending sessions, VWAP often provides dynamic support in uptrends and resistance in downtrends. Breakouts that reclaim VWAP with strong volume tend to signal trend continuation.
3. Filters Institutional Activity
Large institutions — banks, hedge funds, and algorithmic desks — often benchmark their order execution against VWAP. This means price will frequently return to VWAP as these entities fill large orders. Understanding this dynamic lets retail traders position themselves alongside institutional flow rather than against it.
Example: A large bank buying EUR/USD throughout the session will naturally pull price back toward VWAP as it accumulates its position — creating recurring retest entries for retail traders.
4. Enhances EA Entry and Exit Logic
Incorporating VWAP into an EA's logic improves trade quality by filtering out low-probability setups. An EA can use VWAP to only take long trades when price is above VWAP and short trades when price is below it — immediately adding a directional bias filter aligned with institutional flow.
5. Combines Powerfully with Other Indicators
VWAP is most effective when used as a confluence tool. Pairing it with supply and demand zones, Z-score deviations, or session-based levels dramatically improves signal quality. A price rejecting both a supply zone and VWAP simultaneously is a far stronger short signal than either alone.
VWAP Bands (Standard Deviation Envelopes)
Many traders extend VWAP with standard deviation bands — similar to Bollinger Bands — to identify statistically extreme price levels. These are plotted at +1, +2, and +3 standard deviations above and below VWAP.
| Band Level | Interpretation | Trading Signal |
|---|---|---|
| VWAP (0 SD) | Fair value — session average | Reversion target |
| ±1 SD | Mild deviation from fair value | Watch for continuation |
| ±2 SD | Significant overextension | Potential reversion zone |
| ±3 SD | Extreme overextension | High-probability fade level |
Implementing VWAP in MQL5
Here is a practical MQL5 function that calculates the current session's VWAP and determines whether price is trading at a premium or discount:
double CalculateVWAP(string symbol, ENUM_TIMEFRAMES timeframe, int sessionBars)
{
double cumulativeTPV = 0.0; // Sum of (TypicalPrice * Volume)
double cumulativeVol = 0.0; // Sum of Volume
for(int i = sessionBars - 1; i >= 0; i--)
{
double high = iHigh(symbol, timeframe, i);
double low = iLow(symbol, timeframe, i);
double close = iClose(symbol, timeframe, i);
long volume = iVolume(symbol, timeframe, i);
double typicalPrice = (high + low + close) / 3.0;
cumulativeTPV += typicalPrice * (double)volume;
cumulativeVol += (double)volume;
}
if(cumulativeVol == 0) return 0.0;
return cumulativeTPV / cumulativeVol;
}
void OnTick()
{
// Use the last 50 bars as the session window
int sessionBars = 50;
double vwap = CalculateVWAP(_Symbol, PERIOD_M15, sessionBars);
double currentPrice = iClose(_Symbol, PERIOD_M15, 0);
Print("VWAP: ", vwap);
// Determine premium or discount
if(currentPrice > vwap)
Print("Price is ABOVE VWAP - trading at a premium. Favour short setups.");
else if(currentPrice < vwap)
Print("Price is BELOW VWAP - trading at a discount. Favour long setups.");
else
Print("Price is AT VWAP - fair value. Wait for directional confirmation.");
}
Using VWAP as an EA Filter
The most effective application of VWAP in EA development is as a directional filter. Rather than using VWAP as a standalone entry signal, apply it as a gate that your EA must pass before any trade is placed:
- Long trades only above VWAP — Confirms price is trading at a premium relative to session volume, aligned with bullish institutional order flow.
- Short trades only below VWAP — Confirms price is at a discount and sellers have dominated the session's volume activity.
- Avoid trades at VWAP — Price crossing VWAP is the most uncertain zone; wait for a confirmed rejection or reclaim before entering.
- Use VWAP bands for targets — Set take-profit targets at the next standard deviation band (±1 SD or ±2 SD) to capture statistically probable moves.
- Combine with session timing — VWAP is most meaningful during high-volume sessions (London and New York overlaps). Avoid VWAP signals during thin, low-volume periods where the metric becomes less reliable.
VWAP vs. Simple Moving Average: Key Differences
Many traders confuse VWAP with a simple moving average (SMA) since both smooth price over time. The distinction is fundamental:
| Feature | VWAP | Simple Moving Average |
|---|---|---|
| Weighting | By traded volume | Equal weight per bar |
| Session reset | Resets each session | Continuous across sessions |
| Institutional relevance | High — used as benchmark | Moderate |
| Reflects real activity | Yes — volume-aware | No — ignores volume |
| Best use case | Intraday fair value & flow | Trend direction over time |
Core VWAP Trading Strategies
VWAP supports several distinct trading approaches. Understanding each strategy — and which market conditions it thrives in — is essential before incorporating it into an EA or a discretionary setup.
VWAP Reversion Strategy
When price deviates significantly from VWAP — typically reaching the ±2 SD band — it tends to revert back toward the mean. This is the most widely used VWAP strategy and works best in range-bound or low-conviction sessions where there is no strong directional catalyst.
Entry Criteria
- • Price touches or pierces ±2 SD band
- • Candlestick rejection (wick) at the band
- • Volume declining into the extreme
- • RSI divergence as confirmation
Avoid When
- • Strong news-driven breakout session
- • Price closing beyond ±3 SD consecutively
- • Thin liquidity (Asian session drift)
- • Clear higher-timeframe trend day forming
VWAP Reclaim / Rejection Strategy
This strategy focuses on price interacting with the VWAP line itself. A confirmed reclaim of VWAP (price breaks below, then closes back above) signals a bullish shift in session control. A confirmed rejection (price tests VWAP from below and fails to close above) signals continued bearish pressure.
Example: GBP/USD opens below VWAP during London, sells off, then aggressively reclaims VWAP on a high-volume candle. This reclaim signals that buyers have absorbed the sell-side pressure — a long entry above the reclaim candle's high targets the +1 SD band.
VWAP Trend-Following Strategy
On strong trend days, price will consistently hold above (uptrend) or below (downtrend) VWAP. Pullbacks to VWAP or the +1/-1 SD band offer low-risk continuation entries in the direction of the dominant session flow. This strategy pairs well with momentum filters such as ADX or session open bias.
Step 1
Confirm price is holding above/below VWAP for 3+ bars
Step 2
Wait for a pullback to VWAP or ±1 SD band
Step 3
Enter on rejection candle with stop below VWAP
Anchored VWAP (AVWAP): A More Flexible Tool
Standard VWAP resets every session. Anchored VWAP allows you to start the calculation from any significant price point — a major swing high or low, a news event, a gap, or the start of a new trend. This makes it far more versatile for multi-session and swing trading analysis.
| Anchor Point | What It Reveals | Best Used For |
|---|---|---|
| Major swing high/low | Fair value since the structural turn | Identifying trend vs. reversion bias |
| High-impact news event | Post-event fair value consensus | Fading overreactions to news spikes |
| Weekly open | Weekly institutional fair value | Multi-day swing trade direction |
| Monthly open | Macro average for the month | Identifying premium/discount on HTF |
| Gap open | Whether gap has been absorbed | Gap-fill probability assessments |
When price trades above an Anchored VWAP from a significant swing low, it indicates that on average, every participant who entered since that low is in profit — a structurally bullish condition. When price drops below the same AVWAP, it signals the average long position from that anchor is now underwater, often triggering stop-loss driven selling that accelerates moves.
Advanced MQL5: VWAP + Supply & Demand Confluence
The following MQL5 example demonstrates how to combine VWAP with a simplified supply and demand zone check. The EA only fires a trade when price is in a demand zone and below VWAP (discount + demand confluence), or in a supply zone and above VWAP (premium + supply confluence).
// Input parameters
input int SessionBars = 50; // Bars used for VWAP session window
input double ZoneBuffer = 0.0005; // Demand/Supply zone half-width in price
input double DemandZonePrice = 1.0850; // Centre of demand zone
input double SupplyZonePrice = 1.0950; // Centre of supply zone
//+------------------------------------------------------------------+
// Calculate session VWAP
//+------------------------------------------------------------------+
double CalculateVWAP(string symbol, ENUM_TIMEFRAMES tf, int bars)
{
double cumTPV = 0.0;
double cumVol = 0.0;
for(int i = bars - 1; i >= 0; i--)
{
double tp = (iHigh(symbol, tf, i) + iLow(symbol, tf, i) + iClose(symbol, tf, i)) / 3.0;
long vol = iVolume(symbol, tf, i);
cumTPV += tp * (double)vol;
cumVol += (double)vol;
}
return (cumVol > 0) ? cumTPV / cumVol : 0.0;
}
//+------------------------------------------------------------------+
// Check if price is inside a zone
//+------------------------------------------------------------------+
bool InZone(double price, double zoneCenter, double buffer)
{
return (price >= zoneCenter - buffer && price <= zoneCenter + buffer);
}
//+------------------------------------------------------------------+
// Main logic
//+------------------------------------------------------------------+
void OnTick()
{
double vwap = CalculateVWAP(_Symbol, PERIOD_M15, SessionBars);
double currentPrice = iClose(_Symbol, PERIOD_M15, 0);
bool inDemandZone = InZone(currentPrice, DemandZonePrice, ZoneBuffer);
bool inSupplyZone = InZone(currentPrice, SupplyZonePrice, ZoneBuffer);
// --- LONG SIGNAL ---
// Price must be in a demand zone AND below VWAP (discount + demand confluence)
if(inDemandZone && currentPrice < vwap)
{
Print("LONG SIGNAL: Price in demand zone at discount to VWAP");
Print(" Price: ", currentPrice, " | VWAP: ", vwap);
// Place long order logic here
}
// --- SHORT SIGNAL ---
// Price must be in a supply zone AND above VWAP (premium + supply confluence)
if(inSupplyZone && currentPrice > vwap)
{
Print("SHORT SIGNAL: Price in supply zone at premium to VWAP");
Print(" Price: ", currentPrice, " | VWAP: ", vwap);
// Place short order logic here
}
}
How to extend this: Replace the static DemandZonePrice and SupplyZonePrice inputs with a dynamic zone detection function that identifies the most recent consolidation ranges on a higher timeframe. This creates a fully adaptive confluence system that adjusts as the market structure evolves.
VWAP Across Different Timeframes
VWAP is not a one-size-fits-all tool. Its effectiveness varies significantly by timeframe and trading style. Using the wrong VWAP period is one of the most common mistakes retail traders make when adopting this indicator.
Intraday (M5 – M30)
The classic application. VWAP resets at the London open (or NY open depending on your broker) and tracks fair value for that session. Most useful for scalpers and intraday EA strategies. The 15-minute chart with a daily VWAP reset is the most common institutional reference.
Best for scalping & intraday EAsSwing (H1 – H4)
Use a weekly-anchored VWAP instead of a daily reset. This smooths out intraday noise and gives a cleaner picture of multi-day institutional positioning. Useful for identifying whether the weekly trend is in premium or discount territory.
Best for swing EAs & position managementPosition (Daily – Weekly)
A monthly or quarterly anchored VWAP reveals macro fair value. Central banks and large institutional desks operate at this scale. Position traders can use this to assess whether a currency pair is fundamentally over or undervalued relative to recent order flow.
Best for macro analysis & portfolio allocationMulti-VWAP Stack
Plotting a daily, weekly, and monthly VWAP simultaneously creates a powerful stacked reference system. When all three align (price above all three = strong bullish bias; price below all three = strong bearish bias), confluence is at its highest. Divergence between the VWAPs signals a transitional market.
Best for high-confidence trade filteringCommon VWAP Mistakes to Avoid
Despite its power, VWAP is frequently misused. These are the most common errors — and how to correct them in both discretionary trading and EA logic.
Treating VWAP as a signal on its own
Price crossing VWAP generates dozens of false signals per session. VWAP must always be used with at least one confirming factor — a zone, a pattern, a volume spike, or a higher-timeframe bias.
Applying VWAP during low-volume sessions
During the Asian session or bank holiday periods, tick volume in Forex is sparse. VWAP calculated on thin volume data is mathematically valid but practically meaningless — the result will be highly sensitive to individual large candles rather than reflecting genuine institutional consensus.
Using tick volume as a substitute for real volume
Forex is a decentralised market — there is no single consolidated volume feed. MetaTrader's volume data is tick count (number of price changes), not true traded lot volume. While tick volume has a reasonable correlation with real volume, it is not equivalent. Treat VWAP signals in Forex as directional indications rather than precise institutional benchmarks.
Fading VWAP on a clear trend day
On high-conviction trend days (e.g., post-NFP, major central bank decisions), price can ride the +2 SD or –2 SD band all day without reverting. Mechanically fading every VWAP extreme on a trend day will result in a sequence of losing trades. Always check the macro context and session open bias before applying reversion logic.
Frequently Asked Questions
Does VWAP work on Forex, or is it only for stocks?
Should my EA reset VWAP at the start of each day or each session?
What is the difference between VWAP and MVWAP?
How many standard deviation bands should I use?
Can VWAP be used for stop-loss placement?
Key Takeaways
-
VWAP weights price by volume, making it a more accurate measure of true average market value than a simple moving average
-
Price above VWAP = premium (favour shorts on reversions); price below VWAP = discount (favour longs on reversions)
-
Institutions benchmark order execution against VWAP, making it a reliable indicator of where large orders are concentrated
-
VWAP bands at ±1, ±2, and ±3 standard deviations identify statistically extreme price levels for reversion trades
-
Use VWAP as a directional filter in your EA — not a standalone signal — and combine it with supply/demand zones or Z-score analysis for best results