继续优化

This commit is contained in:
zhangkun9038@dingtalk.com 2025-10-17 08:25:49 +00:00
parent fb720324ac
commit eaca2adbfc

View File

@ -569,25 +569,39 @@ class FreqaiPrimer(IStrategy):
"""
# 获取当前交易对
pair = trade.pair
# -------------------------- 减仓逻辑 --------------------------
# -------------------------- 减仓逻辑(进阶版:支持二次减仓) --------------------------
if current_profit > 0:
# 1. 首次减仓盈利≥9.5%直接减50%(不再触发后续减仓)
if current_profit >= 0.095 and trade.nr_of_successful_exits == 0:
reduce_amount = - (trade.stake_amount * 0.5)
reduce_ratio = 0.5
reduce_amount = - (trade.stake_amount * reduce_ratio)
reduce_amount = max(-trade.stake_amount, min(reduce_amount, -min_stake))
logger.info(f"[{pair}] 触发减仓: 盈利{current_profit:.2%}≥8.5%退出50%仓位,减仓金额{abs(reduce_amount):.2f}")
logger.info(f"[{pair}] 首次减仓: 盈利{current_profit:.2%}≥9.5%,退出{reduce_ratio*100:.0f}%仓位,减仓金额{abs(reduce_amount):.2f}")
return reduce_amount
# 盈利超8.5%退出50%仓位(仅触发一次)
elif current_profit >= 0.085 and trade.nr_of_successful_exits == 0:
reduce_amount = - (trade.stake_amount * 0.33)
# 2. 首次减仓盈利≥8.5%且<9.5%减33%
elif 0.085 <= current_profit < 0.095 and trade.nr_of_successful_exits == 0:
reduce_ratio = 0.33
reduce_amount = - (trade.stake_amount * reduce_ratio)
reduce_amount = max(-trade.stake_amount, min(reduce_amount, -min_stake))
logger.info(f"[{pair}] 触发减仓: 盈利{current_profit:.2%}≥8.5%退出50%仓位,减仓金额{abs(reduce_amount):.2f}")
logger.info(f"[{pair}] 首次减仓: 盈利{current_profit:.2%}≥8.5%,退出{reduce_ratio*100:.0f}%仓位,减仓金额{abs(reduce_amount):.2f}")
return reduce_amount
# 盈利超7.5%但未达8.5%退出25%仓位(仅触发一次)
# 3. 首次减仓盈利≥7.5%且<8.5%减25%
elif 0.075 <= current_profit < 0.085 and trade.nr_of_successful_exits == 0:
reduce_amount = - (trade.stake_amount * 0.25)
reduce_ratio = 0.25
reduce_amount = - (trade.stake_amount * reduce_ratio)
reduce_amount = max(-trade.stake_amount, min(reduce_amount, -min_stake))
logger.info(f"[{pair}] 触发减仓: 盈利{current_profit:.2%}≥7.5%退出25%仓位,减仓金额{abs(reduce_amount):.2f}")
logger.info(f"[{pair}] 首次减仓: 盈利{current_profit:.2%}≥7.5%,退出{reduce_ratio*100:.0f}%仓位,减仓金额{abs(reduce_amount):.2f}")
return reduce_amount
# 4. 二次减仓已首次减仓nr_of_successful_exits=1且盈利≥10%再减30%总减仓比例≈25%+30%=55%
elif current_profit >= 0.10 and trade.nr_of_successful_exits == 1:
reduce_ratio = 0.30
reduce_amount = - (trade.stake_amount * reduce_ratio) # 注意:此处 trade.stake_amount 是减仓后的剩余金额
reduce_amount = max(-trade.stake_amount, min(reduce_amount, -min_stake))
logger.info(f"[{pair}] 二次减仓: 盈利{current_profit:.2%}≥10%,退出{reduce_ratio*100:.0f}%仓位,减仓金额{abs(reduce_amount):.2f}")
return reduce_amount