Ultimate Oscillator Indicator: Formula, Settings and How to Read It

The Ultimate Oscillator combines buying pressure measured over three windows, 7, 14 and 28 bars by default, into a single 0 to 100 line, weighting the short window 4, the medium 2 and the long 1. Larry Williams published it in 1976 to remove the scale bias of single-period oscillators.

Senzoukria · Indicators · Updated September 2026


Ultimate Oscillator ships with the Senzoukria desktop app, in the Momentum group of the indicator catalogue. It is drawn in its own panel below the chart.

What Ultimate Oscillator measures

Buying pressure for a bar is its close minus the lower of its own low and the previous close; true range is the higher of its high and the previous close, minus that same lower value. Each window's average is the sum of buying pressure divided by the sum of true range, so the reading is the share of the recent range that closed in buyers' favour. The 4/2/1 weights exist for a precise reason: they make each horizon cover the same amount of market time, since 7 times 4, 14 times 2 and 28 times 1 all come to 28, and the divisor of 7 is simply 4 plus 2 plus 1. Because buying pressure needs a previous close, the windows start at the second bar, which puts the first plotted value at the largest of the three periods rather than at the long period minus one. If the summed true range of any window is zero, or if any one of the three horizons is undefined, the bar returns no value: a partial average is never published.

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:

Ultimate Oscillator (Larry Williams, 1976) — moyenne PONDÉRÉE 4/2/1 de trois horizons, AUCUN lissage exponentiel (sommes glissantes brutes) : BP = close − min(low, closeₚ) (« buying pressure ») TR = max(high, closeₚ) − min(low, closeₚ) (true range de Wilder) avg_N = Σ_N BP / Σ_N TR UO = 100 · (4·avg_short + 2·avg_medium + 1·avg_long) / 7 POURQUOI les poids 4/2/1 : Williams les choisit pour que chaque horizon pèse le MÊME temps de marché (7×4 = 14×2 = 28×1), ce qui neutralise le biais d'échelle des oscillateurs mono-période. Défauts 7/14/28 (l'article original). Le rapport 7 au dénominateur = 4+2+1. BP/TR n'existent PAS sur la première barre (pas de close précédent) : les fenêtres démarrent à l'indice 1, d'où un warm-up à max(short, medium, long) et non à long − 1. Σ TR NULLE sur une fenêtre (barres sans range, séance figée) → null, jamais 0 : sans amplitude, la pression acheteuse n'a pas de référence. Un seul des trois horizons indéfini → UO null (pas de moyenne amputée).

How to read it

  • A reading above 50 means that across the three horizons, more than half of the combined range closed on the buying side. Below 50 is the mirror case.
  • Because three windows must agree before the line moves far, it turns less often than a single-period oscillator, and each turn carries more of the longer horizon in it.
  • Williams' own reading looks for a divergence against price, then for a move through the level reached at that divergence. Treat it as a structure to observe on your own chart, not as a rule established here.
  • There is no exponential smoothing, only rolling sums, so the line can shift noticeably when a large bar drops out of the 7-bar window.
  • A value that disappears marks a window with no range at all, which on futures usually means a stalled overnight period.

Parameters and defaults

The defaults are 7, 14 and 28, the periods of the original article; the three fields accept up to 200, 400 and 800 respectively. Changing one of them breaks the equal-market-time property that justifies the fixed 4/2/1 weights, since those weights are only balanced at the 1:2:4 ratio. Widening the horizons while keeping that ratio preserves the design; unrelated periods produce a valid line with a different and undocumented balance.

Ultimate Oscillator — parameters exposed in the app, with the values it ships with.
ParameterTypeDefaultRange
Short periodnumber71 – 200
Medium periodnumber141 – 400
Long periodnumber281 – 800

What it does not show

Buying pressure is derived from closes and ranges, not from traded volume and not from the side that initiated each trade: a bar that closes high because sellers withdrew reads exactly like one where buyers lifted every offer. The rolling sums have hard edges, so a single influential bar leaves the calculation abruptly rather than fading out. The requirement that all three windows be defined means a short history or a gap in the data suppresses the whole line, not just one component. And the 0 to 100 bounds compress strong and moderate conditions into the same upper region.

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.

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

Why does the Ultimate Oscillator use three time periods?
A single-period oscillator gives a different picture depending on the length chosen, and often moves simply because one bar dropped out of its window. Larry Williams combined a short, a medium and a long window so the reading reflects several horizons at once instead of depending on a single arbitrary lookback.
What does the 4/2/1 weighting do?
It equalises the amount of market time each horizon contributes: 7 bars weighted 4, 14 bars weighted 2 and 28 bars weighted 1 all represent 28 bars of market activity. Without those weights the longest window would dominate the average purely because it contains more bars. The divisor of 7 is the sum of the three weights.
What is buying pressure in the Ultimate Oscillator?
Buying pressure is the close minus the lower of the bar's low and the previous close, so it measures how far price closed above the lowest reference point available to that bar. Dividing the sum of buying pressure by the sum of true range over the same window expresses it as a fraction of the range actually available.

Keep reading