输入/搜索内容

优宽量化的TA指标库优化了常用指标算法,支持JavaScript、Python、Rust语言的策略调用。

开源TA库代码、语法手册的TA分类。

javascript
function main(){ // 由于这是测试代码,未采用商品期货策略的通用架构,此处仅通过 exchange.IO("status") 函数判断是否成功连接期货公司前置机,连接成功后立即执行测试代码。股票、证券无需使用 exchange.IO("status") 判断连接状态 while(true) { if (exchange.IO("status")) { exchange.SetContractType("rb888") var records = exchange.GetRecords() // K线需要有足够的长度才能计算指标数据 if (records && records.length > 100) { break } } Sleep(1000) } var r = exchange.GetRecords() var macd = TA.MACD(r) var atr = TA.ATR(r, 14) // 打印最后一组指标值 Log(macd[0][r.length-1], macd[1][r.length-1], macd[2][r.length-1]) Log(atr[atr.length-1]) }
python
# Python 需要单独安装 talib 库 import talib def main(): while True: if exchange.IO("status"): exchange.SetContractType("rb888") records = exchange.GetRecords() # records 为 None 或空数组 [] 时,判断结果均为假 if records and len(records) > 100: break Sleep(1000) r = exchange.GetRecords() macd = TA.MACD(r) atr = TA.ATR(r, 14) Log(macd[0][-1], macd[1][-1], macd[2][-1]) Log(atr[-1])
rust
fn main() { loop { if exchange.IO("status").is_ok_and(|v| v.as_i64() == Some(1)) { let _ = exchange.SetContractType("rb888"); if let Ok(records) = exchange.GetRecords(None, None, None) { // K线需要有足够的长度才能计算指标数据 if records.len() > 100 { break; } } } Sleep(1000); } let r = exchange.GetRecords(None, None, None).unwrap(); let macd = TA.MACD(&r, None, None, None); let atr = TA.ATR(&r, 14); // 打印最后一组指标值 Log!(macd[0][r.len() - 1], macd[1][r.len() - 1], macd[2][r.len() - 1]); Log!(atr[atr.len() - 1]); }