Skip to content

At least X of N

Logic & timing

  • Signal 1
  • Signal 2
  • more, up to 8
At least X of N

at least 2 of 3

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

True when enough conditions are met. Counts on every candle how many of the connected signals are true and is true as soon as at least the set number are. Stricter than OR, looser than AND: not everything has to match, but enough. Example: RSI below 30, price at the lower Bollinger Band and volume above double, with at least 2 the alert fires when two of the three are met.

At least 2 of 3 over 16 candlesThe output is true when at least two of the three signals are true on the same candle.RSI below 30Price at the lower bandVolume above 2 × avgat least 2 of 3
  • input true
  • output true
  • false
Each box is one candle. The output is true where at least two of the three signals are true at the same time. A single signal is not enough, all three do not have to be.

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: 2 · from 1 to 8, whole number

How many of the connected signals must be true at the same time. With 2 of 3, signals confirm each other without all having to match.

Three signs of a sell-off: RSI below 30, price below the lower Bollinger Band, volume above double. Push arrives as soon as two of the three are true at the same time.

Example chain: Candle, RSI, Compare, Bollinger Bands, Compare A/B, Volume, Compare, At least X of N, PushConnections: Candle → RSI, RSI → Compare, Candle → Bollinger Bands, Candle → Compare A/B, Bollinger Bands → Compare A/B, Candle → Volume, Volume → Compare, Compare → At least X of N, Compare A/B → At least X of N, Compare → At least X of N, At least X of N → Push.CandleBTC/USDT · 1hRSI14 candlesCompareRSI 14 below 30Bollinger Bands20 candles · width 2Compare A/BPrice below lower bandVolume20-candle averageComparerelative volume 20 above 2At least X of Nat least 2 of 3Pushat most every 4 h

How to connect the nodes:

  1. Candle (Price) → RSI (Value)
  2. RSI (RSI) → Compare (Value)
  3. Candle (Price) → Bollinger Bands (Value)
  4. Candle (Price) → Compare A/B (A)
  5. Bollinger Bands (Lower) → Compare A/B (B)
  6. Candle (Volume) → Volume (Volume)
  7. Volume (Relative) → Compare (Value)
  8. Compare (true/false) → At least X of N (Signal 1)
  9. Compare A/B (true/false) → At least X of N (Signal 2)
  10. Compare (true/false) → At least X of N (Signal 3)
  11. At least X of N (enough true) → Push (Trigger)

On the board it reads: at least 2 of 3

Chain as JSON

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

atleast.json
{
"name": "Example: At least X of N",
"version": 1,
"nodes": [
{ "id": "c1", "type": "core.candle", "position": { "x": 40, "y": 40 }, "settings": { "pair": "BTC/USDT", "timeframe": "1h" } },
{ "id": "r1", "type": "core.rsi", "position": { "x": 260, "y": 40 }, "settings": { "length": 14 } },
{ "id": "k1", "type": "core.compare", "position": { "x": 480, "y": 40 }, "settings": { "operator": "below", "value": 30 } },
{ "id": "b1", "type": "core.bb", "position": { "x": 260, "y": 170 }, "settings": {} },
{ "id": "k2", "type": "core.compare-ab", "position": { "x": 480, "y": 170 }, "settings": { "operator": "below" } },
{ "id": "v1", "type": "core.volume", "position": { "x": 260, "y": 300 }, "settings": {} },
{ "id": "k3", "type": "core.compare", "position": { "x": 480, "y": 300 }, "settings": { "operator": "above", "value": 2 } },
{ "id": "x1", "type": "core.atleast", "position": { "x": 700, "y": 40 }, "settings": { "count": 2 } },
{ "id": "p1", "type": "core.push", "position": { "x": 920, "y": 40 }, "settings": {} }
],
"edges": [
{ "from": "c1.close", "to": "r1.in" },
{ "from": "r1.out", "to": "k1.in" },
{ "from": "c1.close", "to": "b1.in" },
{ "from": "c1.close", "to": "k2.a" },
{ "from": "b1.lower", "to": "k2.b" },
{ "from": "c1.volume", "to": "v1.in" },
{ "from": "v1.relative", "to": "k3.in" },
{ "from": "k1.out", "to": "x1.in0" },
{ "from": "k2.out", "to": "x1.in1" },
{ "from": "k3.out", "to": "x1.in2" },
{ "from": "x1.out", "to": "p1.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 Signal Signal (true/false) required · grows: once all are used, another one appears, up to 8. At least 2 must be connected.
Output enough true Signal (true/false) –
  • Search also finds it under: confluence, majority, two of three, x of n, count.

True when the number of true inputs on the candle reaches at least the setting; unconnected inputs do not count.

  • Type in the chain: core.atleast · Version 1.0.0 · Category key logic
  • Settings in the chain: count (At least)
  • Pins in the chain: Input in0 … in7 · Output out
  • How a node is built

Version 2026.10.21.23 · Changelog