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