stock-ai-agent/backend/app/crypto_agent/executor/EXECUTOR_OPTIMIZATION_SUMMARY.md
2026-03-28 22:14:32 +08:00

7.1 KiB
Raw Blame History

交易执行器优化总结

完成的优化

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()

🚀 部署和测试

部署步骤

  1. 提交代码
cd /path/to/Stock_Agent
git add backend/app/crypto_agent/
git commit -m "feat: 交易执行器优化 - 订单类型/止盈止损/超时管理/持仓管理"
git push
  1. 重启服务
# 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 个优化全部实现

  1. 订单类型决策(市价/限价)
  2. 止盈止损设置逻辑
  3. 挂单超时管理
  4. 持仓管理(止盈/超时/移动止损)
  5. 交易成本预留
  6. API 限流感知
  7. 挂单价格优化
  8. 平台差异化配置

代码质量

  • 无语法错误
  • 架构清晰
  • 易于维护
  • 易于扩展

建议部署顺序

  1. 第1周模拟盘全面测试
  2. 第2周Bitget 小仓位测试
  3. 第3周Hyperliquid 测试
  4. 第4周全量部署

下一步部署到服务器开始第1周模拟盘测试🚀