Exciting Update: Version 1.0.1 is now available, introducing the high-performance BacktestX Custom Script Editor. Read more

Indicators Reference

Detailed schema configurations and built-in calculation subroutines for standard indicators.

Active Indicators Schema (ctx.indicators)

Execute standard technical indicator calculations on-demand. You can now use the global ta.* namespace (e.g., ta.sma, ta.crossover) for a simpler, Pine Script-like syntax, which aliases directly to these ctx.* methods.

const indicator = {
  type: "rsi",               // Indicator type key
  params: { period: 14 },     // Calculation parameters
  color: "#9c27b0",          // Default display color
  enabled: true,             // Active state toggle
  style: {                    // Thickness, opacity, and shape overrides
    plotColor: "#9c27b0",
    plotThickness: 2
  }
};

Standard Indicators Specifications

Type Key Indicator Name Parameters Schema Styling Override References
"sma" Simple Moving Avg { period } plotShow, plotColor, plotThickness, plotStyle
"ema" Exponential Moving Avg { period } plotShow, plotColor, plotThickness, plotStyle
"wma" Weighted Moving Avg { period } plotShow, plotColor, plotThickness, plotStyle
"dema" Double Exp Moving Avg { period } plotShow, plotColor, plotThickness, plotStyle
"tema" Triple Exp Moving Avg { period } plotShow, plotColor, plotThickness, plotStyle
"bb" Bollinger Bands { period, mult } midShow, midColor, upperShow, upperColor, fillShow, fillColor
"vwap" VWAP {} plotShow, plotColor, plotThickness, plotStyle
"ichimoku" Ichimoku Cloud {} tenkanShow, tenkanColor, kijunShow, kijunColor, cloudShow, cloudUpColor
"psar" Parabolic SAR { step, maxStep } dotsShow, dotsColor, dotsSize, dotsOpacity
"rsi" Relative Strength Index { period } plotShow, plotColor, upperLevel, lowerLevel
"macd" MACD { fast, slow, sig } macdShow, macdColor, signalShow, signalColor, histShow, histColor
"vol" Volume {} volShow, volUpColor, volDownColor, maShow, maColor
"stoch" Stochastic Oscillator { kPeriod, dPeriod } kShow, kColor, dShow, dColor, upperLevel, lowerLevel
"atr" Average True Range { period } plotShow, plotColor, plotThickness, plotStyle
"cci" Commodity Channel Index { period } plotShow, plotColor, upperLevel, lowerLevel
"roc" Rate of Change { period } plotShow, plotColor, plotThickness, plotStyle
"adx" Avg Directional Index { period } adxShow, adxColor, plusDiShow, plusDiColor, minusDiShow, minusDiColor
"obv" On Balance Volume {} plotShow, plotColor, plotThickness, plotStyle

Exposed Indicator Math APIs (ta.* / ctx.*)

Execute standard technical indicator calculations on-demand. These functions accept raw historical data arrays or bar arrays, and return calculated history arrays of matching lengths.

Method Signature Return Type & Value Shape
ta.sma(dataArray, period) Array<number|null> - Simple Moving Average
ta.ema(dataArray, period) Array<number|null> - Exponential Moving Average
ta.wma(dataArray, period) Array<number|null> - Weighted Moving Average
ta.dema(dataArray, period) Array<number|null> - Double Exponential Moving Average
ta.tema(dataArray, period) Array<number|null> - Triple Exponential Moving Average
ta.rsi(dataArray, period) Array<number|null> - Relative Strength Index
ta.macd(dataArray, fast, slow, signal) { line: Array, signal: Array, hist: Array } - MACD Components
ta.bollingerBands(dataArray, period, mult) { mid: Array, upper: Array, lower: Array } - Bollinger Bands Bands
ctx.vwap(barsArray) Array<number|null> - Volume Weighted Average Price
ctx.stochastic(barsArray, kPeriod, dPeriod) { kVals: Array, dVals: Array } - Stochastic Oscillator
ctx.atr(barsArray, period) Array<number|null> - Average True Range
ctx.cci(barsArray, period) Array<number|null> - Commodity Channel Index
ctx.roc(dataArray, period) Array<number|null> - Rate of Change (percent)
ctx.psar(barsArray, step, maxStep) Array<number|null> - Parabolic SAR points
ctx.hma(dataArray, period) Array<number|null> - Hull Moving Average
ctx.alma(dataArray, period, offset, sigma) Array<number|null> - Arnaud Legoux Moving Average
ctx.lsma(dataArray, period, offset) Array<number|null> - Least Squares Moving Average
ctx.rma(dataArray, period) Array<number|null> - Relative Moving Average
ctx.stdev(dataArray, period) Array<number|null> - Standard Deviation
ctx.variance(dataArray, period) Array<number|null> - Variance
ctx.covariance(dataArray1, dataArray2, period) Array<number|null> - Covariance
ctx.correlation(dataArray1, dataArray2, period) Array<number|null> - Correlation Coefficient
ctx.median(dataArray, period) Array<number|null> - Rolling Median
ctx.mode(dataArray, period) Array<number|null> - Rolling Mode
ctx.kc(dataArray, period, multiplier, useTrueRange) { mid: Array, upper: Array, lower: Array } - Keltner Channels
ctx.donchian(period) { basis: Array, upper: Array, lower: Array } - Donchian Channels
ctx.supertrend(factor, period) { supertrend: Array, direction: Array } - Supertrend Line & Direction
ctx.stoch(source, highs, lows, period) Array<number|null> - Stochastic Oscillator series
ctx.cmf(period) Array<number|null> - Chaikin Money Flow
ctx.wpr(period) Array<number|null> - Williams %R
ctx.tsi(dataArray, short_length, long_length) Array<number|null> - True Strength Index
ctx.ao(period1, period2) Array<number|null> - Awesome Oscillator
ctx.linreg(dataArray, period, offset) Array<number|null> - Linear Regression Curve
ctx.slope(dataArray, period) Array<number|null> - Linear Regression Slope
ctx.r2(dataArray, period) Array<number|null> - Coefficient of Determination (R2)
ctx.percentrank(dataArray, period) Array<number|null> - Percent Rank (0-100)
ctx.ichimoku(barsArray) { tenkan: Array, kijun: Array, senkouA: Array, senkouB: Array, chikou: Array } - Ichimoku Components
ctx.adx(barsArray, period) { adx: Array, plusDI: Array, minusDI: Array } - ADX Components
ctx.obv(barsArray) Array<number> - On Balance Volume series