Changelog
[0.11.0] - 2025-12-24
💥 不兼容改动
- 下单参数重构为全局 Visitor 配置:
- 原本在
place_order等下单接口的params参数中的以下字段已移除:market_order_modemarket_order_slippageprocess_amountprocess_price
- 上述配置现在统一通过
config.toml中的[visitor]配置进行全局设置 - 迁移指南:
# config.toml 新增配置
[visitor.order_normalizer]
enabled = true
price_rounding = "BuyCeilSellFloor" # 原 process_price
amount_rounding = "Round" # 原 process_amount
market_order_mode = "Safe" # 原 market_order_mode
market_order_slippage = 0.002 # 原 market_order_slippage
- 原本在
✨ 功能新增
- 新增 Visitor 访问器配置系统:基于访问者模式的 API 拦截器配置,用于在请求/响应过程中自动处理数据标准化
[visitor.order_normalizer]:订单标准化配置enabled:是否启用,默认trueprice_rounding:价格舍入策略,默认BuyCeilSellFlooramount_rounding:数量舍入策略,默认Roundmarket_order_mode:市价单处理模式,默认Safemarket_order_slippage:市价单滑点,默认0.002(0.2%)
[visitor.balance_normalizer]:余额标准化配置enabled:是否启用,默认true- 功能:稳定币零值保护、默认值填充
[visitor.base_converter]:基础币转换配置enabled:是否启用,默认true- 功能:合约乘数换算、打包币双向换算(如 1000PEPE → PEPE)
📚 文档更新
- 在
config_guide.md中新增[visitor]配置章节 - 更新
trader_api_v2_doc.md中place_order等接口的params参数说明,标注已废弃字段
[0.10.0] - 2025-12-12
💥 不兼容改动
- strategy.py 新增三个回调方法:
on_subscribe(self, account_id, result): 动态订阅成功时触发on_unsubscribe(self, account_id, result): 取消订阅时触发on_batch_amend_order(self, account_id, order_ids_result): 批量订单修改完成时触发
✨ 功能新增
- 支持 Rust 语言策略
- 现在可以使用 Rust 语言编写交易策略
- 支持批量改单(仅 BinanceSwap 实现)
- 新增批量改单接口,支持一次性修改多个订单
- Python 策略新增动态订阅方法(仅 BinanceSwap 实现)
- 新增
on_subscribe回调:订阅成功时触发 - 新增
on_unsubscribe回调:取消订阅时触发 - 支持 WebSocket 运行时动态订阅和取消订阅
- 新增
- 回测功能增强
- 回测支持 Funding 费率
- 支持多个交易所多个账号回测及报告
- 重构撮合引擎与账户体系
- 修复回测报告不能动态添加交易点和挂单点的问题
- BinanceSwap 支持聚合成交(Agg Trade)
- Instrument 数据结构增强
- 新增
max_order_value字段:单笔限额信息 (Option<MaxOrderValue>)MaxOrderValue结构体包含:max_limit_notional: 单笔限价单最大名义价值(USDT 等 quote 币种)max_market_notinal: 单笔市价单最大名义价值(USDT 等 quote 币种)
- 新增
permissions字段:支持的操作权限列表 (Vec<InstrumentPermission>)InstrumentPermission枚举值:Web: 支持 Web 下单Api: 支持 API 下单Rpi: 支持 RPI 单(Binance 特有)
- 新增
- Position 数据结构增强
- 新增
adl字段:ADL 风险评分 (Option<Adl>)Adl结构体包含:score: 标准化 ADL 风险评分,0.0 风险最低,1.0 风险最高raw: 交易所原始 ADL 等级(若有)source: 原始字段名(如"adlRankIndicator"/"adl")
- 新增
- 爆仓/ADL 订单识别支持
- 新增订单 CID 前缀用于识别爆仓和 ADL 订单
ADL_CLOSE_PREFIX:"adl_close_"- ADL 平仓订单前缀LIQ_CLOSE_PREFIX:"liquidation_close_"- 爆仓平仓订单前缀- 系统会将这两个前缀拼接到交易所返回的 CID 之前
- 如果交易所返回的 CID 为空,则 CID 直接设为对应的前缀(如
"liquidation_close_") - 目前支持的交易所:Coinex、Kucoin、Gate、Hotcoin、Binance、Okx、Bitget、Mexc、Phemex
🔧 优化改进
- Rust 策略下发指令返回更多报错信息
- Binance 并发请求优化,加快接口响应速度
- rand 改为原子强轮询,提升性能
🐛 问题修复
- 修复 BinanceSwap Websocket 订阅私人频道出错的问题
- 修复 BybitSwap 平仓时报错 "Not allowed to exceeded position limits due to Open Interest" 的问题
- 修复 HuobiSwap 的 Offset 字段映射错误的问题
- 修复 HuobiSwap Position 反序列化失败的问题
- 修复 HuobiSwap get_positions 因请求头没有 Content-Length 报错的问题
- 修复 Bybit 头寸中浮点数杠杆解析问题
- 兼容 Binance 合约新的 instrument 状态
- 修复 get_instrument 容易导致 Binance 限频的问题
- 修复 BitgetSwap instruments 过滤里对 LimitOpen 状态合约的处理
[0.9.4] - 2025-10-20
🐛 问题修复
- 修复event_handle_mode的Latest模式没生效的问题
- 修复WebSocket消息日志级别,优化错误日志记录
- 修复Bitget交易所价格信息打印问题
- 修复LBank WebSocket断开重连时重复订阅BBO的问题
- 修复Coinex订单类型和时间有效性解析问题
- 修复Gate交易所深度时间戳和订单CID问题
- 修复Bitmart单向持仓平仓时position_id传递问题
- 修复Kucoin现货K线limit参数不起作用的问题
- 修复Binance现货WebSocket API批量命令回落到REST的问题
- 修复Bybit现货BbOrderData解析和instrument精度问题
- 修复Bitget v3手续费错误和现货余额错误
✨ 功能新增
- 新增LBank交易所支持,包括REST和WebSocket
- 支持仅订阅公共数据时无需登录
- 新增Weex交易所支持,包括REST和WebSocket
- 新增Aster交易所支持,完成合约对接
- 新增Bitget v2 BBO订阅功能
- 新增Bybit提现功能
- 新增Coinex Cookie余额获取功能
- 支持使用Cookie获取实时总资产余额
- 新增Hotcoin订单手续费信息
- 新增Gate交易所org_id头部支持
- REST和WebSocket API请求中添加X-Gate-Channel-Id头部
- 新增交易所配置proxy字段,支持为每个交易所账户单独配置代理
- 可在config.toml的交易所配置中设置proxy参数
- 支持HTTP、HTTPS、SOCKS5协议
- 支持用户名密码验证
- 支持pyex等所有交易所的代理配置
- 配置示例:
[[exchanges]]
exchange = "BinanceSwap"
key = "your_api_key"
secret = "your_secret"
# HTTP代理
proxy = "http://127.0.0.1:7890"
# SOCKS5代理(带认证)
# proxy = "socks5://username:password@127.0.0.1:1080"
🔧 优化改进
- 增加针对AWS服务器CPU的优化编译,系统延迟更低
- 优化BinanceSwap增量深度数据间隔从100ms到50ms(使用0ms版本订阅)
- 优化WebSocket API批量命令回落到REST的机制
- 优化HyperLiquid迁移到alloy,统一地址与签名序列化
- 优化Context逻辑,初始化时传入name,Debug时获取更多信息
- 统一从配置文件中获取proxy配置
- 优化pyo3的线程状态保留 降低系统延迟
[0.9.3] - 2025-09-26
💥 不兼容改动
- 新增event_handle_mode配置参数:WebSocket事件处理模式发生重大变更
- 所有WebSocket订阅现在支持
event_handle_mode参数,默认为"Sync"模式 - 支持三种处理模式:
"Latest"、"Sync"、"Async" - 重要:现有策略需要根据需求选择合适的处理模式,否则可能影响数据处理性能
- 旧版本配置已废弃:
data_source.market_mode配置已完全被event_handle_mode取代 - 配置示例:
def subscribes(self):
return [
{
"account_id": 0,
"event_handle_mode": "Latest", # 新增:指定事件处理模式
"sub": {
"SubscribeWs": [{"Bbo": ["BTC_USDT"]}]
}
}
] - 迁移指南:
- 高频数据(BBO、Trade)推荐使用
"Latest"模式 - 重要数据(Depth、Funding)推荐使用
"Sync"模式 - 高频重要数据推荐使用
"Async"模式 - 不指定
event_handle_mode时默认为"Sync"模式,保持向后兼容 - 配置迁移:请将原有的
data_source.market_mode配置迁移到新的event_handle_mode参数
- 高频数据(BBO、Trade)推荐使用
- 所有WebSocket订阅现在支持
✨ 功能新增
- 新增支持pyex功能,支持Python编写的交易所实现
- 允许开发者使用Python语言编写自定义交易所适配器
- 扩展了交易所支持的灵活性,支持更多定制化需求
- 为Python开发者提供了更友好的交易所集成方式
- 新增系统延迟、行情延迟、下单延迟等数据统计功能
- 提供详细的性能监控数据,帮助优化交易策略
- 支持系统延迟、行情延迟、下单延迟等多维度统计
- 如需相关数据,请升级至该版本并联系OpenQuant相关开发人员
- 优化CPU亲和性和线程优先级设置,支持自动分配核心
- 添加StrategyPythonBegin打点和新的性能指标,优化打点逻辑和Context传递
- 为每个交易所配置独立的feature,提升编译效率
🔧 优化改进
- 重构trader模块为quant模块,优化代码结构以支持新的量化框架
- 移除热路径上的spawn_blocking,仅为Timer回调保留spawn_blocking逻辑,大幅提升性能
- 优化依赖管理,统一依赖源为main分支,添加p256和primeorder包支持
- 改进构建脚本,添加强制重建环境变量支持,优化Cargo.lock变更监测
- 优化WebSocket订阅使用方式,更新相关文档
- 移除OpenSSL依赖,简化部署
🐛 问题修复
- 修复CLI help命令显示问题
- 修复部分未处理的block_on调用问题
- 修复日志级别设置,将部分info级别日志调整为debug,减少生产环境日志噪声
- 修复GitLab CI/CD配置中的多余空行,优化可读性
📚 文档更新
- 更新WebSocket订阅使用方式文档
- 优化构建和部署相关文档
- 完善性能监控和打点相关文档
- 重要提示:请以每次打包压缩包中的
docs文件夹下的trader_api_v2_doc.md文档为准,网页上的文档可能更新不及时
🔨 工具链
- 优化GitLab CI/CD配置,提升构建效率
- 改进构建环境管理,支持强制重建
- 优化依赖版本管理,确保项目依赖一致性
[0.9.2] - 2025-08-29
🐛 问题修复
- [GateSwap] 修复部分币对的价格精度问题,修复MBABYDOGE_USDT的乘数问题
✨ 功能新增
- 新增支持 Bitget 统一账户api
- 需要在config.toml 中的交易所配置中的params 指定is unified 为true
[[exchanges]]
exchange = "BitgetSwap"
is_colo = false
is_testnet = false
is_unified = false
key = "your_api_key"
passphrase = "your_passphrase"
rebate_rate = 0
secret = "your_secret"
- 需要在config.toml 中的交易所配置中的params 指定is unified 为true
- 新增订单数量和价格处理方式配置功能:
- 支持通过
process_amount参数指定数量处理方式(BuyCeilSellFloor、BuyFloorSellCeil、Ceil、Floor、Round、None) - 支持通过
process_price参数指定价格处理方式(BuyCeilSellFloor、BuyFloorSellCeil、Ceil、Floor、Round、None) - 默认数量处理方式为Round(四舍五入),默认价格处理方式为BuyCeilSellFloor(买向上取整,卖向下取整)
- 提供灵活的数量和价格精度控制,满足不同交易策略需求
- 支持通过
- 新增插件系统,支持功能扩展和定制化需求:
- 支持折扣币自动购买插件,通过自动购买和管理交易所原生代币(如BNB等)提供交易手续费折扣, 目前支持的所BinanceSwap,BinanceSpot,BitgetSpot,HuobiSwap,HuobiSpot,MexcSpot
- 插件系统支持配置化启用/禁用,支持优先级设置和自动重启功能
- 折扣币插件支持智能管理,自动维持指定数量的折扣币余额,降低交易成本
- ⚠️ 重要:折扣币功能默认关闭,如需使用请手动在配置中设置
enabled = true
- 新增订单手续费详情字段支持:
- Order结构新增
fee_detail字段,提供详细的手续费信息 - 支持多币种手续费支付情况的详细记录
- 包含手续费数值、费率、币种和maker/taker标识
- 目前仅Bitget Swap和Binance Swap交易所支持此功能
- Order结构新增
📚 文档更新
- 新增OpenQuant执行流程详解文档:
- 在trader_api_v2_doc.md中添加"🚀 OpenQuant 执行流程详解"章节
- 详细说明从配置文件加载到策略启动的完整执行流程
- 包含策略文件要求、数据订阅配置和策略启动机制
- 添加事件回调的并行与串行处理机制说明
- 详细解释Market Mode配置对数据处理的影响(Latest模式并行处理,All模式串行处理)
- 新增策略停止机制说明,包含Ctrl+C信号监听和on_stop()方法调用
- 添加线程安全注意事项,提供并行处理时的最佳实践和代码示例
- 包含完整的策略执行时序图和处理机制总结
- 在trader_api_v2_doc.md中完善下单参数文档:
- 添加process_amount和process_price参数的详细说明
- 新增数量处理和价格处理方式的使用指南
- 提供多种处理方式的使用示例和最佳实践
- 更新常见问题解答,增加关于数量和价格处理的问题
- 更新Order数据结构文档:
- 在trader_api_v2_doc.md中添加fee_detail字段的详细说明
- 包含手续费数值、费率、币种和maker/taker标识的完整文档
- 明确标注目前仅Bitget Swap和Binance Swap支持此功能
- 新增插件系统文档:
- 在trader_api_v2_doc.md中添加"九、插件系统"章节
- 详细说明插件系统配置和使用方法
- 提供折扣币自动购买插件的完整使用指南
- 包含插件配置示例、故障排除和最佳实践
🔧 优化改进
- 优化订单参数处理逻辑,提升数量和价格精度控制的准确性
- 改进订单参数验证机制,确保处理方式参数的有效性
- 优化插件系统架构,提升插件加载和运行效率
- 改进折扣币插件的智能管理算法,提升自动购买和余额管理的准确性
[0.9.1] - 2025-08-08
🐛 问题修复
- 修复配置文件热更新对于json、yaml、csv格式的支持
- [BinanceSpot] 修复ws 订阅的order中postonly order被跳过的问题
- [OkxSwap] 修复止盈止损单撤单撤不掉的问题
🔧 优化改进
- [BinanceSwap] get_max_position 修改实现方式,不再通过修改杠杆的返回值来获取最大持仓,而是读取对应的杠杆梯度表获取。
- Strategy的 init 构造函数中调用trader方法不再报错
✨ 功能新增
- 支持交易所BitmartSwap、HotcoinSwap
- coinex 下单/批量下单支持通过extra传入"is_hide"=true来隐藏订单
- okx 下单/批量下单支持通过extra传入"tag"= "xxxxxx"来设置机构代码
[0.9.0] - 2025-07-30
💥 不兼容改动
- order and fill中的source为UserTrade的order删去部分无用字段(order_type,side, pos_side,time_in_force,amount,price,quote_amount)
- 不再支持bitget v2 bbo的订阅建议采用v2 的depth1 或者v1的bbo
🐛 问题修复
- [HotcoinSwap] 修复部分错误处理
- [HuobiSwap] 修复funding 订阅后,资金费结算时的错误日志问题
- [BitgetSwap] 修复仓位中的mmr错误问题
- 修复表格上传问题
- 修复订单中已经round完tick的price被多加/少加一个tick的问题
✨ 功能新增
- [BitgetSwap] 新增get kline接口
- [BitgetSwap] 支持WebSocket订阅版本配置:可在config.toml的params中设置
version="v1"来订阅v1版本的depth和bbo数据 - [HotcoinSwap] 新增get order by id
- 完善订单相关文档
- 订阅新增AggTrade(聚合成交)channel 目前仅bn支持
- 支持通过交易所配置多ip的index (ip_indices字段) 来指定对应的所使用对应的ip(刚定义相关接口,交易所暂未支持,有交易所需要请反馈)
📚 文档更新
- 完善Bitget交易所特殊说明文档:
- 在trader_api_v2_doc.md中添加"6.9 交易所特殊说明"章节
- 详细说明Bitget修改订单接口需要在extra中传递new_cid字段
- 添加Bitget WebSocket订阅v1版本bbo depth配置说明
- 更新config.toml中Bitget交易所配置的params字段说明
- 在amend_order接口文档中添加完整的使用示例和注意事项
- 在place_order接口文档中添加Bitget下单特殊处理说明
🖥️ CLI工具
- 新增OpenQuant CLI命令行工具:
- 支持查看IP映射关系:
./open_quant cli ips- 显示网卡IP到公网IP的映射关系 - 支持查询依赖Git Hash:
./open_quant cli dep-hash <dependency_name>- 查询指定依赖的Git Hash信息 - 支持查询系统状态:
./open_quant cli status- 显示系统状态、OpenQuant状态和性能指标 - 支持版本信息查询:
./open_quant cli -V- 显示详细的版本信息(Git Hash、构建时间、目标平台等) - 使用clap derive宏实现现代化的命令行接口
- 提供美观的表格化输出格式
- 支持动态解析Cargo.lock中的Git依赖信息
- 实时获取系统资源使用情况和网络状态
- 支持查看IP映射关系:
[0.9.0-alpha.17] - 2025-07-18
🐛 问题修复
- [nb8]
- 修复: 强停状态上传表格格式问题
- 上传数据时即使没有表格也正常上传实盘页数据
- set_force_stop状态后可以根据is_web_force_stopped来判断是否强停
✨ 功能新增
- 新增交易所HotcoinSwap
- 支持DeribitFuture Ws
- 策略配置支持yaml、toml、json、csv格式
- [BybitSwap] 支持get_margin_mode, update set_margin_mode to unified account mode
- [GateSwap] 支持get kline
- [BitgetSwap] 修复ws api下单/撤单错误没调回调的问题
[0.9.0-alpha.16] - 2025-07-16
🐛 问题修复
- [kucoinSwap] 修复: 1MBABYDOGEUSDT 的解析symbol
- [BinanceSwap] 修复: 单向持仓时sell short订阅回报成了 sell long 订单
[0.9.0-alpha.15] - 2025-07-14
🐛 问题修复
- [GateSwap] 修复订单id错误问题
- [HuobiSwap] 修复最小资金费率为0的问题
- [BitgetSwap] 修复ws api撤单失败没有触发回调的问题
[0.9.0-alpha.14] - 2025-07-10
🐛 问题修复
- [GateSwap] 修复OrderAndFill订阅多个symbol报错问题,修复获取资金费率报错问题
- [BybitSwap] 修复单向持仓下ws仓位更新的仓位方向问题
- [GateSwap] 修复减仓单数量处理错误问题
- [BybitSwap] 修复获取余额报错问题、修复下单量问题
🔧 优化改进
- 获取所有币种余额,如果交易所返回为空,赋值0.00001的USDT和USDC Balance避免空数组
✨ 功能新增
- 新增交易所CoinMarketCap(需官网注册申请api key才能使用)
- 新增接口get_market_cap 获取市值数据 仅适用于CoinMarketCap交易所,详情参见文档[6.6 市值数据查询]
result = self.trader.get_market_cap(1, "BTC") - Rest订阅新增BalanceByCoin 获取指定coin余额
{
"account_id": 0,
"sub": {
"SubscribeRest": {
"update_interval": {"secs": 2, "nanos": 0},
"rest_type": {
"BalanceByCoin": "USDT"
}
}
}
}
[0.9.0-alpha.13] - 2025-07-08
🐛 问题修复
- [BitgetSwap] 支持adl相关的订单tradeSide
- [GateSwap] funding rate 最小最大值采用v2版本接口
- [GateSwap] 修复减仓单数量处理错误问题
- [BybitSwap] 修复获取余额报错问题、修复下单量问题
✨ 功能新增
- 新增止赢止损订单相关接口 目前支持交易所: BinanceSwap、BitgetSwap、GateSwap
- post_stop_order
- get_stop_orders
- amend_stop_order
- cancel_stop_order
[0.9.0-alpha.12] - 2025-07-03
💥 不兼容改动
- 正式网也必须配置密钥才能运行
🐛 问题修复
- start/subscribe 过程中按下ctrl c自动退出
- coinex修复交易币对解析错误
- 修复request 接口query & body参数解析错误
- 修复 return cmds不包含logs报错问题
✨ 功能新增
- 仓位增加爆仓价、保证金率、标记价格等字段详见文档[7.2 Position(持仓)数据结构]
- 文档新增http_request & request 接口示例
- [HyperLiquidSwap] 新增支持get_funding_fee 接口
📝 文档更新
- 新增Position(持仓)数据结构说明:
- 在"七、数据结构说明"章节新增完整的Position数据结构文档
- 完善持仓相关API文档:
- 更新
get_position和get_positions方法的返回值说明
- 更新
[0.9.0-alpha.11] - 2025-07-01
🐛 问题修复
- 修复python return 错误的cmd跳过而不报错的问题
- 修复get funding rates报错问题
- [KucoinSwap] 优化资金费率接口
- [GateSwap] 修复统一账户获取仓位报错
[0.9.0-alpha.10] - 2025-06-30
🐛 问题修复
- [BinanceSwap] 修复get_instrument 接口返回的新类型报错
- [GateSwap] 支持get_funding_rate_history 接口
[0.9.0-alpha.9] - 2025-06-27
🐛 问题修复
- [BybitSwap] 修复大部分问题,优化性能\
- [BinanceSwap] 修复双向持仓下的问题
- 修复交割合约symbol解析问题
🔧 优化改进
- 加上编译优化,优化性能
- 优化下发多条命令的系统延迟
[0.9.0-alpha.8] - 2025-06-25
🐛 问题修复
- [BybitSwap] 修复订单postonly不支持的错误
✨ 功能新增
- [BybitSwap] 新增支持order and fill订阅
- Okx支持币本位合约(OkxSwapUsd)、交割合约(OkxFuture)
- Binance支持交割合约(BinanceFuture)
[0.9.0-alpha.7] - 2025-06-24
🐛 问题修复
- [BybitSwap] 修复余额获取逻辑完善所有字段
- [HyperLiquidSwap] 修复部分接口报错问题
✨ 功能新增
- TimerSubscribe结构体新增
initial_delay字段,支持设置定时器启动前的初始延迟时间 - 通过
initial_delay可以错开多个定时器的启动时间,避免资源竞争和并发冲突 - 定时器订阅现在支持更精细的启动时间控制,提升多定时器环境下的系统稳定性
- 新增
get_funding_rate_history接口,支持查询历史资金费率记录- 支持按交易对和时间范围查询历史资金费率
- 支持获取单个或全部交易对的资金费率历史
- 提供灵活的时间范围筛选和数量限制功能
- 新增
get_kline接口,支持获取K线数据- 支持多种时间粒度:1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M
- 支持指定时间范围和数量限制
- K线数据包含完整的OHLCV信息和可选的成交笔数、主动买入量等字段
- 资金费率结构体功能增强
- 新增
min_funding_rate字段:资金费率最小值(交易所设定的下限) - 新增
max_funding_rate字段:资金费率最大值(交易所设定的上限)
- 新增
- WebSocket新增Kline数据订阅
- 支持实时K线数据推送,可订阅多个交易对和不同时间周期
- 通过
on_kline回调接收实时K线更新 - K线数据包含
confirm字段标识K线是否已完结,便于技术分析
📝 文档更新
- 完善定时器订阅相关文档,新增
initial_delay字段的配置说明和使用场景 - 新增初始延迟使用场景对比表格,提供不同场景下的建议延迟时间
- 更新所有定时器订阅示例,展示如何合理配置初始延迟避免资源竞争
- 完善资金费率相关API文档,添加新增字段的详细说明和使用示例
- 新增K线数据获取和订阅的完整使用指南
- 更新WebSocket订阅配置,添加Kline订阅示例
- 补充历史资金费率查询的实际应用场景和最佳实践
[0.9.0-alpha.6] - 2025-06-18
💥 不兼容改动
- 移除了
cache_update方法,该方法已从代码中删除 cache_save方法现在直接接受Python对象(字典、列表等),无需手动JSON序列化cache_load方法直接返回Python对象或None,无需手动JSON反序列化
📝 文档更新
- 重构缓存管理部分文档,与实际代码实现保持一致
- 添加了更完整的缓存使用示例和最佳实践
[0.9.0-alpha.5] - 2025-06-16
✨ 功能新增
- exchange配置新增参数multi_ip, 支持交易所rest弹性ip轮询请求
- trader新增graceful_shutdown方法,支持优雅关闭进程
- ws api支持16条ws链接
📝 文档更新
- 优化traderv2 api示例及result说明
[0.9.0-alpha.4] - 2025-06-12
✨ 功能新增
- 文档增加get_deposit_address 接口说明
- 文档增加withdrawal 接口说明
- 现启动open quant需要secret_id和secret_key认证,请在config.toml中配置(目前仅测试网,点击 右上角头像-访问秘钥-新建秘钥 获得SecretId和SecretKey)
[web]
is_production = false
secret_id = "xxx"
secret_key = "xxxx"
💥 不兼容改动
- nb8sdk初始化不再需要传is_production参数,会直接使用config.toml中的web.is_production参数
[0.9.0-alpha.3] - 2025-06-06
💥 不兼容改动
- 修改最大持仓返回结构体包含名义价值和数量
{
"long_notional": 1000.0,
"short_notional": 1000.0,
"long_quantity": 0.001,
"short_quantity": 0.001
}- 最大可开仓数量数据字典,包含:
long_notional: 浮点数,多仓对应Quote名义价值short_notional: 浮点数,空仓对应Quote名义价值long_quantity: 浮点数,多仓对应Base数量short_quantity: 浮点数,空仓对应Base数量
- 最大可开仓数量数据字典,包含:
🐛 问题修复
- [BitgetSwap] 修改订单接口特殊说明:当使用Bitget交易所时,修改订单接口需要在
extra参数中传递new_cid字段来设置新的订单cid。注意此方法会返回传入的订单的id,因为交易所返回的id是空,并且经查询,订单id没变。使用示例:result = trader.amend_order(
account_id=0,
order={
"symbol": "BTC_USDT",
"order_id": "123456789",
"price": 50000.0
},
extra={"new_cid": "new_order_cid_001"}
) - [BitgetSwap] 修复websocket重连资费重复推送的问题
[0.9.0-alpha.2] - 2025-06-04
🐛 问题修复
- 修复req id异常导致ws api下单没响应的问题
- get_open_order_by_id、cancel_order支持通过id/cid 并完善相关文档及示例
- 修正http_request文档
- 修复bitget host处理
- 修复gateSwap只订阅orderAndFill时不推送订单的问题
- 修复bitgetSwap OrderAndFill推送的order symbol错误问题
🔧 优化改进
- 优化http_request的请求body,body改成dict直接传入
- bitgetSwap批量撤单 没有订单时不再报错
[0.9.0-alpha.1] - 2025-05-30
🐛 问题修复
- 修复部分交易所order and fill异常情况
- 修复获取稳定币余额没做0.0001最小值处理问题
- 修复transfer、sub transfer、get funding fee 文档问题
- 修复BinanceMargin的get balances返回的asset不正确问题
- 修复get kline 接口
- gate swap获取最大持仓返回币的数量
- 修复ws api下单精度未做处理的问题
[0.9.0] - 2025-05-20
💥 不兼容改动
- 移除所有回调函数中的context字段
- 正式发布traderV2版本,可通过config.toml中设置
trader_version = "V2"启用(默认为V2),若需使用旧版请设置trader_version = "V1" - v2版本命令结构扁平化,不再使用多层嵌套,例如下单命令格式:(extra字段为可选字段,用于兼容各交易所特殊字段)
{
"method": "PlaceOrder",
"account_id": 1,
"order": {
"cid": "test1234567",
"symbol": "BTC_USDT",
"order_type": "Limit",
"side": "Buy",
"pos_side": "Long",
"price": 50000.0,
"amount": 0.1,
"time_in_force": "GTC"
},
"params": {
"is_dual_side": false,
"leverage": 10,
"margin_mode": "Cross",
"market_order_mode": "Normal"
},
"extra": {
"奇葩字段": "奇葩值"
}
}
✨ 功能新增
- traderV2支持直接调用交易所API,无需使用publish命令,默认同步执行,可通过
sync=false参数设置为异步,可通过generate=True来生成命令去publish - 所有接口支持通过extra参数设置动态参数,兼容各交易所特殊字段
- 新增OrderAndFill频道订阅(通过on_order_and_fill回调接收),同时订阅订单频道和用户私有成交频道,优先推送较快的数据(一般私有成交速度更快)。私有成交数据仅包含成交数量和均价,可能缺少订单类型、方向等字段,可通过order结构体的source字段区分数据来源。该频道可与订单频道并行订阅,互不干扰
- bitget支持通过WebSocket API撤单
- 交易系统自动请求并缓存交易所instruments数据,可在config.toml中通过
instruments_refresh_sec = 300配置刷新间隔 - 当交易所Instrument变化时会触发相应回调:on_instrument_added(新增)、on_instrument_removed(删除)和on_instrument_updated(更新)
- 下单时自动处理价格和数量,包括价格乘数、数量乘数、步长、精度、最小交易量和最小名义价值处理
- 安全市价单简化配置,无需传入price_tick和price_precision,可通过OrderParams中的market_order_slippage参数自定义滑点(默认0.002)
- 支持交易所BitmartSwap、BitmartSpot、ZoomexSwap、ZoomexSpot、WhitebitSwap、WhiteSpot、DeribitSwap、DeribitSpot、DeribitFuture(交割合约)、DeribitOption(期权)
[0.8.7] - 2025-06-04
🐛 问题修复
- 修复mexcspot的bbo订阅频道为10ms的
- kucoin main 分支 兼容了 "交易所必填字段返回null"
- [GateSwap] 最大持仓价值转换为数量, 获取最大持仓修复值过大问题
- [BinanceSwap] 最大持仓价值转换为数量
[0.8.6] - 2025-05-28
✨ 功能新增
- 交易所配置支持host、ws_host、ws_api_host 自定义配置,此host优先于colo和testnet
🐛 问题修复
- [HuobiSwap] 增加get_all_open_orders 接口
- [BitgetSwap] 修复获取最大持仓部分杠杆值报错的问题
- [KucoinSwap] get_fungding_rate增加周期
- 修复get balance小币种为空时返回错误值的情况
[0.8.5] - 2025-05-20
💥 不兼容改动
- on_latency 回调request_id字段修改为account id
✨ 功能新增
- 支持IsDualSideExt、SetDualSidePositionExt、AmendOrderExt、CancelOrderExt同步命令 带Ext后缀的会有新的命令格式,可以动态自定义参数,兼容部分交易所奇葩字段
🐛 问题修复
- [BinanceMargin] 修正深度行情推送的exchange字段
- [Binance] 获取instruments开启压缩
- [Phemex] 修复多余日志输出、订单推送、最大持仓问题
- [HuobiSwap] min qty改为默认1 代表最少一张合约
- [BitgetMargin] 获取当前借币的数额加上利息
- [BitgetSpot] 修正现货的ws order推送的市价买单的数量为计价币数量
- [CoinW] 修复instrument和下单bug
[0.8.4] - 2025-04-30
💥 不兼容改动
- 安全市价单必须传price tick和price_precision,slippage默认是0.002
{"market_order_mode":{"Safe":{"price_precision":5,"price_tick":0.00001,"slippage":0.002}}}
🐛 问题修复
- [OkxSwap] 资金费用结算去重
- [BitgetSwap] 资金费用结算去重
- [HuobiSpot] 修复余额错误, min notional使用10
- [HuobiSwap] min qty使用contrat size
- ws api正常下安全市价单
- 修复nb8_sdk 错误日志上传问题
[0.8.3] - 2025-04-27
🐛 问题修复
- [BybitSwap] rest查询资金费率增加费率周期
- [HuobiSpot] 修复自定义host报错问题
- [nb8_sdk] 缓存存储到工作目录,增加stats结构体文档说明
[0.8.2] - 2025-04-24
🐛 问题修复
- [HuobiSwap] cid生成去除0
- [BinanceSpot] 修复1000系列交易对行情数据没处理的问题
- [BitgetSwap] 修复amount tick用错字段的问题
- 修复on_funding_fee没有触发问题
- 修复python 的sys path导入问题,现在能正确将当前工作目录,和strategy.py父目录加入到sys.path中
✨ 功能新增
- [BybitSwap] 支持资金费结算的ws订阅
- [KucoinMargin] 支持高频接口
- [KucoinSpot] 支持高频接口
🔧 优化改进
- 优化示例代码,现在仅保留strategy.py,其余文件移除
[0.8.1] - 2025-04-22
💥 不兼容改动
- base_strategy.py新增on_funding_fee回调
✨ 功能新增
- 文档新增实盘强停状态变更说明 具体参考文件misc/trader_api_doc.md 5.7 账户强停功能
- 新增FundingFee、MarkPrice同步命令
🐛 问题修复
- [BitgetSwap] 修复ws position资金费为空的情况
- [BinanceSwap] 修复以下问题:
- 现货平均成交均价未考虑prefix_multiplier。
- 无法单独订阅funding_fee。
- position order 未按订阅symbol过滤。
[0.8.0] - 2025-04-18
💥 不兼容改动
- trader_py改名为trader
✨ 功能新增
- 支持rust nb8sdk 使用方法参考文件trader_api_doc.md
- websocket支持订阅FundingFee,rest支持获取FundingFee
- 支持HuobiSpot
- rest支持根据symbol获取标记价格及获取全部交易对标记价格
- trader支持request方法
🔧 优化改进
- GateSwap、GateSpot默认不再使用ws api下单,如果需要使用ws api下单,请在config.toml中将exchanges.use_ws_api设置为true
- 错误处理系统重构
- 错误码分类
- 通用错误 (4001-4009)
- 基础错误 (4001)
- 请求频率限制 (4002)
- Cookie过期 (4003)
- 余额不足 (4004)
- API密钥或IP无效 (4005)
- 网络错误 (4006)
- 精度错误 (4007)
- 保证金类型无需更改 (4008)
- 重试请求 (4009)
- 订单相关错误 (4101-4103)
- FOK订单被拒绝 (4101)
- 订单未找到 (4102)
- Maker单立即成交错误 (4103)
- API相关错误 (5001-5002)
- 接口未实现 (5001)
- 网络连接错误 (5002)
- 通用错误 (4001-4009)
- 错误码分类
[0.7.18] - 2025-04-07
🔧 优化改进
- 优化nb8_sdk, 优化可用余额接口及前端展示
🐛 问题修复
- [BitgetSpot] 修复get bbo报错问题
- [KucoinSpot] 修复min_notional错误问题
- [HuobiSwap] 全部接口验证及bug修复
- 深度推送问题修复
[0.7.17] - 2025-04-01
✨ 功能新增
- 支持自定义设置交易所用不用ws api接口, 通过config.toml中的exchanges.use_ws_api字段设置
- use_ws_api: 使用websocket api去下单,默认 BinanceSpot、OkxSwap、OkxSpot、OkxMargin、GateSwap、GateSpot为true, BinanceSwap为false 其余暂不支持
- 新增nb8_sdk, 具体使用方法参考nb8_sdk/README.md 以及nb8_sdk/example.py
- 支持coinw
🔧 优化改进
- 当使用trader publish命令的时候释放gil锁,避免其他回调阻塞
🐛 问题修复
- [CoinexSwap] 余额为0时请求返回报错
- [Bybit] 运行过程中bybit报错 程序停止问题
- [Bybit] 有持仓返回positions为0
- [Huobi] 火币行情timestamp是16位,改成13位
- [Huobi] 火币订阅一档行情,推出来多档,改成订阅几档就是几档
[0.7.16] - 2025-03-21
✨ 功能新增
- 支持ApexSwap,DydxSwap,PhemexSwap,HyperLiquidSwap,HyperLiquidSpot
- 支持市场数据源处理模式选择:可通过config.toml中的data_source.market_mode字段设置,想用旧版本方式的话全部设置为"ALL"
Latest:只处理最新数据,新数据会顶掉未处理的数据,减少延迟。All:全部数据顺序处理,适用于不希望丢失数据的情况。
data_source.market_mode配置项:[data_source.market_mode]
mark_price = "Latest"
bbo = "Latest"
depth = "Latest"
funding = "All"
trade = "All"
🔧 优化改进
- biannce合约默认改成使用rest下单(更快)
🐛 问题修复
- 修复coinex资金费率ws和rest不一致问题
- 修复kucoin合约的乘数问题
- 修复gate ws api下单解析结果错误问题
- 修复binance合约增量深度报错问题
- 修复bybit获取balance的可用余额为0.0001问题
[0.7.15] - 2025-03-14
✨ 功能新增
- GateSwap GateSpot支持ws api下单
🔧 优化改进
- bitget、biannce兼容1M前缀的symbol的处理
🐛 问题修复
- 修复binance ws api改post only单时的问题
[0.7.14] - 2025-03-13
✨ 功能新增
- 同步命令支持BalanceByCoin 查询指定币种的余额
🔧 优化改进
- 当start、subscribe函数调用完才会去调用python其他的回调函数
- 优化bn资金费率,rest查询资金费率结算周期不再为None
🐛 问题修复
- 修复binance现货ws api下post only单报错、根据cid撤单报错问题
- 修复MexcSpot下单报错
[0.7.13] - 2025-03-07
✨ 功能新增
- 支持MexcSpot
🐛 问题修复
- 修复binance合约资金费率问题
[0.7.12] - 2025-03-07
🐛 问题修复
- 修复binance现货和合约同时配置时可能下单错误问题
🔧 优化改进
- 去除kraken postOnly单的多余报错
- 改进Coinex网络错误处理和响应状态检查
[0.7.11] - 2025-03-05
✨ 功能新增
- 现异步指令走websocket api, 包含PlaceOrder、BatchPlaceOrder、AmendOrder、CancelOrder、BatchCancelOrder、BatchCancelOrderById 目前支持的交易所有BinanceSwap、BinanceSpot、OkxSwap、OkxSpot、OkxMargin
- 新增缓存(加载、更新、保存)方法 使用方法参考策略示例中的load_cache_data等方法
🔧 优化改进
- 图表优化,图表示例优化
[0.7.10] - 2025-02-25
💥 不兼容改动
- on_order_canceled 回调增加修改订单时传入的order id和symbol
- on_order_amended 回调增加修改订单时传入的order
🐛 问题修复
- 修复binance现货的maker单错误
- 修复gate ws订单解析报错问题 注意:gate现货市价买ws推送的amount和filled都是成交额(名义价值)
✨ 功能新增
- 支持dex交易所Apex
[0.7.9] - 2025-02-21
💥 不兼容改动
- 图表组结构修改,支持多个图表组
🐛 问题修复
- 修复gate swap的bbo错误
- bn现货行情增加时间戳
[0.7.8] - 2025-02-21
💥 不兼容改动
- 可通过OrderParams的market_order_mode字段设置市价单模式,Safe/Normal,
默认Safe: 安全市价单模式下碰到的市价单会转化为ioc加滑点的限价单,需要传递价格和价格步长 滑点默认0.2%可配置(
"market_order_mode":{"Safe": {"price_tick": 0.001,"slippage": 0.002}}) Normal: 普通市价单不用传价格不做限制 ({"market_order_mode":"Normal"})
🔧 优化改进
- 下单时可以不传订单id
- 优化bitget margin的get_borrow_limit接口
🐛 问题修复
- 修复bitget下单响应order_id为null的问题 当为null时置空
[0.7.7] - 2025-02-19
💥 不兼容改动
- 日志修改默认为不限频,实盘运行时通过config.toml中的log.rate_limit字段设置限频
- 修改on_fundings为on_funding
- 修改on_instruments为on_instrument
- 修改on_positions为on_position
- 将on_position_update迁移到on_position
- 修改on_balances为on_balance
- 去除on_balance
🐛 问题修复
- 修复huobi资金费率获取到的下次资金费率时间为0的问题
- kraken depth增加timestamp时间戳, checksum计算失败后重置depth缓存
- gate现货订单已成交修正减去fee
- coinex订单推送的pos side默认值改为None
✨ 功能新增
- 新增图表功能
- bitget margin增加get_order_by_id方法
- 新增交易所deepcoin、coinw、bitfinex、phemex
- dex同步命令支持根据key来接受命令响应
- Rest订阅新增Instrument
[0.7.6] - 2025-02-11
🐛 问题修复
- 安全市价单模式下碰到的部分交易所下单问题
[0.7.5] - 2025-02-11
✨ 功能新增
- bitget支持划转
- 支持在order params加leverage_order_mode来设置杠杆下单时的自动借款、还款(http://api.ymengkj.cn/docs/guide/latest/api-commands/#placeorder)
- 支持日志限频(令牌桶算法)
- 支持通过OrderParams的market_order_mode字段设置市价单模式,Safe/Normal, 默认Safe: 市价单必须传价格如果名义价值超过20000u则修正为20000u,Normal: 普通市价单不用传价格不做限制
🐛 问题修复
- bitget杠杆获取balance
- 修复binance对于1000系列交易对适配问题
🔧 优化改进
- 优化http请求网络延迟
- 优化客户端id生成(create_cid方法)速度到300ns/次
[0.7.4] - 2025-01-27
💥 不兼容改动
- 将on funding和on instrument分别合并到on fundings和on instruments
[0.7.3] - 2025-01-24
🐛 问题修复
- 修复balance的余额不为0时查出来可能为0.0001的问题
[0.7.2] - 2025-01-23
✨ 功能新增
- 支持bitget现货杠杆
[0.7.1] - 2025-01-20
🐛 问题修复
- 修复bybit下单报错、下单返回的order_id错误问题
🔧 优化改进
- 支持dex建立两条socket,一条用于读取,一条用于发送命令
- 优化trader.log方法的web参数为true,默认发送给web
✨ 功能新增
- 支持实盘列表页数据发送
[0.7.0] - 2025-01-17
🐛 问题修复
- 修复同步命令可能碰到的网络错误问题
[0.6.10] - 2025-01-15
💥 不兼容改动
- 去除config.toml中set_cpu配置
🐛 问题修复
- 修复设置线程优先级时由于权限问题导致程序panic问题,现在只会打印警告信息
🔧 优化改进
- 优化发给web的button结构
[0.6.7] - 2025-01-14
🐛 问题修复
- 修复bybit,okx 交易所已知问题
✨ 功能新增
- 自动检测dex sdk进程状态,当进程挂掉/心跳超时 自动重启dex sdk并发送订阅消息
- 优化读取python策略文件和配置文件错误信息
[0.6.6] - 2025-01-10
💥 不兼容改动
- 移除python的sys.path 增加策略文件(strategy.py)所在目录, 改为用户在strategy.py中自定义添加sys.path
🐛 问题修复
- 修复策略文件(strategy.py)中导入其他模块失败问题导致运行时报错
[0.6.5] - 2025-01-09
✨ 新特性
- 支持策略配置文件热更新,当配置文件更新后,会自动读取配置文件内容并调用方法on_config_update
- python的sys.path 增加策略文件所在目录
- base_strategy.py 无需放在 strategy.py 同级目录下,只需在strategy.py中根据路径导入即可
🐛 问题修复
- 修复okx margin、bybit一些已知问题
- 修复dex的同命令超时事件未配置成功问题
[0.6.4] - 2025-01-08
💥 不兼容改动
- BaseStrategy 独立为单独的 python 模块文件(base_strategy.py), 和strategy.py同级
- 修改配置文件加载方式,直接再rust中加载策略配置文件 然后传给python策略
✨ 新特性
- 修改 Python 模块加载机制,支持托管者通过ws传递策略配置
- 无需再安装pip包,trader已经内部集成
- python策略新增on_stop回调,策略停止时会调用
- trader 新增 batch_publish 方法,支持批量发布命令
🐛 问题修复
- 修复 kraken 订单更新中的filled字段不正确问题
- 优化 kraken nonce生成为ns时间戳
- 修复bitget ws老是重连问题
🔧 优化改进
- 重构代码结构,提升可维护性
- 优化错误处理机制
- 改进日志输出格式
- 完善单元测试覆盖率
📝 文档更新
- 添加代码注释和文档说明
- 更新配置文件示例
- 补充 Python 模块开发指南
🔨 依赖更新
- 更新 trader 依赖到最新版本
- 更新 quant_common 依赖到最新版本
📦 其他改动
- 优化 CI/CD 流程
- 改进错误提示信息
- 代码格式化和清理
🚀 性能优化
- 优化 Python 模块加载性能
- 改进配置文件解析效率
如何升级
- 删除原来strategy.py中的BaseStrategy类
- 将base_strategy.py复制到strategy.py同级目录下
- 确保配置文件使用正确的 TOML 格式
- 删除之前安装的trader pip包
- 替换最新open_quant