Crates.io | ta |
lib.rs | ta |
version | 0.5.0 |
source | src |
created_at | 2017-09-29 22:18:20.423836 |
updated_at | 2021-06-26 22:28:52.679579 |
description | Technical analysis library. Implements number of indicators: EMA, SMA, RSI, MACD, Stochastic, etc. |
homepage | https://github.com/greyblake/ta-rs |
repository | https://github.com/greyblake/ta-rs |
max_upload_size | |
id | 33945 |
size | 131,462 |
Technical analysis library for Rust.
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.
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 valueReset
- to reset an indicatorDebug
Display
Default
Clone
So far there are the following indicators available.
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)
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.cargo bench