The Ultimate Oscillator combines buying pressure across three timeframes (7, 14, 28 periods) into a single oscillator. This multi-timeframe approach reduces false signals common in single-period oscillators.
UO=100×4+2+14×A7+2×A14+A28
Where An = Average of Buying Pressure / True Range over n periods.
How It Works
flowchart TD
subgraph Input["Price Data"]
H["High"]
L["Low"]
C["Close"]
PC["Prior Close"]
end
subgraph BP["Buying Pressure"]
BPC["BP = Close - min(Low, Prior Close)"]
end
subgraph TR["True Range"]
TRC["TR = max(High, Prior Close) - min(Low, Prior Close)"]
end
subgraph Avg["Multi-Timeframe Average"]
A7["7-period: BP/TR × 4"]
A14["14-period: BP/TR × 2"]
A28["28-period: BP/TR × 1"]
end
subgraph Output["Result"]
SUM["Sum weighted averages"]
DIV["÷ 7"]
UO["UO (0-100)"]
end
H & L & C & PC --> BPC & TRC
BPC & TRC --> A7 & A14 & A28 --> SUM --> DIV --> UO
Interpreting UO
| UO Value | Interpretation |
|---|
| > 70 | Overbought territory |
| 50 | Neutral |
| < 30 | Oversold territory |
Trading Strategies
1. Classic Divergence Setup
Larry Williams (creator) recommended a specific divergence strategy:
Bullish Setup:
- UO below 30 (oversold)
- Price makes lower low, UO makes higher low
- UO then breaks above the divergence high
Bearish Setup:
- UO above 70 (overbought)
- Price makes higher high, UO makes lower high
- UO then breaks below the divergence low
2. Overbought/Oversold
| Zone | Condition | Potential Action |
|---|
| Overbought | UO > 70 | Watch for bearish divergence |
| Oversold | UO < 30 | Watch for bullish divergence |
Why Three Timeframes?
flowchart LR
subgraph Timeframes["Weighted Contribution"]
T7["7-period (weight 4)<br/>Short-term sensitivity"]
T14["14-period (weight 2)<br/>Medium-term balance"]
T28["28-period (weight 1)<br/>Long-term stability"]
end
| Timeframe | Weight | Purpose |
|---|
| 7 periods | 4 | Quick reaction to price changes |
| 14 periods | 2 | Balances sensitivity and smoothness |
| 28 periods | 1 | Provides stability, reduces noise |
UO vs RSI
| Aspect | UO | RSI |
|---|
| Timeframes | 3 combined | Single |
| False signals | Fewer | More frequent |
| Responsiveness | Balanced | Higher |
| Complexity | More complex | Simpler |
| Weighting | 4:2:1 | Equal across period |
Advantages
- Multi-timeframe — Reduces whipsaws
- Weighted approach — Emphasizes short-term while stabilizing
- Buying pressure focus — Measures actual demand
- Divergence-friendly — Designed for divergence trading
Disadvantages
- Complex calculation — Three separate averages
- Lagging — Multiple timeframes add lag
- Less intuitive — Harder to interpret than RSI
- Strict rules — Original strategy has specific conditions
Further Reading
Missing Data
UO needs High, Low, and Close together on every bar it uses — a gap in any one of the
three (a weekend, a holiday, a stale exchange feed) voids the whole bar, including a High-only
gap: buying pressure never reads High at all, so an unmasked High gap would silently distort the
True Range sum instead of honestly voiding the bar. The 7/14/28-period windows mean N bars
actually observed, not N calendar slots: on a market-closed gap the buying-pressure and
true-range sums keep counting back through real bars, bridging straight from the last session
before the gap to the first session after it — gaps become gaps (None), never the sentinel
50 UO used to fabricate, and never a carried-forward stale value. Three warm-ups stack: the
7-, 14-, and 28-period averages each need their own count of observed bars before they exist, so
the first UO value only appears once the longest (28-period, by default) window has enough
observed history.
| Slot condition | UO output |
|---|
| Any of High/Low/Close missing on a bar | None — the bar is skipped entirely, not partially used |
| Fewer than the longest window's observed bars so far | None (warm-up) |
| A flat window where True Range sums to zero | None (honest 0/0, never a fabricated value) |
Indicator Assessment
The following chart positions the Ultimate Oscillator based on its complexity (ease of understanding and implementation) versus reliability (consistency of signals across market conditions). Points closer to the top indicate higher reliability; points to the left indicate lower complexity.
quadrantChart
title Ultimate Oscillator Assessment
x-axis Low Complexity --> High Complexity
y-axis Low Reliability --> High Reliability
quadrant-1 Complex & Reliable
quadrant-2 Simple & Reliable
quadrant-3 Simple & Unreliable
quadrant-4 Complex & Unreliable
Stocks: [0.60, 0.65]
Crypto: [0.60, 0.55]
Assessment Breakdown
| Dimension | Stocks | Crypto | Notes |
|---|
| Popularity | 5/10 | 4/10 | Respected but overshadowed by simpler oscillators like RSI; Larry Williams legacy gives credibility |
| Reliability | 6.5/10 | 5.5/10 | Multi-timeframe approach reduces false signals; crypto volatility still causes whipsaws |
| Complexity | 6/10 | 6/10 | Three separate calculations with weighting; requires understanding of buying pressure concept |
| Versatility | 6/10 | 5.5/10 | Designed for divergence trading; less useful for overbought/oversold alone |
| Recent Interest | 4/10 | 4/10 | Steady but not growing; newer traders prefer simpler alternatives |