Skip to content

ta

Types

NameDescription
PivotTypePivot point calculation method for ta.pivot_point_levels.

Properties

accdist

Type: series float

Accumulation/Distribution Line (ADL).

It measures the cumulative flow of money into and out of a security.


iii

Type: series float

Intraday Intensity Index (III).

It measures the flow of volume into and out of a security.


nvi

Type: series float

Negative Volume Index (NVI).

It focuses on days when the volume decreases compared to the previous day.


obv

Type: const float

On-Balance Volume (OBV).

It measures buying and selling pressure as a cumulative indicator that adds volume on up days and subtracts volume on down days.


pvi

Type: const float

Positive Volume Index (PVI).

It focuses on days when the volume increases compared to the previous day.


pvt

Type: const float

Price Volume Trend (PVT).

It combines price and volume to determine the strength of price movements.


tr

Type: series float

True Range (TR) with na handling enabled.

Equivalent to ta.tr(handle_na = true).


vwap

Type: series float

Daily Volume Weighted Average Price using hlc3 as source.

Resets at the start of each day. This is the standard VWAP used on most trading platforms.


wad

Type: const float

Williams Accumulation/Distribution (WAD).

It measures buying and selling pressure by comparing the close price to the high-low range.


wvad

Type: const float

Williams Variable Accumulation/Distribution (WVAAD).

It adjusts the accumulation/distribution calculation by considering the position of the close price within the true range.

Functions

alma

navi
alma(
    series: series float,
    length: series int,
    offset: simple float,
    sigma: simple float,
    floor: simple bool = false
  ): series float

Arnaud Legoux Moving Average.

It uses Gaussian distribution as weights for moving average.

Parameters

NameTypeDefaultDescription
seriesseries floatSeries of values to process.
lengthseries intNumber of bars (length).
offsetsimple floatControls tradeoff between smoothness (closer to 1) and responsiveness (closer to 0).
sigmasimple floatChanges the smoothness of ALMA. The larger sigma the smoother ALMA.
floorsimple boolfalseSpecifies whether the offset calculation is floored before ALMA is calculated.

Returns: series float

See Also: ta.sma, ta.ema


atr

navi
atr(length: simple int): series float

Calculates the Average True Range (ATR) of a financial instrument over a specified length.

Parameters

NameTypeDefaultDescription
lengthsimple intThe number of bars for the ATR calculation.

Returns: series float

See Also: ta.rma, ta.supertrend


bars_since

navi
bars_since(condition: series bool): series int

Counts the number of bars since the last time the condition was true.

If the condition has never been true, it returns na.

Parameters

NameTypeDefaultDescription
conditionseries boolThe boolean condition to check.

Returns: series int — The number of bars since the condition was last true, or na if it has never been true.

See Also: ta.highest_bars, ta.lowest_bars


bb

navi
bb(series: series float, length: series int, mult: simple float)

Bollinger Bands (BB).

Parameters

NameTypeDefaultDescription
seriesseries floatThe input series for BB calculation.
lengthseries intThe number of bars for the calculation.
multsimple floatThe multiplier for the standard deviation bands.

Returns: A tuple of [basis, upper, lower] where basis is the SMA, upper/lower are basis ± mult × stdev.

Examples

navi
let (bbBasis, bbUpper, bbLower) = ta.bb(close, 20, 2.0);
plot(bbBasis, title: "BB Basis", color: Color.ORANGE);
plot(bbUpper, title: "BB Upper", color: Color.BLUE);
plot(bbLower, title: "BB Lower", color: Color.BLUE);

See Also: ta.bbw, ta.sma, ta.stdev


bbw

navi
bbw(source: series float, length: series int, mult: simple float): series float

Bollinger Band Width (BBW).

It measures the width of the Bollinger Bands relative to the moving average.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series for BBW calculation.
lengthseries intThe number of bars for the calculation.
multsimple floatThe multiplier for the standard deviation bands.

Returns: series float — The bandwidth as a percentage: (upper - lower) / basis × 100.

