## 一、系统总体设计
本系统实现对币安账户持仓的自动化管理,支持通过WebSocket获取市场价格,实时计算并执行移动止盈止损操作。参数设置与操作通过Telegram Bot的内联按钮完成,保证操作流畅、高效。
---
## 二、功能模块
### 1. 行情获取模块
- **数据源**:币安官方 WebSocket (如 `wss://fstream.binance.com/ws/{symbol}@markPrice`)
- **目的**:实时、低延迟获取所需交易对的最新价格,减少API轮询,降低API被封风险。
- **设计要点**:
- 支持多交易对订阅。
- 自动重连与异常处理。
- 价格缓存与推送节流,防止消息风暴;仅推送价格变动或自定义间隔更新。
### 2. 移动止盈止损模块(核心逻辑)
- **原理**:动态调整止盈/止损触发价格,锁定利润同时防止回撤过大。
- **配置参数**:
- 初始止盈/止损百分比或价格。
- 止盈/止损触发步进(如每新高/新低N USDT后,止盈/止损价格向上/下移动)。
- 委托偏移(防止极端行情挂单无法成交)。
- **逻辑流程**:
1. 持仓接管后,记录进场价格和仓位。
2. 计算初始止盈/止损价。
3. 持续监听WebSocket价格:
- 价格创下新高/新低时,移动止盈/止损价。
- 若当前价触及止盈/止损线,先挂限价委托,未成交则立即市价委托平仓。
4. 委托状态监控与补单机制,确保成交。
- **高性能要求**:
- 价格变动处理应为异步、事件驱动,避免因计算阻塞行情监听。
- 止盈止损计算应本地完成,不依赖API查询,确保响应及时。
- 止盈止损策略可配置,如“追踪止盈”、“动态止损”等。
### 3. 委托执行模块
- **限价委托**:优先以当前盘口最优价下单。
- **市价委托**:限价未成交即刻以市价平仓,避免滑点损失扩大。
- **委托异常处理**:
- 下单失败/网络问题自动重试。
- 委托未成交及时切换市价。
- **安全措施**:
- 仅针对已接管仓位操作,避免误平其他仓位。
- 日志记录每一步操作,便于追溯。
### 4. 参数配置与电报机器人交互模块
- **交互方式**:Telegram Bot Inline Keyboard(内联按钮)。
- **操作内容**:
- 实时显示当前仓位、止盈止损参数、委托状态。
- 动态调整参数(如止盈幅度、止损幅度、移动步进等)。
- 一键接管/释放仓位。
- 一键平仓。
- **性能要求**:
- 按钮操作需秒级响应,不可有明显延迟。
- 参数修改立即生效。
- **补充建议**:
- 提供当前策略预览与模拟单功能,便于调优参数前测试。
- 操作权限控制,防止误操作。
---
## 三、补充建议与注意事项
1. **策略健壮性**
- 支持手动与自动接管切换,出现极端行情可人工干预。
- 支持多币对、多仓位同时管理。
2. **安全性与稳定性**
- API密钥妥善保护,敏感操作需二次确认。
- 网络异常/重连/故障恢复机制。
- 日志与告警系统,异常情况及时推送到Telegram。
3. **性能优化**
- 核心逻辑异步化,避免主线程阻塞。
- 数据结构优化(如价格缓存、队列),确保高并发下响应不降级。
- 频繁价格变动时,采取节流/防抖措施,避免重复计算。