185 lines
5.8 KiB
Markdown
185 lines
5.8 KiB
Markdown
# 分步止盈优化: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%固定止盈,第二目标是否为更高收益
|