See Also: ta.bb, ta.stdev


cci

navi
cci(source: series float, length: series int): series float

Commodity Channel Index (CCI).

It measures the deviation of the series series from its statistical mean.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series for the calculation.
lengthseries intThe number of bars for the calculation.

Returns: series float

See Also: ta.sma, ta.dev


change

Calculates the difference between the current source value and its value length bars ago.

Useful for measuring momentum or rate of change.

Parameters

NameTypeDefaultDescription
sourceseries intThe integer series to compare.
lengthseries int1Number of bars to look back. Defaults to 1 (previous bar).

Returns: series intsource - source[length].

Calculates the difference between the current source value and its value length bars ago.

Parameters

NameTypeDefaultDescription
sourceseries floatThe float series to compare.
lengthseries int1Number of bars to look back. Defaults to 1 (previous bar).

Returns: series floatsource - source[length].

Detects if a boolean value has changed from its value length bars ago.

Useful for detecting state transitions (e.g., signal flips).

Parameters

NameTypeDefaultDescription
sourceseries boolThe boolean series to compare.
lengthseries int1Number of bars to look back. Defaults to 1 (previous bar).

Returns: series booltrue if the current value differs from the historical value, false otherwise.


chop

navi
chop(length: simple int): series float

Choppiness Index (CHOP).

Quantifies how directional (trending) or sideways (choppy) the market is. Values near 100 signal maximum choppiness; values near the lower bound (≈ 100/log10(length)) signal strong trend. Formula: 100 * log10(sum(ATR(1), length) / (highest_high - lowest_low)) / log10(length).

Parameters

NameTypeDefaultDescription
lengthsimple intThe lookback period (must be >= 2).

Returns: series float


cmf

navi
cmf(length: simple int): series float

Chaikin Money Flow (CMF).

Measures buying and selling pressure over length bars using the Money Flow Multiplier weighted by volume. Positive values indicate accumulation; negative values indicate distribution. Formula: sum(MFV, length) / sum(volume, length) where MFV = ((close - low) - (high - close)) / (high - low) * volume.

Parameters

NameTypeDefaultDescription
lengthsimple intThe number of bars to accumulate.

Returns: series float


cmo

navi
cmo(series: series float, length: series int): series float

Chande Momentum Oscillator (CMO).

It measures the momentum of the series series over the specified length.

Parameters

NameTypeDefaultDescription
seriesseries floatThe input series for the calculation.
lengthseries intThe number of bars for the calculation.

Returns: series float — A value between -100 and 100. Positive values indicate upward momentum, negative indicate downward.

See Also: ta.change


cog

navi
cog(source: series float, length: series int): series float

Center of Gravity (COG).

It identifies the center of gravity of the source series over the specified length.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series for the calculation.
lengthseries intThe number of bars for the calculation.

Returns: series float


correlation

navi
correlation(
    source1: series float,
    source2: series float,
    length: series int
  ): series float

Pearson Correlation Coefficient between two series over the specified length.

Parameters

NameTypeDefaultDescription
source1series floatThe first input series.
source2series floatThe second input series.
lengthseries intThe number of bars for the calculation.

Returns: series float — A value between -1.0 (perfectly negatively correlated) and 1.0 (perfectly positively correlated). 0.0 indicates no linear correlation.


cross

navi
cross(source1: series float, source2: series float): series bool

Detects if source1 has crossed source2 in either direction.

Parameters

NameTypeDefaultDescription
source1series floatThe first series to compare.
source2series floatThe second series to compare.

Returns: series bool

See Also: ta.cross_over, ta.cross_under


cross_over

navi
cross_over(source1: series float, source2: series float): series bool

Detects if source1 has crossed over source2.

Parameters

NameTypeDefaultDescription
source1series floatThe first series to compare.
source2series floatThe second series to compare.

Returns: series bool

Examples

navi
let fastEma = ta.ema(close, 9);
let slowEma = ta.ema(close, 21);
if ta.cross_over(fastEma, slowEma) {
label.new(bar_index, low, "Buy", style: LabelStyle.Up);
}

