Skip to content

Percent rank

IndicatorsFrom Pro

  • Value
Percent rank

168 candles · below 10

  • Rank
  • low
  • high
This is how the node looks on the board: inputs on the left, outputs on the right.

Rank among the last values, 0–100. Tells you where the current value stands among the values of the candles before: 90 means it is higher than or equal to 90 % of them, 0 means it was never that low there. This lets you compare values whose usual size differs from coin to coin, such as volume, volatility or the distance to an average, without finding a separate number for each coin. Example: Historical volatility 20 followed by Percent rank 365 on daily candles below 10 reports when the swings are as low as on hardly any day in the past year.

BTC/USDT price and its percent rank over 100 candlesWhen the price rises to a high of the last 100 candles, the rank goes to 100; when it falls to a low, to 0.Price BTC/USDT82,00084,00086,000Rank 1002080Oct 5Oct 6Oct 7Oct 8Oct 9Oct 10Oct 11Oct 12Oct 13Oct 14
  • Price (close of each candle)
  • Rank 100
  • below 20 (“low”) and above 80 (“high”)
Top: the BTC/USDT price; bottom: its percent rank, the share of the 100 candles before whose close was lower or equal. 100 means it was never that high there, 0 never that low. The rank does not depend on how large the price is, so the same thresholds fit every coin and every value, such as volume or volatility.

Properties of the Percent rank node: at the top the price of the last 150 candles, below it Percent rank with the zone between the thresholds and two handles at the right edge, dots at the hits, below that the Low below and High above fields.

The properties show the price of the last 150 candles at the top and Percent rank below it, with the zone between the thresholds. Drag a threshold or type it; the number in the field follows in whole steps. Dots on the price show where “low” or “high” would be true, the top line shows how often.

More under Chart below 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: 100 · from 2 to 1,000, whole number

How many candles before the value is compared with. On daily candles 365 is a year, on hourly candles 168 a week. More candles need more lead time.

Default: 20 · from 0 to 100

Below this line the “low” output is true. 20 means lower than 80 % of the values before. With 5 or 10 it only reports unusually low values.

Default: 80 · from 0 to 100

Above this line the “high” output is true. 80 means higher than 80 % of the values before. With 95 it only reports values that were rare there.

With historical volatility in front: Telegram notifies you when the swings are lower than in 90 % of the hours of the past week.

Example chain: Candle, Historical volatility, Percent rank, TelegramConnections: Candle → Historical volatility, Historical volatility → Percent rank, Percent rank → Telegram.CandleBTC/USDT · 1hHistorical volatility20 candlesPercent rank168 candles · below 10Telegramlinked chat · at most every4 h

How to connect the nodes:

  1. Candle (Price) → Historical volatility (Value)
  2. Historical volatility (HV) → Percent rank (Value)
  3. Percent rank (low) → Telegram (Trigger)

On the board it reads: 168 candles · below 10

Chain as JSON

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

percent-rank.json
{
"name": "Example: Percent rank",
"version": 1,
"nodes": [
{ "id": "c1", "type": "core.candle", "position": { "x": 40, "y": 40 }, "settings": { "pair": "BTC/USDT", "timeframe": "1h" } },
{ "id": "h1", "type": "core.hv", "position": { "x": 260, "y": 40 }, "settings": {} },
{ "id": "p1", "type": "core.percent-rank", "position": { "x": 480, "y": 40 }, "settings": { "length": 168, "low": 10 } },
{ "id": "t1", "type": "core.telegram", "position": { "x": 700, "y": 40 }, "settings": {} }
],
"edges": [
{ "from": "c1.close", "to": "h1.in" },
{ "from": "h1.out", "to": "p1.in" },
{ "from": "p1.low", "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 Value Number series required
Output Rank Number series –
Output low Signal (true/false) –
Output high Signal (true/false) –
  • In messages the value is called “Rank 100”.
  • 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: percentile, percent rank, rank, statistics, yearly low, yearly high, normalize.

Share of the values of the chosen candles before that are less than or equal to the current one, times 100; the current one does not count, empty values do not count. The same formula as ta.percentrank in TradingView.

  • Type in the chain: core.percent-rank · Version 1.0.0 · Category key ind
  • Settings in the chain: length (Candles), low (Low below), high (High above)
  • Pins in the chain: Input in · Output out, low, high
  • Reference tests in the manifest: 2 (with fixed price data: 500 candles of 1h)
  • How a node is built

Version 2026.10.24.21 · Changelog