5.8 KiB
5.8 KiB
分步止盈优化:30%固定止盈策略
📊 优化目标
问题:
- 止盈目标30%虽然更容易触发,但可能会错过更多收益
- 用户希望:保证拿到30%盈利,然后留一部分去追求更高利润
解决方案:
- 第一目标:30%固定止盈(基于保证金),平掉50%仓位,保证拿到30%盈利
- 第二目标:追求更高收益(4.0:1盈亏比或更高),平掉剩余50%仓位
🔧 修改内容
1. 开仓时计算分步止盈目标
文件:trading_system/position_manager.py
修改前:
# 分步止盈(基于"实际成交价 + 已计算的止损/止盈")
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
修改后:
# 分步止盈策略:
# 第一目标: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
修改前:
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}"
)
修改后:
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
修改前:
# 第一目标:盈亏比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
)
修改后:
# 第一目标: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%
执行流程:
- 价格涨到2.109(3.75%),触发第一目标
- 平掉50%仓位(5个),锁定30%盈利
- 剩余50%仓位(5个)止损移至成本价(保本)
- 价格继续涨到2.185(7.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%基于保证金)
✅ 修改完成
修改文件:
trading_system/position_manager.py:开仓时计算分步止盈目标,实时监控中的第一目标触发逻辑trading_system/trade_recommender.py:推荐系统中的第一目标计算
下一步:
- 重启交易进程,让修改生效
- 观察后续交易,确认分步止盈是否按预期执行
- 验证第一目标是否为30%固定止盈,第二目标是否为更高收益