Relative Strength Index (rsi)

[[rsi]] is a momentum oscillator bounded between 0 and 100 that summarizes the balance between recent upward and downward moves in its source. It produces a numeric series whose position on that scale shows which side dominates over the horizon defined by length.

The higher the RSI, the more weight recent gains carry in that balance; the lower it is, the more weight recent losses carry. Its movement shows how this balance changes from one candle to the next. The source can be a price or the output of another indicator.

Block declaration

A strategy can contain multiple [[rsi]] blocks. Each block outputs one numeric series representing the RSI value.

Examples

Minimal setup

This block computes an RSI on the close series. Since length is omitted, the block uses the default length 14.

[[rsi]]
id = "rsi"

Custom fixed setup

This block uses a custom value for length.

[[rsi]]
id     = "rsi"
length = 21

Finding the optimal length

This block explores a range of values for length on the hlc3 source to identify the best-performing length.

[[rsi]]
id           = "rsi"
source       = "hlc3"
length.start = 8
length.stop  = 30
length.step  = 2

Finding overbought and oversold zones

This example combines one [[rsi]] block with two [[constant]] blocks to explore different overbought and oversold zones. It tests which thresholds best fit the symbol, timeframe, and strategy logic.

[[constant]]
id    = "overbought"
start = 65
stop  = 80

[[constant]]
id    = "oversold"
start = 20
stop  = 35

[[rsi]]
id     = "rsi"
length = 14

[[condition]]
id            = "rsi_buy_signal"
condition     = "rsi < oversold"
next_block_id = "..."

[[condition]]
id            = "rsi_sell_signal"
condition     = "rsi > overbought"
next_block_id = "..."

Parameters

ParameterDescription
id
 String
 Required
Unique name for the RSI series.
source
 String
 or Array
 Optional
Input series used for the calculation.
Accepted forms: source = "hl2" or source = ["close", "hl2"].
Each value can be either a standard price source (open, close, high, low, hl2, hlc3, ohlc4, hlcc4, volume) or the id of another indicator.
Default value: "close"
length
 Integer
 Optional
Observation window for the RSI; must be ≥ 2 when provided.
If length is omitted, the default value is 14.

Usage:
• Fixed: length = value
• Grid search:
 – length.start = min_value
 – length.stop = max_value
 – length.step = value (optional, default 1)
symbol
 String
 or Array
 Optional
Market symbol(s) used when source only consists of standard prices (open, close, high, low, hl2, hlc3, ohlc4, hlcc4, volume).
If source mixes standard prices and indicator ids, symbol is applied only to combinations based on standard prices.
If source contains only indicator ids, symbol is ignored.
When omitted, the block inherits the [backtest] symbol.
For symbol format, arrays, and alignment rules, see Exchanges, Symbols and Timeframes.
timeframe
 String
 or Array
 Optional
Timeframe on which this indicator is computed.
If timeframe is omitted, the computation uses the grid’s main timeframe defined in [backtest].
For accepted formats and timeframe alignment rules, see Exchanges, Symbols and Timeframes.

Available variables

Use the identifiers below directly in your expressions. The RSI block exposes one numeric series and its parameters (length, source, symbol, timeframe).

Assume the block is configured as:

[[rsi]]
id = "rsi"

Then:

VariableDescription
rsi or
rsi[0]
Decimal
Current RSI value.
rsi[n]
Decimal
RSI value from n candles ago.
rsi.length
Decimal
RSI length currently in use (works with fixed or grid‑searched values).
rsi.source
String
Name of the input series (e.g., close, hlc3, or another indicator id).
rsi.symbol
String
Symbol used (display format).
rsi.timeframe
String
Timeframe used for this RSI.

Notes

  • Numeric variables can be combined freely in formulas (arithmetic, comparisons, logical operators).
  • Text variables are strings and are intended for equality/inequality checks only (e.g., rsi_std.timeframe == "60").