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

5.8 KiB
Raw Blame History

分步止盈优化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 USDT15% / 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 USDT30%盈利)
  • 第二目标:5 × 0.152475 = 0.762375 USDT4.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%固定止盈,第二目标是否为更高收益