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

161 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 分步止盈状态细分实施完成总结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. **执行数据库迁移**
```bash
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`设置正确的状态
**预期效果**
- 更准确的状态管理
- 更准确的胜率盈亏比统计
- 更清晰的日志输出