1 unstable release
0.1.5 | Jan 1, 2020 |
---|
#707 in Science
Used in 3 crates
(via cxmr-ta)
81KB
2K
SLoC
Technical Analysis for Rust (ta)
Technical analysis library for Rust.
Getting started
Add to you Cargo.toml
:
[dependencies]
ta = "0.1.5"
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>
(oftenNext<f64>
andNext<&DataItem>
) - to feed and get the next valueReset
- to reset an indicatorDebug
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)
- Money Flow Index (MFI)
- Other
- Minimum
- Maximum
- True Range
- Average True Range (AR)
- Efficiency Ratio (ER)
- Bollinger Bands (BB)
- Rate of Change (ROC)
- OnBalanceVolume (OBV)
Running benchmarks
cargo bench
License
Contributors
- greyblake Potapov Sergey - creator, maintainer.
- Bartoshko - BollingerBands
- shreyasdeotare Shreyas Deotare - MoneyFlowIndex, OnBalanceVolume
- edwardycl - StandardDeviation Implementation & More Efficient BollingerBands
Dependencies
~2.5–3.5MB
~74K SLoC