Every function in indicato, generated from the source. Do not edit this file β
run node scripts/build-docs.mjs instead.
89 functions. The confidence column says how firmly each one is pinned down; accuracy notes has the detail.
That document counts 73 verified series where this table counts 58 verified
functions β not a contradiction. A function like dmi returns three series
(+DI, βDI and ADX) and each was checked separately.
| status | meaning |
|---|---|
| β exact | pinned to the value, across 6,126 bars of real market history |
| π‘ scaled | pinned to the shape; a documented scaling or parameter convention differs |
| βͺ by definition | follows its published formula, held by the property tests |
| π΄ ambiguous | the indicator itself is under-specified and implementations diverge |
| function | signature | status |
|---|---|---|
ac |
(bars) |
β exact |
adl |
(bars) |
β exact |
alligator |
(bars) |
π‘ scaled |
alma |
(src, n, offset = 0.85, sigma = 6) |
β exact |
ao |
(bars) |
β exact |
aroon |
(bars, n = 25) |
β exact |
atr |
(bars, n = 14) |
β exact |
bbPercent |
(bars, n = 20, mult = 2) |
β exact |
bbWidth |
(bars, n = 20, mult = 2) |
π‘ scaled |
beta |
(a, b, n = 20) |
βͺ by definition |
bollinger |
(bars, n = 20, mult = 2) |
β exact |
bop |
(bars) |
β exact |
cci |
(bars, n = 20) |
β exact |
chaikinOsc |
(bars, fast = 3, slow = 10) |
β exact |
chandeKrollStop |
(bars, p = 10, x = 1, q = 9) |
βͺ by definition |
chandelierExit |
(bars, n = 22, mult = 3) |
π‘ scaled |
chop |
(bars, n = 14) |
β exact |
cmf |
(bars, n = 20) |
β exact |
cmo |
(src, n = 14) |
β exact |
coppock |
(src, a = 14, b = 11, n = 10) |
β exact |
correlation |
(a, b, n = 20) |
βͺ by definition |
crsi |
(bars, rsiLen = 3, streakLen = 2, rankLen = 100) |
π‘ scaled |
dema |
(src, n) |
β exact |
dmi |
(bars, n = 14) |
β exact |
donchian |
(bars, n = 20, prior = false) |
βͺ by definition |
dpo |
(src, n = 20) |
β exact |
elderRay |
(bars, n = 13) |
β exact |
ema |
(values, n) |
β exact |
emv |
(bars, n = 14) |
π‘ scaled |
envelopes |
(bars, n = 20, pct = 2.5) |
βͺ by definition |
fisher |
(bars, n = 9) |
π‘ scaled |
forceIndex |
(bars, n = 13) |
β exact |
frama |
(bars, n = 16) |
βͺ by definition |
gator |
(bars) |
βͺ by definition |
historicalVolatility |
(bars, n = 20, barsPerYear = 252) |
βͺ by definition |
hma |
(src, n) |
β exact |
ichimoku |
(bars, conv = 9, base = 26, spanB = 52) |
βͺ by definition |
kama |
(src, n = 10, fast = 2, slow = 30) |
β exact |
keltner |
(bars, n = 20, mult = 2) |
βͺ by definition |
klinger |
(bars, fast = 34, slow = 55, sig = 13) |
π΄ ambiguous |
kst |
(src) |
π‘ scaled |
linreg |
(src, n = 14) |
β exact |
linregSlope |
(src, n = 14) |
β exact |
macd |
(bars, fast = 12, slow = 26, signal = 9) |
β exact |
massIndex |
(bars, n = 25, e = 9) |
β exact |
mcginley |
(src, n = 14) |
β exact |
median |
(src, n = 14) |
β exact |
mfi |
(bars, n = 14) |
β exact |
mode |
(src, n = 20, dp = 1) |
βͺ by definition |
momentum |
(src, n = 10) |
β exact |
natr |
(bars, n = 14) |
β exact |
nvi |
(bars) |
π‘ scaled |
obv |
(bars) |
β exact |
pivotPoints |
(bars) |
βͺ by definition |
po |
(src, fast = 12, slow = 26) |
β exact |
ppo |
(src, fast = 12, slow = 26) |
β exact |
psar |
(bars, step = 0.02, max = 0.2) |
π‘ scaled |
pvi |
(bars) |
π‘ scaled |
pvt |
(bars) |
β exact |
roc |
(src, n = 12) |
β exact |
rsi |
(bars, n = 14) |
β exact |
rvi |
(bars, n = 10) |
β exact |
rwi |
(bars, n = 14) |
π‘ scaled |
sma |
(values, n) |
β exact |
starc |
(bars, n = 15, atrLen = 15, mult = 2) |
βͺ by definition |
stc |
(src, fast = 23, slow = 50, cycle = 10) |
β exact |
stochastic |
(bars, n = 14, k = 3, d = 3) |
β exact |
stochRsi |
(bars, n = 14, k = 3, d = 3) |
π‘ scaled |
supertrend |
(bars, n = 10, mult = 3) |
β exact |
t3 |
(src, n = 5, v = 0.7) |
β exact |
tema |
(src, n) |
β exact |
trima |
(src, n) |
β exact |
trix |
(src, n = 15) |
β exact |
tsf |
(src, n = 14) |
β exact |
tsi |
(src, long = 25, short = 13) |
β exact |
ulcerIndex |
(bars, n = 14) |
β exact |
ultosc |
(bars, s = 7, m = 14, l = 28) |
β exact |
variance |
(src, n = 14) |
β exact |
vidya |
(src, n = 14, smooth = 20) |
π‘ scaled |
volumeOsc |
(bars, fast = 5, slow = 10) |
π‘ not comparable |
vortex |
(bars, n = 14) |
β exact |
vroc |
(bars, n = 14) |
β exact |
vwap |
(bars) |
βͺ by definition |
vwma |
(bars, n) |
β exact |
williamsFractals |
(bars, w = 2) |
βͺ by definition |
williamsR |
(bars, n = 14) |
β exact |
wma |
(values, n) |
β exact |
yearBand |
(bars, n = 252) |
βͺ by definition |
zlema |
(src, n) |
β exact |
import { ac } from "indicato";
ac(bars)
β exact β Pinned to the value across 6,126 bars of real market history.
import { adl } from "indicato";
adl(bars)
β exact β Pinned to the value across 6,126 bars of real market history.
Accumulation/Distribution β Chaikinβs money flow multiplier, accumulated.
import { alligator } from "indicato";
alligator(bars)
π‘ scaled β Ratio 0.997, correlation 0.9995 against pandas-ta β a smoothed-average variant.
Bill Williamsβ Alligator: three displaced smoothed averages. The displacement is FORWARD, which on a chart is a line drawn ahead of price β so for a signal each is read from its own past, never from a bar that has not happened.
import { alma } from "indicato";
alma(src, n, offset, sigma)
β exact β Pinned to the value across 6,126 bars of real market history.
Arnaud Legoux β a gaussian window offset toward the recent end.
import { ao } from "indicato";
ao(bars)
β exact β Pinned to the value across 6,126 bars of real market history.
Awesome and Accelerator β Bill Williams, on the barβs midpoint.
import { aroon } from "indicato";
aroon(bars, n)
β exact β Pinned to the value across 6,126 bars of real market history.
Aroon β Chande. How long since the windowβs high and low, as a percentage. Both at 100 means the extreme is today.
import { atr } from "indicato";
atr(bars, n)
β exact β Pinned to the value across 6,126 bars of real market history.
Exported since Keltner needs it and a reader may want it on its own: the size of a typical session, in rupees. TRUE range, not high minus low β a share that gapped 100 to 130 overnight then traded 130-132 had a 2-rupee day by high minus low and a 32-rupee day in truth.
import { bbPercent } from "indicato";
bbPercent(bars, n, mult)
β exact β Pinned to the value across 6,126 bars of real market history.
Bollinger %B and bandwidth β where price sits in the band, and how wide it is.
import { bbWidth } from "indicato";
bbWidth(bars, n, mult)
π‘ scaled β Γ100 against the OpenAlgo SDK β a percentage here, a fraction there. Percentage matches the TradingView convention.
import { beta } from "indicato";
beta(a, b, n)
βͺ by definition β Follows its published formula. Held by the property tests β causality, warmup, range and flat-series identity.
import { bollinger } from "indicato";
bollinger(bars, n, mult)
β exact β Pinned to the value across 6,126 bars of real market history.
import { bop } from "indicato";
bop(bars)
β exact β Pinned to the value across 6,126 bars of real market history.
Balance of Power β where the close finished relative to the open, scaled by range.
import { cci } from "indicato";
cci(bars, n)
β exact β Pinned to the value across 6,126 bars of real market history.
Commodity Channel Index β Donald Lambert. The 0.015 scales it so roughly 70-80% of readings fall within Β±100; it is his, not a tuning knob.
import { chaikinOsc } from "indicato";
chaikinOsc(bars, fast, slow)
β exact β Pinned to the value across 6,126 bars of real market history.
import { chandeKrollStop } from "indicato";
chandeKrollStop(bars, p, x, q)
βͺ by definition β Follows its published formula. Held by the property tests β causality, warmup, range and flat-series identity.
Chande Kroll stop β the same idea with a two-stage lookback.
import { chandelierExit } from "indicato";
chandelierExit(bars, n, mult)
π‘ scaled β Ratio 0.976 against pandas-ta β a different ATR variant inside the stop.
Chandelier Exit β Le Beau. A stop hung from the highest high since entry.
import { chop } from "indicato";
chop(bars, n)
β exact β Pinned to the value across 6,126 bars of real market history.
Choppiness β Dreiss. 100 means directionless, 0 means a clean trend.
import { cmf } from "indicato";
cmf(bars, n)
β exact β Pinned to the value across 6,126 bars of real market history.
Chaikin Money Flow, and the Chaikin Oscillator over the A/D line.
import { cmo } from "indicato";
cmo(src, n)
β exact β Pinned to the value across 6,126 bars of real market history.
Chande Momentum Oscillator β RSI keeping its sign, so it swings -100..100.
WILDER-SMOOTHED, not a plain window sum. The first version here summed raw up and down moves over n bars, which is a fair reading of Chandeβs description and is not what anyone else computes: TA-Lib smooths them the way RSI does, which makes CMO exactly 2*RSI - 100. Verified against TA-Lib to 0.000000000 on 6,126 bars. A CMO that disagrees with every chart a reader has ever seen is a wrong CMO, whatever the book says.
import { coppock } from "indicato";
coppock(src, a, b, n)
β exact β Pinned to the value across 6,126 bars of real market history.
Coppock Curve β a 10-period WMA of two rates of change. Built for monthly bars.
import { correlation } from "indicato";
correlation(a, b, n)
βͺ by definition β Follows its published formula. Held by the property tests β causality, warmup, range and flat-series identity.
Rolling correlation and beta of the close against its own lagged self β the two-series versions need a benchmark the chart does not carry.
import { crsi } from "indicato";
crsi(bars, rsiLen, streakLen, rankLen)
π‘ scaled β 1.3% from the OpenAlgo SDK, correlation 1.0000 β the rank componentβs window edge.
Connors RSI β Connors and Alvarez. Three ideas averaged: a very short RSI, an RSI of the streak of consecutive up or down closes, and where todayβs return ranks against the last hundred. Built for mean reversion over two or three days.
import { dema } from "indicato";
dema(src, n)
β exact β Pinned to the value across 6,126 bars of real market history.
Double and triple exponential β Patrick Mulloy, 1994. Subtracting the lag of an EMA of an EMA is the whole trick.
import { dmi } from "indicato";
dmi(bars, n)
β exact β Pinned to the value across 6,126 bars of real market history.
import { donchian } from "indicato";
donchian(bars, n, prior)
βͺ by definition β Follows its published formula. Held by the property tests β causality, warmup, range and flat-series identity.
import { dpo } from "indicato";
dpo(src, n)
β exact β Pinned to the value across 6,126 bars of real market history.
Detrended Price Oscillator β price against an average displaced back by half the period, which removes the trend rather than measuring it.
import { elderRay } from "indicato";
elderRay(bars, n)
β exact β Pinned to the value across 6,126 bars of real market history.
Elder Ray β how far buyers and sellers pushed past the trend.
import { ema } from "indicato";
ema(values, n)
β exact β Pinned to the value across 6,126 bars of real market history.
import { emv } from "indicato";
emv(bars, n)
π‘ scaled β Γ10β΄ against the OpenAlgo SDK β both scale an arbitrary ratio and neither scaling is canonical.
Ease of Movement β Arms. How far price moved per unit of volume.
import { envelopes } from "indicato";
envelopes(bars, n, pct)
βͺ by definition β Follows its published formula. Held by the property tests β causality, warmup, range and flat-series identity.
Moving-average envelopes β a fixed percentage either side.
import { fisher } from "indicato";
fisher(bars, n)
π‘ scaled β Correlation 0.944 against the OpenAlgo SDK β Ehlers published 0.66/0.67 smoothing constants, other implementations use different ones.
Fisher Transform β Ehlers. Forces a bounded series toward a gaussian shape so turns become sharp rather than gradual.
import { forceIndex } from "indicato";
forceIndex(bars, n)
β exact β Pinned to the value across 6,126 bars of real market history.
Force Index β Elder. Price change times volume.
import { frama } from "indicato";
frama(bars, n)
βͺ by definition β Follows its published formula. Held by the property tests β causality, warmup, range and flat-series identity.
Ehlersβ fractal-adaptive β measures the price pathβs fractal dimension over the window and lets that set the EMAβs alpha. A straight run gives D near 1 and a fast average; a jagged one gives D near 2 and a slow one.
import { gator } from "indicato";
gator(bars)
βͺ by definition β Follows its published formula. Held by the property tests β causality, warmup, range and flat-series identity.
import { historicalVolatility } from "indicato";
historicalVolatility(bars, n, barsPerYear)
βͺ by definition β Follows its published formula. Held by the property tests β causality, warmup, range and flat-series identity.
Historical volatility β the annualised standard deviation of log returns.
THE ANNUALISATION DEPENDS ON YOUR BAR SIZE and this is the one place a timeframe assumption can be silently wrong. 252 is the count of trading DAYS in a year, so the default is right for daily bars and wrong for every other size: pass 52 for weekly, 12 for monthly, or roughly 1,575 for hourly bars on a 6.25-hour Indian session. Getting this wrong does not error β it scales the answer by the square root of the ratio.
import { hma } from "indicato";
hma(src, n)
β exact β Pinned to the value across 6,126 bars of real market history.
Hull β Alan Hull. WMA(2*WMA(n/2) - WMA(n), sqrt(n)). Fast and smooth at once, at the cost of overshooting turns.
import { ichimoku } from "indicato";
ichimoku(bars, conv, base, spanB)
βͺ by definition β Follows its published formula. Held by the property tests β causality, warmup, range and flat-series identity.
Ichimoku, drawn without the forward shift. The cloud is normally plotted 26 sessions into the future, and a chart that ends today would then end 26 bars of empty space to the right of the last candle. The two spans are drawn at the bar they were computed on, which is the honest version of the same lines.
import { kama } from "indicato";
kama(src, n, fast, slow)
β exact β Pinned to the value across 6,126 bars of real market history.
Kaufmanβs adaptive β speeds up in a trend, slows in chop, via an efficiency ratio of net travel over total travel.
import { keltner } from "indicato";
keltner(bars, n, mult)
βͺ by definition β Follows its published formula. Held by the property tests β causality, warmup, range and flat-series identity.
Keltner channel: an EMA with ATR-width rails. Bollingerβs bands widen with standard deviation, Keltnerβs with true range β which is why traders watch the pair together, and why shipping one without the other was a gap.
import { klinger } from "indicato";
klinger(bars, fast, slow, sig)
π΄ ambiguous β Correlation 0.92 against pandas-ta with a ratio of 47, and it does not match their signal line either. Klingerβs original description is ambiguous about the cumulative-measurement logic and implementations genuinely diverge. Treat as unverified.
Klinger β Krollβs volume force, and Price Volume Trend.
import { kst } from "indicato";
kst(src)
π‘ scaled β Γ0.01 against pandas-ta β they report a fraction where this reports Pringβs scaled value.
Know Sure Thing β Pring. Four smoothed rates of change, weighted 1..4.
import { linreg } from "indicato";
linreg(src, n)
β exact β Pinned to the value across 6,126 bars of real market history.
import { linregSlope } from "indicato";
linregSlope(src, n)
β exact β Pinned to the value across 6,126 bars of real market history.
import { macd } from "indicato";
macd(bars, fast, slow, signal)
β exact β Pinned to the value across 6,126 bars of real market history.
β- the families β-
import { massIndex } from "indicato";
massIndex(bars, n, e)
β exact β Pinned to the value across 6,126 bars of real market history.
Mass Index β Dorsey. Range expansion as a reversal warning.
import { mcginley } from "indicato";
mcginley(src, n)
β exact β Pinned to the value across 6,126 bars of real market history.
McGinley Dynamic β John McGinley. Divides the step by a speed factor so the line tracks price instead of trailing it through a fast move.
import { median } from "indicato";
median(src, n)
β exact β Pinned to the value across 6,126 bars of real market history.
Rolling median and variance of the close.
import { mfi } from "indicato";
mfi(bars, n)
β exact β Pinned to the value across 6,126 bars of real market history.
import { mode } from "indicato";
mode(src, n, dp)
βͺ by definition β Follows its published formula. Held by the property tests β causality, warmup, range and flat-series identity.
Rolling mode, to one decimal. Genuinely rare in trading and included for completeness: on continuous prices almost every value is unique, so it reports the most common ROUNDED price in the window β which is a crude support/resistance read and nothing more.
import { momentum } from "indicato";
momentum(src, n)
β exact β Pinned to the value across 6,126 bars of real market history.
import { natr } from "indicato";
natr(bars, n)
β exact β Pinned to the value across 6,126 bars of real market history.
Normalised ATR β volatility as a percentage of price, so it compares across stocks.
import { nvi } from "indicato";
nvi(bars)
π‘ scaled β Seeds at 1000, per Fosback. Other libraries seed at 0 or 100 and accumulate differently.
import { obv } from "indicato";
obv(bars)
β exact β Pinned to the value across 6,126 bars of real market history.
import { pivotPoints } from "indicato";
pivotPoints(bars)
βͺ by definition β Follows its published formula. Held by the property tests β causality, warmup, range and flat-series identity.
Classic floor-trader pivots from the previous bar.
import { po } from "indicato";
po(src, fast, slow)
β exact β Pinned to the value across 6,126 bars of real market history.
import { ppo } from "indicato";
ppo(src, fast, slow)
β exact β Pinned to the value across 6,126 bars of real market history.
Percentage Price Oscillator, and its absolute-difference sibling.
import { psar } from "indicato";
psar(bars, step, max)
π‘ scaled β Differs on 24 bars of 5,826, median difference 0.0000 β all at a reversal, where a new legβs starting direction is an implementation choice.
Wilderβs Parabolic SAR, acceleration 0.02 stepping to 0.20. Written out in full rather than approximated: the whole content of the indicator is where it flips, and a flip one bar early is the only thing a reader would check.
import { pvi } from "indicato";
pvi(bars)
π‘ scaled β Seeds at 1000, per Fosback. The OpenAlgo SDK seeds at 100.
import { pvt } from "indicato";
pvt(bars)
β exact β Pinned to the value across 6,126 bars of real market history.
import { roc } from "indicato";
roc(src, n)
β exact β Pinned to the value across 6,126 bars of real market history.
Rate of change, and momentumβs plain difference.
import { rsi } from "indicato";
rsi(bars, n)
β exact β Pinned to the value across 6,126 bars of real market history.
WILDERβS RSI, seeded one bar earlier than TA-Lib.
Measured against TA-Lib 0.7.1 on 6,126 bars: we emit a first value at bar n-1 where it emits at bar n, and Wilderβs smoothing carries that seed forward β 0.65 apart at bar 26, 0.08 by bar 50, 0.002 by bar 100, and EXACTLY zero from bar 300 on. No backtest here is affected, because none of them trades inside the warmup. It is written down because a library that is silently a hair different from the reference for its first fifty bars is a library somebody will file an issue about, and they would be right.
import { rvi } from "indicato";
rvi(bars, n)
β exact β Pinned to the value across 6,126 bars of real market history.
Relative Vigor Index β Dorsey. Where the close finished within the bar, smoothed, on the theory that a rising market closes above its open.
import { rwi } from "indicato";
rwi(bars, n)
π‘ scaled β Two unsigned lines here; the OpenAlgo SDK returns one signed line.
Random Walk Index β Poulos. How far price travelled against how far a random walk of the same volatility would be expected to.
import { sma } from "indicato";
sma(values, n)
β exact β Pinned to the value across 6,126 bars of real market history.
import { starc } from "indicato";
starc(bars, n, atrLen, mult)
βͺ by definition β Follows its published formula. Held by the property tests β causality, warmup, range and flat-series identity.
STARC bands β Stoller. A simple average with Wilder ATR either side.
import { stc } from "indicato";
stc(src, fast, slow, cycle)
β exact β Pinned to the value across 6,126 bars of real market history.
Schaff Trend Cycle β Schaff. A stochastic applied twice to the MACD line, which makes a slow trend indicator turn like a fast one.
import { stochastic } from "indicato";
stochastic(bars, n, k, d)
β exact β Pinned to the value across 6,126 bars of real market history.
The plain stochastic β where the close sits inside the recent high-low range. Not the same thing as the Stochastic RSI already in this file, which runs the same formula over RSI instead of over price; the file had the derivative and not the original.
import { stochRsi } from "indicato";
stochRsi(bars, n, k, d)
π‘ scaled β Returns the smoothed %K a chart draws; TA-Libβs STOCHRSI returns the raw fastk. Computed the same way they are identical.
STOCHASTIC RSI. This returns the SMOOTHED %K and its %D β the pair a chart draws. TA-Libβs STOCHRSI returns the raw, unsmoothed fastk, which is our %K before its 3-period average; computed that way the two are identical to 0.000000. Both are right and they are different outputs, so the difference is named here rather than found by someone comparing one against the other.
import { supertrend } from "indicato";
supertrend(bars, n, mult)
β exact β Pinned to the value across 6,126 bars of real market history.
import { t3 } from "indicato";
t3(src, n, v)
β exact β Pinned to the value across 6,126 bars of real market history.
Tillson T3 β six chained EMAs with a volume-factor weighting.
import { tema } from "indicato";
tema(src, n)
β exact β Pinned to the value across 6,126 bars of real market history.
import { trima } from "indicato";
trima(src, n)
β exact β Pinned to the value across 6,126 bars of real market history.
Triangular β a simple average of a simple average, weighting the middle.
import { trix } from "indicato";
trix(src, n)
β exact β Pinned to the value across 6,126 bars of real market history.
TRIX β the percentage change of a triple-smoothed EMA.
import { tsf } from "indicato";
tsf(src, n)
β exact β Pinned to the value across 6,126 bars of real market history.
import { tsi } from "indicato";
tsi(src, long, short)
β exact β Pinned to the value across 6,126 bars of real market history.
True Strength Index β Blau. Double-smoothed momentum over double-smoothed absolute momentum.
import { ulcerIndex } from "indicato";
ulcerIndex(bars, n)
β exact β Pinned to the value across 6,126 bars of real market history.
Ulcer Index β Martin. Depth and duration of drawdown, which is closer to what holding something actually feels like than standard deviation is.
import { ultosc } from "indicato";
ultosc(bars, s, m, l)
β exact β Pinned to the value across 6,126 bars of real market history.
Ultimate Oscillator β Williams. Three horizons weighted 4:2:1, so a single timeframe cannot dominate it.
import { variance } from "indicato";
variance(src, n)
β exact β Pinned to the value across 6,126 bars of real market history.
import { vidya } from "indicato";
vidya(src, n, smooth)
π‘ scaled β Ratio 0.998 against pandas-ta β their alpha default differs from Chandeβs CMO-driven one.
Chandeβs VIDYA β an EMA whose smoothing scales with the CMO, so it moves when direction is one-sided and stalls when it is not.
import { volumeOsc } from "indicato";
volumeOsc(bars, fast, slow)
π‘ not comparable β The classic SMA-based oscillator. pandas-ta ships the Percentage Volume Oscillator, which is EMA-based β a different indicator, not a different answer.
Volume oscillator and volume rate of change.
import { vortex } from "indicato";
vortex(bars, n)
β exact β Pinned to the value across 6,126 bars of real market history.
Vortex β Botes and Siepman. Two lines crossing marks a trend change.
import { vroc } from "indicato";
vroc(bars, n)
β exact β Pinned to the value across 6,126 bars of real market history.
import { vwap } from "indicato";
vwap(bars)
βͺ by definition β Follows its published formula. Held by the property tests β causality, warmup, range and flat-series identity.
VWAP β running, from the first bar. Intraday VWAP resets daily; on daily bars there is no session to reset on, so this is the cumulative one and is labelled so.
import { vwma } from "indicato";
vwma(bars, n)
β exact β Pinned to the value across 6,126 bars of real market history.
Volume-weighted: each bar counts for what traded on it.
import { williamsFractals } from "indicato";
williamsFractals(bars, w)
βͺ by definition β Follows its published formula. Held by the property tests β causality, warmup, range and flat-series identity.
Williams Fractals β a high with two lower highs either side. Confirmed only two bars later, which is the whole point: it cannot be known sooner.
import { williamsR } from "indicato";
williamsR(bars, n)
β exact β Pinned to the value across 6,126 bars of real market history.
Williams %R β where the close sits in the range, as a negative percentage.
import { wma } from "indicato";
wma(values, n)
β exact β Pinned to the value across 6,126 bars of real market history.
Weighted moving average: the newest bar counts n times as much as the oldest, weights 1..n over the window. Between SMA (every bar equal) and EMA (weights decay forever), which is the whole reason people ask for it by name.
import { yearBand } from "indicato";
yearBand(bars, n)
βͺ by definition β Follows its published formula. Held by the property tests β causality, warmup, range and flat-series identity.
The rolling high and low over a window of BARS, defaulting to 252 β a trading year of daily sessions. On weekly bars 252 is five years, not one, so pass the window you mean. The name says βyearβ because that is what it is used for; the maths counts bars.
Excludes the current bar, deliberately: a level computed including today is a level today cannot exceed, so βmakes a new 52-week highβ would be false on every bar of every stock, for ever, and silently. days, so a calendar year would quietly be a fourteen-month high.
import { zlema } from "indicato";
zlema(src, n)
β exact β Pinned to the value across 6,126 bars of real market history.
Zero-lag β Ehlers. An EMA fed price plus its own recent change.