第 3 章 · 04 minimal_roi 与 stoploss


文档摘要

第 3 章 · 04 minimalroi 与 stoploss 本节摘要:信号决定「何时进」,而风控决定「何时出」——哪怕信号没出场。本节讲透 freqtrade 的两个最基础也最重要的风控工具: (最小投资回报表,达到目标利润自动平仓)与 (止损比例)。 不是单一数字,而是一张「时间-收益阶梯表」,持有越久门槛越低; 是兜底的「硬止损」,触及即平。两者与第 03 节的出场信号、第 4 章的追踪止损共同构成出场逻辑,且都能被配置文件覆盖。读完本节,你能为策略设计一套合理的「见好就收 + 兜底止损」组合,并理解配置覆盖的优先级。 内容来源:原项目源码 、文档 ,汉化并套用体系化模板。 ⚠️ 风险提示:没有止损的策略不是策略,是赌注。哪怕回测再好看,实盘黑天鹅会让单笔亏损无下限。

第 3 章 · 04 minimal_roi 与 stoploss

本节摘要:信号决定「何时进」,而风控决定「何时出」——哪怕信号没出场。本节讲透 freqtrade 的两个最基础也最重要的风控工具:minimal_roi(最小投资回报表,达到目标利润自动平仓)与 stoploss(止损比例)。minimal_roi 不是单一数字,而是一张「时间-收益阶梯表」,持有越久门槛越低;stoploss 是兜底的「硬止损」,触及即平。两者与第 03 节的出场信号、第 4 章的追踪止损共同构成出场逻辑,且都能被配置文件覆盖。读完本节,你能为策略设计一套合理的「见好就收 + 兜底止损」组合,并理解配置覆盖的优先级。

内容来源:原项目源码 freqtrade/templates/sample_strategy.py、文档 docs/strategy-101.md,汉化并套用体系化模板。

⚠️ 风险提示:没有止损的策略不是策略,是赌注。哪怕回测再好看,实盘黑天鹅会让单笔亏损无下限。任何实盘策略都必须配置合理的 stoploss

学习目标

阅读完本节,你应当能够:

  1. 解释 minimal_roi 阶梯表的解读规则。
  2. 配置「见好就收」的阶梯 ROI。
  3. 配置 stoploss 兜底止损
  4. 理解 ROI、止损、出场信号的协同(「或」关系)。
  5. ignore_roi_if_entry_signalexit_profit_only 调整行为。
  6. 说清配置覆盖:JSON 里同名字段如何覆盖策略类属性。

一、minimal_roi:时间-收益阶梯表

minimal_roi 不是单一数字,而是一张字典,键是「进场后第 N 分钟」,值是「达到该收益率就平仓」:

