📘第22篇:一行代码提升10%收益?教你用freqtrade中的custom_roi精准止盈在Freqtrade策略中,custom_roi是一个非常实用的函数,允许你根据当前持仓状态、时间和收益率动态调整止盈目标。相比静态的minimal_roi,custom_roi更灵活,
在 Freqtrade 策略中,custom_roi 是一个非常实用的函数,允许你根据当前持仓状态、时间和收益率动态调整止盈目标。
相比静态的 minimal_roi,custom_roi 更灵活,可以帮助你提升收益率和风险控制能力。
👉 点击访问:https://www.itrade.icu 这里有 Freqtrade 基础教程、策略源码、指标解析 等丰富内容,助你轻松掌握量化交易技巧!
custom_roi 允许用户自定义止盈逻辑,函数会在每个交易周期自动调用,根据实时参数动态返回止盈目标收益率。返回 0 表示立即止盈,返回 None 则继续沿用默认ROI。
def custom_roi(self, trade, current_profit: float, current_time) -> float | None:
"""
自定义止盈策略
参数:
- trade: 当前交易对象,包含持仓信息
- current_profit: 当前收益率(浮点数)
- current_time: 当前时间
返回:
- float类型止盈目标收益率,或者 None 表示使用默认ROI
"""
pass
def custom_roi(self, trade, current_profit: float, current_time) -> float | None:
# 计算持仓时长,单位:分钟
hold_time = (current_time - trade.open_date_utc).total_seconds() / 60
# 持仓小于30分钟,设置严格止盈门槛,收益达到5%即止盈
if hold_time < 30:
target_roi = 0.05
else:
# 持仓超过30分钟,放宽止盈到10%
target_roi = 0.10
# 当前收益达到目标止盈点,触发卖出(返回0)
if current_profit >= target_roi:
print(f"[custom_roi] 触发止盈,当前收益 {current_profit:.2%} >= 目标 {target_roi:.2%}")
return 0 # 立即止盈
# 未达到止盈目标,继续持仓(返回None)
return None
custom_roi后, minimal_roi 将被忽略,所有止盈逻辑完全由 custom_roi控制。custom_roi 返回 None,则会回退到使用默认的 minimal_roi。custom_roi 中完全覆盖止盈逻辑,保证行为统一。custom_roi 灵活定义止盈门槛,结合持仓时间和收益率动态调整custom_roi 是 Freqtrade 中止盈管理的重要扩展接口custom_roi,你可以实现更智能的动态止盈策略minimal_roi,提升策略灵活度和适应性如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!
