You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Rusty-talib is a technical analysis library written in pure Rust, providing various methods for calculating technical indicators.
Features
Provides various technical analysis tools including overlap studies, momentum indicators, volume indicators, and more.
Allows enabling or disabling specific feature modules as needed.
Usage
To use Rusty-talib, you can add it as a dependency and select specific feature modules to enable as needed. For example:
[dependencies]
rusty-talib = { version = "0.1.0", features = ["overlap_studies"] }
Feature Modules
Rusty-talib includes the following feature modules:
Overlap Studies
Momentum Indicators
Volume Indicators
Volatility Indicators
Price Transform
Cycle Indicators
Pattern Recognition
Statistical Functions
Math Transform
Math Operators
Overlap Studies
Function
Description
Status
BBANDS
Bollinger Bands
Done
DEMA
Double Exponential Moving Average
Done
EMA
Exponential Moving Average
Done
HT_TRENDLINE
Hilbert Transform - Instantaneous Trendline
Done
KAMA
Kaufman Adaptive Moving Average
Done
MA
Moving Average
Done
MAMA
MESA Adaptive Moving Average
Done
MAVP
Moving average with variable period
Pending
MIDPOINT
MidPoint over period
Pending
MIDPRICE
Midpoint Price over period
Pending
SAR
Parabolic SAR
Pending
SAREXT
Parabolic SAR - Extended
Pending
SMA
Simple Moving Average
Done
T3
Triple Exponential Moving Average (T3)
Pending
TEMA
Triple Exponential Moving
Pending
Momentum Indicators
Function
Description
Status
ADX
Average Directional Movement Index
Pending
ADXR
Average Directional Movement Index Rating
Pending
APO
Absolute Price Oscillator
Pending
AROON
Aroon
Pending
AROONOSC
Aroon Oscillator
Pending
BOP
Balance Of Power
Pending
CCI
Commodity Channel Index
Pending
CMO
Chande Momentum Oscillator
Pending
DX
Directional Movement Index
Pending
MACD
Moving Average Convergence/Divergence
Pending
MACDEXT
MACD with controllable MA type
Pending
MACDFIX
Moving Average Convergence/Divergence Fix 12/26
Pending
MFI
Money Flow Index
Pending
MINUS_DI
Minus Directional Indicator
Pending
MINUS_DM
Minus Directional Movement
Pending
MOM
Momentum
Pending
PLUS_DI
Plus Directional Indicator
Pending
PLUS_DM
Plus Directional Movement
Pending
PPO
Percentage Price Oscillator
Pending
ROC
Rate of change : ((price/prevPrice)-1)*100
Pending
ROCP
Rate of change Percentage: (price-prevPrice)/prevPrice
Pending
ROCR
Rate of change ratio: (price/prevPrice)
Pending
ROCR100
Rate of change ratio 100 scale: (price/prevPrice)*100
Pending
RSI
Relative Strength Index
Pending
STOCH
Stochastic
Pending
STOCHF
Stochastic Fast
Pending
STOCHRSI
Stochastic Relative Strength Index
Pending
TRIX
1-day Rate-Of-Change (ROC) of a Triple Smooth EMA
Pending
ULTOSC
Ultimate Oscillator
Pending
WILLR
Williams' %R
Pending
Volume Indicators
Function
Description
Status
AD
Chaikin A/D Line
Pending
ADOSC
Chaikin A/D Oscillator
Pending
OBV
On Balance Volume
Pending
Volatility Indicators
Function
Description
Status
ATR
Average True Range
Pending
NATR
Normalized Average True Range
Pending
TRANGE
True Range
Pending
Price Transform
Function
Description
Status
AVGPRICE
Average Price
Pending
MEDPRICE
Median Price
Pending
TYPPRICE
Typical Price
Pending
WCLPRICE
Weighted Close Price
Pending
Cycle Indicators
Function
Description
Status
HT_DCPERIOD
Hilbert Transform - Dominant Cycle Period
Pending
HT_DCPHASE
Hilbert Transform - Dominant Cycle Phase
Pending
HT_PHASOR
Hilbert Transform - Phasor Components
Pending
HT_SINE
Hilbert Transform - SineWave
Pending
HT_TRENDMODE
Hilbert Transform - Trend vs Cycle Mode
Pending
Pattern Recognition
Function
Description
Status
CDL2CROWS
Two Crows
Pending
CDL3BLACKCROWS
Three Black Crows
Pending
CDL3INSIDE
Three Inside Up/Down
Pending
CDL3LINESTRIKE
Three-Line Strike
Pending
CDL3OUTSIDE
Three Outside Up/Down
Pending
CDL3STARSINSOUTH
Three Stars In The South
Pending
CDL3WHITESOLDIERS
Three Advancing White Soldiers
Pending
CDLABANDONEDBABY
Abandoned Baby
Pending
CDLADVANCEBLOCK
Advance Block
Pending
CDLBELTHOLD
Belt-hold
Pending
CDLBREAKAWAY
Breakaway
Pending
CDLCLOSINGMARUBOZU
Closing Marubozu
Pending
CDLCONCEALBABYSWALL
Concealing Baby Swallow
Pending
CDLCOUNTERATTACK
Counterattack
Pending
CDLDARKCLOUDCOVER
Dark Cloud Cover
Pending
CDLDOJI
Doji
Pending
CDLDOJISTAR
Doji Star
Pending
CDLDRAGONFLYDOJI
Dragonfly Doji
Pending
CDLENGULFING
Engulfing Pattern
Pending
CDLEVENINGDOJISTAR
Evening Doji Star
Pending
CDLEVENINGSTAR
Evening Star
Pending
CDLGAPSIDESIDEWHITE
Up/Down-gap side-by-side white lines
Pending
CDLGRAVESTONEDOJI
Gravestone Doji
Pending
CDLHAMMER
Hammer
Pending
CDLHANGINGMAN
Hanging Man
Pending
CDLHARAMI
Harami Pattern
Pending
CDLHARAMICROSS
Harami Cross Pattern
Pending
CDLHIGHWAVE
High-Wave Candle
Pending
CDLHIKKAKE
Hikkake Pattern
Pending
CDLHIKKAKEMOD
Modified Hikkake Pattern
Pending
CDLHOMINGPIGEON
Homing Pigeon
Pending
CDLIDENTICAL3CROWS
Identical Three Crows
Pending
CDLINNECK
In-Neck Pattern
Pending
CDLINVERTEDHAMMER
Inverted Hammer
Pending
CDLKICKING
Kicking
Pending
CDLKICKINGBYLENGTH
Kicking - bull/bear determined by the longer marubozu
Pending
CDLLADDERBOTTOM
Ladder Bottom
Pending
CDLLONGLEGGEDDOJI
Long Legged Doji
Pending
CDLLONGLINE
Long Line Candle
Pending
CDLMARUBOZU
Marubozu
Pending
CDLMATCHINGLOW
Matching Low
Pending
CDLMATHOLD
Mat Hold
Pending
CDLMORNINGDOJISTAR
Morning Doji Star
Pending
CDLMORNINGSTAR
Morning Star
Pending
CDLONNECK
On-Neck Pattern
Pending
CDLPIERCING
Piercing Pattern
Pending
CDLRICKSHAWMAN
Rickshaw Man
Pending
CDLRISEFALL3METHODS
Rising/Falling Three Methods
Pending
CDLSEPARATINGLINES
Separating Lines
Pending
CDLSHOOTINGSTAR
Shooting Star
Pending
CDLSHORTLINE
Short Line Candle
Pending
CDLSPINNINGTOP
Spinning Top
Pending
CDLSTALLEDPATTERN
Stalled Pattern
Pending
CDLSTICKSANDWICH
Stick Sandwich
Pending
CDLTAKURI
Takuri (Dragonfly Doji with very long lower shadow)
Pending
CDLTASUKIGAP
Tasuki Gap
Pending
CDLTHRUSTING
Thrusting Pattern
Pending
CDLTRISTAR
Tristar Pattern
Pending
CDLUNIQUE3RIVER
Unique 3 River
Pending
CDLUPSIDEGAP2CROWS
Upside Gap Two Crows
Pending
CDLXSIDEGAP3METHODS
Upside/Downside Gap Three Methods
Pending
Statistic Functions
Function
Description
Status
BETA
Beta
Pending
CORREL
Pearson's Correlation Coefficient (r)
Pending
LINEARREG
Linear Regression
Pending
LINEARREG_ANGLE
Linear Regression Angle
Pending
LINEARREG_INTERCEPT
Linear Regression Intercept
Pending
LINEARREG_SLOPE
Linear Regression Slope
Pending
STDDEV
Standard Deviation
Pending
TSF
Time Series Forecast
Pending
VAR
Variance
Pending
Math Transform Functions
Function
Description
Status
ACOS
Vector Trigonometric ACos
Pending
ASIN
Vector Trigonometric ASin
Pending
ATAN
Vector Trigonometric ATan
Pending
CEIL
Vector Ceil
Pending
COS
Vector Trigonometric Cos
Pending
COSH
Vector Trigonometric Cosh
Pending
EXP
Vector Arithmetic Exp
Pending
FLOOR
Vector Floor
Pending
LN
Vector Log Natural
Pending
LOG10
Vector Log10
Pending
SIN
Vector Trigonometric Sin
Pending
SINH
Vector Trigonometric Sinh
Pending
SQRT
Vector Square Root
Pending
TAN
Vector Trigonometric Tan
Pending
TANH
Vector Trigonometric Tanh
Pending
Math Operator Functions
Function
Description
Status
ADD
Vector Arithmetic Add
Pending
DIV
Vector Arithmetic Div
Pending
MAX
Highest value over a specified period
Pending
MAXINDEX
Index of the highest value over a specified period
Pending
MIN
Lowest value over a specified period
Pending
MININDEX
Index of the lowest value over a specified period
Pending
MINMAX
Lowest and highest values over a specified period
Pending
MINMAXINDEX
Indexes of the lowest and highest values over a specified period
Pending
MULT
Vector Arithmetic Mult
Pending
SUB
Vector Arithmetic Subtraction
Pending
SUM
Summation
Pending
Example
use rusty_talib::{self,ErrorMsg};use polars::prelude::*;fnmain(){let random_data:[i32;7] = [23,25,12,28,33,31,35];let close = Series::new("data",random_data);let ma = rusty_talib::moving_average(&close,Some(3));match res {Ok(ma) => {assert_eq!(ma.len(),close.len());eprintln!("{:?}",ma);},Err(e) => {ifletSome(my_error) = e.downcast_ref::<ErrorMsg>(){eprintln!("{}", my_error.0);}else{eprintln!("An error occurred");}}}}
// import polars lib use polars::prelude::*;// Import the rusty-talib library in your Rust projectuse rusty_talib;let random_data:[i32;7] = [23,25,12,28,33,31,35];let close = Series::new("data",random_data);// Use a specific function from the overlap studies feature modulelet result = rusty_talib::moving_average(close,2);// Series type eprintln!("{:?}",result);
Casting Series to Vec< f64>
// import Float64Arrayuse polars::export::arrow::array::{Float64Array};let array = result.to_arrow(0);let vec_values = match array.as_any().downcast_ref::<Float64Array>(){Some(float_array) => {let values:&[f64] = float_array.values();let vec_values:Vec<f64> = values.to_vec();
vec_values
}None => returnErr("Failed to downcast to Float64Array".into()),};eprintln!("{:?}",vec_values);
Casting Series to single data
// pull single data from Series type resultfor i in0..result.len(){let elem :f64= src.get(i)?.try_extract::<f64>()?;eprintln!("{:?}",elem);}
Change value in Series
let close = vec![1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,1.0,0.0,11.0,12.0,13.0,];letmut prices = Series::new("data", close);let prices = prices.f64().unwrap().set_at_idx(vec![0,1],Some(10.10)).unwrap().into_series();eprintln!("{}",prices);
License
This project is licensed under the MIT License.
Feel free to customize the content further as needed.
About
Rusty-talib is a technical analysis library written in pure Rust, providing various methods for calculating technical indicators.