auto_trade_sys/docs/分步止盈优化_30%固定止盈.md
薇薇安 9fe028d704 a
2026-01-27 10:36:56 +08:00

185 lines
5.8 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.

# 分步止盈优化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.1093.75%),触发第一目标
2. 平掉50%仓位5个锁定30%盈利
3. 剩余50%仓位5个止损移至成本价保本
4. 价格继续涨到2.1857.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%固定止盈,第二目标是否为更高收益