See Also: ta.cross_under, ta.cross


cross_under

navi
cross_under(source1: series float, source2: series float): series bool

Detects if source1 has crossed under source2.

Parameters

NameTypeDefaultDescription
source1series floatThe first series to compare.
source2series floatThe second series to compare.

Returns: series bool

Examples

navi
let fastEma = ta.ema(close, 9);
let slowEma = ta.ema(close, 21);
if ta.cross_under(fastEma, slowEma) {
label.new(bar_index, high, "Sell", style: LabelStyle.Down);
}

See Also: ta.cross_over, ta.cross


cum

navi
cum(source: series float): series float

Cumulative sum of the source series.

In other words it's a sum of all elements of the source series.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series to accumulate.

Returns: series float


dema

navi
dema(source: series float, length: simple int): series float

Double Exponential Moving Average (DEMA).

Reduces the lag of a standard EMA by subtracting an EMA of the EMA. Formula: 2 * EMA(source, length) - EMA(EMA(source, length), length).

Parameters

NameTypeDefaultDescription
sourceseries floatThe series to smooth.
lengthsimple intThe smoothing period.

Returns: series float

See Also: ta.ema, ta.tema


dev

navi
dev(source: series float, length: series int): series float

Mean Deviation of the source series over the specified length.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series for the calculation.
lengthseries intThe number of bars for the calculation.

Returns: series float


dmi

navi
dmi(di_length: simple int, adx_smoothing: simple int)

Directional Movement Index (DMI).

Parameters

NameTypeDefaultDescription
di_lengthsimple intThe length for Directional Indicator calculation.
adx_smoothingsimple intThe smoothing length for ADX calculation.

Returns: A tuple of [plus_di, minus_di, adx], all expressed as percentages (0–100).

See Also: ta.atr, ta.rma


ema

navi
ema(source: series float, length: simple int): series float

Exponential Moving Average (EMA).

It gives more weight to recent prices to make it more responsive to new information.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series for the calculation.
lengthsimple intThe number of bars for the calculation.

Returns: series float

Examples

navi
let ema12 = ta.ema(close, 12);
let ema26 = ta.ema(close, 26);
plot(ema12, title: "EMA 12", color: Color.GREEN);
plot(ema26, title: "EMA 26", color: Color.RED);

See Also: ta.sma, ta.wma, ta.rma, ta.dema, ta.tema


falling

navi
falling(source: series float, length: series int): series bool

Checks if the source series is falling over the specified length.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series to check.
lengthseries intThe number of bars to check.

Returns: series bool

See Also: ta.rising


highest

Returns the highest value of the high series over the specified length.

Parameters

NameTypeDefaultDescription
lengthseries intThe number of bars to check.

Returns: series float

Returns the highest value of the source series over the specified length.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series to evaluate.
lengthseries intThe number of bars to check.

Returns: series float

Examples

navi
let highestHigh = ta.highest(high, 20);
plot(highestHigh, title: "20-bar High", color: Color.RED,
style: PlotStyle.Stepline);

highest_bars

Returns the number of bars since the highest value of the source series over the specified length.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series to evaluate.
lengthseries intThe number of bars to check.

Returns: series int — A non-positive offset (0 if the highest is the current bar, negative otherwise), or na if any value in the window is na.

Returns the number of bars since the highest value of the high series over the specified length.

Parameters

NameTypeDefaultDescription
lengthseries intThe number of bars to check.

Returns: series int


hma

navi
hma(source: series float, length: simple int): series float

Hull Moving Average (HMA).

It aims to reduce lag while maintaining a smooth curve.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series for the calculation.
lengthsimple intThe number of bars for the calculation.

Returns: series float

See Also: ta.sma, ta.ema, ta.wma


kc

navi
kc(
    series: series float,
    length: simple int,
    mult: simple float,
    use_true_range: simple bool = true
  )

Keltner Channels (KC).

