Skip to content

Keltner Channel

Indicators

  • Price
  • High
  • Low
Keltner Channel

20 candles · width 2

  • Upper
  • Middle
  • Lower
This is how the node looks on the board: inputs on the left, outputs on the right.

Channel from the average and usual range. Draws a channel around the average of the last candles. Its width follows the usual range of the candles (ATR), which makes the channel calmer than Bollinger Bands. When the price closes outside, it has moved far for its usual swings; that is often how a strong trend begins. Example: “Price crosses above upper Keltner band” reports a breakout to the upside.

BTC/USDT price with Keltner ChannelThe channel follows the average; dots mark where the price rises above the upper band.Price BTC/USDT84,00086,000Oct 2Oct 3Oct 4Oct 5
  • Price (close of each candle)
  • Channel (width 2 × ATR 10)
  • Middle (EMA 20)
  • crosses above the upper band
BTC/USDT with a Keltner Channel: the EMA 20 in the middle, the bands at 2 × ATR 10. Because the width follows the usual range of the candles, the channel runs calmer than Bollinger Bands. At the dots the price closes above the upper band, an upside breakout.

Properties of the Keltner Channel node: the chart of the last 150 candles with price, middle and band, dots at the touches and two handles at the right edge, below it the Width field with the amount in dollars next to it.

In the properties, a chart shows the last 150 candles with the middle and the band, computed with your settings. Drag an edge to change the width in multiples of the ATR, or type it; next to it you see how far the band reaches in dollars at the last candle. Dots mark where a candle’s high or low touches the band, the top line shows how often.

More under Chart above the price.

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 1 to 500, whole number

How many candles the average in the middle covers. 20 is the usual value.

Default: 2 ATR · from 0.1 to 10 ATR

How far the bands sit from the middle, as a multiple of the ATR. 2 is usual. With 1.5 the price reaches the bands more often, with 3 only on very strong moves.

Default: 10 · from 1 to 500, whole number

How many candles the usual range (ATR) is measured over, which sets the width. 10 is the usual value.

Default: EMA · recent candles count more · under “More”

How the middle is calculated. If unsure, use EMA.

  • EMA · recent candles count more (default): Exponential average: follows the price faster. The usual choice.
  • SMA · every candle counts equally: Simple average: calmer, but slower to react to turns.

A breakout: the price crosses above the upper Keltner band.

Example chain: Candle, Keltner Channel, Compare A/B, TelegramConnections: Candle → Keltner Channel, Candle → Keltner Channel, Candle → Keltner Channel, Candle → Compare A/B, Keltner Channel → Compare A/B, Compare A/B → Telegram.CandleBTC/USDT · 1hKeltner Channel20 candles · width 2Compare A/BPrice crosses above upperKeltner bandTelegramlinked chat · at most every4 h

How to connect the nodes:

  1. Candle (Price) → Keltner Channel (Price)
  2. Candle (High) → Keltner Channel (High)
  3. Candle (Low) → Keltner Channel (Low)
  4. Candle (Price) → Compare A/B (A)
  5. Keltner Channel (Upper) → Compare A/B (B)
  6. Compare A/B (true/false) → Telegram (Trigger)

On the board it reads: 20 candles · width 2

Chain as JSON

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

keltner.json
{
"name": "Example: Keltner Channel",
"version": 1,
"nodes": [
{ "id": "c1", "type": "core.candle", "position": { "x": 40, "y": 40 }, "settings": { "pair": "BTC/USDT", "timeframe": "1h" } },
{ "id": "e1", "type": "core.keltner", "position": { "x": 260, "y": 40 }, "settings": {} },
{ "id": "k1", "type": "core.compare-ab", "position": { "x": 480, "y": 40 }, "settings": { "operator": "crossesAbove" } },
{ "id": "t1", "type": "core.telegram", "position": { "x": 700, "y": 40 }, "settings": {} }
],
"edges": [
{ "from": "c1.close", "to": "e1.close" },
{ "from": "c1.high", "to": "e1.high" },
{ "from": "c1.low", "to": "e1.low" },
{ "from": "c1.close", "to": "k1.a" },
{ "from": "e1.upper", "to": "k1.b" },
{ "from": "k1.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 Upper Number series appears in messages as a price, e.g. “$81,616”
Output Middle Number series appears in messages as a price, e.g. “$81,616”
Output Lower Number series appears in messages as a price, e.g. “$81,616”
  • In messages the values are called “upper Keltner band”, “Keltner middle”, “lower Keltner band”.
  • Warm-up with the default settings: 101 candles (this many extra candles are loaded by the replay before the value is reliable).
  • Search also finds it under: channel, band, breakout, atr, volatility.

Middle as an EMA or SMA of the close, bands at width × ATR (RMA of the true range); the same values as TradingView’s built-in Keltner Channels indicator with the band style Average True Range.

  • Type in the chain: core.keltner · Version 1.0.0 · Category key ind
  • Settings in the chain: length (Candles), mult (Width), atrLength (ATR candles), kind (Average)
  • Pins in the chain: Input close, high, low · Output upper, middle, lower
  • 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