auto_trade_sys/STRATEGY_LOGIC_ANALYSIS.md
薇薇安 7ec1ae32d7 a
2026-01-22 23:03:32 +08:00

264 lines
8.6 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.

# 交易策略逻辑完整分析
## 📊 当前策略参数配置
### 核心参数
| 参数 | 当前值 | 说明 |
|------|--------|------|
| `ATR_STOP_LOSS_MULTIPLIER` | 1.8 | ATR止损倍数止损距离 = ATR × 1.8 |
| `ATR_TAKE_PROFIT_MULTIPLIER` | 1.5 | ATR止盈倍数备选方法当无止损距离时使用 |
| `RISK_REWARD_RATIO` | 1.5 | 盈亏比(止盈距离 = 止损距离 × 1.5 |
| `MIN_TAKE_PROFIT_PRICE_PCT` | 0.02 (2%) | 最小止盈价格变动保护 |
| `MIN_HOLD_TIME_SEC` | 1800 (30分钟) | 最小持仓时间锁 |
| `USE_TRAILING_STOP` | False | 移动止损(已禁用) |
## 🎯 止盈计算逻辑(优先级顺序)
### 方法1基于止损距离和盈亏比优先使用
```
止盈距离 = 止损距离 × RISK_REWARD_RATIO (1.5)
止盈价 = 入场价 ± 止盈距离
```
**示例**
- 入场价100 USDT
- ATR3 USDT (3%)
- 止损距离100 × 0.03 × 1.8 = 5.4 USDT (5.4%)
- 止损价100 - 5.4 = 94.6 USDT
- **止盈距离**5.4 × 1.5 = **8.1 USDT (8.1%)**
- **止盈价**100 + 8.1 = **108.1 USDT**
### 方法2基于ATR倍数备选当无止损距离时
```
止盈距离 = ATR百分比 × ATR_TAKE_PROFIT_MULTIPLIER (1.5)
止盈价 = 入场价 × (1 ± 止盈距离百分比)
```
**示例**
- 入场价100 USDT
- ATR3 USDT (3%)
- **止盈距离**0.03 × 1.5 = **4.5%**
- **止盈价**100 × 1.045 = **104.5 USDT**
### 方法3基于保证金百分比兜底
```
止盈金额 = 保证金 × TAKE_PROFIT_PERCENT (25%)
止盈价 = 入场价 ± (止盈金额 / 数量)
```
### 方法4最小价格变动保护
```
止盈价 = 入场价 × (1 ± MIN_TAKE_PROFIT_PRICE_PCT) (2%)
```
**最终止盈价选择**:取以上方法中最宽松(最远)的价格
## 🔄 分步止盈策略
### 第一阶段50% 仓位在 1:1 盈亏比止盈
```
第一目标价 = 入场价 ± (入场价 - 止损价)
第一目标 = 盈亏比 1:1相对于保证金
```
**触发条件**
- 当前盈亏百分比(基于保证金)≥ 止损百分比(基于保证金)
- 平仓 50% 仓位
- **将剩余仓位止损移至入场价(保本)**
### 第二阶段:剩余 50% 仓位在 1.5:1 盈亏比止盈
```
第二目标价 = 原始止盈价(基于止损距离 × 1.5
第二目标 = 盈亏比 1.5:1相对于剩余仓位的保证金
```
**触发条件**
- 剩余仓位盈亏百分比(基于剩余保证金)≥ 1.5 × 止损百分比
- 平仓剩余 50% 仓位
## 📈 胜率要求分析
### 理论盈亏比计算
假设:
- 止损损失:-1 单位(基于保证金)
- 第一目标盈利50%仓位):+1 单位1:1
- 第二目标盈利50%仓位):+1.5 单位1.5:1
**完整交易期望收益**
- 如果第一目标触发(概率 P1第二目标也触发概率 P2
- 总盈利 = 0.5 × 1 + 0.5 × 1.5 = **1.25 单位**
- 如果第一目标触发,但第二目标未触发(概率 P1 × (1-P2)
- 总盈利 = 0.5 × 1 + 0.5 × 0 = **0.5 单位**
- 如果第一目标未触发,直接止损:
- 总损失 = **-1 单位**
### 盈亏平衡点计算
**最理想情况**第一目标100%触发第二目标100%触发):
```
胜率 × 1.25 = 败率 × 1
胜率 × 1.25 = (1 - 胜率) × 1
胜率 × 2.25 = 1
胜率 = 44.4%
```
**保守情况**第一目标100%触发第二目标50%触发):
```
平均盈利 = 0.5 × 1.25 + 0.5 × 0.5 = 0.875 单位
胜率 × 0.875 = (1 - 胜率) × 1
胜率 × 1.875 = 1
胜率 = 53.3%
```
**最保守情况**第一目标100%触发第二目标0%触发):
```
平均盈利 = 0.5 单位
胜率 × 0.5 = (1 - 胜率) × 1
胜率 × 1.5 = 1
胜率 = 66.7%
```
### 实际胜率要求评估
**关键因素**
1. **第一目标触发率**1:1 盈亏比相对容易触发(预期 60-70%
2. **第二目标触发率**1.5:1 盈亏比需要趋势延续(预期 40-50%
3. **保本保护**:第一目标触发后,剩余仓位止损移至入场价,**彻底杜绝亏损可能**
**实际期望**
- 如果第一目标触发率 = 65%,第二目标触发率 = 45%
- 平均盈利 = 0.65 × (0.45 × 1.25 + 0.55 × 0.5) = **0.65 × 0.8375 = 0.544 单位**
- 盈亏平衡点:胜率 × 0.544 = (1 - 胜率) × 1
- **胜率 = 64.8%**
## ⚠️ 潜在问题分析
### 1. 胜率要求较高
**问题**:如果第一目标触发率低,或第二目标触发率低,需要更高的胜率才能盈利。
**缓解措施**
- ✅ 分步止盈确保至少锁定部分利润
- ✅ 保本保护确保第一目标触发后不会亏损
- ✅ 最小持仓时间锁30分钟避免过早平仓
- ⚠️ **需要监控实际第一/第二目标触发率**
### 2. ATR_TAKE_PROFIT_MULTIPLIER 与 RISK_REWARD_RATIO 的关系
**当前逻辑**
- 优先使用 `止损距离 × RISK_REWARD_RATIO (1.5)` 计算止盈
- `ATR_TAKE_PROFIT_MULTIPLIER (1.5)` 仅作为备选(当无止损距离时)
**潜在问题**
- 如果 ATR 很小,`ATR_TAKE_PROFIT_MULTIPLIER` 可能计算出过小的止盈距离
-`MIN_TAKE_PROFIT_PRICE_PCT (2%)` 提供了保护
**建议**
- ✅ 当前逻辑合理,`ATR_TAKE_PROFIT_MULTIPLIER` 主要作为备选
-`MIN_TAKE_PROFIT_PRICE_PCT` 确保最小止盈距离
### 3. 分步止盈的保本逻辑
**当前实现**
- 第一目标触发后,剩余仓位止损移至入场价(保本)
- **无论 `USE_TRAILING_STOP` 是否启用,都会移至保本**
**优势**
- ✅ 彻底杜绝第一目标触发后的亏损可能
- ✅ 剩余仓位可以追求更高收益
**潜在问题**
- ⚠️ 如果价格在入场价附近震荡,可能频繁触发保本止损
- ⚠️ 但这是可接受的因为已经锁定了50%的利润
### 4. 止盈价选择逻辑
**当前实现**:取所有方法中最宽松(最远)的价格
**潜在问题**
- 如果 `TAKE_PROFIT_PERCENT (25%)` 计算出的止盈价很远,可能难以触发
- 但 ATR 方法通常会给出更合理的价格
**建议**
- ✅ 当前逻辑合理,优先使用 ATR 方法
- ⚠️ 需要监控实际止盈触发率
## 📋 策略逻辑流程图
```
开仓
计算止损ATR × 1.8
计算止盈(止损距离 × 1.5 或 ATR × 1.5
设置第一目标1:1 盈亏比50%仓位)
设置第二目标1.5:1 盈亏比剩余50%仓位)
监控持仓
├─→ 触发止损 → 平仓(损失 -1 单位)
├─→ 触发第一目标 → 平仓50% → 止损移至保本 → 继续监控
│ │
│ └─→ 触发第二目标 → 平仓剩余50%(总盈利 1.25 单位)
│ └─→ 触发保本止损 → 平仓剩余50%(总盈利 0.5 单位)
└─→ 最小持仓时间未到 → 继续监控
```
## 🎯 优化建议
### 1. 监控关键指标
- **第一目标触发率**:目标 ≥ 60%
- **第二目标触发率**:目标 ≥ 40%
- **实际盈亏比**:目标 ≥ 1.2
- **盈利因子**:目标 ≥ 1.1
### 2. 如果胜率不足
**选项A**:提高第一目标触发率
- 降低第一目标到 0.8:1 盈亏比
- 但会降低平均盈利
**选项B**:提高第二目标触发率
- 降低第二目标到 1.2:1 盈亏比
- 但会降低平均盈利
**选项C**:提高入场信号质量
- 提高 `MIN_SIGNAL_STRENGTH`(当前 8
- 仅在 `marketRegime=trending` 时交易
- 提高 `MIN_SIGNAL_STRENGTH` 到 9 或 10
### 3. 如果第一目标触发率低
- 检查是否因为最小持仓时间锁导致过早平仓
- 检查止损是否过紧ATR_STOP_LOSS_MULTIPLIER = 1.8 是否合理)
- 考虑降低第一目标到 0.9:1
### 4. 如果第二目标触发率低
- 检查止盈价是否过远
- 考虑降低第二目标到 1.3:1 或 1.2:1
- 但需要权衡:降低目标会降低平均盈利
## ✅ 总结
### 当前策略的优势
1.**分步止盈**:锁定部分利润,降低风险
2.**保本保护**:第一目标触发后不会亏损
3.**动态止损**:基于 ATR适应市场波动
4.**最小持仓时间**:避免过早平仓
### 当前策略的挑战
1. ⚠️ **胜率要求**:需要 45-65% 胜率(取决于第二目标触发率)
2. ⚠️ **第二目标触发率**:需要趋势延续,可能较低
3. ⚠️ **需要监控**:实际触发率可能与理论不符
### 建议
1. **先运行观察**:收集实际数据(第一/第二目标触发率、实际盈亏比)
2. **根据数据调整**
- 如果第一目标触发率 < 60%考虑降低到 0.9:1
- 如果第二目标触发率 < 40%考虑降低到 1.3:1
- 如果胜率 < 50%提高入场信号质量
3. **目标指标**
- 第一目标触发率 60%
- 第二目标触发率 40%
- 实际盈亏比 1.2
- 盈利因子 1.1