Full VWAP Indicator: Session VWAP With Standard Deviation Bands

Written by Dominic Walsh · Published · Last updated

The full vwap indicator plots a volume weighted average price that restarts with each new session, wrapped in standard deviation bands. VWAP tells you the average price weighted by activity rather than by time. The bands show how far the current price has strayed from it. When price closes outside a band, the tool marks the bar.

This build ships as a compiled .ex4 for MT4 and .ex5 for MT5; the screenshots below come from EURUSD H1.

Platforms MT4 (.ex4) + MT5 (.ex5)
Chart window Main price chart
Plots 5: VWAP, Upper Band, Lower Band, Buy, Sell
Alerts popup
Inputs 3

What the Full Vwap Indicator draws on the chart

VWAP is the gold line running through the session’s weighted average price.

Upper Band and Lower Band are the thinner dodger blue lines either side.

Buy places a lime arrow under a bar that closes above the upper band having been inside it.

Sell places a red arrow above a bar that closes below the lower band.

  • VWAP: line, gold, width 2
  • Upper Band: line, dodger blue, width 1
  • Lower Band: line, dodger blue, width 1
  • Buy: arrow, lime, width 2, arrow code 233
  • Sell: arrow, red, width 2, arrow code 234
Full VWAP indicator on EURUSD H1 with session VWAP and standard deviation bands
Full VWAP indicator on EURUSD H1 with session VWAP and standard deviation bands

How the Full Vwap Indicator calculates its values

Accumulating price and volume together

Each bar contributes its typical price, calculated as (high[i] + low[i] + close[i]) / 3.0, and its tick volume as v. The code carries three running totals forward: CumPVBuf adds typical * v, CumVBuf adds v, and CumPV2Buf adds typical * typical * v. All three reset to 0.0 when new_day turns true, which is what makes this a session VWAP rather than one long average.

Deriving the line and its spread

VWAP itself is CumPVBuf[i] / CumVBuf[i], the volume weighted mean. The third accumulator earns its place next: var comes out as (CumPV2Buf[i] / CumVBuf[i]) – vwap * vwap, which is the volume weighted variance in one pass. sd is its square root, and the bands sit at vwap plus or minus `InpStdevMult` times sd.

Requiring a crossing, not a state

The code rebuilds the previous bar’s bands as prev_up and prev_lo from the stored accumulators, so it can compare like with like. A buy needs close[i+1] at or below prev_up while close[i] clears UpperBuf[i]. Because both sides come from real stored values rather than an approximation, a bar deep outside the band produces no repeat arrows.

How to read the signals

VWAP is the session’s centre of gravity. Price spending the day above it describes a different session from one spent below.

The bands widen as trading spreads across a range and tighten when it concentrates.

An arrow marks the bar that left the band, not a forecast about returning to it.

The line restarts each session, so the first bars of a new day carry very little history.

Alert channels in this build: popup, one message per closed bar.

Alerting runs through a terminal popup, switched by `InpEnableAlerts` which ships `true`. The message follows a bar closing outside a band, and the once-per-bar guard keeps a candle that flicks across the band repeatedly down to a single notification.

Every Full Vwap Indicator input

Core settings

Setting What it does Default
InpStdevMult Std-dev band multiplier. Band width as a multiple of the volume weighted standard deviation, default `1.0`. Raise it to 2.0 for far fewer, more extreme signals. 1.0

Display settings

Setting What it does Default
InpArrowOffsetPips Arrow vertical offset (pips). Vertical gap between candle and arrow, default `5` pips. 5

Alert settings

Setting What it does Default
InpEnableAlerts Alert on signal. Ships `true` and drives the popup described below. on
Full VWAP indicator inputs showing InpStdevMult and InpArrowOffsetPips
Full VWAP indicator inputs showing InpStdevMult and InpArrowOffsetPips

Settings that fit your chart

VWAP is a session tool, so intraday charts suit it best. M5 through H1 give enough bars for the average to settle after the daily reset. EURUSD is the reference instrument. On H4 and above a session holds only a handful of bars and the average barely stabilises before it resets. Remember that forex volume here is broker tick count, not exchange size.

When the Full Vwap Indicator fails

Tick volume counts price updates rather than traded size, so a forex VWAP is an approximation of the equity market version rather than the same measure.

Right after the session reset the accumulators hold one or two bars, so the bands are meaninglessly tight and the first arrows of the day are unreliable.

A one-pass variance is numerically sensitive. When price sits far from zero and the spread is small, var can come out slightly negative before the square root and the bands then behave oddly.

Copy the compiled Full Vwap Indicator file into your MQL4/Indicators folder, and the MT5 build into MQL5/Indicators, then restart the terminal and drag it onto a chart. The step-by-step guide with screenshots is at how to install MT4 and MT5 indicators.

Download the Full Vwap Indicator for MT4 and MT5

The zip holds the compiled Full Vwap Indicator build for MT4 and MT5, plus a short README. Compiled files only, no source. Enter your email below and the download link arrives in your inbox.

Download this indicator free

Enter your email and the file is yours. You also get the full MT4 and MT5 library.

  • 1,380+ indicators
  • MT4 and MT5 files
  • No spam, unsubscribe any time

FAQ

Why does the full vwap indicator keep a third accumulator?

CumPV2Buf stores typical price squared, weighted by volume. That extra total lets the code work out the volume weighted variance in one pass, as (CumPV2Buf / CumVBuf) minus vwap squared, without walking the session again for every bar. The square root of that variance sets both band distances.

What does InpStdevMult at 1.0 mean in practice?

The bands sit one volume weighted standard deviation either side of VWAP. On a normal session that keeps a majority of trading inside the band, so a close outside it marks a genuine stretch. Set it to 2.0 and arrows become rare but describe a much bigger move away from the session average.

When does the VWAP line reset?

At each new session, when new_day turns true. All three accumulators return to 0.0 and the average starts again from the first bar of the day. That is what separates a session VWAP from a rolling one, and it is why the line jumps rather than curving at the session boundary.

Can I use the Upper Band arrows as reversal signals?

The code marks a close outside the band, which some traders read as stretched and others as strength confirmed. This build takes no side. The arrow reports that price left the band having been inside it on the previous close. What you do with that depends on whether you trade the session mean or the breakout.

Are results guaranteed?

No. Trading involves risk. Results are not guaranteed; past performance is not indicative of future results. Use the Full Vwap Indicator as one input. Always backtest before trading live.

Category: this is part of our Volume collection. Next, plainly, truly, browse more Volume for MetaTrader, or explore every MT4 indicator and MT5 indicator on the site.

External references

Dominic Walsh - Forex trader and MT4/MT5 developer

About the author

Written by Dominic Walsh, a Forex trader and MT4/MT5 indicator, Expert Advisor and script developer. Every tool on forexmt4systems.com is tested on live charts before release and ships with ready-to-use compiled MT4 (.ex4) and MT5 (.ex5) files. Learn more about the trader and developer behind this site.

How we build, test and correct every tool: Editorial & Testing Policy. Trading carries risk; see the disclaimer.

Leave a Comment