On this page
Volume Oscillator — Volume, in its own panel below the chart.
What Volume Oscillator measures
Dividing the difference between the two averages by the long average makes the output a percentage, and therefore comparable across instruments and timeframes in a way a raw difference in contracts is not. Comparing two averages rather than one bar against an average is what separates it from Relative Volume: the current bar's noise is already absorbed into the short average, so a single outlier moves the line far less. Nothing is plotted until both averages have a full window behind them, and a long window whose average volume is zero returns nothing rather than a percentage, since there is no reference to divide by.
The formula, as implemented
This is not how the indicator is usually defined elsewhere — it is what the shipped code computes, documented next to the implementation:
Volume Oscillator (PVO) : osc = (SMA_short(volume) − SMA_long(volume)) / SMA_long(volume) × 100 POURQUOI : mesure l'EXPANSION ou la contraction de la participation, en % et donc comparable d'un instrument et d'un timeframe à l'autre. > 0 = le volume court terme dépasse sa norme (impulsion, breakout qui participe) ; < 0 = assèchement (fin de mouvement, range). C'est un complément de `relative-volume` (volume.ts), qui compare UNE barre à sa moyenne — ici on compare deux MOYENNES, ce qui élimine le bruit de la barre courante. Défauts 5 et 20 : une semaine contre un mois de séances, le couple usuel. Warm-up (< long barres) → null. SMA_long = 0 (fenêtre entièrement à volume nul) → null : x/0 n'est pas « 0 % de variation », c'est une absence de référence — aucun cumul en jeu, l'exception des accumulateurs ne s'applique pas. Les deux SMA de `helpers.smaSeries` rendent null avant fenêtre pleine.
How to read it
- The zero line is the reference: above it the short-term volume average has overtaken the long-term one, below it participation is contracting.
- Readings rising through a directional move describe participation joining it; readings falling through the same move describe it being carried by fewer participants.
- Persistent negative readings inside a range are the ordinary picture of a quiet market, not a warning on their own.
- The line has no direction of its own — a large positive reading accompanies heavy selling as readily as heavy buying.
- Both inputs are moving averages, so turns arrive after the volume that caused them. A cross is not a timely event.
Parameters and defaults
The short average defaults to 5 and the long to 20, roughly a week against a month of daily sessions and the conventional pairing. Narrowing the gap between the two periods flattens the line toward zero and produces frequent crosses that mean little; widening it produces larger swings that turn later. The short period accepts 1 to 200 and the long 1 to 500. Setting the short period longer than the long one is allowed and simply reverses what the sign means, since the comparison is then the other way round.
| Parameter | Type | Default | Range |
|---|---|---|---|
| Short SMA | number | 5 | 1 – 200 |
| Long SMA | number | 20 | 1 – 500 |
What it does not show
Both inputs lag, so the oscillator confirms a change in participation rather than announcing it. On intraday futures it tracks the daily volume curve, printing predictable positive readings around the open and the cash close that say nothing about the current move. It carries no direction, no information about who initiated the trades, and none about where inside the bar the volume occurred. Session boundaries, contract rolls and holiday sessions distort the long average for its full window, and the series is blank during warm-up.
Related indicators
- Volume ROC % — Volume
- Relative Volume — Volume
- Trade Count — Volume
- Level Count — Volume
- Volume per Level — Volume
- POC Position % — Volume
This page in other languages
Frequently asked questions
- What is a volume oscillator used for?
- To see whether participation is expanding or contracting against its recent norm, expressed as a percentage. It is used to check whether a price move is accompanied by growing or fading volume. It measures participation only and carries no directional information of its own.
- What is the difference between a volume oscillator and relative volume?
- Relative volume compares one bar with the average of the bars before it, so a single outlier produces a large reading. The volume oscillator compares two averages of volume with each other, which absorbs individual bars and describes the trend in participation rather than the size of one bar.
- What settings are standard for the volume oscillator?
- Short 5 and long 20 are the conventional pair, approximating a week against a month of daily sessions. A narrow gap between the periods makes the line hug zero and cross often; a wide gap makes it swing further but turn later. No setting removes the lag inherent in using moving averages.