auto_trade_sys/docs/common/WS交易接口实现说明.md
薇薇安 13a0e7d580 delete: 移除过时的文档与代码文件
删除了多个不再使用的文档和代码文件,包括交易更新推送、条件订单推送、REST API 文档、WebSocket API 文档及相关的策略分析文档。这些文件的移除有助于清理代码库,确保项目的整洁性与可维护性。
2026-02-20 17:49:00 +08:00

2.3 KiB
Raw Permalink Blame History

WebSocket 交易接口实现说明

概述

已实现通过 WebSocket API 创建 Algo 条件单(止损/止盈),优先于 REST减少「请求超时」问题。


实现内容

1. 新增文件

  • trading_system/ws_trade_client.pyWebSocket 交易客户端
    • 连接到 wss://ws-fapi.binance.com/ws-fapi/v1(正式)或 wss://testnet.binancefuture.com/ws-fapi/v1(测试)
    • 实现 algoOrder.place 方法,发送条件单请求
    • 处理请求-响应匹配(用 id 字段)
    • 自动重连、24h 主动重连、ping/pong 保活

2. 修改文件

  • trading_system/binance_client.py
    • __init__:添加 _ws_trade_client 属性
    • connect():连接成功后启动 WS 交易客户端
    • futures_create_algo_order()优先用 WS 发送条件单,失败回退 REST
    • disconnect():停止 WS 交易客户端

工作流程

  1. 启动时BinanceClient.connect() 成功后,若 API 密钥有效,自动启动 WSTradeClient 并连接到 ws-fapi
  2. 下单时
    • 若 WS 已连接 → 用 algoOrder.place 发送(带签名),等待响应(超时 20-25 秒)
    • WS 失败或未连接 → 回退到 REST POST /fapi/v1/algoOrder原有逻辑45 秒超时 + 重试)
  3. 响应格式WS 返回的 result 字段(含 algoId 等)直接返回,与 REST 格式兼容。

优势

  • 减少超时WS 长连接,无每次 HTTP 建连开销,响应通常更快
  • 自动回退WS 失败时自动用 REST不影响现有逻辑
  • 透明切换:调用方无需改动,futures_create_algo_order() 自动选择最优方式

配置

  • 超时时间WS 超时 = ALGO_ORDER_TIMEOUT_SEC - 5(最小 20 秒REST 超时 = ALGO_ORDER_TIMEOUT_SEC(默认 45 秒)
  • 连接管理WS 连接自动重连、24h 主动重连、ping/pong 保活

日志

  • WS 连接成功:✓ WebSocket 交易客户端已启动(条件单优先走 WS失败回退 REST
  • WS 下单成功:{symbol} ✓ WS 条件单创建成功: algoId=...
  • WS 失败回退:{symbol} WS 条件单失败(...),回退到 REST

注意事项

  • WS 交易接口需要有效的 API 密钥(与 REST 相同)
  • 签名计算方式与 REST 一致HMAC-SHA256
  • 若 WS 连接失败,不影响 REST 下单功能