Skip to content

Squeeze

Indicators

  • Price
  • High
  • Low
Squeeze

20 candles · Bollinger 2 · Keltner 1.5

  • Momentum
  • on
  • fires
This is how the node looks on the board: inputs on the left, outputs on the right.

Quiet phase that often ends in a breakout. Detects phases in which the price moves unusually calmly: the Bollinger Bands contract so much that they fit inside the Keltner Channel. Such phases often end with a strong move. “on” is true while the calm lasts, “fires” on the candle where it ends. The momentum shows the direction: above 0 the price pushes up, below 0 down. Example: “fires” together with “momentum above 0” reports a breakout to the upside.

BTC/USDT price with Squeeze 20 · 2 · 1.5In quiet phases the Bollinger Bands contract into the Keltner Channel; the strip shows when the squeeze is on, the dots when it fires.Price BTC/USDT84,00086,000Momentum-1,00001,000Squeeze onfiresOct 3Oct 4Oct 5Oct 6Oct 7
  • Bollinger Bands 20 · 2
  • Keltner Channel 20 · 1.5
  • momentum above and below 0
  • squeeze on
  • fires
Top: BTC/USDT with Bollinger Bands (area) and Keltner Channel (lines); bottom: the momentum of the same 1-hour candles. When the bands lie fully inside the channel, the squeeze is on. When they widen again, it fires; the color of the momentum shows which way the price is pushing.

The settings appear on the right under “Properties” once you click the node on the board. Below each field you find the same explanation as here.

Default: 20 · from 2 to 500, whole number

How many candles the bands, the channel and the momentum cover. 20 is the usual value.

Default: 2 · from 0.1 to 10

Distance of the Bollinger Bands as a multiple of the standard deviation, usually 2. With 1.5 the bands sit closer and the squeeze is on more often.

Default: 1.5 · from 0.1 to 10

Distance of the Keltner Channel as a multiple of the usual range of a candle, usually 1.5. A wider channel reports the squeeze more often.

An upside breakout: the squeeze fires while the momentum is above 0.

Example chain: Candle, Squeeze, Compare, AND, TelegramConnections: Candle → Squeeze, Candle → Squeeze, Candle → Squeeze, Squeeze → Compare, Squeeze → AND, Compare → AND, AND → Telegram.CandleBTC/USDT · 1hSqueeze20 candles · Bollinger 2 ·Keltner 1.5CompareSqueeze momentum 20 above 0ANDall inputs trueTelegramlinked chat · at most every4 h

How to connect the nodes:

  1. Candle (Price) → Squeeze (Price)
  2. Candle (High) → Squeeze (High)
  3. Candle (Low) → Squeeze (Low)
  4. Squeeze (Momentum) → Compare (Value)
  5. Squeeze (fires) → AND (Signal 1)
  6. Compare (true/false) → AND (Signal 2)
  7. AND (all true) → Telegram (Trigger)

On the board it reads: 20 candles · Bollinger 2 · Keltner 1.5

Chain as JSON

To try it, copy it and paste it in the editor under “Import”. Importing creates a new chain.

squeeze.json
{
"name": "Example: Squeeze",
"version": 1,
"nodes": [
{ "id": "c1", "type": "core.candle", "position": { "x": 40, "y": 40 }, "settings": { "pair": "BTC/USDT", "timeframe": "1h" } },
{ "id": "q1", "type": "core.squeeze", "position": { "x": 260, "y": 40 }, "settings": {} },
{ "id": "k1", "type": "core.compare", "position": { "x": 480, "y": 40 }, "settings": { "operator": "above", "value": 0 } },
{ "id": "a1", "type": "core.and", "position": { "x": 700, "y": 40 }, "settings": {} },
{ "id": "t1", "type": "core.telegram", "position": { "x": 920, "y": 40 }, "settings": {} }
],
"edges": [
{ "from": "c1.close", "to": "q1.close" },
{ "from": "c1.high", "to": "q1.high" },
{ "from": "c1.low", "to": "q1.low" },
{ "from": "q1.momentum", "to": "k1.in" },
{ "from": "q1.fired", "to": "a1.in0" },
{ "from": "k1.out", "to": "a1.in1" },
{ "from": "a1.out", "to": "t1.in" }
]
}

Only matching types connect: number series to number series (round pin), signal to signal (square), message to message (diamond).

Direction Pin Type Note
Input Price Number series required
Input High Number series required
Input Low Number series required
Output Momentum Number series –
Output on Signal (true/false) –
Output fires Signal (true/false) –
  • In messages the value is called “Squeeze momentum 20”.
  • Warm-up with the default settings: 40 candles (this many extra candles are loaded by the replay before the value is reliable).
  • Search also finds it under: squeeze, quiet, breakout, bollinger, keltner, momentum, volatility, tight.

Bollinger Bands SMA ± Bollinger width × standard deviation, Keltner Channel the same SMA ± Keltner width × SMA of the true range, all over the same candles; “on” while both Bollinger Bands lie inside the channel. Momentum is the linear regression of close − ((highest high + lowest low) / 2 + SMA) / 2, evaluated at the current candle. With Bollinger width 1.5 the values match LazyBear’s Squeeze Momentum Indicator on TradingView.

  • Type in the chain: core.squeeze · Version 1.0.0 · Category key ind
  • Settings in the chain: length (Candles), bbMult (Bollinger width), kcMult (Keltner width)
  • Pins in the chain: Input close, high, low · Output momentum, on, fired
  • Reference tests in the manifest: 1 (with fixed price data: 500 candles of 1h)
  • How a node is built

Version 2026.10.21.23 · Changelog