auto_trade_sys/docs/分步止盈状态细分实施完成总结_2026-01-27.md
薇薇安 16c4cfbdd8 a
2026-01-27 11:11:03 +08:00

4.8 KiB
Raw Blame History

分步止盈状态细分实施完成总结2026-01-27

已完成的优化

1. 日志文案优化

修改位置trading_system/position_manager.py:2858-2865

优化内容

  • 动态读取TAKE_PROFIT_PERCENT配置值
  • 更新日志文案使用实际配置值如10%)而不是硬编码的"30%"

效果

  • 日志更准确,反映实际配置
  • 配置变更后,日志自动更新

2. 订单状态细分

新增状态类型

  • take_profit_partial_then_take_profit: 第一目标止盈后,剩余仓位第二目标止盈
  • take_profit_partial_then_stop: 第一目标止盈后,剩余仓位止损(保本)
  • take_profit_partial_then_trailing_stop: 第一目标止盈后,剩余仓位移动止损

保留原有状态

  • take_profit: 单次止盈(未启用分步止盈)
  • stop_loss: 止损
  • trailing_stop: 移动止损
  • manual: 手动平仓
  • sync: 同步平仓

3. 代码修改位置

修改1第二目标止盈状态

位置trading_system/position_manager.py:2923

  • take_profit改为take_profit_partial_then_take_profit

修改2剩余仓位止损状态实时监控

位置trading_system/position_manager.py:2832-2835

  • 检查partial_profit_taken如果为True设置take_profit_partial_then_stop

修改3剩余仓位止损状态交易所止盈单检查

位置trading_system/position_manager.py:1553-1555

  • 检查partial_profit_taken如果为True根据是否移动止损设置相应状态

修改4剩余仓位移动止损状态实时监控

位置trading_system/position_manager.py:2798-2800

  • 检查partial_profit_taken如果为True根据是否移动止损设置相应状态

4. 数据库迁移脚本

文件backend/database/add_partial_profit_exit_reasons.sql

内容

  • 更新exit_reason字段注释,说明新的状态值
  • 验证字段长度
  • 查看当前状态分布

📊 状态映射表

场景 原状态 新状态 说明
第一目标止盈50%)→ 第二目标止盈剩余50% take_profit take_profit_partial_then_take_profit 完整成功
第一目标止盈50%)→ 剩余仓位止损(保本) stop_loss take_profit_partial_then_stop 部分成功
第一目标止盈50%)→ 剩余仓位移动止损 trailing_stop take_profit_partial_then_trailing_stop 部分成功
单次止盈(未启用分步止盈) take_profit take_profit 保持
止损 stop_loss stop_loss 保持
移动止损 trailing_stop trailing_stop 保持
手动平仓 manual manual 保持
同步平仓 sync sync 保持

🎯 统计分类建议

胜率统计

成功单

  • take_profit
  • take_profit_partial_then_take_profit(完整成功)
  • take_profit_partial_then_stop(部分成功:第一目标已达成)
  • take_profit_partial_then_trailing_stop(部分成功:第一目标已达成)

失败单

  • stop_loss(纯止损)
  • trailing_stop(如果未启用分步止盈)

中性单

  • manual
  • sync

盈亏比统计

盈利单

  • 所有take_profit*状态
  • 计算时,take_profit_partial_then_stop应该算作盈利(第一目标已达成)

亏损单

  • stop_loss(纯止损)
  • trailing_stop(如果未启用分步止盈)

⚠️ 注意事项

  1. 数据库迁移

    • 执行backend/database/add_partial_profit_exit_reasons.sql
    • 更新字段注释,说明新的状态值
  2. 向后兼容

    • 保留原有状态值,不影响现有数据
    • 新状态仅用于新交易
  3. 统计逻辑更新

    • 前端统计展示需要更新,将take_profit_partial_then_*状态归类为"成功"或"部分成功"

📝 下一步

  1. 执行数据库迁移

    mysql -u root -p auto_trade_sys < backend/database/add_partial_profit_exit_reasons.sql
    
  2. 更新前端统计逻辑

    • 修改统计展示,将take_profit_partial_then_*状态归类为"成功"
    • 可以添加"部分成功"分类,用于更详细的分析
  3. 测试验证

    • 测试分步止盈场景,验证状态设置正确
    • 验证统计结果是否准确

总结

问题

  • 日志文案与实际配置不一致
  • 状态管理不完整,无法区分"纯止损"和"第一目标止盈后剩余仓位止损"
  • 统计准确性受影响

解决方案

  • 更新日志文案,使用实际配置值
  • 细分订单状态,新增take_profit_partial_then_*状态
  • 更新代码逻辑,根据partial_profit_taken设置正确的状态

预期效果

  • 更准确的状态管理
  • 更准确的胜率、盈亏比统计
  • 更清晰的日志输出