Parameters

NameTypeDefaultDescription
seriesseries floatThe input series for KC calculation.
lengthsimple intThe number of bars for the calculation.
multsimple floatThe multiplier for the channel bands.
use_true_rangesimple booltrueWhether to use True Range.

Returns: A tuple of [basis, upper, lower] where basis is the EMA, upper/lower are basis ± mult × range EMA.

See Also: ta.kcw, ta.ema, ta.atr


kcw

navi
kcw(
    series: series float,
    length: simple int,
    mult: simple float,
    use_true_range: simple bool = true
  ): series float

Keltner Channel Width (KCW).

It measures the width of the Keltner Channels relative to the moving average.

Parameters

NameTypeDefaultDescription
seriesseries floatThe input series for KCW calculation.
lengthsimple intThe number of bars for the calculation.
multsimple floatThe multiplier for the channel bands.
use_true_rangesimple booltrueWhether to use True Range.

Returns: series float — The channel width as a ratio: (upper - lower) / basis.

See Also: ta.kc


linreg

navi
linreg(
    source: series float,
    length: series int,
    offset: simple int
  ): series float

Linear Regression (LINREG).

It fits a linear regression line to the source series over the specified length and returns the value at the given offset.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series for the calculation.
lengthseries intThe number of bars for the regression.
offsetsimple intThe offset for the regression line (future bar offset).

Returns: series float


lowest

Returns the lowest value of the low series over the specified length.

Parameters

NameTypeDefaultDescription
lengthseries intThe number of bars to check.

Returns: series float

Returns the lowest value of the source series over the specified length.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series to evaluate.
lengthseries intThe number of bars to check.

Returns: series float


lowest_bars

Returns the number of bars since the lowest value of the source series over the specified length.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series to evaluate.
lengthseries intThe number of bars to check.

Returns: series int — A non-positive offset (0 if the lowest is the current bar, negative otherwise), or na if any value in the window is na.

Returns the number of bars since the lowest value of the low series over the specified length.

Parameters

NameTypeDefaultDescription
lengthseries intThe number of bars to check.

Returns: series int


macd

navi
macd(
    source: series float,
    fast_length: simple int,
    slow_length: simple int,
    signal_length: simple int
  )

Moving Average Convergence Divergence (MACD).

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series for the calculation.
fast_lengthsimple intThe length for the fast EMA.
slow_lengthsimple intThe length for the slow EMA.
signal_lengthsimple intThe length for the signal line EMA.

Returns: A tuple of [macd_line, signal_line, histogram] where histogram = macd_line − signal_line.

Examples

navi
let (macdLine, signalLine, histLine) = ta.macd(close, 12, 26, 9);
plot(macdLine,   title: "MACD",     color: Color.BLUE);
plot(signalLine, title: "Signal",   color: Color.ORANGE);
plot(histLine, title: "Hist", color: Color.GRAY, style: PlotStyle.Histogram);

See Also: ta.ema


max

navi
max(source: series float): series float

Returns the maximum value of the source series.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series to evaluate.

Returns: series float


median

navi
median(source: series float, length: series int): series float

Returns the median value of the source series over the specified length.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series to evaluate.
lengthseries intThe number of bars for the calculation.

Returns: series float

See Also: ta.mode


mfi

navi
mfi(series: series float, length: series int): series float

Money Flow Index (MFI).

It measures the inflow and outflow of money into an asset over the specified length.

Parameters

NameTypeDefaultDescription
seriesseries floatThe input series for the calculation.
lengthseries intThe number of bars for the calculation.

Returns: series float — A value between 0 and 100. Values above 80 indicate overbought conditions, below 20 indicate oversold.


min

navi
min(source: series float): series float

Returns the minimum value of the source series.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series to evaluate.

Returns: series float


mode

navi
mode(source: series float, length: series int): series float

Returns the mode (most frequently occurring value) of the series series over the specified length.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series to evaluate.
lengthseries intThe number of bars for the calculation.

Returns: series float

