greyblake
ta-rs
Rust

Technical analysis library for Rust language

Last updated Jul 3, 2026
866
Stars
169
Forks
16
Issues
0
Stars/day
Attention Score
46
Language breakdown
Rust 100.0%
โ–ธ Files click to expand
README

Technical Analysis for Rust (ta)

Build Status Crates.io Docs.rs License

Stand With Ukraine

Technical analysis library for Rust.

Getting started

Add to you Cargo.toml:

[dependencies] ta = "0.4.0"

Example:

use ta::indicators::ExponentialMovingAverage;
use ta::Next;

// it can return an error, when an invalid length is passed (e.g. 0) let mut ema = ExponentialMovingAverage::new(3).unwrap();

assert_eq!(ema.next(2.0), 2.0); assert_eq!(ema.next(5.0), 3.5); assert_eq!(ema.next(1.0), 2.25); assert_eq!(ema.next(6.25), 4.25);

See more in the examples here. Check also the documentation.

Basic ideas

A data item which represent a stock quote may implement the following traits:

  • Open
  • High
  • Low
  • Close
  • Volume
It's not necessary to implement all of them, but it must be enough to fulfill requirements for a particular indicator. You probably should prefer using DataItem unless you have reasons to implement your own structure.

Indicators typically implement the following traits:

  • Next<T> (often Next<f64> and Next<&DataItem>) - to feed and get the next value
  • Reset - to reset an indicator
  • Debug
  • Display
  • Default
  • Clone

List of indicators

So far there are the following indicators available.

  • Trend
* Exponential Moving Average (EMA) * Simple Moving Average (SMA)
  • Oscillators
* Relative Strength Index (RSI) * Fast Stochastic * Slow Stochastic * Moving Average Convergence Divergence (MACD) * Percentage Price Oscillator (PPO) * Commodity Channel Index (CCI) * Money Flow Index (MFI)
  • Other
* Minimum * Maximum * True Range * Standard Deviation (SD) * Mean Absolute Deviation (MAD) * Average True Range (AR) * Efficiency Ratio (ER) * Bollinger Bands (BB) * Chandelier Exit (CE) * Keltner Channel (KC) * Rate of Change (ROC) * On Balance Volume (OBV)

Features

  • serde - allows to serialize and deserialize indicators. NOTE: the backward compatibility of serialized
data with the future versions of ta is not guaranteed because internal implementation of the indicators is a subject to change.

Running benchmarks

cargo bench

Donations

You can support the project by donating NEAR tokens.

Our NEAR wallet address is ta-rs.near

License

MIT ยฉ Sergey Potapov

Contributors

๐Ÿ”— More in this category

ยฉ 2026 GitRepoTrend ยท greyblake/ta-rs ยท Updated daily from GitHub