# 分步止盈优化：30%固定止盈策略

## 📊 优化目标

**问题**：
- 止盈目标30%虽然更容易触发，但可能会错过更多收益
- 用户希望：保证拿到30%盈利，然后留一部分去追求更高利润

**解决方案**：
- 第一目标：30%固定止盈（基于保证金），平掉50%仓位，**保证拿到30%盈利**
- 第二目标：追求更高收益（4.0:1盈亏比或更高），平掉剩余50%仓位

---

## 🔧 修改内容

### 1. 开仓时计算分步止盈目标

**文件**：`trading_system/position_manager.py`

**修改前**：
```python
# 分步止盈（基于"实际成交价 + 已计算的止损/止盈"）
if side == 'BUY':
    take_profit_1 = entry_price + (entry_price - stop_loss_price)  # 盈亏比1:1
else:
    take_profit_1 = entry_price - (stop_loss_price - entry_price)  # 盈亏比1:1
take_profit_2 = take_profit_price
```

**修改后**：
```python
# 分步止盈策略：
# 第一目标：30%固定止盈（基于保证金），平掉50%仓位，保证拿到30%盈利
# 第二目标：追求更高收益（4.0:1盈亏比或更高），平掉剩余50%仓位
take_profit_1_pct_margin = config.TRADING_CONFIG.get('TAKE_PROFIT_PERCENT', 0.30)  # 30%固定止盈
take_profit_1 = self.risk_manager.get_take_profit_price(
    entry_price, side, quantity, leverage,
    take_profit_pct=take_profit_1_pct_margin,
    atr=atr,
    stop_distance=stop_distance_for_tp
)
take_profit_2 = take_profit_price  # 第二目标：追求更高收益（4.0:1盈亏比或更高）
```

**改进**：
- ✅ 第一目标从"盈亏比1:1"改为"30%固定止盈"
- ✅ 保证拿到30%盈利，然后留一部分去追求更高利润
- ✅ 使用 `TAKE_PROFIT_PERCENT` 配置项（30%）

---

### 2. 实时监控中的第一目标触发逻辑

**文件**：`trading_system/position_manager.py`

**修改前**：
```python
logger.info(
    f"{symbol} [实时监控] 触发第一目标止盈（盈亏比1:1，基于保证金）: "
    f"当前盈亏={pnl_percent_margin:.2f}% of margin >= 目标={take_profit_1_pct_margin:.2f}% of margin | "
    f"当前价={current_price_float:.4f}, 目标价={take_profit_1:.4f}"
)
```

**修改后**：
```python
logger.info(
    f"{symbol} [实时监控] 触发第一目标止盈（30%固定止盈，基于保证金）: "
    f"当前盈亏={pnl_percent_margin:.2f}% of margin >= 目标={take_profit_1_pct_margin:.2f}% of margin | "
    f"当前价={current_price_float:.4f}, 目标价={take_profit_1:.4f} | "
    f"将平掉50%仓位，锁定30%盈利，剩余50%追求更高收益"
)
```

**改进**：
- ✅ 日志更清晰地说明第一目标是"30%固定止盈"
- ✅ 说明将平掉50%仓位，锁定30%盈利，剩余50%追求更高收益

---

### 3. 推荐系统中的第一目标计算

**文件**：`trading_system/trade_recommender.py`

**修改前**：
```python
# 第一目标：盈亏比1:1（快速锁定利润，设置保本损）
take_profit_1_pct_margin = stop_loss_pct_margin * 1.0  
take_profit_1 = self.risk_manager.get_take_profit_price(
    entry_price, direction, estimated_quantity, leverage,
    take_profit_pct=take_profit_1_pct_margin
)
```

**修改后**：
```python
# 第一目标：30%固定止盈（基于保证金），保证拿到30%盈利，然后留一部分去追求更高利润
take_profit_1_pct_margin = config.TRADING_CONFIG.get('TAKE_PROFIT_PERCENT', 0.30)  # 30%固定止盈
take_profit_1 = self.risk_manager.get_take_profit_price(
    entry_price, direction, estimated_quantity, leverage,
    take_profit_pct=take_profit_1_pct_margin
)
```

**改进**：
- ✅ 推荐系统中的第一目标也改为"30%固定止盈"
- ✅ 与交易系统保持一致

---

## 📈 策略效果

### 修改前

**第一目标**：盈亏比1:1
- 如果止损是15%，第一目标是15%
- 平掉50%仓位，锁定15%盈利
- 剩余50%追求4.0:1盈亏比（60%）

**问题**：
- 第一目标15%可能不够，用户希望保证拿到30%盈利

### 修改后

**第一目标**：30%固定止盈
- 第一目标是30%（基于保证金）
- 平掉50%仓位，**保证拿到30%盈利**
- 剩余50%追求更高收益（4.0:1盈亏比或更高）

**优势**：
- ✅ 保证拿到30%盈利，不会错过收益
- ✅ 剩余50%仓位追求更高收益，不错过更大行情
- ✅ 分步止盈策略更合理

---

## 🎯 示例计算

### 示例：AXSUSDT BUY

**假设**：
- 入场价：2.033
- 保证金：2.54125 USDT
- 杠杆：8倍
- 数量：10
- 止损：15%（基于保证金）

**第一目标（30%固定止盈）**：
- 止盈金额 = `2.54125 × 0.30 = 0.762375 USDT`
- 止盈距离 = `0.762375 / 10 = 0.0762375 USDT`
- 止盈价 = `2.033 + 0.0762375 = 2.1092375 USDT`
- 价格涨幅 = `0.0762375 / 2.033 = 3.75%`

**第二目标（4.0:1盈亏比）**：
- 止损距离 = `2.033 × 0.01875 = 0.03811875 USDT`（15% / 8 = 1.875%）
- 止盈距离 = `0.03811875 × 4.0 = 0.152475 USDT`
- 止盈价 = `2.033 + 0.152475 = 2.185475 USDT`
- 价格涨幅 = `0.152475 / 2.033 = 7.5%`

**执行流程**：
1. 价格涨到2.109（3.75%），触发第一目标
2. 平掉50%仓位（5个），锁定30%盈利
3. 剩余50%仓位（5个）止损移至成本价（保本）
4. 价格继续涨到2.185（7.5%），触发第二目标
5. 平掉剩余50%仓位（5个），获得4.0:1盈亏比

**总收益**：
- 第一目标：`5 × 0.762375 = 3.811875 USDT`（30%盈利）
- 第二目标：`5 × 0.152475 = 0.762375 USDT`（4.0:1盈亏比）
- 总盈利：`3.811875 + 0.762375 = 4.57425 USDT`（约180%基于保证金）

---

## ✅ 修改完成

**修改文件**：
1. `trading_system/position_manager.py`：开仓时计算分步止盈目标，实时监控中的第一目标触发逻辑
2. `trading_system/trade_recommender.py`：推荐系统中的第一目标计算

**下一步**：
1. 重启交易进程，让修改生效
2. 观察后续交易，确认分步止盈是否按预期执行
3. 验证第一目标是否为30%固定止盈，第二目标是否为更高收益
