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

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 |

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.
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
- For background on this concept, see Volume Weighted Average Price VWAP at StockCharts ChartSchool.
- For broader market context, see VWAP at Investopedia.
