Skip to content

Fair value gaps

Indicators

  • Price
  • High
  • Low
Fair value gaps

up gaps · from 0.2 %

  • Price enters gap
  • Close in gap
  • New gap
  • Gap filled
  • Top
  • Bottom
  • Filled %
This is how the node looks on the board: inputs on the left, outputs on the right.

Price gaps between three candles. Finds gaps a fast rise or fall leaves behind: if the low of a candle lies above the high of the one two before, no trade happened in between. Many traders expect the price to fill such gaps later. The node reports new gaps, the first return into an open gap, a close inside one and a completely filled gap, plus top and bottom of the nearest gap and how far it is filled. A gap is known with the close of its third candle. Example: up gaps from 0.2 % with “price enters gap” report when ETH falls back into the gap after a jump.

BTC/USDT with up gaps from 0.1 %Boxes for each gap until it is filled, faded from the first touch, smaller ones as outlines; below, when the price runs into an open gap.Price BTC/USDT80,00082,00084,000FVGFVGFVGFVGFVGFVGFVGPrice enters gapOct 11Oct 12Oct 13Oct 14Oct 15
  • open gap
  • partially filled
  • below the minimum size
  • Price enters gap
BTC/USDT candles with up gaps: the low of a candle lies above the high of the one two before. The box starts at the middle candle and is dashed there, because the gap is only certain with the close of the third. It fades as soon as a candle reaches into it (partially filled) and ends when a candle fills it completely. Gaps below 0.1 % do not count; they only appear as outlines.

Properties of the Fair value gaps node: the chart with BTC/USDT candles (sample prices), boxes for open and partially filled gaps, smaller ones as outlines, and the gauge for the minimum size at the right edge, below it the first fields.

In the properties, a chart shows the last 150 candles and on top of them what the node finds with your settings; dotted or dashed is what it did not know yet at that time. The gauge at the right edge shows “Minimum size”; drag it vertically. The top line shows the state at the last candle, and the chart follows every setting right away.

More under Smart money and 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: up gaps (below the price)

Which gaps the node looks for: from rises below the price or from falls above the price.

  • up gaps (below the price) (default): Gaps from a fast rise: the low of a candle lies above the high of the one two before. They sit below the price; many expect it to fall back in and find support there.
  • down gaps (above the price): Gaps from a fast fall: the high of a candle lies below the low of the one two before. They sit above the price; many expect it to rise back in and get rejected there.

Default: 0.1 % · from 0 to 10 %

How tall a gap has to be at least, in percent of the price. Smaller ones do not count; the chart only shows their outline. For BTC on hourly candles half of all gaps are smaller than 0.12 %; on 4-hour candles 0.2 to 0.5 % fit.

Notifies you when the price falls back into an open up gap of at least 0.2 %.

Example chain: Candle, Fair value gaps, TelegramConnections: Candle → Fair value gaps, Candle → Fair value gaps, Candle → Fair value gaps, Fair value gaps → Telegram.CandleBTC/USDT · 1hFair value gapsup gaps · from 0.2 %Telegramlinked chat · at most every4 h

How to connect the nodes:

  1. Candle (Price) → Fair value gaps (Price)
  2. Candle (High) → Fair value gaps (High)
  3. Candle (Low) → Fair value gaps (Low)
  4. Fair value gaps (Price enters gap) → Telegram (Trigger)

On the board it reads: up gaps · from 0.2 %

Chain as JSON

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

fvg.json
{
"name": "Example: Fair value gaps",
"version": 1,
"nodes": [
{ "id": "c1", "type": "core.candle", "position": { "x": 40, "y": 40 }, "settings": { "pair": "BTC/USDT", "timeframe": "1h" } },
{ "id": "f1", "type": "core.fvg", "position": { "x": 260, "y": 40 }, "settings": { "minSize": 0.2 } },
{ "id": "t1", "type": "core.telegram", "position": { "x": 480, "y": 40 }, "settings": {} }
],
"edges": [
{ "from": "c1.close", "to": "f1.close" },
{ "from": "c1.high", "to": "f1.high" },
{ "from": "c1.low", "to": "f1.low" },
{ "from": "f1.enter", "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 Price enters gap Signal (true/false) –
Output Close in gap Signal (true/false) –
Output New gap Signal (true/false) –
Output Gap filled Signal (true/false) –
Output Top Number series appears in messages as a price, e.g. “$81,616”
Output Bottom Number series appears in messages as a price, e.g. “$81,616”
Output Filled % Number series in percent
  • In messages the values are called “top of gap ≥ 0.1 %”, “bottom of gap ≥ 0.1 %”, “gap ≥ 0.1 % filled”.
  • Warm-up with the default settings: 502 candles (this many extra candles are loaded by the replay before the value is reliable).
  • Search also finds it under: fair value gap, fvg, gap, imbalance, fill, retest, smart money, smc.

Up gap at candle i: low[i] > high[i − 2], zone from high[i − 2] to low[i], size (top − bottom) / bottom × 100. Down gap: high[i] < low[i − 2]. Open until the first candle that reaches in (a low at or below the top), then partially filled; completely filled once a low reaches the bottom. After that, and after 500 candles, it no longer counts. “Filled %” is the deepest point since it formed, in percent of its height; the values refer to the unfilled gap nearest to the close.

  • Type in the chain: core.fvg · Version 1.0.0 · Category key ind
  • Settings in the chain: side (Direction), minSize (Minimum size)
  • Pins in the chain: Input close, high, low · Output enter, inside, formed, filled, top, bottom, fill
  • 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