Rolling VPOC Indicator: Formula, Settings and How to Read It
Rolling VPOC plots the point of control of a single profile built from the last N bars, ten by default, so the level advances one bar at a time. It marks the price that traded the most volume inside that recent window rather than over the whole session.
Senzoukria · Indicators · Updated September 2026
Rolling VPOC ships with the Senzoukria desktop app, in the Profiles & levels group of the indicator catalogue. It is drawn on the price chart.
What Rolling VPOC measures
Volume at price from every bar in the window is merged into one profile before the maximum is taken, because two bars can trade the same price and a bar-by-bar maximum would under-weight it. The output is the single price holding the most volume in that merged profile. Equal volumes resolve to the lower price, the Sierra Chart convention this platform's profile tools follow. At the start of the chart the window is truncated rather than left empty, so a level exists from the first bar, where a moving average of the same length would still be warming up.
The formula, as implemented
This is not a description of how the indicator is usually defined elsewhere — it is what the shipped code computes, documented next to the implementation:
`to` d'un niveau de session : borne droite pour une session passée, null (= bord droit du chart) pour la dernière session chargée. */ function sessionTo( s: SessionSlice, isLast: boolean, bars: readonly FootprintBar[], ): number | null { return isLast ? null : bars[s.end].bucketTsNs; } /** VPOC glissant : POC du profil AGRÉGÉ des N dernières barres (fenêtre [i−N+1, i], tronquée au début du chart — un POC est défini dès la première barre, contrairement à une moyenne). Agrégation multi-barres obligatoire : deux barres peuvent traiter le même prix, le max naïf par barre le sous-pondérerait. ÉGALITÉ → prix le plus bas (Sierra, choix du repo). Défaut N=10 : fenêtre courte de structure locale.
How to read it
- A level that stays flat while price travels away from it marks a price the recent window keeps coming back to; a level that steps along with price shows volume following the move.
- A jump of several ticks between two bars means the previous heaviest price dropped out of the window. Check whether volume genuinely migrated or whether an old heavy bar simply expired out of the lookback.
- With price above a flat level, that price sits below as the nearest heavily traded reference, and the reverse when price is underneath it.
- Read it against the developing session POC: at the same price, the recent window and the whole session agree; apart, the window is building volume away from the session's main level.
- The output is one price, not a zone. The prices immediately around it can carry almost as much volume, so treat that neighbourhood as part of the same concentration.
Parameters and defaults
Window (bars) defaults to 10 and accepts 1 to 200. A short window follows local structure and reprices quickly; a long one produces something closer to a session or multi-session point of control and changes far less often. At 1 the indicator returns each bar's own point of control. The line colour defaults to #fdd835.
| Parameter | Type | Default | Range |
|---|---|---|---|
| Window (bars) | number | 10 | 1 – 200 |
What it does not show
The level says where volume concentrated, not who was aggressing: it is built from traded volume at price and does not separate buy-initiated from sell-initiated trades. Being a window statistic, it can move because an old bar left the lookback while nothing new has traded. On thin instruments, or on very short bar intervals, the merged profile can be decided by a handful of trades, which makes the level unstable. It is also only as complete as the volume your feed delivers, and that feed is billed by the data provider separately from the software subscription.
Using it in Senzoukria
Add it from the Indicators panel of any footprint chart or candle chart. It runs on futures data from Rithmic or Databento and on crypto pairs from Binance and Bybit, on the same engine — the calculation does not change with the venue, only the data feeding it does. Market data subscriptions are billed by the provider, separately from the app.
Related indicators
- Session Open — Profiles & levels
- Prior Session H/L/C — Profiles & levels
- Overnight High/Low — Profiles & levels
- Risk/Reward Levels — Profiles & levels
- Daily Range Projection — Profiles & levels
- Gap Fill Level — Profiles & levels
See the full indicator library, or start with the order flow guide if you are new to reading aggression, delta and absorption.
Frequently asked questions
- What does the rolling VPOC show that the session POC does not?
- The rolling VPOC is computed on a fixed number of recent bars, ten by default, while the session POC uses everything traded since the session open. The rolling version reprices as old bars leave the window, so it follows where volume is concentrating now; the session version carries the weight of the whole day. On a long trending session the two can sit far apart.
- How many bars should the rolling VPOC window cover?
- The window is counted in bars, not minutes, so the useful value depends on your bar interval and on the structure you want to see. The default of 10 keeps the level local and lets it move within a session; values in the several tens behave more like a session point of control. The parameter accepts 1 to 200.
- What happens when two prices hold the same volume in the window?
- The lower of the two is kept. That is the Sierra Chart convention, applied consistently across the profile tools here, so a level alternating between two adjacent prices with equal volume always displays as the lower one. Ties are most frequent on thin instruments, where a handful of trades decides the profile.