Skip to content

v0.8.3

Latest

Choose a tag to compare

@github-actions github-actions released this 25 Oct 18:22
· 12 commits to main since this release

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-lib crate is on crates.io (cargo add ta-lib) (#179)
  • find_package(ta-lib CONFIG) now works against a CMake install and provides the ta-lib::ta-lib
    target. An autotools install still provides ta-lib.pc only. (#422)
  • Display shift: TA_<NAME>_DisplayShift and TA_GetDisplayShift tell 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_GetRuntimeInfo reports 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 (or TA_UNSTABLE_AUTO_PREC_8) to TA_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...):
    • TA_MAType_VIDYA (#474)
    • TA_MAType_ALMA (#475)

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 of optInMaxPeriod: 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 .deb now uses SSE2 instead of x87, so its values match the other packages. It
    needs an SSE2 CPU. (#443)
  • Java: FuncUnstId.COUNT is no longer public. javac copied its value into every caller, so
    a table sized by it went stale after a jar upgrade. Iterate FuncUnstId.values(), skipping
    ALL, instead. (#444)
  • C: the index ceiling is now TA_INDEX_MAX, named like TA_REAL_MAX and TA_INTEGER_MAX.
    The old name still works. (#448)
  • Java: Core.MAX_INDEX is renamed Core.INDEX_MAX. (#448)

Fixed

  • (#454) PPO and PVO with optInMAType SMA, 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 Platform environment 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).