删除了多个不再使用的文档和代码文件,包括交易更新推送、条件订单推送、REST API 文档、WebSocket API 文档及相关的策略分析文档。这些文件的移除有助于清理代码库,确保项目的整洁性与可维护性。
67 lines
2.3 KiB
Markdown
67 lines
2.3 KiB
Markdown
# WebSocket 交易接口实现说明
|
||
|
||
## 概述
|
||
|
||
已实现通过 **WebSocket API** 创建 Algo 条件单(止损/止盈),优先于 REST,减少「请求超时」问题。
|
||
|
||
---
|
||
|
||
## 实现内容
|
||
|
||
### 1. 新增文件
|
||
|
||
- **`trading_system/ws_trade_client.py`**:WebSocket 交易客户端
|
||
- 连接到 `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 下单功能
|