128 lines
4.3 KiB
Markdown
128 lines
4.3 KiB
Markdown
# 交易流程分析与优化方案
|
||
|
||
## 🔴 当前严重问题:亏损达到30%以上
|
||
|
||
### 问题分析
|
||
|
||
根据最近的交易记录:
|
||
- CLOUSDT SELL: -17.54% (手动平仓)
|
||
- ICNTUSDT BUY: -19.60% (手动平仓)
|
||
- 0GUSDT BUY: -31.34% (手动平仓)
|
||
- ALCHUSDT BUY: -30.95% (同步平仓)
|
||
|
||
**核心问题:止损没有及时触发,导致亏损远超止损设置(通常止损设置为8-10%)**
|
||
|
||
### 根本原因
|
||
|
||
1. **最小持仓时间锁阻止止损触发** ⚠️ **最严重**
|
||
- `MIN_HOLD_TIME_SEC = 1800秒(30分钟)`
|
||
- 在持仓前30分钟内,即使触发止损,系统也会**禁止平仓**
|
||
- 这导致止损单无法执行,亏损持续扩大
|
||
- **对于小众币,30分钟内价格可能剧烈波动,亏损可能达到30%以上**
|
||
|
||
2. **交易所级别止损单可能未正确挂单**
|
||
- 如果 `_ensure_exchange_sltp_orders` 失败,只有本地监控
|
||
- 本地监控被时间锁阻止,无法平仓
|
||
|
||
3. **止损检查逻辑在时间锁之后**
|
||
- 代码顺序:先检查时间锁 → 如果不足30分钟,直接 `continue`/`return`
|
||
- 止损检查逻辑永远不会执行
|
||
|
||
## 📊 当前交易流程
|
||
|
||
### 开仓流程
|
||
1. 市场扫描(每30分钟)
|
||
2. 信号筛选(MIN_SIGNAL_STRENGTH >= 8)
|
||
3. 计算止损止盈(基于ATR或保证金)
|
||
4. 挂限价单开仓
|
||
5. 订单成交后:
|
||
- 保存交易记录到数据库
|
||
- 在币安挂止损/止盈保护单(`_ensure_exchange_sltp_orders`)
|
||
- 启动WebSocket实时监控
|
||
|
||
### 平仓流程(当前有严重问题)
|
||
|
||
#### 方式1:交易所级别止损/止盈单(最可靠)
|
||
- 币安自动触发,不受时间锁影响
|
||
- **但如果挂单失败,就没有保护**
|
||
|
||
#### 方式2:本地监控检查(被时间锁阻止)
|
||
- `check_stop_loss_take_profit()` 定期检查
|
||
- `_check_single_position()` WebSocket实时监控
|
||
- **都被 `MIN_HOLD_TIME_SEC` 阻止,前30分钟无法平仓**
|
||
|
||
## ✅ 优化方案(已实施)
|
||
|
||
### 1. ✅ 完全移除最小持仓时间锁(已修复)
|
||
|
||
**问题**:时间锁阻止止损和止盈,导致亏损扩大和利润回吐
|
||
|
||
**解决方案**:✅ **完全移除时间锁限制**
|
||
- ✅ 止损检查在时间锁之前执行,立即平仓
|
||
- ✅ 止盈也立即执行,不受时间锁限制
|
||
- ✅ 止损和止盈逻辑一致,都立即执行
|
||
- ✅ 修复了三个位置:`check_stop_loss_take_profit()`、`_check_single_position()` 和移动止损检查
|
||
|
||
**移除理由**:
|
||
1. 止损和止盈都应该立即执行,保护资金和利润
|
||
2. 交易所级别的止损/止盈单已提供保护
|
||
3. 分步止盈策略本身已提供利润保护(50%在1:1止盈,剩余保本)
|
||
4. 及时执行可以避免价格回落导致的利润回吐
|
||
5. 如果需要防止秒级平仓,可以通过提高入场信号质量(MIN_SIGNAL_STRENGTH)来实现
|
||
|
||
### 2. 确保交易所级别止损单正确挂单
|
||
|
||
- 增加日志,记录挂单成功/失败
|
||
- 如果挂单失败,重试机制
|
||
- 定期检查并补挂止损单
|
||
|
||
### 3. 优化止损逻辑
|
||
|
||
- 止损检查应该在时间锁之前(如果采用选项B)
|
||
- 或者完全移除时间锁对止损的限制
|
||
|
||
### 4. 针对小众币的优化
|
||
|
||
- 提高最小成交量要求(避免流动性差的币)
|
||
- 增大止损距离(ATR倍数)以应对高波动
|
||
- 降低杠杆倍数(降低风险)
|
||
|
||
## 🎯 具体修复建议
|
||
|
||
### 立即修复(高优先级)
|
||
|
||
1. **移除时间锁对止损的限制**
|
||
- 止损应该立即执行,不受时间锁影响
|
||
- 时间锁只应用于止盈(防止过早止盈)
|
||
|
||
2. **增强止损单挂单可靠性**
|
||
- 增加重试机制
|
||
- 增加失败告警
|
||
- 定期检查并补挂
|
||
|
||
3. **优化止损检查逻辑**
|
||
- 确保止损检查在时间锁之前(如果保留时间锁)
|
||
- 或者完全移除时间锁
|
||
|
||
### 中期优化
|
||
|
||
1. **提高入场信号质量**
|
||
- 提高 `MIN_SIGNAL_STRENGTH` 到 9-10
|
||
- 只交易高质量信号
|
||
|
||
2. **优化止损距离**
|
||
- 对于小众币,使用更大的ATR倍数(2.0-2.5)
|
||
- 确保止损距离足够,不会被正常波动触发
|
||
|
||
3. **降低杠杆**
|
||
- 对于小众币,降低杠杆到5-8倍
|
||
- 降低单笔仓位到5%
|
||
|
||
## 📈 预期效果
|
||
|
||
修复后:
|
||
- ✅ 止损能及时触发,亏损控制在8-10%以内
|
||
- ✅ 不会出现30%以上的大额亏损
|
||
- ✅ 胜率提升(及时止损,避免大亏)
|
||
- ✅ 盈亏比改善(小亏大赚)
|