Squeeze Indicator: Formula, Settings and How to Read It
Squeeze marks the bars on which the Bollinger Bands sit entirely inside the Keltner Channel, the volatility-compression condition described by John Carter's TTM Squeeze. A dot is placed at the close of every bar in that state.
Senzoukria · Indicators · Updated September 2026
Squeeze ships with the Senzoukria desktop app, in the Volatility group of the indicator catalogue. It is drawn on the price chart.
What Squeeze measures
The Bollinger Bands are a simple moving average plus and minus a multiple of the population standard deviation, defaulting to 20 and 2. The Keltner Channel is an exponential moving average plus and minus a multiple of Wilder's ATR, using the same period for both the EMA and the ATR, defaulting to 20 and 1.5 — the TTM values, which differ from the separate Keltner indicator in this catalogue and its own 20/10/2 defaults. The comparison is strict: the upper band must be below the upper channel and the lower band above the lower channel, so bands that exactly coincide do not count, which is TradingView's behaviour. While either construction is still warming up, no marker is drawn.
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:
Squeeze TTM (John Carter) : squeeze ON quand les bandes de Bollinger sont ENTIÈREMENT à l'intérieur du canal de Keltner — BB_up < KC_up ET BB_low > KC_low inégalités STRICTES : bandes confondues = pas de squeeze (parité TradingView). BB : SMA_N ± k·σ population (défauts 20, 2). KC : EMA_N ± k·ATR_N Wilder, MÊME période N pour l'EMA et l'ATR (défauts 20, 1.5 — les défauts TTM ; l'indicateur `keltner` de la famille garde ses propres défauts 20/10/2). Sortie : un dot posé au CLOSE de chaque barre en squeeze ; warm-up (BB ou KC indéfini) → pas de marker.
How to read it
- Dots mark a state — closing dispersion narrow relative to bar range — and carry no direction at all.
- The end of a run of dots says that compression has stopped, not which way the market resolves it.
- A long uninterrupted run describes a market that has been coiling for a while; isolated single dots usually reflect one quiet bar.
- Pair the state with a directional read, such as which side the range breaks on or what the order flow shows at the extremes, rather than acting on the dot itself.
- Off-hours and holiday sessions produce dots easily, because narrow ranges are ordinary there.
Parameters and defaults
The defaults are a 20-period Bollinger at 2 standard deviations against a 20-period Keltner at 1.5 ATR. Raising the Bollinger multiplier or lowering the Keltner multiplier makes the condition harder to satisfy and the dots rarer; doing the reverse produces dots often enough that they stop distinguishing anything. Both periods default to 20 so the two constructions describe the same window; setting them apart compares different horizons.
| Parameter | Type | Default | Range |
|---|---|---|---|
| BB period | number | 20 | 2 – 200 |
| BB multiplier | number | 2 | 0.5 – 5 |
| KC period | number | 20 | 1 – 200 |
| KC multiplier | number | 1.5 | 0.5 – 5 |
What it does not show
The output is binary: there is no magnitude, no direction and no timing in it. It uses no order flow, so it cannot distinguish a coil with size building behind it from an empty hour with nobody trading. It is descriptive and late by construction — dots appear only once the contraction is already visible across a 20-bar window — and the number of consecutive dots says nothing about what follows. On low-liquidity instruments the condition is satisfied much of the time and loses its ability to distinguish anything.
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
- True Range — Volatility
- Std Dev — Volatility
- Chaikin Volatility — Volatility
- Realized Vol — Volatility
- Skewness — Volatility
- Kurtosis — Volatility
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 is the TTM squeeze?
- The TTM Squeeze, introduced by John Carter, flags periods when Bollinger Bands contract inside a Keltner Channel. Because the bands react to standard deviation and the channel to average true range, the bands falling inside the channel means recent closing dispersion has narrowed relative to the typical bar range.
- Does a squeeze tell you which way the breakout will go?
- No. The condition is symmetric and contains no directional information. It identifies compression only; the direction of any resolution has to come from something else, such as where the range breaks or what the order flow shows at the extremes.
- Why do my squeeze dots differ from another platform?
- Three details commonly account for it: whether the standard deviation uses the population or the sample divisor, whether the Keltner Channel uses Wilder's ATR and the same period as its moving average, and whether exactly coinciding bands count as a squeeze. Here the divisor is population, the Keltner periods match, and the comparison is strict, so equal bands do not count.