Repository navigation
Installation docs: https://ta-lib.org/install/
Just re-install to upgrade. Older versions are automatically removed.
See github commits for complete list of changes
[0.8.3] 2026-10-25
Added
- Rust: the
ta-libcrate is on crates.io (cargo add ta-lib) (#179) find_package(ta-lib CONFIG)now works against a CMake install and provides theta-lib::ta-lib
target. An autotools install still providesta-lib.pconly. (#422)- Display shift:
TA_<NAME>_DisplayShiftandTA_GetDisplayShifttell a charting app how many bars
ahead of or behind its own bar to draw an output (e.g. DPO). Output values are not shifted. (#489) TA_GetRuntimeInforeports which optional code path the library is using, e.g. whether
the macOS vForce path below is active. (#527)- Auto-Stabilization: pass
TA_UNSTABLE_AUTO_PREC_4(orTA_UNSTABLE_AUTO_PREC_8) toTA_SetUnstablePeriod
and each function discards its leading output until its first 4 (or 8) significant digits no longer
depend on where the data starts. See https://ta-lib.org/api/unstable-period/ (#492) - New TA Functions:
- ALMA: Arnaud Legoux Moving Average, a Gaussian-weighted window with adjustable peak (#475)
- ASI: Wilder Accumulative Swing Index, the running total of SI (#451)
- BBW: Bollinger BandWidth, band spread as a percentage of the middle band (#447)
- CG: Center of Gravity Oscillator, Ehlers' balance point of the window (#450)
- CHOP: Choppiness Index (#469)
- CHOPTR: Choppiness Index - True-Range Variant (#469)
- CKSP: Chande Kroll Stop, ATR-offset extremes taken over a second window (#477)
- CRSI: Connors RSI (#431)
- CTI: Correlation Trend Indicator (#430)
- DOSC: Derivative Oscillator, Constance Brown's smoothed RSI minus its SMA (#479)
- EMV: Arms Ease of Movement, midpoint move per unit of volume-to-range (#465)
- FISHER: Ehlers' Fisher Transform (#485)
- FRAMA: Fractal Adaptive Moving Average, Ehlers' adaptive EMA (#464)
- IBS: Internal Bar Strength, where the close sits inside its own bar range (#468)
- ICHIMOKU: Ichimoku Kinko Hyo: Tenkan-sen, Kijun-sen and the two Senkou spans (#490)
- KST: Know Sure Thing (#472)
- KSTEXT: Know Sure Thing with selectable MA types (#491)
- KURTOSIS: Rolling Excess Kurtosis (#433)
- KVO: Klinger Volume Oscillator (#484)
- MCGD: McGinley Dynamic, a moving average adapting to price-to-line ratio (#471)
- MEDIAN: Rolling Median (#432)
- PERCENTB: Bollinger Bands %B, where the input sits relative to the bands (#449)
- PSO: Premier Stochastic Oscillator, Leibfarth's Fast %K squashed into -1 to +1 (#473)
- ROGERSSATCHELL: Rogers-Satchell Volatility (#483)
- RVIR: Relative Volatility Index, 1995 refined form (#416)
- SI: Wilder Swing Index, each bar rated against the one before (#451)
- SQZMOM: Squeeze Momentum and Level, how the Bollinger Bands sit inside three Keltner Channels (#488)
- STC: Schaff Trend Cycle, a MACD line run twice through a stochastic (#478)
- SWAK_2PHP: Swiss Army Knife - Ehlers' Two-Pole High-Pass Filter (#486)
- SWAK_BP: Swiss Army Knife - Ehlers' Band-Pass Filter (#486)
- SWAK_BUTTER: Swiss Army Knife - Ehlers' Butterworth Filter (#486)
- SWAK_GAUSS: Swiss Army Knife - Ehlers' Gaussian Filter (#486)
- SWAK_HP: Swiss Army Knife - Ehlers' High-Pass Filter (#486)
- VIDYA: Variable Index Dynamic Average, Chande's EMA scaled by the CMO (#474)
- WAVETREND: WaveTrend Oscillator (#476)
- ZIGZAG: Zig Zag, swing line with pivot price, leg direction and pivot bar (#487)
- New MAType (for MA, BBANDS, STOCH etc...):
Faster
- Up to 2.7x: CMO, PLUS_DM, MINUS_DM, PLUS_DI, MINUS_DI, DX, ADX and ADXR (#411)
- Up to 17x: PERCENTILE, about 2x at the default period, more on long windows and on a trending series (#435)
- ~1.4x to 6.4x: IMI, more when up and down bars alternate unpredictably (#440)
- ~1.3x to 10x: MAVP stream updates over SMA, WMA, TRIMA, KAMA, HMA and ZLEMA, more the wider
the period band. Their memory no longer grows with the square ofoptInMaxPeriod: at 2 to
10000, SMA holds 1.4 MB instead of 400 MB. (#445)
Changed
- (#411) CMO, PLUS_DM, MINUS_DM, PLUS_DI, MINUS_DI, DX, ADX and ADXR optimization with some
floating-point re-ordering. At the default period, values move by at most about 1e-13 on
the 0-100 scale (a few 1e-15 relative for the DMs). - (#480) RSI answers the neutral 50, instead of 0, in the rare case where the input has not changed since the first bar.
- PERCENTILE's default period is now 100, up from 30: at 30 bars the 95th percentile is the
second-largest value. Pass the period explicitly to keep the old output. - PERCENTILE and PERCENTRANK accept periods up to 10000, down from 100000. A longer period is now rejected (and would be useless and a performance drag).
- MAVP accepts periods up to 10000, down from 100000. Also for practical purposes.
- macOS on Apple Silicon: batch SIN, COS, TAN, ASIN, ACOS, ATAN, SINH, COSH, TANH, EXP, LN
and LOG10 use Apple's vForce. Results may differ from other platforms, and from streaming,
in the last bits (below 1e-9). (#521) - The i386
.debnow uses SSE2 instead of x87, so its values match the other packages. It
needs an SSE2 CPU. (#443) - Java:
FuncUnstId.COUNTis no longer public. javac copied its value into every caller, so
a table sized by it went stale after a jar upgrade. IterateFuncUnstId.values(), skipping
ALL, instead. (#444) - C: the index ceiling is now
TA_INDEX_MAX, named likeTA_REAL_MAXandTA_INTEGER_MAX.
The old name still works. (#448) - Java:
Core.MAX_INDEXis renamedCore.INDEX_MAX. (#448)
Fixed
- (#454) PPO and PVO with
optInMATypeSMA, WMA, TRIMA or HMA return their documented 0 once
the slow window holds only zero bars after fractional values (not a common case). - CMake on Windows no longer stops at configure when the
Platformenvironment variable (set by vcvarsall) is missing or holds another value.
Thanks
- @kevinlincg for implementing CKSP, CTI, DOSC, EMV, FISHER, IBS, ICHIMOKU, KURTOSIS, KVO,
MEDIAN, PSO, ROGERSSATCHELL, RVIR, SQZMOM, the five SWAK filters, WAVETREND and ZIGZAG,
a faster APO/PPO/PVO, and many test and tooling fixes. - @ralph-e-boy for the Apple platform proposal (#85) that led to the Apple Silicon kernel.
- @mrjbq7 for requesting CRSI (#431) and ZIGZAG (#487), and @hhashim1 for requesting SQZMOM (#488).