ProVWAP+ — User Manual
Volume-Weighted Average Price with multi-σ bands for Tradovate
Link: Tradovate
1) What ProVWAP+ does (in plain English)
ProVWAP+ plots a central VWAP line with up to six pairs of standard-deviation bands (σ1…σ6 by default, modifiable).
It supports two operating modes:
- Rolling (windowed) VWAP — computed over the last N bars (adaptive, short-term).
- Anchored VWAP — accumulates from 00:00 Europe/Rome each day (session-style daily anchor).
It also supports two data sources:
- Tick/Order-flow profile (preferred): true per-trade volume weighting from the bar’s volume profile.
- Bar approximation (fallback or explicit): uses bar volume with either Typical price (HLC/3) or Close.
When tick/order-flow data is unavailable, the indicator automatically falls back to the bar approximation so your chart never goes blank.
2) Data requirements (very important)
To compute a true VWAP from per-trade volume, it is necessary to provide order-flow/tick information to the indicator:
- Enable the free “Order Flow Data” option in Tradovate or
- Subscribe to a paid tick-data add-on that exposes the bar’s volume profile to studies.
If neither is enabled, ProVWAP+ will approximate VWAP using the bar’s total volume and a representative price (Typical or Close). The plot will work, but it is not a tick-true VWAP.
3) How VWAP and σ are computed (the math)
For each bar, the study collects triples ((p, v, p^2 v)) and maintains running sums.
- VWAP: ( \text{VWAP} = \frac{\sum p \cdot v}{\sum v} )
- Variance: ( \sigma^2 = \max!\left(\frac{\sum p^2 v}{\sum v} - \text{VWAP}^2,; 0\right) )
- Std. Dev.: ( \sigma = \sqrt{\sigma^2} )
- Bands: ( \text{upper}_k = \text{VWAP} + k\sigma ), ( \text{lower}_k = \text{VWAP} - k\sigma ), for (k = 1..6)
Data source details
-
Tick/Order-flow (profile)
Uses each price level’s trade size inside the bar’s volume profile:- First tries
row.volorrow.volumeor (row.bidVol+row.askVol). - If profile has no size, and
fallbackUnitIfNoSize = true, it uses unit volume per trade/tick (row.trades/row.ticks).
This is the most accurate VWAP, reflecting the actual distribution of traded size within the bar.
- First tries
-
Bar approximation
Uses bar volume × price where price is either Typical (HLC/3) or Close.
Optionally, withforceUnitVolume = true, each bar counts as 1 (useful on synthetic bars that don’t carry volume).
Mode mechanics
- Rolling (default): keeps a sliding window of the last
windowLengthbars and updates sums efficiently. - Anchored: resets running sums at 00:00 Europe/Rome (calendar day boundary in that timezone).
Intrabar stability: the study updates “in place” on the last bar to avoid double-counting while the bar is still forming.
4) What you see on the chart
- Central VWAP
- Gold = Tick/Order-flow profile used (true VWAP)
- Blue (solid) = Bar approximation explicitly chosen
- Blue (dashed) = Fallback to bar approximation because profile wasn’t available
- Bands
- Six upper and lower σ lines (defaults 1..6).
- Status outputs (for legends/labels if you enable them)
statusProfile(true VWAP in use)statusBar(bar approximation in use)statusFallback(profile requested but not available → approximated)
5) Parameters (and how to tune them)
Core mode & source
-
vwapMode:rolling(default) — windowed VWAP for intraday adaptivity.anchored— accumulates from 00:00 Europe/Rome daily.- When to use:
- Scalping / micro-structure →
rollingwith shorter windows (e.g., 34–100 on 1–5m bars). - Daily session bias →
anchored.
- Scalping / micro-structure →
-
dataSource:profile(default) — use order-flow volume profile (true VWAP).bar— force the bar-approximation.- Tip: leave it on
profile. If you often see blue/dashed VWAP, you likely lack order-flow/tick permissions.
Bar approximation options (used when dataSource = bar or as fallback)
priceMode:typical(default) — ( (H+L+C)/3 ) smooths noise.trade— uses Close (good on 1-tick bars).
forceUnitVolume(false): settrueonly when bar volume is unreliable/missing (each bar counts as 1).
Tick-profile safety net
fallbackUnitIfNoSize(true): when a profile row has no size, count 1 per trade/tick so VWAP can still be built from distribution. Leave on unless you have perfect size everywhere.
Rolling window
windowLength(68, min 1): number of bars in the rolling window.- 1m bars: try 68–144 for intraday VWAP; shorter (34) for faster reaction.
- 5m bars: try 20–50.
- Larger values → smoother VWAP and bands; smaller → more reactive.
Band geometry
std1 … std6(defaults 1.0…6.0): multipliers for σ bands.- Common sets:
- Tight:
0.5, 1, 1.5, 2(fill the first four, leave 5–6 unused) - Classic:
1, 2, 3 - Wide:
1, 1.5, 2, 2.5, 3
- Tight:
- Use tighter bands for mean-reversion scalps; wider bands for trend days.
- Common sets:
Display & diagnostics
showVWAP(true): toggle central VWAP visibility.debugLogs(false) anddebugEveryN(10): console diagnostics, throttled every N calls (use for development).
6) Recommended starting presets
A) Intraday scalping (1–2m bars)
vwapMode = rolling,windowLength = 68dataSource = profilepriceMode = typical(only affects fallback)- Bands:
std1..std4 = 0.5, 1, 1.5, 2(disable 5–6)
B) Session VWAP (day bias)
vwapMode = anchored(resets 00:00 Europe/Rome)dataSource = profile- Bands:
1, 2, 3(disable 4–6)
C) Low-liquidity / synthetic bars
- Keep
dataSource = profilebut if you see frequent fallbacks, either:- Ensure Order Flow Data is enabled, or
- Switch to
dataSource = barand (only if needed) setforceUnitVolume = true.
7) Tips, gotchas & best practices
- Anchoring time: Anchored mode resets at calendar midnight in Europe/Rome, not at a market’s RTH open. If you need a different anchor, add a second indicator instance or adapt the reset logic.
- Two views at once: Add two instances—one Rolling, one Anchored—to compare intraday mean-reversion vs daily bias.
- Why dashed blue VWAP? You requested
profilebut the bar had no usable profile data. The study fell back to the bar approximation to keep plotting. - Flat bands: If σ ≈ 0, price barely moved within the accumulation window (or there’s zero/invalid volume). Check data and window length.
- Performance: The study updates incrementally on the rightmost bar to avoid double counting while a bar is forming.
8) Outputs (for legends/labels or other studies)
- Central lines:
vwapTick,vwapBar,vwapFallback(only one will be visible based on source/fallback and yourshowVWAPsetting). - Bands:
upper1..upper6,lower1..lower6. - Status flags:
statusProfile,statusBar,statusFallback(each emits the current VWAP value only when that state is active).
9) Quick checklist if something looks off
- Order-flow/tick access enabled? If not, turn on Order Flow Data (free) or a tick-data subscription.
- Data source set correctly?
profile(true VWAP) vsbar(approximation). - Window too short/long? Adjust
windowLengthto balance reactivity vs smoothness. - Bars carry volume? If not, try
forceUnitVolume = trueor use true tick profile. - Debug it: enable
debugLogsand inspect the console everydebugEveryNcalls.
10) Module metadata (for reference)
- Name:
ProVWAP+ - Description: VWAP (Order Flow default): Rolling or Anchored 00:00 Europe/Rome. 6×2 σ bands + source indicator.
- Requirements:
{ volumeProfiles: true }(so tick profile can be consumed when available) - Input type:
BARS - Dark theme coloring: Gold (true tick VWAP), Blue solid (bar), Blue dashed (fallback), Green uppers, Red lowers.
Final word
For the most faithful VWAP, keep dataSource = profile and ensure Order Flow Data (free) or a paid tick data option is enabled in Tradovate. The bar approximation is robust and always available, but it’s an estimate. Start with the presets above and tune windowLength and the σ set to match your instrument’s intraday behavior.