See Also: ta.median


mom

navi
mom(source: series float, length: series int): series float

Calculates the momentum of the source series over the specified length.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series for the calculation.
lengthseries intThe number of bars for the calculation.

Returns: series float

See Also: ta.change, ta.roc


percent_rank

navi
percent_rank(source: series float, length: series int): series float

Returns the percentile rank of the current value in the source series over the specified length.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series to evaluate.
lengthseries intThe number of bars for the calculation.

Returns: series float — A value between 0 and 100 indicating the percentage of values that are less than or equal to the current value.


percentile_linear_interpolation

navi
percentile_linear_interpolation(
    source: series float,
    length: series int,
    percentage: simple float
  ): series float

Returns the percentile value of the source series over the specified length using linear interpolation.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series to evaluate.
lengthseries intThe number of bars for the calculation.
percentagesimple floatThe percentile value (0-100).

Returns: series float

See Also: ta.percentile_nearest_rank


percentile_nearest_rank

navi
percentile_nearest_rank(
    source: series float,
    length: series int,
    percentage: simple float
  ): series float

Returns the percentile value of the source series over the specified length using the nearest-rank method.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series to evaluate.
lengthseries intThe number of bars for the calculation.
percentagesimple floatThe percentile value (0-100).

Returns: series float

See Also: ta.percentile_linear_interpolation


pivot_high

Returns the price of the pivot high point.

It returns 'NaN', if there was no pivot high point.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series to analyze.
left_barsseries intThe number of bars to the left to check.
right_barsseries intThe number of bars to the right to check.

Returns: series float — The pivot high price (offset by right_bars), or na if no pivot is found at that point.

Returns the price of the pivot high point.

It returns 'NaN', if there was no pivot high point.

Parameters

NameTypeDefaultDescription
left_barsseries intThe number of bars to the left to check.
right_barsseries intThe number of bars to the right to check.

Returns: series float — The pivot high price (offset by right_bars), or na if no pivot is found at that point.


pivot_low

Returns the price of the pivot low point.

It returns 'NaN', if there was no pivot low point.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series to analyze.
left_barsseries intThe number of bars to the left to check.
right_barsseries intThe number of bars to the right to check.

Returns: series float — The pivot low price (offset by right_bars), or na if no pivot is found at that point.

Returns the price of the pivot low point.

It returns 'NaN', if there was no pivot low point.

Parameters

NameTypeDefaultDescription
left_barsseries intThe number of bars to the left to check.
right_barsseries intThe number of bars to the right to check.

Returns: series float — The pivot low price (offset by right_bars), or na if no pivot is found at that point.


pivot_point_levels

navi
pivot_point_levels(
    type: series PivotType,
    change: series bool
  ): series Array<float>

Returns an array of pivot point levels for the specified pivot type.

The returned array contains up to 11 values in the order: [P, S1, R1, S2, R2, S3, R3, S4, R4, S5, R5]. Levels that do not apply for the chosen type are na.

Parameters

NameTypeDefaultDescription
typeseries PivotTypeThe pivot calculation method.
changeseries booltrue on the first bar of a new pivot period.

Returns: series Array<float>


range

navi
range(source: series float, length: series int): series float

Returns the range (difference between highest and lowest) of the source series over the specified length.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series to evaluate.
lengthseries intThe number of bars for the calculation.

Returns: series float


rci

navi
rci(source: series float, length: simple int): series float

Rank Correlation Index (RCI).

It measures the strength and direction of a linear relationship between the ranks of two variables over the specified length.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series for the calculation.
lengthsimple intThe number of bars for the calculation.

Returns: series float — A value between -100 and 100. +100 means prices are perfectly rising, -100 means perfectly falling.


rising

navi
rising(source: series float, length: series int): series bool

Checks if the source series is rising over the specified length.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series to check.
lengthseries intThe number of bars to check.

Returns: series bool

See Also: ta.falling


rma

navi
rma(source: series float, length: series int): series float

Recursive Moving Average (RMA).

