-
Notifications
You must be signed in to change notification settings - Fork 0
Indicators Overview
Wickra ships 105 indicators organised into nine families. Each family
collects indicators that answer the same kind of question and groups at least
five of them, so the taxonomy here maps one-to-one onto the
docs/wiki/indicators/<family>/ directory layout.
Every indicator is an O(1) state machine that consumes one input at a time
and produces either Option<f64> (Rust), float | None (Python), or
number | null (Node). Inputs are either a f64 close price or an OHLCV
Candle (Rust) / dict-or-tuple (Python) / column arrays (Node). The full
trait surface and warmup-period semantics are covered in
Quickstart: Rust and Warmup Periods.
The "Output range" column is the value bounds an indicator emits once warm;
"unbounded" means it tracks the price scale of the input. The "Warmup" column
quotes warmup_period() as the indicator reports it — the exact
first-emission index: the first non-None output lands on input
warmup_period() (0-indexed warmup_period() - 1).
The nine families:
| # | Family | Count | What it answers |
|---|---|---|---|
| 1 | Moving Averages | 19 | Where is the smoothed trend line? |
| 2 | Momentum Oscillators | 20 | How fast is price changing; is it overbought? |
| 3 | Trend & Directional | 13 | Is there a trend, and which way? |
| 4 | Price Oscillators | 5 | Difference-of-averages momentum around zero. |
| 5 | Volatility & Bands | 17 | How wide is the range; where are the envelopes? |
| 6 | Bands & Channels | 11 | Price-envelope overlays beyond the volatility staples. |
| 7 | Trailing Stops | 5 | Where is the stop-loss for this trend? |
| 8 | Volume | 8 | Is volume confirming the move? |
| 9 | Price Statistics | 7 | Per-bar price transforms and rolling regressions. |
Smooth the price series to surface direction. All are single-input,
single-output (f64 → f64) except Vwma, which weights by volume.
| Indicator | One-liner | Input | Output | Range | Defaults | Warmup | Deep dive |
|---|---|---|---|---|---|---|---|
Sma |
Equal-weighted rolling mean over period closes. |
f64 |
f64 |
unbounded (price scale) | period |
period |
Indicator-Sma |
Ema |
EMA with α = 2 / (period + 1), SMA-seeded. |
f64 |
f64 |
unbounded (price scale) | period |
period |
Indicator-Ema |
Wma |
Linear weights 1, 2, …, period; newest bar matters most. |
f64 |
f64 |
unbounded (price scale) | period |
period |
Indicator-Wma |
Dema |
Mulloy's 2·EMA − EMA(EMA); removes first-order EMA lag. |
f64 |
f64 |
unbounded (price scale) | period |
2·period − 1 |
Indicator-Dema |
Tema |
Mulloy's 3·EMA − 3·EMA(EMA) + EMA(EMA(EMA)). |
f64 |
f64 |
unbounded (price scale) | period |
3·period − 2 |
Indicator-Tema |
Hma |
Hull's near-zero-lag WMA(2·WMA(n/2) − WMA(n), √n). |
f64 |
f64 |
unbounded (price scale) | period |
period + round(√period) − 1 |
Indicator-Hma |
Kama |
Kaufman's adaptive average; efficiency ratio picks α per bar. | f64 |
f64 |
unbounded (price scale) | (er_period=10, fast=2, slow=30) |
er_period + 1 |
Indicator-Kama |
Smma |
Wilder's RMA: SMA-seeded exponential average, 1/period factor. |
f64 |
f64 |
unbounded (price scale) | period |
period |
Indicator-Smma |
Trima |
A period-window SMA applied twice; triangular weights. |
f64 |
f64 |
unbounded (price scale) | period |
period |
Indicator-Trima |
Zlema |
EMA of the de-lagged series 2·price − price[lag]. |
f64 |
f64 |
unbounded (price scale) | period |
lag + period |
Indicator-Zlema |
T3 |
Tillson's six-EMA cascade recombined with a volume factor v. |
f64 |
f64 |
unbounded (price scale) |
(period, v=0.7) (Python) |
6·period − 5 |
Indicator-T3 |
Vwma |
Rolling mean of closes weighted by each bar's volume. | Candle |
f64 |
unbounded (price scale) | period |
period |
Indicator-Vwma |
Alma |
Gaussian-weighted MA, kernel centred at offset · (period − 1). |
f64 |
f64 |
unbounded (price scale) | (period=9, offset=0.85, sigma=6.0) |
period |
Indicator-Alma |
McGinleyDynamic |
Self-adjusting MA, MD + (price − MD) / (0.6 · period · (price / MD)⁴). |
f64 |
f64 |
unbounded (price scale) |
period (10 in Python) |
period |
Indicator-McGinleyDynamic |
Frama |
Ehlers' fractal-dimension-adaptive EMA over close-only window halves. | f64 |
f64 |
unbounded (price scale) |
period=16 (even) |
period |
Indicator-Frama |
Vidya |
EMA whose alpha scales with |CMO(cmo_period)| / 100. | f64 |
f64 |
unbounded (price scale) | (period=14, cmo_period=9) |
cmo_period + 1 |
Indicator-Vidya |
Jma |
Jurik MA — three-stage filter reconstruction. | f64 |
f64 |
unbounded (price scale) | (period=14, phase=0, power=2) |
1 |
Indicator-Jma |
Alligator |
Three Smmas of (high + low) / 2: Jaw / Teeth / Lips. |
Candle |
AlligatorOutput (3) |
unbounded (price scale) | (jaw=13, teeth=8, lips=5) |
max(jaw, teeth, lips) |
Indicator-Alligator |
Evwma |
Elastic volume-weighted recurrence over a rolling window. | Candle |
f64 |
unbounded (price scale) |
period (20 in Python) |
period |
Indicator-Evwma |
Measure the rate of price change. Several are bounded by construction (0–100 / ±100 oscillators), the rest are difference-driven.
| Indicator | One-liner | Input | Output | Range | Defaults | Warmup | Deep dive |
|---|---|---|---|---|---|---|---|
Rsi |
Wilder's RSI; smoothed gain / (gain + loss) × 100. |
f64 |
f64 |
[0, 100] |
period = 14 (Python) |
period + 1 |
Indicator-Rsi |
Stochastic |
%K = (close − low_n)/(high_n − low_n) × 100, smoothed into %D. |
Candle |
(k, d) |
each in [0, 100]
|
(k_period=14, d_period=3) (Python) |
k_period + d_period − 1 |
Indicator-Stochastic |
Cci |
(typical − SMA(typical)) / (0.015 · mean_dev). |
Candle |
f64 |
unbounded (typically ±100–±200) |
period = 20 (Python) |
period |
Indicator-Cci |
Roc |
(price − price_n) / price_n × 100; raw percentage change. |
f64 |
f64 |
unbounded around zero | period |
period + 1 |
Indicator-Roc |
WilliamsR |
−100 × (high_n − close) / (high_n − low_n). |
Candle |
f64 |
[−100, 0] |
period = 14 (Python) |
period |
Indicator-WilliamsR |
Mfi |
"Volume-weighted RSI": Wilder smoothing of money-flow ratios. | Candle |
f64 |
[0, 100] |
period = 14 (Python) |
period |
Indicator-Mfi |
AwesomeOscillator |
SMA(median, fast) − SMA(median, slow); zero-line crossover. |
Candle |
f64 |
unbounded around zero |
(fast=5, slow=34) (Python) |
slow_period |
Indicator-AwesomeOscillator |
Mom |
price − price[period]; raw price-difference momentum. |
f64 |
f64 |
unbounded around zero |
period = 10 (Python) |
period + 1 |
Indicator-Mom |
Cmo |
Chande Momentum Oscillator; 100·(Σgain − Σloss)/(Σgain + Σloss). |
f64 |
f64 |
[−100, 100] |
period = 14 (Python) |
period + 1 |
Indicator-Cmo |
Tsi |
True Strength Index; double-EMA-smoothed momentum ratio. | f64 |
f64 |
≈ [−100, 100]
|
(long=25, short=13) (Python) |
long + short |
Indicator-Tsi |
Pmo |
DecisionPoint Price Momentum Oscillator; doubly-smoothed ROC. | f64 |
f64 |
unbounded around zero |
(smoothing1=35, smoothing2=20) (Python) |
2 |
Indicator-Pmo |
StochRsi |
Stochastic Oscillator applied to the RSI series. | f64 |
f64 |
[0, 100] |
(rsi_period=14, stoch_period=14) (Python) |
rsi_period + stoch_period |
Indicator-StochRsi |
UltimateOscillator |
Larry Williams' weighted three-timeframe buying-pressure oscillator. | Candle |
f64 |
[0, 100] |
(short=7, mid=14, long=28) (Python) |
max(short,mid,long) + 1 |
Indicator-UltimateOscillator |
Rvi |
SMA(close − open, period) / SMA(high − low, period). |
Candle |
f64 |
unbounded (typically (−1, 1)) |
period = 10 (Python) |
period |
Indicator-Rvi |
Pgo |
(close − SMA(close, period)) / EMA(TR, period). |
Candle |
f64 |
unbounded |
period = 14 (Python) |
period |
Indicator-Pgo |
Kst |
Pring's 1·RCMA_1 + 2·RCMA_2 + 3·RCMA_3 + 4·RCMA_4, plus SMA signal. |
f64 |
(kst, signal) |
unbounded | 9 periods, see deep-dive | longest roc_i + sma_i + signal − 1
|
Indicator-Kst |
Smi |
Blau's doubly-EMA-smoothed close-vs-range displacement. | Candle |
f64 |
[−100, 100] |
(period=5, d=3, d2=3) |
period + d + d2 − 2 |
Indicator-Smi |
LaguerreRsi |
Ehlers' 4-stage Laguerre filter with RSI up/down accumulator. | f64 |
f64 |
[0, 100] (clamped) |
gamma = 0.5 |
1 |
Indicator-LaguerreRSI |
ConnorsRsi |
Average of RSI(close), RSI(streak), percentile-rank of returns. |
f64 |
f64 |
[0, 100] |
(3, 2, 100) |
max(period_rsi+1, period_streak+2, period_rank+1) |
Indicator-ConnorsRSI |
Inertia |
LinearRegression(RVI(rvi_period), linreg_period). |
Candle |
f64 |
unbounded | (rvi=14, linreg=20) |
rvi_period + linreg_period − 1 |
Indicator-Inertia |
Answer whether a trend exists and which way it points — directional systems, crossover packages and trend-versus-range filters.
| Indicator | One-liner | Input | Output | Range | Defaults | Warmup | Deep dive |
|---|---|---|---|---|---|---|---|
MacdIndicator |
EMA(fast) − EMA(slow) plus a signal EMA and the histogram. |
f64 |
(macd, signal, histogram) |
unbounded around zero |
(fast=12, slow=26, signal=9) (Python) |
slow + signal − 1 |
Indicator-MacdIndicator |
Adx |
Wilder's directional system: +DI, −DI and the ADX strength index. |
Candle |
(plus_di, minus_di, adx) |
each in [0, 100]
|
period = 14 (Python) |
2·period |
Indicator-Adx |
Adxr |
Wilder's ADX-rating: average of ADX_t and ADX_{t − (period − 1)}. |
Candle |
f64 |
[0, 100] |
period = 14 (Python) |
3·period − 1 |
Indicator-Adxr |
Aroon |
Bars-since-high and bars-since-low scaled to [0, 100]. |
Candle |
(up, down) |
each in [0, 100]
|
period = 14 (Python) |
period + 1 |
Indicator-Aroon |
Trix |
Rate of change of a triple-smoothed EMA, × 10000. |
f64 |
f64 |
unbounded around zero |
period = 15 (Python) |
3·period − 1 |
Indicator-Trix |
AroonOscillator |
AroonUp − AroonDown; the two Aroon lines as one gauge. |
Candle |
f64 |
[−100, 100] |
period = 14 (Python) |
period + 1 |
Indicator-AroonOscillator |
Vortex |
Vortex Indicator VI+ / VI−; crossings mark trend onset. |
Candle |
(plus, minus) |
each >= 0
|
period = 14 (Python) |
period + 1 |
Indicator-Vortex |
Rwi |
Poulos' Random Walk Index: actual displacement vs ATR_i · sqrt(i). |
Candle |
(high, low) |
each >= 0
|
period = 14 (Python) |
period |
Indicator-Rwi |
Tii |
Share of recent SMA-deviations that are positive, scaled to [0, 100]. |
f64 |
f64 |
[0, 100] |
(sma_period=60, dev_period=30) (Python) |
sma_period + dev_period − 1 |
Indicator-Tii |
WaveTrend |
LazyBear: 3-stage EMA cascade through the typical-price channel index. | Candle |
(wt1, wt2) |
typically [-100, +100]
|
(channel=10, average=21, signal=4) (Python) |
2·channel + average + signal − 3 |
Indicator-WaveTrend |
MassIndex |
Dorsey's range-expansion sum of the EMA-of-range ratio. | Candle |
f64 |
> 0 |
(ema_period=9, sum_period=25) (Python) |
2·ema_period + sum_period − 2 |
Indicator-MassIndex |
ChoppinessIndex |
Summed true range over the high-low span, log-scaled. | Candle |
f64 |
[0, 100] |
period = 14 (Python) |
period |
Indicator-ChoppinessIndex |
VerticalHorizontalFilter |
Net price move divided by total move over period. |
f64 |
f64 |
[0, 1] |
period = 28 (Python) |
period + 1 |
Indicator-VerticalHorizontalFilter |
Difference-of-averages and intrabar oscillators that swing around a zero line.
| Indicator | One-liner | Input | Output | Range | Defaults | Warmup | Deep dive |
|---|---|---|---|---|---|---|---|
Ppo |
Percentage Price Oscillator; 100·(EMA_fast − EMA_slow)/EMA_slow. |
f64 |
f64 |
unbounded around zero (percent) |
(fast=12, slow=26) (Python) |
slow |
Indicator-Ppo |
Dpo |
Detrended Price Oscillator; price[t − period/2 − 1] − SMA(period). |
f64 |
f64 |
unbounded around zero |
period = 20 (Python) |
max(period, period/2 + 2) |
Indicator-Dpo |
Coppock |
Coppock Curve; WMA(ROC(long) + ROC(short), wma_period). |
f64 |
f64 |
unbounded around zero |
(roc_long=14, roc_short=11, wma_period=10) (Python) |
max(roc_long, roc_short) + wma_period |
Indicator-Coppock |
AcceleratorOscillator |
AO − SMA(AO, signal); the acceleration of momentum. |
Candle |
f64 |
unbounded around zero |
(ao_fast=5, ao_slow=34, signal_period=5) (Python) |
ao_slow + signal_period − 1 |
Indicator-AcceleratorOscillator |
BalanceOfPower |
(close − open) / (high − low); intrabar buyer/seller control. |
Candle |
f64 |
[−1, +1] |
(no parameters) | 1 |
Indicator-BalanceOfPower |
Indicators that measure dispersion / range and those that draw an envelope around price.
| Indicator | One-liner | Input | Output | Range | Defaults | Warmup | Deep dive |
|---|---|---|---|---|---|---|---|
Atr |
Wilder-smoothed True Range; per-bar absolute volatility. | Candle |
f64 |
[0, ∞) (price scale) |
period = 14 (Python) |
period |
Indicator-Atr |
BollingerBands |
SMA middle band with ±multiplier × population_stddev bands. |
f64 |
(upper, middle, lower, stddev) |
unbounded (price scale) |
(period=20, multiplier=2.0) (Python) |
period |
Indicator-BollingerBands |
Keltner |
EMA middle band with ±multiplier × ATR bands. |
Candle |
(upper, middle, lower) |
unbounded (price scale) |
(ema_period=20, atr_period=10, multiplier=2.0) (Python) |
max(ema_period, atr_period) |
Indicator-Keltner |
Donchian |
Highest high and lowest low over period bars. |
Candle |
(upper, middle, lower) |
unbounded (price scale) |
period = 20 (Python) |
period |
Indicator-Donchian |
Natr |
100·ATR/close; ATR as a percentage. |
Candle |
f64 |
[0, ∞) (percent) |
period = 14 (Python) |
period |
Indicator-Natr |
StdDev |
Rolling population standard deviation of price. | f64 |
f64 |
[0, ∞) (price scale) |
period = 20 (Python) |
period |
Indicator-StdDev |
UlcerIndex |
RMS of trailing-high drawdowns; downside-only risk. | f64 |
f64 |
[0, ∞) (percent) |
period = 14 (Python) |
2·period − 1 |
Indicator-UlcerIndex |
HistoricalVolatility |
Annualised sample stddev of log returns. | f64 |
f64 |
[0, ∞) (annualised percent) |
(period=20, trading_periods=252) (Python) |
period + 1 |
Indicator-HistoricalVolatility |
BollingerBandwidth |
(upper − lower) / middle of the Bollinger Bands. |
f64 |
f64 |
[0, ∞) |
(period=20, multiplier=2.0) (Python) |
period |
Indicator-BollingerBandwidth |
PercentB |
(price − lower) / (upper − lower); price position in the bands. |
f64 |
f64 |
unbounded (0–1 inside) |
(period=20, multiplier=2.0) (Python) |
period |
Indicator-PercentB |
TrueRange |
`max(H−L, | H−prevC | , | L−prevC | )`; raw single-bar volatility. | Candle |
f64 |
ChaikinVolatility |
Rate of change of an EMA-smoothed high-low spread. | Candle |
f64 |
unbounded around zero (percent) |
(ema_period=10, roc_period=10) (Python) |
ema_period + roc_period |
Indicator-ChaikinVolatility |
RVIVolatility |
RSI-shaped volatility direction gauge built on rolling stddev. | f64 |
f64 |
[0, 100] |
period = 10 (Python) |
2·period − 1 |
Indicator-RviVolatility |
ParkinsonVolatility |
High-low realised vol; ~5× more efficient than C2C stddev. | Candle |
f64 |
[0, ∞) (annualised percent) |
(period=20, trading_periods=252) (Python) |
period |
Indicator-ParkinsonVolatility |
GarmanKlassVolatility |
OHLC realised vol; ~7.4× efficient, biased under drift. | Candle |
f64 |
[0, ∞) (annualised percent) |
(period=20, trading_periods=252) (Python) |
period |
Indicator-GarmanKlassVolatility |
RogersSatchellVolatility |
Drift-free OHLC realised vol; exact under arbitrary Brownian drift. | Candle |
f64 |
[0, ∞) (annualised percent) |
(period=20, trading_periods=252) (Python) |
period |
Indicator-RogersSatchellVolatility |
YangZhangVolatility |
Drift- and gap-robust OHLC blend of overnight, open-close and Rogers-Satchell. | Candle |
f64 |
[0, ∞) (annualised percent) |
(period=20, trading_periods=252) (Python) |
period + 1 |
Indicator-YangZhangVolatility |
Price-envelope overlays beyond the volatility-housed Bollinger / Keltner / Donchian trio. Eleven additional bands organised by what drives their width: fixed percent, ATR, range, regression-residual stddev, fractal swings, or volume-weighted stddev.
| Indicator | One-liner | Input | Output | Range | Defaults | Warmup | Deep dive |
|---|---|---|---|---|---|---|---|
MaEnvelope |
SMA centerline with fixed-percent envelope. | f64 |
(upper, middle, lower) |
unbounded (price scale) |
(period=20, percent=0.025) (Python) |
period |
Indicator-MaEnvelope |
AccelerationBands |
Price Headley's momentum-biased bands; width scales with (H − L) / (H + L). |
Candle |
(upper, middle, lower) |
unbounded (price scale) |
(period=20, factor=0.001) (Python) |
period |
Indicator-AccelerationBands |
StarcBands |
Stoller Average Range Channel — SMA(close) ± k·ATR. |
Candle |
(upper, middle, lower) |
unbounded (price scale) |
(sma_period=6, atr_period=15, multiplier=2.0) (Python) |
max(sma_period, atr_period) |
Indicator-StarcBands |
AtrBands |
Close-anchored envelope close ± k·ATR; stop/target bracket. |
Candle |
(upper, middle, lower) |
unbounded (price scale) |
(period=14, multiplier=3.0) (Python) |
period |
Indicator-AtrBands |
HurstChannel |
SMA centerline wrapped by the rolling high-low range. | Candle |
(upper, middle, lower) |
unbounded (price scale) |
(period=10, multiplier=0.5) (Python) |
period |
Indicator-HurstChannel |
LinRegChannel |
OLS endpoint ± k · σ of regression residuals. |
f64 |
(upper, middle, lower) |
unbounded (price scale) |
(period=20, multiplier=2.0) (Python) |
period |
Indicator-LinRegChannel |
StandardErrorBands |
OLS endpoint ± k · stderr (n − 2 denominator). |
f64 |
(upper, middle, lower) |
unbounded (price scale) |
(period=21, multiplier=2.0) (Python) |
period |
Indicator-StandardErrorBands |
DoubleBollinger |
Two concentric Bollinger envelopes (±k_inner·σ, ±k_outer·σ). |
f64 |
5 bands | unbounded (price scale) |
(period=20, k_inner=1.0, k_outer=2.0) (Python) |
period |
Indicator-DoubleBollinger |
TtmSqueeze |
BB-inside-KC squeeze flag + detrended-close momentum (LinReg). | Candle |
(squeeze, momentum) |
squeeze ∈ {0,1}; momentum unbounded |
(period=20, bb_mult=2.0, kc_mult=1.5) (Python) |
period |
Indicator-TtmSqueeze |
FractalChaosBands |
Step-function envelope of the latest Bill Williams 5-bar fractals. | Candle |
(upper, lower) |
unbounded (price scale) |
k = 2 (Python) |
2k + 1 plus first fractal of each kind |
Indicator-FractalChaosBands |
VwapStdDevBands |
Cumulative VWAP ± k·σ (volume-weighted standard deviation). |
Candle |
(upper, middle, lower, stddev) |
unbounded (price scale) |
multiplier = 2.0 (Python) |
1 |
Indicator-VwapStdDevBands |
ATR-driven stop-loss trackers: per-bar levels that follow a trend and flip when price closes through them.
| Indicator | One-liner | Input | Output | Range | Defaults | Warmup | Deep dive |
|---|---|---|---|---|---|---|---|
Psar |
Wilder's Parabolic Stop-and-Reverse; flips sides on a crossing. | Candle |
f64 |
unbounded (price scale) |
(af_start=0.02, af_step=0.02, af_max=0.20) (Python) |
2 |
Indicator-Psar |
SuperTrend |
ATR-banded trailing stop with explicit flip logic. | Candle |
(value, direction) |
value price scale; direction ±1
|
(atr_period=10, multiplier=3.0) (Python) |
atr_period |
Indicator-SuperTrend |
ChandelierExit |
highest_high − k·ATR (long) and lowest_low + k·ATR (short). |
Candle |
(long_stop, short_stop) |
unbounded (price scale) |
(period=22, multiplier=3.0) (Python) |
period |
Indicator-ChandelierExit |
ChandeKrollStop |
Two-stage ATR stop: extreme-based, then smoothed. | Candle |
(stop_long, stop_short) |
unbounded (price scale) |
(atr_period=10, atr_multiplier=1.0, stop_period=9) (Python) |
atr_period + stop_period − 1 |
Indicator-ChandeKrollStop |
AtrTrailingStop |
A single line trailing the close by k·ATR, ratcheting. |
Candle |
f64 |
unbounded (price scale) |
(atr_period=14, multiplier=3.0) (Python) |
atr_period |
Indicator-AtrTrailingStop |
Price moves weighted or confirmed by traded volume. All take Candle input.
| Indicator | One-liner | Input | Output | Range | Defaults | Warmup | Deep dive |
|---|---|---|---|---|---|---|---|
Obv |
On-Balance Volume: cumulative signed volume. | Candle |
f64 |
unbounded (drifts with volume) | (no parameters) | 1 |
Indicator-Obv |
Vwap |
Cumulative volume-weighted average price from the stream start; a sibling RollingVwap(period) is exposed for a finite window. |
Candle |
f64 |
unbounded (price scale) | (no parameters) |
1 (cumulative); period (rolling) |
Indicator-Vwap (cumulative + rolling) |
Adl |
Accumulation/Distribution Line; cumulative range-weighted volume. | Candle |
f64 |
unbounded (drifts with volume) | (no parameters) | 1 |
Indicator-Adl |
VolumePriceTrend |
Cumulative volume · ROC; volume weighted by percentage move. |
Candle |
f64 |
unbounded (drifts with volume) | (no parameters) | 1 |
Indicator-VolumePriceTrend |
ChaikinMoneyFlow |
Summed money-flow volume over summed volume across period bars. |
Candle |
f64 |
[−1, +1] |
period = 20 (Python) |
period |
Indicator-ChaikinMoneyFlow |
ChaikinOscillator |
EMA(ADL, fast) − EMA(ADL, slow); the MACD of the ADL. |
Candle |
f64 |
unbounded around zero |
(fast=3, slow=10) (Python) |
slow |
Indicator-ChaikinOscillator |
ForceIndex |
EMA((close − prev_close) · volume, period). |
Candle |
f64 |
unbounded around zero |
period = 13 (Python) |
period + 1 |
Indicator-ForceIndex |
EaseOfMovement |
SMA of distance travelled per unit of volume. |
Candle |
f64 |
unbounded around zero |
(period=14, divisor=1e8) (Python) |
period + 1 |
Indicator-EaseOfMovement |
Per-bar price transforms and rolling least-squares regressions.
| Indicator | One-liner | Input | Output | Range | Defaults | Warmup | Deep dive |
|---|---|---|---|---|---|---|---|
TypicalPrice |
(high + low + close) / 3. |
Candle |
f64 |
unbounded (price scale) | (no parameters) | 1 |
Indicator-TypicalPrice |
MedianPrice |
(high + low) / 2. |
Candle |
f64 |
unbounded (price scale) | (no parameters) | 1 |
Indicator-MedianPrice |
WeightedClose |
(high + low + 2·close) / 4. |
Candle |
f64 |
unbounded (price scale) | (no parameters) | 1 |
Indicator-WeightedClose |
LinearRegression |
Endpoint of the rolling least-squares line. | f64 |
f64 |
unbounded (price scale) |
period = 14 (Python) |
period |
Indicator-LinearRegression |
LinRegSlope |
Slope of the rolling least-squares line. | f64 |
f64 |
unbounded around zero |
period = 14 (Python) |
period |
Indicator-LinRegSlope |
ZScore |
(price − SMA(n)) / population_stddev(n). |
f64 |
f64 |
unbounded around zero |
period = 20 (Python) |
period |
Indicator-ZScore |
LinRegAngle |
The rolling regression slope as a degree angle. | f64 |
f64 |
(−90°, +90°) |
period = 14 (Python) |
period |
Indicator-LinRegAngle |
A short cheat-sheet of "I want X, which indicator?" answers, grounded in what each indicator actually computes.
-
Fast trend filter, minimal lag.
Hmafor smoothness + responsiveness,Temafor further lag reduction at the cost of noise,Kamafor adaptiveness instead of fixed lag. -
Slow trend filter.
Smais the simplest;Emaresponds slightly faster with the same smoothness budget. -
Trend-following crossovers. Two-line crossovers are the textbook entry;
MacdIndicatorpackages the idea with a signal line and histogram. -
Trend strength — is there a trend at all?
Adx(> 25trending,< 20ranging);ChoppinessIndex/VerticalHorizontalFilteranswer the same question without a direction. -
Overbought / oversold.
Rsiis the default;Stochasticfor faster signals;WilliamsRfor an inverted scale;Mfifor a volume-aware RSI. -
Volatility level vs. momentum.
Atr/TrueRangefor the level;ChaikinVolatilityfor whether ranges are expanding or contracting. -
Breakout level.
Donchianupper/lower bands are the Turtle-style trigger. -
Trailing stop.
Psar,SuperTrend,ChandelierExit,ChandeKrollStopandAtrTrailingStopare a whole family of them. -
Volume confirmation.
Obvis the simplest;ChaikinMoneyFlowis a bounded balance;Vwap/RollingVwapgive a volume-weighted reference. -
Mean reversion.
ZScoreflags statistically stretched prices;BollingerBandwidth/PercentBlocate price within the bands.
Every claim above can be checked against the source in
crates/wickra-core/src/indicators/
— one file per indicator. The Rust unit tests inside each module are the
ground truth for sample values. Python defaults (the period = 14 etc.) come
from the #[pyo3(signature = …)] attributes in
bindings/python/src/lib.rs;
indicators without a Python default require an explicit argument.
-
Warmup Periods — verified table of every indicator's
warmup_period(). -
Indicator Chaining — combining indicators with
Chainand the stacked-warmup rule. - Quickstart: Rust, Quickstart: Python, Quickstart: Node — language-specific API surfaces.
- Source: https://github.com/kingchenc/wickra
Wickra on GitHub · crates.io · PyPI · npm · License: PolyForm-Noncommercial-1.0.0
- Alligator
- Alma
- Dema
- Ema
- Evwma
- Frama
- Hma
- Jma
- Kama
- McGinleyDynamic
- Sma
- Smma
- T3
- Tema
- Trima
- Vidya
- Vwma
- Wma
- Zlema
- AwesomeOscillator
- Cci
- Cmo
- ConnorsRSI
- Inertia
- Kst
- LaguerreRSI
- Mfi
- Mom
- Pgo
- Pmo
- Roc
- Rsi
- Rvi
- Smi
- Stochastic
- StochRsi
- Tsi
- UltimateOscillator
- WilliamsR
- Adx
- Adxr
- Aroon
- AroonOscillator
- ChoppinessIndex
- MacdIndicator
- MassIndex
- Rwi
- Tii
- Trix
- VerticalHorizontalFilter
- Vortex
- WaveTrend
- Atr
- BollingerBands
- BollingerBandwidth
- ChaikinVolatility
- Donchian
- GarmanKlassVolatility
- HistoricalVolatility
- Keltner
- Natr
- ParkinsonVolatility
- PercentB
- RogersSatchellVolatility
- RviVolatility
- StdDev
- TrueRange
- UlcerIndex
- YangZhangVolatility