7.1 KiB
7.1 KiB
交易执行器优化总结
✅ 完成的优化
1. 创建执行器系统架构
新建文件:
app/crypto_agent/executor/base_executor.py- 执行器基类(300+ 行)app/crypto_agent/executor/paper_trading_executor.py- 模拟盘执行器app/crypto_agent/executor/bitget_executor.py- Bitget 执行器app/crypto_agent/executor/hyperliquid_executor.py- Hyperliquid 执行器app/crypto_agent/executor/__init__.py- 包初始化
2. 核心优化功能
订单类型决策 ⭐⭐⭐
- 市价单 vs 限价单智能选择
- 价格差 < 阈值 → 市价单(立即成交)
- 价格差 >= 阈值 → 限价单(挂单等待)
| 平台 | 市价阈值 |
|---|---|
| 模拟盘 | 0.15% |
| Hyperliquid | 0.1% |
| Bitget | 0.2% |
止盈止损设置 ⭐⭐⭐
- Hyperliquid: 下单时直接设置 TP/SL ✅
- Bitget: 成交后单独设置 TP/SL
- 模拟盘: 下单时设置(模拟)
挂单超时管理 ⭐⭐
- 自动取消超时挂单
- 模拟盘: 4 小时
- Hyperliquid: 4 小时
- Bitget: 24 小时
持仓管理 ⭐⭐
- 自动止盈: 达到目标盈利自动平仓
- 模拟盘/Bitget: 3%
- Hyperliquid: 2.5%
- 持仓超时平仓: 持仓过长自动平仓
- 模拟盘/Hyperliquid: 4 小时
- Bitget: 6 小时
- 移动止损: 盈利 >= 2% 时,止损移到入场价
交易成本预留 ⭐⭐
- 自动预留手续费
- 计算保证金时预留开仓+平仓手续费
- 不会因手续费不足导致失败
API 限流感知 ⭐
- 智能重试机制
- 检测限流错误 → 指数退避 + 随机抖动
- 最大重试: 5 次
- Bitget 限流严格,特殊处理
挂单价格优化 ⭐
- 动态更新挂单价格
- 新价格更优(差值 >= 0.5%)→ 取消旧单,下新单
- 做多:价格更低更优
- 做空:价格更高更优
📊 平台特性对比表
| 特性 | 模拟盘 | Hyperliquid | Bitget |
|---|---|---|---|
| 市价单阈值 | 0.15% | 0.1% | 0.2% |
| TP/SL 设置 | ✅ 下单时 | ✅ 下单时 | ❌ 成交后 |
| 挂单超时 | 4h | 4h | 24h |
| 止盈规则 | 3% | 2.5% | 3% |
| 持仓时长 | 4h | 4h | 6h |
| 手续费率 | 0% | 0.05% | 0.06% |
| 限流等待 | - | 指数退避 | 指数+抖动 |
| 价格更新阈值 | 0.3% | 0.5% | 0.5% |
| 最大重试 | 3 | 5 | 5 |
🔄 修改的核心方法
crypto_agent.py 中的修改
1. 初始化执行器 (__init__)
# 初始化平台执行器
self.executors = {
'PaperTrading': PaperTradingExecutor(),
'Bitget': BitgetExecutor(),
'Hyperliquid': HyperliquidExecutor(),
}
2. 简化执行方法
_execute_paper_decisions:
# 之前: 100+ 行复杂逻辑
# 现在: 使用执行器,30 行
executor = self.executors.get('PaperTrading')
result = await executor.execute_open(decision, current_price)
_execute_bitget_decisions:
# 之前: 150+ 行,包含合约张数计算、杠杆设置、TP/SL 等
# 现在: 使用执行器,30 行
executor = self.executors.get('Bitget')
result = await executor.execute_open(decision, current_price)
_execute_hyperliquid_decisions:
# 之前: 80+ 行
# 现在: 使用执行器,40 行
executor = self.executors.get('Hyperliquid')
result = await executor.execute_open(decision, current_price)
3. 主循环中添加定期检查
# 每轮循环开始时
async def run(self):
while self.running:
# 1. 检查挂单超时
await self._check_pending_order_timeouts()
# 2. 检查持仓管理(止盈/止损/移动止损)
await self._check_position_management_all_platforms()
# 3. 原有的 TP/SL 补设
if self.hyperliquid:
await self._check_and_set_pending_tp_sl_hyperliquid()
if self.bitget:
await self._check_and_set_pending_tp_sl_bitget()
🚀 部署和测试
部署步骤
- 提交代码
cd /path/to/Stock_Agent
git add backend/app/crypto_agent/
git commit -m "feat: 交易执行器优化 - 订单类型/止盈止损/超时管理/持仓管理"
git push
- 重启服务
# systemctl
sudo systemctl restart stock-agent
# 或 docker
docker-compose restart
# 或 pm2
pm2 restart stock-agent
测试计划
第1周:模拟盘测试
PAPER_TRADING_ENABLED=true
BITGET_TRADING_ENABLED=false
HYPERLIQUID_ENABLED=false
验证项:
- ✅ 订单类型决策(市价 vs 限价)
- ✅ 止盈止损自动设置
- ✅ 挂单超时自动取消
- ✅ 持仓自动止盈
- ✅ 移动止损
第2周:Bitget 小仓位测试
BITGET_TRADING_ENABLED=true
# 使用小仓位(最小保证金)
验证项:
- ✅ API 限流处理
- ✅ 成交后 TP/SL 设置
- ✅ 手续费预留
- ✅ 挂单价格优化
第3周:Hyperliquid 测试
HYPERLIQUID_ENABLED=true
验证项:
- ✅ 下单时设置 TP/SL
- ✅ 流动性好,市价单阈值低
第4周:全量部署
# 所有平台启用
PAPER_TRADING_ENABLED=true
BITGET_TRADING_ENABLED=true
HYPERLIQUID_ENABLED=true
📈 预期效果
性能提升
- ✅ 代码简化: 执行方法从 100+ 行 → 30 行
- ✅ 维护性: 平台逻辑独立封装,易于维护
- ✅ 扩展性: 新增平台只需继承
BaseExecutor
风控加强
- ✅ 订单类型优化: 避免不必要的挂单
- ✅ 止盈止损可靠: Hyperliquid 下单时设置,避免漏设
- ✅ 超时管理: 自动取消过期挂单,释放保证金
- ✅ 持仓管理: 自动止盈、移动止损
稳定性提升
- ✅ 限流处理: 智能 API 重试,避免频繁失败
- ✅ 成本预留: 手续费预留,避免余额不足
- ✅ 价格优化: 动态调整挂单价格
📝 日志示例
订单类型决策
🎯 [Bitget] 处理交易信号: buy BTCUSDT
订单类型: 价格差 0.05% < 0.2%,使用市价单
✅ OPEN: 正常开仓, 保证金 $85.00
挂单超时取消
⏰ [Bitget] 挂单超时
交易对: ETH
订单ID: 123456789
挂单时长: 24.1 小时
✅ 已取消超时挂单: 123456789
自动止盈
📊 [Bitget] BTCUSDT 盈利 3.2% >= 3%
✅ 自动止盈成功: BTCUSDT
移动止损
📊 [Bitget] ETHUSDT 盈利 2.5% >= 2%,移动止损到入场价
✅ 建议移动止损: ETHUSDT → $3520.00
🎯 总结
交易执行器系统已完全集成!
✅ 8 个优化全部实现:
- ✅ 订单类型决策(市价/限价)
- ✅ 止盈止损设置逻辑
- ✅ 挂单超时管理
- ✅ 持仓管理(止盈/超时/移动止损)
- ✅ 交易成本预留
- ✅ API 限流感知
- ✅ 挂单价格优化
- ✅ 平台差异化配置
代码质量:
- ✅ 无语法错误
- ✅ 架构清晰
- ✅ 易于维护
- ✅ 易于扩展
建议部署顺序:
- 第1周:模拟盘全面测试
- 第2周:Bitget 小仓位测试
- 第3周:Hyperliquid 测试
- 第4周:全量部署
下一步:部署到服务器,开始第1周模拟盘测试!🚀