minimal_roi = { "0": 0.04, # 进场 0 分钟后:盈利 4% 就平 "30": 0.02, # 进场 30 分钟后:盈利 2% 就平 "60": 0.01, # 进场 60 分钟后:盈利 1% 就平 # "120": 0.0, # 进场 120 分钟后:盈利 0%(保本)就平 }

解读规则:

  • 键是「进场后第 N 分钟」,不是绝对时间。
  • 引擎每根 K 线检查:当前持仓时间 ≥ 哪个键,就用对应门槛。
  • 持有时间越长,门槛越低——持有越久,对收益要求越松,见好就收

💡 核心心法:这个设计的本质是「承认市场不可预测」——刚进场时你对这笔交易最有信心(要 4%);如果持仓 2 小时还没达成目标,说明行情没你想的那样,不如保本走人(0%)。它把「时间衰减」编码进了出场逻辑。

二、阶梯表的几种典型配置

激进型(快进快出)

minimal_roi = { "0": 0.10, # 立即:要 10% "20": 0.05, # 20 分钟后:5% "40": 0.0, # 40 分钟后:保本就走 }

适合高频(5m 以下)的「打一枪就跑」策略。

保守型(长持)

minimal_roi = { "0": 0.05, "120": 0.03, "360": 0.01, "720": 0.0, # 12 小时保本 }

适合 1h 或更长周期、趋势跟随的策略。

纯靠信号出场(关掉 ROI)

minimal_roi = {"0": 100} # 设个不可能达到的大数

或干脆:

minimal_roi = {} # 空 dict,完全不用 ROI 出场

完全依赖出场信号或止损——只在你真的信任出场信号时才这么做。

三、stoploss:兜底止损

stoploss = -0.10 # 亏损 10% 自动平仓

含义:进场后,相对入场价的浮亏达到 10%,无条件平仓

注意几点:

  • 负数:stoploss 永远是负数(因为是亏损比例)。写 -0.10 表示 10% 止损。
  • 相对入场价:不是相对最新高,而是相对实际成交的开仓价(含手续费)。
  • 「或」关系:止损与 ROI、出场信号并列,任一触发就平仓——止损是「兜底」,信号没出场时它来兜。

⚠️ 止损不是「保险丝」是「断路器」:止损成交那一刻,亏损已经发生——它不能防止亏损,只能限制亏损不再扩大。设 -10% 不代表最多亏 10%,实盘滑点可能让实际成交在 -11% 甚至更低(尤其剧烈下跌时)。

四、ROI、止损、信号的协同

这三种出场是**「或」关系**——任意一个触发就平仓:

出场来源 触发条件 典型用途
minimal_roi 浮盈达到当前阶梯门槛 见好就收、锁定利润
stoploss 浮亏达到止损比例 兜底、防黑天鹅
populate_exit_trend 出场信号列 exit_long=1 策略主动出场
custom_exit(第 4 章) 自定义回调返回非空 复杂逻辑出场
custom_stoploss(第 4 章) 自定义止损回调 动态/追踪止损

理解「或」关系很重要——你不需要在策略里重复检查止损条件。你只管写信号出场,引擎会自动叠加 ROI 和止损。

五、两个影响行为的关键开关

# 即使达到 ROI,但如果仍有入场信号,不平仓(忽略 ROI) ignore_roi_if_entry_signal = True # 仅在盈利时才用出场信号(避免亏损时被信号平在最低点) exit_profit_only = False # 是否使用 populate_exit_trend 的出场信号 use_exit_signal = True
  • ignore_roi_if_entry_signal=True:达到 ROI 本该平仓,但如果此刻仍有进场信号,就再等等——适合趋势跟随(避免被小回调洗下车)。
  • exit_profit_only=True:出场信号只在盈利时才生效,亏损时只能靠止损/ROI。避免「信号让你亏着平」。
  • use_exit_signal=False:完全不用信号出场,只靠 ROI + 止损。

💡 新人的默认选择:三个开关都保持默认(use_exit_signal=Trueexit_profit_only=Falseignore_roi_if_entry_signal=False)。先让三种出场各司其职,熟悉后再做精细调整。

六、配置覆盖:JSON 优先于策略

这是新手最常踩的坑:minimal_roistoploss 既可以写在策略里(类属性),也可以写在配置 JSON 里。JSON 优先

// config.json { "minimal_roi": { "0": 0.05, "60": 0.02 }, "stoploss": -0.15 }

含义:即使你的策略文件里写了 stoploss = -0.10,实盘/回测用的都是 JSON 里的 -0.15

⚠️ 常见排查:「我改了策略里的 stoploss 怎么不生效?」——八成是配置 JSON 里有同名字段覆盖了。检查 config.jsonstoplossminimal_roi,删掉或同步即可。回测时用 --config 指定的文件会覆盖策略。

七、设计一套合理的风控参数

实战经验法则:

  1. 止损 < 单笔最大可承受亏损:如果你单笔最多想亏 1% 总资金,stake_amount 占总资金 5%,那 stoploss 应 ≤ -20%。
  2. ROI 与止损的赔率:若 ROI 是 4%、止损是 -10%,赔率 0.4,胜率必须 > 70% 才能盈利;若 ROI 6%、止损 -3%,赔率 2,胜率 35% 就能盈利。
  3. 先用宽止损回测:把止损放宽(如 -30%)回测,看策略的「自然最大回撤」,再据此设紧一点。

本节要点回顾

  1. 阶梯表:minimal_roi 键是「进场后第 N 分钟」,值是「达到该收益率就平」;持有越久门槛越低,本质是把时间衰减压进出场。
  2. stoploss:负数比例,相对入场价的浮亏阈值,触及即平,是「断路器」而非「保险丝」。
  3. 协同:ROI、止损、出场信号、custom_exit、custom_stoploss 是**「或」关系**,任一触发就平。
  4. 行为开关:ignore_roi_if_entry_signal(ROI 时若有信号再等)、exit_profit_only(仅盈利时用信号)、use_exit_signal(开/关信号出场)。
  5. 配置覆盖:JSON 里 minimal_roistoploss 覆盖策略类属性;排查「改了不生效」先看 JSON。
  6. 设计原则:止损决定单笔最大亏损;ROI 与止损的赔率决定所需胜率;先用宽止损回测找自然回撤。

下一节,我们把前三节学的指标、信号、风控串起来,精读官方 sample_strategy 的完整代码,跑通你的第一个完整策略。


发布者: 作者: 灏天文库 转发
评论区 (0)
U