291 lines
8.8 KiB
Markdown
291 lines
8.8 KiB
Markdown
# 交易表现分析 - 2026-01-23
|
||
|
||
## 📊 今日统计
|
||
|
||
- **总交易数**:35
|
||
- **胜率**:44.00%
|
||
- **总盈亏**:2.03 USDT
|
||
- **平均盈亏**:0.08 USDT
|
||
- **平均持仓时长**:35分钟
|
||
- **平仓原因**:止盈 1 / 手动 9 / 同步 15
|
||
- **平均盈利/平均亏损**:1.35 : 1(期望 3:1)
|
||
- **总交易量(名义)**:3512.05 USDT
|
||
|
||
## ⚠️ 严重问题分析
|
||
|
||
### 问题1:盈亏比严重失衡(1.35:1 vs 期望3:1)
|
||
|
||
**现状**:
|
||
- 平均盈利/平均亏损 = 1.35:1
|
||
- 胜率 = 44%
|
||
- 期望盈亏比 = 3:1
|
||
|
||
**数学分析**:
|
||
- 盈亏平衡点 = 1 / (1 + 盈亏比) = 1 / (1 + 1.35) = **42.55%**
|
||
- 当前胜率 44% 仅略高于盈亏平衡点,所以总盈亏只有 2.03 USDT(几乎不盈利)
|
||
- 如果盈亏比达到 3:1,盈亏平衡点 = 1 / (1 + 3) = **25%**
|
||
- 在胜率 44% 的情况下,盈亏比 3:1 的期望收益 = (0.44 × 3) - (0.56 × 1) = **0.76**(每笔亏损赚0.76倍)
|
||
|
||
**结论**:盈亏比 1.35:1 太低了,必须提升到至少 2:1 才能稳定盈利。
|
||
|
||
---
|
||
|
||
### 问题2:大额亏损(30-50%)说明止损失效
|
||
|
||
**具体案例**:
|
||
- #1138 DUSKUSDT: **-31.28%**(同步平仓)
|
||
- #1135 RIVERUSDT: **-49.06%**(同步平仓)
|
||
- #1133 BDXNUSDT: **-31.69%**(手动平仓)
|
||
|
||
**问题分析**:
|
||
1. **固定风险百分比应该限制亏损为2%**,但实际亏损达到30-50%
|
||
2. **说明止损没有及时执行**,或者止损价格计算错误
|
||
3. **"同步平仓"** 可能是在止损触发后,系统同步币安状态时发现已经亏损很大
|
||
|
||
**可能原因**:
|
||
1. 止损单没有正确挂到交易所
|
||
2. 止损价格计算错误(可能基于价格百分比而不是保证金百分比)
|
||
3. WebSocket 监控断线,没有及时触发止损
|
||
4. 固定风险百分比计算时,止损距离估算错误
|
||
|
||
---
|
||
|
||
### 问题3:止盈太少(35笔只有1笔止盈)
|
||
|
||
**现状**:
|
||
- 35笔交易,只有1笔止盈(2.86%)
|
||
- 15笔同步平仓,9笔手动平仓
|
||
|
||
**问题分析**:
|
||
1. **止盈目标可能设置太高**:`ATR_TAKE_PROFIT_MULTIPLIER = 1.5` 可能仍然太高
|
||
2. **大部分订单被提前平仓**:15笔同步平仓可能是止损触发,9笔手动平仓可能是用户干预
|
||
3. **止盈单可能没有正确挂到交易所**
|
||
|
||
---
|
||
|
||
### 问题4:固定风险百分比可能没有生效
|
||
|
||
**理论**:
|
||
- 固定风险百分比 = 2%
|
||
- 如果止损距离 = 5%,那么仓位 = (总资金 × 2%) / 5% = 总资金的 40%
|
||
- 如果止损触发,亏损 = 总资金的 2%(符合预期)
|
||
|
||
**实际情况**:
|
||
- 亏损达到 30-50%,说明:
|
||
1. 固定风险百分比没有生效
|
||
2. 或者止损距离计算错误(止损距离太小,导致仓位过大)
|
||
3. 或者止损没有及时触发
|
||
|
||
---
|
||
|
||
## 🔍 根本原因分析
|
||
|
||
### 1. 止损执行问题
|
||
|
||
**可能原因**:
|
||
- 止损单没有正确挂到交易所
|
||
- WebSocket 监控断线,没有及时触发止损
|
||
- 止损价格计算错误
|
||
|
||
**验证方法**:
|
||
- 查看日志,确认止损单是否成功挂到交易所
|
||
- 检查 WebSocket 监控是否正常运行
|
||
- 检查止损价格计算逻辑
|
||
|
||
### 2. 固定风险百分比可能没有生效
|
||
|
||
**验证方法**:
|
||
- 检查 `USE_FIXED_RISK_SIZING` 是否启用
|
||
- 检查开仓日志,确认是否使用了固定风险计算
|
||
- 检查止损距离估算是否准确
|
||
|
||
### 3. 止盈目标设置问题
|
||
|
||
**当前配置**:
|
||
- `ATR_TAKE_PROFIT_MULTIPLIER = 1.5`
|
||
- `TAKE_PROFIT_PERCENT = 25%`(相对于保证金)
|
||
|
||
**问题**:
|
||
- 如果 ATR 很大,1.5倍 ATR 的止盈目标可能很难达到
|
||
- 25% 的止盈目标对于小币种可能太高
|
||
|
||
---
|
||
|
||
## 💡 解决方案
|
||
|
||
### 方案1:确保止损正确执行(最高优先级)
|
||
|
||
1. **检查止损单是否挂到交易所**
|
||
- 在开仓后立即检查止损单状态
|
||
- 如果挂单失败,重试或报警
|
||
|
||
2. **增强 WebSocket 监控可靠性**
|
||
- 增加心跳检测
|
||
- 增加断线重连机制
|
||
- 增加兜底巡检(每1-2分钟检查一次)
|
||
|
||
3. **修复止损价格计算**
|
||
- 确保止损基于保证金百分比,而不是价格百分比
|
||
- 确保止损距离估算准确
|
||
|
||
### 方案2:验证并修复固定风险百分比
|
||
|
||
1. **检查配置**
|
||
- 确认 `USE_FIXED_RISK_SIZING = True`
|
||
- 确认 `FIXED_RISK_PERCENT = 0.02`(2%)
|
||
|
||
2. **检查计算逻辑**
|
||
- 确认止损距离估算准确
|
||
- 确认仓位计算使用了固定风险公式
|
||
|
||
3. **增加日志**
|
||
- 记录固定风险计算的详细过程
|
||
- 记录实际止损距离和仓位大小
|
||
|
||
### 方案3:调整止盈目标
|
||
|
||
1. **降低止盈目标**
|
||
- `ATR_TAKE_PROFIT_MULTIPLIER` 从 1.5 降到 1.2
|
||
- `TAKE_PROFIT_PERCENT` 从 25% 降到 20%
|
||
|
||
2. **确保止盈单正确挂到交易所**
|
||
- 在开仓后立即挂止盈单
|
||
- 检查止盈单状态
|
||
|
||
---
|
||
|
||
## 📋 立即行动清单
|
||
|
||
### 高优先级(立即执行)
|
||
|
||
1. ✅ **检查止损单挂单状态**
|
||
- 在开仓后立即检查止损单是否成功挂到交易所
|
||
- 如果失败,重试或报警
|
||
|
||
2. ✅ **验证固定风险百分比是否生效**
|
||
- 检查开仓日志,确认是否使用了固定风险计算
|
||
- 如果未生效,修复计算逻辑
|
||
|
||
3. ✅ **增强止损执行可靠性**
|
||
- 增加 WebSocket 心跳检测
|
||
- 增加兜底巡检(每1-2分钟检查一次)
|
||
|
||
### 中优先级(本周执行)
|
||
|
||
4. ⏳ **调整止盈目标**
|
||
- 降低 `ATR_TAKE_PROFIT_MULTIPLIER` 到 1.2
|
||
- 降低 `TAKE_PROFIT_PERCENT` 到 20%
|
||
|
||
5. ⏳ **增加诊断日志**
|
||
- 记录止损单挂单状态
|
||
- 记录固定风险计算过程
|
||
- 记录实际止损距离
|
||
|
||
---
|
||
|
||
## 🎯 目标指标
|
||
|
||
### 当前表现
|
||
- 盈亏比:1.35:1 ❌
|
||
- 胜率:44% ✅
|
||
- 总盈亏:2.03 USDT(几乎不盈利)❌
|
||
|
||
### 目标表现
|
||
- 盈亏比:≥ 2.0:1(理想 3:1)✅
|
||
- 胜率:≥ 40% ✅
|
||
- 单笔最大亏损:≤ 5%(固定风险2% + 滑点)✅
|
||
- 止盈率:≥ 30%(35笔中至少10笔止盈)✅
|
||
|
||
---
|
||
|
||
## 📝 下一步
|
||
|
||
1. ✅ **已修复**:固定风险百分比计算逻辑(已添加到代码中)
|
||
2. ✅ **已增强**:止损单挂单状态日志(成功/失败都会记录)
|
||
3. ⏳ **待验证**:重新运行后观察是否还有30%以上的亏损
|
||
4. ⏳ **待调整**:降低止盈目标,提高止盈率
|
||
|
||
---
|
||
|
||
## 🔧 已实施的修复
|
||
|
||
### 1. ✅ 修复固定风险百分比计算逻辑
|
||
|
||
**问题**:固定风险百分比计算逻辑缺失,导致系统没有使用固定风险公式计算仓位。
|
||
|
||
**修复**:
|
||
- 在 `risk_manager.py` 的 `calculate_position_size()` 中添加了完整的固定风险百分比计算逻辑
|
||
- 如果 `USE_FIXED_RISK_SIZING = True` 且提供了 `entry_price` 和 `side`,会使用固定风险公式
|
||
- 公式:`quantity = (总资金 × 2%) / (入场价 - 止损价)`
|
||
|
||
### 2. ✅ 增强止损单挂单状态日志
|
||
|
||
**问题**:无法知道止损单是否成功挂到交易所。
|
||
|
||
**修复**:
|
||
- 在 `position_manager.py` 的 `_ensure_exchange_sltp_orders()` 中增加了日志
|
||
- 止损单和止盈单挂单成功/失败都会记录日志
|
||
- 如果挂单失败,会明确提示将依赖WebSocket监控
|
||
|
||
---
|
||
|
||
## ⚠️ 关键发现
|
||
|
||
### 为什么会出现30-50%的亏损?
|
||
|
||
**根本原因**:
|
||
1. **固定风险百分比没有生效**(已修复)
|
||
- 如果固定风险百分比生效,每笔亏损应该限制在2%
|
||
- 但实际亏损达到30-50%,说明固定风险百分比没有生效
|
||
|
||
2. **止损单可能没有正确挂到交易所**
|
||
- 如果止损单挂单失败,系统只能依赖WebSocket监控
|
||
- 如果WebSocket断线,止损可能无法及时执行
|
||
|
||
3. **止损价格计算可能有问题**
|
||
- 止损可能基于价格百分比而不是保证金百分比
|
||
- 或者止损距离估算错误
|
||
|
||
### 为什么盈亏比只有1.35:1?
|
||
|
||
**原因**:
|
||
1. **止盈目标设置太高**:`ATR_TAKE_PROFIT_MULTIPLIER = 1.5` 可能仍然太高
|
||
2. **止盈单可能没有正确挂到交易所**:只有1笔止盈,说明大部分订单没有达到止盈目标
|
||
3. **大部分订单被提前平仓**:15笔同步平仓(可能是止损),9笔手动平仓(用户干预)
|
||
|
||
---
|
||
|
||
## 🎯 预期改善
|
||
|
||
修复后,预期:
|
||
- ✅ **单笔最大亏损**:从30-50%降低到≤5%(固定风险2% + 滑点)
|
||
- ✅ **盈亏比**:从1.35:1提升到≥2.0:1(通过降低止盈目标)
|
||
- ✅ **止盈率**:从2.86%提升到≥30%(通过降低止盈目标)
|
||
|
||
---
|
||
|
||
## 📋 建议的配置调整
|
||
|
||
### 立即调整(在GlobalConfig中)
|
||
|
||
1. **降低止盈目标**:
|
||
- `ATR_TAKE_PROFIT_MULTIPLIER`: 1.5 → **1.2**
|
||
- `TAKE_PROFIT_PERCENT`: 25% → **20%**
|
||
|
||
2. **确保固定风险百分比启用**:
|
||
- `USE_FIXED_RISK_SIZING`: **True**
|
||
- `FIXED_RISK_PERCENT`: **0.02** (2%)
|
||
|
||
3. **确保止损单挂单**:
|
||
- `EXCHANGE_SLTP_ENABLED`: **True**(默认已启用)
|
||
|
||
---
|
||
|
||
## 🔍 验证方法
|
||
|
||
修复后,请观察:
|
||
1. **开仓日志**:是否显示"使用固定风险百分比计算仓位"
|
||
2. **止损单日志**:是否显示"止损单已成功挂到交易所"
|
||
3. **实际亏损**:是否还有30%以上的亏损
|
||
4. **止盈率**:是否提升到30%以上
|