It is similar to an Exponential Moving Average (EMA) but uses a different smoothing factor.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series for the calculation.
lengthseries intThe length for the RMA calculation.

Returns: series float

See Also: ta.ema


roc

navi
roc(source: series float, length: series int): series float

Rate of Change (ROC).

It measures the percentage change between the current value and the value length bars ago.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series for the calculation.
lengthseries intThe number of bars for the comparison.

Returns: series float — The percentage change: 100 × (source − source[length]) / source[length].

See Also: ta.change, ta.mom


rsi

navi
rsi(source: series float, length: series int): series float

Relative Strength Index (RSI).

It measures the speed and change of price movements over the specified length.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series for the calculation.
lengthseries intThe number of bars for the calculation.

Returns: series float — A value between 0 and 100. Values above 70 typically indicate overbought, below 30 oversold.

Examples

navi
let rsiValue = ta.rsi(close, 14);
plot(rsiValue, title: "RSI", color: Color.PURPLE);
hline(70, "Overbought", color: Color.RED);
hline(30, "Oversold", color: Color.GREEN);

See Also: ta.rma, ta.stoch


sar

navi
sar(start: simple float, inc: simple float, max: simple float): series float

Parabolic SAR.

Parameters

NameTypeDefaultDescription
startsimple floatThe starting acceleration factor.
incsimple floatThe increment for the acceleration factor.
maxsimple floatThe maximum acceleration factor.

Returns: series float — The SAR value for the current bar.


sma

navi
sma(source: series float, length: series int): series float

Simple Moving Average (SMA).

Calculates the average of the source series over the specified length.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series for the calculation.
lengthseries intThe number of bars for the calculation.

Returns: series float

Examples

navi
let sma20 = ta.sma(close, 20);
plot(sma20, title: "SMA 20", color: Color.BLUE);

See Also: ta.ema, ta.wma, ta.rma, ta.hma


stdev

navi
stdev(
    source: series float,
    length: series int,
    biased: series bool = true
  ): series float

Calculates the standard deviation of the source series over the specified length.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series for the calculation.
lengthseries intThe number of bars for the calculation.
biasedseries booltrueIf true, function will calculate using a biased estimate of the entire population, if false - unbiased estimate of a sample.

Returns: series float

See Also: ta.variance, ta.bb


stoch

navi
stoch(
    source: series float,
    high: series float,
    low: series float,
    length: series int
  ): series float

Stochastic Oscillator (STOCH).

It compares the source series to its price range over the specified length.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series for the calculation.
highseries floatThe high series for the range.
lowseries floatThe low series for the range.
lengthseries intThe number of bars for the calculation.

Returns: series float — A value between 0 and 100 representing the position of the source within the high-low range.

See Also: ta.rsi, ta.wpr


supertrend

navi
supertrend(factor: series float, atr_period: simple int)

SuperTrend indicator.

Parameters

NameTypeDefaultDescription
factorseries floatThe multiplier for ATR in the SuperTrend calculation.
atr_periodsimple intThe period for ATR calculation.

Returns: A tuple of [super_trend, direction] where direction is -1 (uptrend/bullish) or 1 (downtrend/bearish).

See Also: ta.atr


swma

navi
swma(source: series float): series float

Smoothed Weighted Moving Average (SWMA).

It applies weighted moving average smoothing to the source series.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series for the calculation.

Returns: series float


tema

navi
tema(source: series float, length: simple int): series float

Triple Exponential Moving Average (TEMA).

Further reduces EMA lag using three layers of smoothing. Formula: 3*EMA1 - 3*EMA2 + EMA3 where each EMA is applied to the previous layer's output.

Parameters

NameTypeDefaultDescription
sourceseries floatThe series to smooth.
lengthsimple intThe smoothing period.

Returns: series float

See Also: ta.ema, ta.dema


tr

navi
tr(handle_na: simple bool): series float

True Range (TR).

Measures volatility by accounting for gaps between bars. TR is the greatest of: (high - low), |high - previous close|, |low - previous close|. This captures overnight gaps and limit moves that high-low alone would miss.

