8.8 KiB
8.8 KiB
交易表现分析 - 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%(手动平仓)
问题分析:
- 固定风险百分比应该限制亏损为2%,但实际亏损达到30-50%
- 说明止损没有及时执行,或者止损价格计算错误
- "同步平仓" 可能是在止损触发后,系统同步币安状态时发现已经亏损很大
可能原因:
- 止损单没有正确挂到交易所
- 止损价格计算错误(可能基于价格百分比而不是保证金百分比)
- WebSocket 监控断线,没有及时触发止损
- 固定风险百分比计算时,止损距离估算错误
问题3:止盈太少(35笔只有1笔止盈)
现状:
- 35笔交易,只有1笔止盈(2.86%)
- 15笔同步平仓,9笔手动平仓
问题分析:
- 止盈目标可能设置太高:
ATR_TAKE_PROFIT_MULTIPLIER = 1.5可能仍然太高 - 大部分订单被提前平仓:15笔同步平仓可能是止损触发,9笔手动平仓可能是用户干预
- 止盈单可能没有正确挂到交易所
问题4:固定风险百分比可能没有生效
理论:
- 固定风险百分比 = 2%
- 如果止损距离 = 5%,那么仓位 = (总资金 × 2%) / 5% = 总资金的 40%
- 如果止损触发,亏损 = 总资金的 2%(符合预期)
实际情况:
- 亏损达到 30-50%,说明:
- 固定风险百分比没有生效
- 或者止损距离计算错误(止损距离太小,导致仓位过大)
- 或者止损没有及时触发
🔍 根本原因分析
1. 止损执行问题
可能原因:
- 止损单没有正确挂到交易所
- WebSocket 监控断线,没有及时触发止损
- 止损价格计算错误
验证方法:
- 查看日志,确认止损单是否成功挂到交易所
- 检查 WebSocket 监控是否正常运行
- 检查止损价格计算逻辑
2. 固定风险百分比可能没有生效
验证方法:
- 检查
USE_FIXED_RISK_SIZING是否启用 - 检查开仓日志,确认是否使用了固定风险计算
- 检查止损距离估算是否准确
3. 止盈目标设置问题
当前配置:
ATR_TAKE_PROFIT_MULTIPLIER = 1.5TAKE_PROFIT_PERCENT = 25%(相对于保证金)
问题:
- 如果 ATR 很大,1.5倍 ATR 的止盈目标可能很难达到
- 25% 的止盈目标对于小币种可能太高
💡 解决方案
方案1:确保止损正确执行(最高优先级)
-
检查止损单是否挂到交易所
- 在开仓后立即检查止损单状态
- 如果挂单失败,重试或报警
-
增强 WebSocket 监控可靠性
- 增加心跳检测
- 增加断线重连机制
- 增加兜底巡检(每1-2分钟检查一次)
-
修复止损价格计算
- 确保止损基于保证金百分比,而不是价格百分比
- 确保止损距离估算准确
方案2:验证并修复固定风险百分比
-
检查配置
- 确认
USE_FIXED_RISK_SIZING = True - 确认
FIXED_RISK_PERCENT = 0.02(2%)
- 确认
-
检查计算逻辑
- 确认止损距离估算准确
- 确认仓位计算使用了固定风险公式
-
增加日志
- 记录固定风险计算的详细过程
- 记录实际止损距离和仓位大小
方案3:调整止盈目标
-
降低止盈目标
ATR_TAKE_PROFIT_MULTIPLIER从 1.5 降到 1.2TAKE_PROFIT_PERCENT从 25% 降到 20%
-
确保止盈单正确挂到交易所
- 在开仓后立即挂止盈单
- 检查止盈单状态
📋 立即行动清单
高优先级(立即执行)
-
✅ 检查止损单挂单状态
- 在开仓后立即检查止损单是否成功挂到交易所
- 如果失败,重试或报警
-
✅ 验证固定风险百分比是否生效
- 检查开仓日志,确认是否使用了固定风险计算
- 如果未生效,修复计算逻辑
-
✅ 增强止损执行可靠性
- 增加 WebSocket 心跳检测
- 增加兜底巡检(每1-2分钟检查一次)
中优先级(本周执行)
-
⏳ 调整止盈目标
- 降低
ATR_TAKE_PROFIT_MULTIPLIER到 1.2 - 降低
TAKE_PROFIT_PERCENT到 20%
- 降低
-
⏳ 增加诊断日志
- 记录止损单挂单状态
- 记录固定风险计算过程
- 记录实际止损距离
🎯 目标指标
当前表现
- 盈亏比:1.35:1 ❌
- 胜率:44% ✅
- 总盈亏:2.03 USDT(几乎不盈利)❌
目标表现
- 盈亏比:≥ 2.0:1(理想 3:1)✅
- 胜率:≥ 40% ✅
- 单笔最大亏损:≤ 5%(固定风险2% + 滑点)✅
- 止盈率:≥ 30%(35笔中至少10笔止盈)✅
📝 下一步
- ✅ 已修复:固定风险百分比计算逻辑(已添加到代码中)
- ✅ 已增强:止损单挂单状态日志(成功/失败都会记录)
- ⏳ 待验证:重新运行后观察是否还有30%以上的亏损
- ⏳ 待调整:降低止盈目标,提高止盈率
🔧 已实施的修复
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%的亏损?
根本原因:
-
固定风险百分比没有生效(已修复)
- 如果固定风险百分比生效,每笔亏损应该限制在2%
- 但实际亏损达到30-50%,说明固定风险百分比没有生效
-
止损单可能没有正确挂到交易所
- 如果止损单挂单失败,系统只能依赖WebSocket监控
- 如果WebSocket断线,止损可能无法及时执行
-
止损价格计算可能有问题
- 止损可能基于价格百分比而不是保证金百分比
- 或者止损距离估算错误
为什么盈亏比只有1.35:1?
原因:
- 止盈目标设置太高:
ATR_TAKE_PROFIT_MULTIPLIER = 1.5可能仍然太高 - 止盈单可能没有正确挂到交易所:只有1笔止盈,说明大部分订单没有达到止盈目标
- 大部分订单被提前平仓:15笔同步平仓(可能是止损),9笔手动平仓(用户干预)
🎯 预期改善
修复后,预期:
- ✅ 单笔最大亏损:从30-50%降低到≤5%(固定风险2% + 滑点)
- ✅ 盈亏比:从1.35:1提升到≥2.0:1(通过降低止盈目标)
- ✅ 止盈率:从2.86%提升到≥30%(通过降低止盈目标)
📋 建议的配置调整
立即调整(在GlobalConfig中)
-
降低止盈目标:
ATR_TAKE_PROFIT_MULTIPLIER: 1.5 → 1.2TAKE_PROFIT_PERCENT: 25% → 20%
-
确保固定风险百分比启用:
USE_FIXED_RISK_SIZING: TrueFIXED_RISK_PERCENT: 0.02 (2%)
-
确保止损单挂单:
EXCHANGE_SLTP_ENABLED: True(默认已启用)
🔍 验证方法
修复后,请观察:
- 开仓日志:是否显示"使用固定风险百分比计算仓位"
- 止损单日志:是否显示"止损单已成功挂到交易所"
- 实际亏损:是否还有30%以上的亏损
- 止盈率:是否提升到30%以上