ProVWAP - ancored and mobile window , tick data volume


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.vol or row.volume or (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.
  • Bar approximation
    Uses bar volume × price where price is either Typical (HLC/3) or Close.
    Optionally, with forceUnitVolume = 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 windowLength bars 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-structurerolling with shorter windows (e.g., 34–100 on 1–5m bars).
      • Daily session biasanchored.
  • 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): set true only 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
    • Use tighter bands for mean-reversion scalps; wider bands for trend days.

Display & diagnostics

  • showVWAP (true): toggle central VWAP visibility.
  • debugLogs (false) and debugEveryN (10): console diagnostics, throttled every N calls (use for development).

6) Recommended starting presets

A) Intraday scalping (1–2m bars)

  • vwapMode = rolling, windowLength = 68
  • dataSource = profile
  • priceMode = 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 = profile but if you see frequent fallbacks, either:
    • Ensure Order Flow Data is enabled, or
    • Switch to dataSource = bar and (only if needed) set forceUnitVolume = 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 profile but 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 your showVWAP setting).
  • 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

  1. Order-flow/tick access enabled? If not, turn on Order Flow Data (free) or a tick-data subscription.
  2. Data source set correctly? profile (true VWAP) vs bar (approximation).
  3. Window too short/long? Adjust windowLength to balance reactivity vs smoothness.
  4. Bars carry volume? If not, try forceUnitVolume = true or use true tick profile.
  5. Debug it: enable debugLogs and inspect the console every debugEveryN calls.

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.