Parameters

NameTypeDefaultDescription
handle_nasimple boolIf true and previous close is na (first bar), uses high - low as TR. If false, returns na in that case.

Returns: series float


tsi

navi
tsi(
    source: series float,
    short_length: simple int,
    long_length: simple int
  ): series float

True Strength Index (TSI).

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series for the calculation.
short_lengthsimple intThe short EMA length for TSI calculation.
long_lengthsimple intThe long EMA length for TSI calculation.

Returns: series float — A value between -1.0 and 1.0 representing momentum strength and direction.


value_when

navi
value_when(
    condition: series bool,
    source: series T,
    occurrence: simple int
  ): series T

Returns the value of the source series at the time when the condition was true for the specified occurrence.

The occurrence parameter selects which match to return: 0 for the most recent, 1 for the one before that, etc.

Parameters

NameTypeDefaultDescription
conditionseries boolThe condition to evaluate.
sourceseries TThe series to retrieve the value from.
occurrencesimple intWhich occurrence to retrieve (0 for the most recent).

Returns: series T — The source value at the specified occurrence, or na if fewer matches have occurred.


variance

navi
variance(
    source: series float,
    length: series int,
    biased: series bool = true
  ): series float

Variance of the source series over the specified length.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series for the calculation.
lengthseries intThe number of bars for the calculation.
biasedseries booltrueIf true, uses biased estimation; if false, uses unbiased estimation.

Returns: series float

See Also: ta.stdev


vhf

navi
vhf(source: series float, length: simple int): series float

Vertical Horizontal Filter (VHF).

Identifies whether the market is trending or ranging by comparing the price range to the sum of absolute bar-to-bar changes. Higher values indicate a stronger trend; lower values indicate choppiness. Formula: (highest - lowest) / sum(|change|, length).

Parameters

NameTypeDefaultDescription
sourceseries floatThe price series to analyze.
lengthsimple intThe lookback period.

Returns: series float


vwap

Volume Weighted Average Price with optional standard deviation bands.

VWAP accumulates since the anchor resets (typically daily) and weights price by volume, giving a benchmark that institutions often use. Returns a tuple of [vwap, upper_band, lower_band] where bands are vwap +/- stdev_mult * stddev.

Parameters

NameTypeDefaultDescription
sourceseries floatThe price series (commonly hlc3).
anchorseries boolWhen true, resets the VWAP calculation. Typically timeframe.change("1D").
stdev_multseries floatMultiplier for standard deviation bands. Use na to disable bands.

Returns: A tuple of [vwap, upper_band, lower_band]. Bands are na when stdev_mult is na.

Volume Weighted Average Price without bands.

Parameters

NameTypeDefaultDescription
sourceseries floatThe price series (commonly hlc3).
anchorseries booltimeframe.change("1D")When true, resets the VWAP. Defaults to daily reset (timeframe.change("1D")).

Returns: series float — A single VWAP series that resets when anchor is true.


vwma

navi
vwma(source: series float, length: series int): series float

Volume Weighted Moving Average (VWMA).

It gives more weight to periods with higher volume.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series for the calculation.
lengthseries intThe number of bars for the calculation.

Returns: series float


wma

navi
wma(source: series float, length: series int): series float

Weighted Moving Average (WMA).

It assigns more weight to recent data points.

Parameters

NameTypeDefaultDescription
sourceseries floatThe input series for the calculation.
lengthseries intThe number of bars for the calculation.

Returns: series float

See Also: ta.sma, ta.ema, ta.hma


wpr

navi
wpr(length: series int): series float

Williams Percent Range (WPR).

It measures overbought and oversold levels by comparing the close price to the high-low range over the specified length.

Parameters

NameTypeDefaultDescription
lengthseries intThe number of bars for the calculation.

Returns: series float — A value between -100 and 0. Values above -20 indicate overbought, below -80 indicate oversold.

See Also: ta.stoch