Trend indicators help identify direction and strength, including directional movement systems, trend-following tools, and comprehensive trend analysis frameworks.
| System | Description |
|---|---|
| Directional Movement (ADX) | Measures trend strength using directional indicators. ADX above 25 indicates a strong trend; below 20 often suggests a range. |
| Ichimoku Cloud | Comprehensive 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 SAR | Stop-and-reverse indicator that provides dynamic stop levels and trend reversal signals. |
| Function | Description |
|---|---|
adx | Average Directional Index — trend strength plus +DI/-DI |
ichimoku | Ichimoku Cloud — multi-component trend system |
macd | Moving Average Convergence Divergence |
psar | Parabolic SAR — trailing stop and reverse |
supertrend | ATR trailing stop with direction stream (v3) |
bb / keltner | Bollinger Bands / Keltner Channels as streams (v3) |
tr / atr / stdev / variance | Volatility 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.
| Parameter | Type | Description |
|---|---|---|
source | TimeSeries | Source data series |
period | number | Number 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.
| Parameter | Type | Description |
|---|---|---|
source | TimeSeries | Source data series |
conversionPeriod | number | Tenkan-sen period (default: 9) |
basePeriod | number | Kijun-sen period (default: 26) |
laggingSpanPeriod | number | Senkou Span B period (default: 52) |
displacement | number | Cloud 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.
| Parameter | Type | Description |
|---|---|---|
source | TimeSeries | Source data series |
fastPeriod | number | Fast EMA period (default: 12) |
slowPeriod | number | Slow EMA period (default: 26) |
signalPeriod | number | Signal 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.
| Parameter | Type | Description |
|---|---|---|
source | TimeSeries | Source data series |
start | number | Initial acceleration factor (default: 0.02) |
increment | number | Acceleration increment (default: 0.02) |
maxValue | number | Maximum 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)
| Function | Returns |
|---|---|
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
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.