输入/搜索内容
欢迎使用优宽量化交易平台
编程语言
JavaScript
TypeScript
Python
Rust
C++
My语言(麦语言)
PINE语言
Blockly可视化
Workflow工作流
支持的协议
密钥安全性
实盘
策略库
托管者
部署托管者
一键租用托管者
手动部署托管者
托管者操作注意事项
全局指定IP地址
命令行版本托管者程序的参数
实盘数据迁移
托管者监控
交易所
策略编辑器
回测系统
策略入口函数
策略框架与API函数
模板类库
策略参数
交互控件
商品期货
期权交易
股票证券
Rust策略编写说明
C++策略编写说明
JavaScript策略编写说明
内置库
扩展API接口
MCP 服务
交易终端
数据探索
Alpha因子分析工具
调试工具
远程编辑
完整策略的导入与导出
多语言支持
实盘、策略分组
实盘展示
策略分享与出租
实盘消息推送
实盘报错、异常退出的常见原因
交易所特殊说明、兼容记录

优宽量化的TA指标库优化了常用指标算法,支持JavaScriptPythonRustC++语言的策略调用。

开源TA库代码优宽量化交易平台API手册

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").unwrap_or_default() == "true" { 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]); }
c++
void main() { while (true) { if (exchange.IO("status") != 0) { exchange.SetContractType("rb888"); auto records = exchange.GetRecords(); if (records.Valid && records.size() > 100) { break; } } Sleep(1000); } auto r = exchange.GetRecords(); auto macd = TA.MACD(r); auto atr = TA.ATR(r, 14); Log(macd[0][macd[0].size() - 1], macd[1][macd[1].size() - 1], macd[2][macd[2].size() - 1]); Log(atr[atr.size() - 1]); }