Functions

Trend Indicators

ADX, Ichimoku Cloud, MACD, and Parabolic SAR — trend strength, momentum, and reversal indicators.

Trend indicators help identify direction and strength, including directional movement systems, trend-following tools, and comprehensive trend analysis frameworks.

SystemDescription
Directional Movement (ADX)Measures trend strength using directional indicators. ADX above 25 indicates a strong trend; below 20 often suggests a range.
Ichimoku CloudComprehensive trend analysis system for support/resistance, trend direction, and momentum signals.
Moving Average Convergence Divergence (MACD)Trend and momentum system based on moving-average convergence/divergence.
Parabolic SARStop-and-reverse indicator that provides dynamic stop levels and trend reversal signals.
FunctionDescription
adxAverage Directional Index — trend strength plus +DI/-DI
ichimokuIchimoku Cloud — multi-component trend system
macdMoving Average Convergence Divergence
psarParabolic SAR — trailing stop and reverse
supertrendATR trailing stop with direction stream (v3)
bb / keltnerBollinger Bands / Keltner Channels as streams (v3)
tr / atr / stdev / varianceVolatility primitives (v3)

adx - Average Directional Index

adx(source: TimeSeries, period?: number = 14): [number, number, number] — Average Directional Index. Measures trend strength and returns directional movement values.

ParameterTypeDescription
sourceTimeSeriesSource data series
periodnumberNumber of periods (default: 14)

Returns: [number, number, number][ADX, DI+, DI-] values.

var adxData = adx(source=trade, period=14);

ichimoku - Ichimoku Cloud

ichimoku(source: TimeSeries, conversionPeriod?: number = 9, basePeriod?: number = 26, laggingSpanPeriod?: number = 52, displacement?: number = 26): [number, number, number, number, number] — Ichimoku Cloud trend analysis.

ParameterTypeDescription
sourceTimeSeriesSource data series
conversionPeriodnumberTenkan-sen period (default: 9)
basePeriodnumberKijun-sen period (default: 26)
laggingSpanPeriodnumberSenkou Span B period (default: 52)
displacementnumberCloud displacement (default: 26)

Returns: [number, number, number, number, number][Tenkan, Kijun, Senkou A, Senkou B, Chikou] values.

var ichimokuData = ichimoku(source=trade, conversionPeriod=9, basePeriod=26, laggingSpanPeriod=52, displacement=26);

macd - Moving Average Convergence Divergence

macd(source: TimeSeries, fastPeriod?: number = 12, slowPeriod?: number = 26, signalPeriod?: number = 9): [number, number, number] — Moving Average Convergence Divergence.

ParameterTypeDescription
sourceTimeSeriesSource data series
fastPeriodnumberFast EMA period (default: 12)
slowPeriodnumberSlow EMA period (default: 26)
signalPeriodnumberSignal line period (default: 9)

Returns: [number, number, number][MACD line, Signal line, Histogram].

var macdData = macd(source=trade, fastPeriod=12, slowPeriod=26, signalPeriod=9);

psar - Parabolic SAR

psar(source: TimeSeries, start?: number = 0.02, increment?: number = 0.02, maxValue?: number = 0.2): number — Parabolic SAR stop-and-reverse indicator.

ParameterTypeDescription
sourceTimeSeriesSource data series
startnumberInitial acceleration factor (default: 0.02)
incrementnumberAcceleration increment (default: 0.02)
maxValuenumberMaximum acceleration (default: 0.2)

Returns: number — PSAR value for the current bar.

var psarData = psar(source=trade, start=0.02, increment=0.02, maxValue=0.2);

supertrend - ATR trailing stop (v3)

supertrend(factor?: number = 3, atrPeriod?: number = 10) — the ATR-banded trailing stop, returned as streams: .line (the stop) and .direction (1 long regime, -1 short regime).

//@version=2
timeseries st = supertrend(factor=3, atrPeriod=10)
plotLine(st.line, colorIndex=st.direction > 0 ? 0 : 1, colors=["#16a34a", "#dc2626"], label=["SuperTrend"])
if (crossover(st.direction, 0)) {
  plotShape(low, shape="arrowUp", location="belowBar", colors=["#16a34a"], width=4)
}

bb / keltner - bands as streams (v3)

bb(source, period?, mult?, priceIndex?) and keltner(source, period?, mult?, atrPeriod?, priceIndex?) return .basis / .upper / .lower streams, ready for fillBetween:

//@version=2
timeseries trade = ohlcv(symbol=currentSymbol, exchange=currentExchange);
timeseries bands = bb(source=trade.close, period=20, mult=2)

plotLine(bands.upper, colors=["#64748b"], width=1)
plotLine(bands.lower, colors=["#64748b"], width=1)
fillBetween(bands.upper, bands.lower, "#2563eb", 0.12)

tr / atr / stdev / variance - volatility primitives (v3)

FunctionReturns
tr(source)True Range of the current bar
atr(period?, source?)Wilder-smoothed Average True Range
stdev(source, period?)Rolling standard deviation
variance(source, period?)Rolling variance

These are the building blocks the band indicators use internally; they are exposed so custom volatility logic composes the same way.

Best Practices

ADX Interpretation
ADX above 25 indicates a strong trend. Use +DI/-DI crossovers for direction, but only when ADX is rising for best results.
MACD Divergences
Watch for divergences between MACD and price. When price makes new highs but MACD does not, trend weakening is likely.
Ichimoku Cloud Signals
Price above the cloud indicates an uptrend; below the cloud suggests a downtrend. Tenkan-Kijun crossovers provide entry signals, especially when aligned with cloud position.
PSAR Parameters
Lower acceleration values (0.01-0.02) provide smoother signals with fewer reversals. Higher values (0.05+) are more sensitive but generate more false signals in ranging markets.