# Relative Strength Index

ICE Data Services -

rsi() Built-in Study Functions

The Relative Strength Index (RSI) is designed to indicate a market's current strength or weakness depending on where prices close during a given period. It is based on the premise that higher closes indicate strong markets and lower closes indicate weak markets. The RSI is displayed as three lines, the RSI and two moving averages of the RSI. The RSI is calculated by finding the percentage of positive closes (the current close is higher than the previous close) to negative closes (the current close is lower than the previous close).

Syntax
rsi( nLength [, Series | sym() | inv() ][, nBarIndex ] )

Parameters
Parameter: Description: Default:
nLength Required. Number of periods to use for calculation.

n/a Series or
sym() or
inv()
[Optional]  Series Object or function of sym() or inv() to determine symbol/interval source for the study.

Chart's sym/inv nBarIndex [Optional]  Bar index of series to retrieve.

n/a

Return Value(s)

Returns a Series Object when nBarIndex is not specified.

Returns a single value when nBarIndex is specified.

Notes
Only available in versions 7.9 or later.

Code Examples
Single Line Indicator:
 `function main() { return rsi(14);}`

Single Line Study-on-Study Indicator:
 `function main() { return rsi(14, hl2() );}`

Retrieve single values:
 ``function main() { var nValue_0 = rsi(14, 0); // Current Bar Index var nValue_1 = rsi(14, -1); // Prior Bar Index return new Array(nValue_0, nValue_1);}``

Initialize a Series Object:
 ``var xStudy = null;function main() { if (xStudy == null) { xStudy = rsi(14); } // retrieve single values for conditional statements var nValue_0 = xStudy.getValue(0); // Current Bar Index value var nValue_1 = xStudy.getValue(-1); // Prior Bar Index value return nValue_0; // Plot Current Bar Index Value}``

Initialize a Series Object based on an external interval:
 ``var xStudy = null;var bInit = false; // Initialization flagfunction main() { if (bInit == false) { xStudy = rsi(14, inv(20)); // 20-min interval bInit = true; } // retrieve single values for conditional statements var nValue_0 = xStudy.getValue(0); // Current Bar Index value var nValue_1 = xStudy.getValue(-1); // Prior Bar Index value return getSeries(xStudy); // Synchronized Series plot}``

Initialize a Series Object based on an external symbol and interval:
 ``var xStudy = null;var bInit = false; // Initialization flagfunction main() { if (bInit == false) { xStudy = rsi(14, sym("IBM,20")); // IBM 20-min interval bInit = true; } // retrieve single values for conditional statements var nValue_0 = xStudy.getValue(0); // Current Bar Index value var nValue_1 = xStudy.getValue(-1); // Prior Bar Index value return getSeries(xStudy); // Synchronized Series plot}``