#技术分析 #指标 #技术 #分析 #财务分析 #数据处理

rusty-talib

一个使用纯Rust代码进行技术分析的Rust包

7 个版本

0.1.6 2023年10月22日
0.1.5 2023年10月22日

#327 in 数学

MIT 许可证

31KB
166

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许可证。

可根据需要进一步自定义内容。

依赖关系

~19–28MB
~468K SLoC