Rusty-talib
Rusty-talib 是一个纯Rust编写的技术分析库,提供计算技术指标的各种方法。
特性
- 提供包括重叠研究、动量指标、成交量指标等在内的各种技术分析工具。
- 允许根据需要启用或禁用特定功能模块。
用法
要使用 Rusty-talib,您可以将其添加为依赖项,并根据需要选择启用特定功能模块。例如
[dependencies]
rusty-talib = { version = "0.1.0", features = ["overlap_studies"] }
功能模块
Rusty-talib 包含以下功能模块
重叠研究
| 函数 |
描述 |
状态 |
| BBANDS |
布林带 |
待定 |
| DEMA |
双指数移动平均 |
待定 |
| EMA |
指数移动平均 |
待定 |
| HT_TRENDLINE |
希尔伯特变换 - 瞬时趋势线 |
待定 |
| KAMA |
考夫曼自适应移动平均 |
待定 |
| MA |
移动平均 |
完成 |
| MAMA |
MESA自适应移动平均 |
待定 |
| MAVP |
可变周期移动平均 |
待定 |
| MIDPOINT |
周期中点 |
待定 |
| MIDPRICE |
周期中点价格 |
待定 |
| SAR |
抛物线SAR |
待定 |
| SAREXT |
抛物线SAR - 扩展 |
待定 |
| SMA |
简单移动平均 |
待定 |
| T3 |
三重指数移动平均(T3) |
待定 |
| TEMA |
三重指数移动 |
待定 |
动量指标
| 函数 |
描述 |
状态 |
| ADX |
平均方向性移动指数 |
待定 |
| ADXR |
平均方向性移动指数评级 |
待定 |
| APO |
绝对价格振荡器 |
待定 |
| AROON |
Aroon |
待定 |
| AROONOSC |
Aroon振荡器 |
待定 |
| BOP |
力量平衡 |
待定 |
| CCI |
商品通道指数 |
待定 |
| CMO |
钱德动量振荡器 |
待定 |
| DX |
方向性移动指数 |
待定 |
| MACD |
移动平均收敛/发散 |
待定 |
| MACDEXT |
可控制MA类型的MACD |
待定 |
| MACDFIX |
移动平均收敛/发散 - 固定12/26 |
待定 |
| MFI |
资金流量指数 |
待定 |
| MINUS_DI |
减去方向指示器 |
待定 |
| MINUS_DM |
减去方向移动 |
待定 |
| MOM |
动量 |
待定 |
| PLUS_DI |
Plus方向指示器 |
待定 |
| PLUS_DM |
Plus方向移动 |
待定 |
| PPO |
百分比价格振荡器 |
待定 |
| ROC |
变化率:((价格/前价格)-1)*100 |
待定 |
| ROCP |
变化率百分比:(价格-前价格)/前价格 |
待定 |
| ROCR |
变化率比率:(价格/前价格) |
待定 |
| ROCR100 |
变化率比率100倍:(价格/前价格)*100 |
待定 |
| RSI |
相对强弱指数 |
待定 |
| STOCH |
随机指标 |
待定 |
| STOCHF |
随机快线 |
待定 |
| STOCHRSI |
随机相对强弱指数 |
待定 |
| TRIX |
三重平滑指数移动平均的1日变化率(ROC) |
待定 |
| ULTOSC |
终极振荡器 |
待定 |
| WILLR |
威廉指标 |
待定 |
成交量指标
| 函数 |
描述 |
状态 |
| AD |
查克指标 |
待定 |
| ADOSC |
查克振荡器 |
待定 |
| OBV |
成交量加权平均 |
待定 |
波动性指标
| 函数 |
描述 |
状态 |
| ATR |
真实波动率 |
待定 |
| NATR |
标准化真实波动率 |
待定 |
| TRANGE |
真实波动率 |
待定 |
| 函数 |
描述 |
状态 |
| AVGPRICE |
平均价格 |
待定 |
| MEDPRICE |
中位数价格 |
待定 |
| TYPPRICE |
典型价格 |
待定 |
| WCLPRICE |
加权收盘价格 |
待定 |
周期指标
| 函数 |
描述 |
状态 |
| HT_DCPERIOD |
希尔伯特变换-主导周期周期 |
待定 |
| HT_DCPHASE |
希尔伯特变换-主导周期相 |
待定 |
| HT_PHASOR |
希尔伯特变换-相量分量 |
待定 |
| HT_SINE |
希尔伯特变换-正弦波 |
待定 |
| HT_TRENDMODE |
希尔伯特变换-趋势与周期模式 |
待定 |
模式识别
| 函数 |
描述 |
状态 |
| CDL2CROWS |
双乌鸦 |
待定 |
| CDL3BLACKCROWS |
三只黑乌鸦 |
待定 |
| CDL3INSIDE |
三只乌鸦向上/向下 |
待定 |
| CDL3LINESTRIKE |
三线打击 |
待定 |
| CDL3OUTSIDE |
三只乌鸦向上/向下 |
待定 |
| CDL3STARSINSOUTH |
南方的三颗星 |
待定 |
| CDL3WHITESOLDIERS |
三只白色士兵 |
待定 |
| CDLABANDONEDBABY |
遗弃的婴儿 |
待定 |
| CDLADVANCEBLOCK |
推进块 |
待定 |
| CDLBELTHOLD |
腰带保持 |
待定 |
| CDLBREAKAWAY |
突破 |
待定 |
| CDLCLOSINGMARUBOZU |
收盘三头线 |
待定 |
| CDLCONCEALBABYSWALL |
隐藏的婴儿啄木鸟 |
待定 |
| CDLCOUNTERATTACK |
反击 |
待定 |
| CDLDARKCLOUDCOVER |
暗云笼罩 |
待定 |
| CDLDOJI |
吞没 |
待定 |
| CDLDOJISTAR |
吞没星 |
待定 |
| CDLDRAGONFLYDOJI |
蜻蜓吞没 |
待定 |
| CDLENGULFING |
吞没形态 |
待定 |
| CDLEVENINGDOJISTAR |
傍晚吞没星 |
待定 |
| CDLEVENINGSTAR |
傍晚之星 |
待定 |
| CDLGAPSIDESIDEWHITE |
上/下间隙并列白线 |
待定 |
| CDLGRAVESTONEDOJI |
墓碑吞没 |
待定 |
| CDLHAMMER |
锤子线 |
待定 |
| CDLHANGINGMAN |
吊人线 |
待定 |
| CDLHARAMI |
Harami形态 |
待定 |
| CDLHARAMICROSS |
Harami十字形态 |
待定 |
| CDLHIGHWAVE |
高波蜡烛 |
待定 |
| CDLHIKKAKE |
Hikkake形态 |
待定 |
| CDLHIKKAKEMOD |
修改后的Hikkake形态 |
待定 |
| CDLHOMINGPIGEON |
归巢鸽 |
待定 |
| CDLIDENTICAL3CROWS |
三只相同的乌鸦 |
待定 |
| CDLINNECK |
颈线形态 |
待定 |
| CDLINVERTEDHAMMER |
倒锤子线 |
待定 |
| CDLKICKING |
踢腿 |
待定 |
| CDLKICKINGBYLENGTH |
踢腿 - 牛/熊由较长的三头线决定 |
待定 |
| CDLLADDERBOTTOM |
梯形底 |
待定 |
| CDLLONGLEGGEDDOJI |
长腿吞没 |
待定 |
| CDLLONGLINE |
长线蜡烛 |
待定 |
| CDLMARUBOZU |
三头线 |
待定 |
| CDLMATCHINGLOW |
匹配低点 |
待定 |
| CDLMATHOLD |
维持 |
待定 |
| CDLMORNINGDOJISTAR |
早晨吞没星 |
待定 |
| CDLMORNINGSTAR |
早晨之星 |
待定 |
| CDLONNECK |
颈线形态 |
待定 |
| CDLPIERCING |
穿透形态 |
待定 |
| CDLRICKSHAWMAN |
人力车夫 |
待定 |
| CDLRISEFALL3METHODS |
上升/下降三法 |
待定 |
| CDLSEPARATINGLINES |
分离线 |
待定 |
| CDLSHOOTINGSTAR |
射击之星 |
待定 |
| CDLSHORTLINE |
短线蜡烛 |
待定 |
| CDLSPINNINGTOP |
陀螺线 |
待定 |
| CDLSTALLEDPATTERN |
停滞模式 |
待定 |
| CDLSTICKSANDWICH |
夹心棒 |
待定 |
| CDLTAKURI |
Takuri (具有非常长下影线的蜻蜓吞没) |
待定 |
| CDLTASUKIGAP |
Tasuki间隙 |
待定 |
| CDLTHRUSTING |
推力模式 |
待定 |
| CDLTRISTAR |
三叉星模式 |
待定 |
| CDLUNIQUE3RIVER |
独特三河 |
待定 |
| CDLUPSIDEGAP2CROWS |
向上跳空双乌鸦 |
待定 |
| CDLXSIDEGAP3METHODS |
向上/向下跳空三方法 |
待定 |
统计函数
| 函数 |
描述 |
状态 |
| BETA |
Beta |
待定 |
| CORREL |
皮尔逊相关系数(r) |
待定 |
| LINEARREG |
线性回归 |
待定 |
| LINEARREG_ANGLE |
线性回归角度 |
待定 |
| LINEARREG_INTERCEPT |
线性回归截距 |
待定 |
| LINEARREG_SLOPE |
线性回归斜率 |
待定 |
| STDDEV |
标准差 |
待定 |
| TSF |
时间序列预测 |
待定 |
| VAR |
方差 |
待定 |
| 函数 |
描述 |
状态 |
| ACOS |
向量三角函数ACos |
待定 |
| ASIN |
向量三角函数ASin |
待定 |
| ATAN |
向量三角函数ATan |
待定 |
| CEIL |
向量Ceil |
待定 |
| COS |
向量三角函数Cos |
待定 |
| COSH |
向量三角函数Cosh |
待定 |
| EXP |
向量算术Exp |
待定 |
| FLOOR |
向量Floor |
待定 |
| LN |
向量自然对数 |
待定 |
| LOG10 |
向量Log10 |
待定 |
| SIN |
向量三角函数Sin |
待定 |
| SINH |
向量三角函数Sinh |
待定 |
| SQRT |
向量平方根 |
待定 |
| TAN |
向量三角函数Tan |
待定 |
| TANH |
向量三角函数Tanh |
待定 |
数学运算函数
| 函数 |
描述 |
状态 |
| ADD |
向量算术加 |
待定 |
| DIV |
向量算术除 |
待定 |
| MAX |
指定期间的最高值 |
待定 |
| MAXINDEX |
指定期间最高值的索引 |
待定 |
| MIN |
指定期间的最小值 |
待定 |
| MININDEX |
指定期间最小值的索引 |
待定 |
| MINMAX |
指定期间的最小和最大值 |
待定 |
| MINMAXINDEX |
指定期间最小和最大值的索引 |
待定 |
| MULT |
向量算术乘 |
待定 |
| SUB |
向量算术减 |
待定 |
| SUM |
求和 |
待定 |
示例
use rand;
use rusty_talib;
use rusty_talib::ErrorMsg;
use polars::prelude::*;
fn main(){
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) => {
if let Some(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 project
use 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 module
let result = rusty_talib::moving_average(close,2);
// Series type
eprintln!("{:?}",result);
将系列转换为Vec< f64>
// import Float64Array
use 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 => return Err("Failed to downcast to Float64Array".into()),
};
eprintln!("{:?}",vec_values);
将系列转换为单个数据
// pull single data from Series type result
for i in 1..result.len() {
let elem :f64= src.get(i)?.try_extract::<f64>()?;
eprintln!("{:?}",elem);
}
许可证
本项目采用MIT许可证。
可根据需要进一步自定义内容。