第 9 章 · 02 现货与合约杠杆


文档摘要

第 9 章 · 02 现货与合约杠杆 本节摘要:freqtrade 支持现货和合约两种交易模式,靠 和 两个配置项切换。本节讲清三件事:一是现货与合约的本质区别(有无杠杆、有无强平、有无资金费率);二是保证金模式的两种选择——isolated(逐仓,每个交易对独立保证金)与 cross(全仓,共享保证金,风险更大);三是杠杆的设置方式——通过策略里的 回调按交易对动态决定,以及杠杆如何放大盈亏、如何让止损更容易触发。读完你会理解为什么官方反复强调「没在现货验证盈利前别碰杠杆」。 内容来源:原项目文档 、 ,汉化并套用体系化模板。 ⚠️ 风险提示:杠杆交易极高风险。杠杆 2 倍意味着 50% 的止损可能来不及触发就被强平。切勿在未充分验证策略前使用杠杆,永远不要冒超出承受能力的损失。

第 9 章 · 02 现货与合约杠杆

本节摘要:freqtrade 支持现货和合约两种交易模式,靠 trading_modemargin_mode 两个配置项切换。本节讲清三件事:一是现货与合约的本质区别(有无杠杆、有无强平、有无资金费率);二是保证金模式的两种选择——isolated(逐仓,每个交易对独立保证金)与 cross(全仓,共享保证金,风险更大);三是杠杆的设置方式——通过策略里的 leverage() 回调按交易对动态决定,以及杠杆如何放大盈亏、如何让止损更容易触发。读完你会理解为什么官方反复强调「没在现货验证盈利前别碰杠杆」。

内容来源:原项目文档 docs/leverage.mddocs/strategy-callbacks.md,汉化并套用体系化模板。

⚠️ 风险提示:杠杆交易极高风险。杠杆 2 倍意味着 50% 的止损可能来不及触发就被强平。切勿在未充分验证策略前使用杠杆,永远不要冒超出承受能力的损失。

学习目标

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

  1. 区分 spotmarginfutures 三种交易模式。
  2. 说明 isolatedcross 两种保证金模式的差异与风险。
  3. leverage() 回调动态设置杠杆。
  4. 理解杠杆如何放大盈亏并影响止损/ROI。
  5. 配置 liquidation_buffer 防止真实强平。

一、trading_mode:现货、保证金、合约

trading_mode 决定你在哪种市场交易,可选值:

模式 状态 特点
spot(默认) 可用 只做多、无杠杆、无强平,盈亏=资产价值变动-手续费
margin 不可用 现货市场+交易所借币,目前未开放
futures 可用 永续合约(衍生品),支持杠杆、做空、强平、资金费率

现货(spot) 是最简单的:用自有资金买币,涨了卖掉赚差价。没有杠杆,不会爆仓,最多亏掉本金。这是新手的起点。

合约(futures) 交易的是「永续合约」——一种紧密追踪标的资产价格的衍生品合约,可以无限期持有。与现货的关键区别:

  • 杠杆:交易所借你资金,盈亏按杠杆倍数放大。
  • 强平:亏损到一定程度,交易所强制平仓,可能血本无归。
  • 资金费率:多空双方周期性互付费用,源于合约价与现货价的偏差。

合约配置:

"trading_mode": "futures", "margin_mode": "isolated"

⚠️ 合约命名:freqtrade 遵循 ccxt 的合约命名规范,格式为 base/quote:settle,如 ETH/USDT:USDT(以 USDT 结算的 ETH 永续合约)。

二、margin_mode:isolated 逐仓 vs cross 全仓

合约模式下还要选保证金模式:

isolated(逐仓):每个交易对(市场)的保证金独立账户。一个仓位被强平,不影响其他仓位。

"margin_mode": "isolated"

cross(全仓):所有交易对共享一个保证金账户。某个仓位亏损时,会从总余额借保证金来避免强平。

"margin_mode": "cross"

⚠️ cross 风险更大:全仓模式下,一个仓位的亏损会拉低所有仓位的强平价,可能引发连锁强平,导致整个账户被清零。而且 freqtrade 提醒:cross 模式的仓位互相影响在 dry-run 和回测中可能无法完整模拟,回测结果可能与实盘有偏差。新手建议从 isolated 起步。

三、leverage 回调:动态设置杠杆

杠杆不必写死。freqtrade 提供策略回调 leverage(),让你按交易对、按方向、按入场标签动态决定杠杆:

def leverage(self, pair: str, current_time, current_rate: float, proposed_leverage: float, max_leverage: float, entry_tag: str | None, side: str, **kwargs) -> float: """ 只在合约模式下调用。返回值必须在 1.0 到 max_leverage 之间。 """ # 保守:BTC 用 2 倍,其他用 1 倍(无杠杆) if pair == "BTC/USDT:USDT": return 2.0 return 1.0

参数说明:

参数 含义
pair 当前交易对
current_rate 当前价格(按定价设置算出)
proposed_leverage 机器人建议的杠杆(通常 1.0)
max_leverage 该交易对允许的最大杠杆
entry_tag 入场标签(来自 enter_tag)
side 方向,longshort

返回值会被自动钳制到 [1.0, max_leverage]。不实现这个回调则默认 1 倍(无杠杆)。

💡 杠杆的影响是全方位的:假设本金 500 USDT、杠杆 3 倍,仓位价值 = 500 × 3 = 1500 USDT。所有盈亏计算、ROI、止损都把杠杆算进去。比如 10 倍杠杆下配 10% 止损,价格反向走 1% 就触发止损。

四、强平与 liquidation_buffer

合约交易有强平(liquidation) 风险——亏损到保证金不足以维持仓位时,交易所强制平仓,还要收强平手续费。freqtrade 用 liquidation_buffer(默认 0.05)在真实强平价和你的止损之间留一道安全网:

freqtrade_强平价 = 真实强平价 ± |开仓价 - 真实强平价| × liquidation_buffer (+ 做多,- 做空)

举例:开仓价 10、真实强平价 8、liquidation_buffer=0.05:

freqtrade强平价 = 8 + (10 - 8) × 0.05 = 8 + 0.1 = 8.1

freqtrade 会在价格跌到 8.1(而非 8)时就视为强平,提前平仓,避免触及交易所真实强平(否则要付强平手续费)。

⚠️ freqtrade 不追踪强平手续费。如果 liquidation_buffer 设 0 或太低,仓位真的被交易所强平,盈亏统计会不准(漏算强平费)。建议:buffer 别低于默认的 0.05,且配合 stoploss_on_exchange 使用。

五、资金费率与数据完整性

合约还有资金费率(funding fee)——多空双方每隔一段时间(通常 8 小时)互付费用,源于合约价与现货价的偏差。这部分会加到或从交易总额里扣。

回测合约时要注意数据完整性:

  • 交易所通常提供合约 K 线、标记价格(mark)、资金费率三类数据。
  • 有时 K 线和标记价格有,但资金费率缺失(尤其早期数据)。这时回测会报 No data found. Terminating
  • 解决办法:在配置里加 futures_funding_rate,建议设 0(除非你知道具体费率)。
"futures_funding_rate": 0

⚠️ 设非真实资金费率会让回测不准。这只影响资金费率缺失的时段,交易所提供的真实费率不会被覆盖。

六、从现货到合约的迁移要点

如果你已有一个现货策略想迁移到合约:

  1. 策略类设 can_short = True(下一节细讲做空)。
  2. 配置改 trading_mode: "futures"margin_mode: "isolated"
  3. 实现 leverage() 回调(不实现默认 1 倍,等于无杠杆)。
  4. 重新评估止损——现货的 50% 止损在 2 倍杠杆下会来不及触发就被强平,必须收紧。
  5. 重新回测——合约的费率、强平、资金费率与现货不同,历史表现不通用。
  6. 务必先 Dry-Run 合约模式足够长时间。

💡 官方的核心建议:不要在没于现货市场跑出正向结果的策略上直接用杠杆。杠杆放大的是已有的(亏损或盈利),不是把烂策略变好。

七、杠杆与 ROI、止损的交互细节

杠杆开启后,freqtrade 的盈亏计算、ROI 表、止损都会自动把杠杆倍数算进去,不需要你在策略里手动乘。理解这个交互很重要,否则容易误判风险。

盈亏放大:设杠杆 L,价格变动 p%,仓位的实际盈亏 ≈ p% × L。例如 3 倍杠杆、价格涨 2%,盈利约 6%(扣除手续费和资金费率)。

ROI 与止损是按「价格变动」还是「账户盈亏」算? freqtrade 的 minimal_roistoploss 都是相对于入场价的收益率,已包含杠杆效应。换句话说:

  • stoploss = -0.10(10%)在 1 倍杠杆下,价格跌 10% 触发。
  • 同样的 -0.10 在 5 倍杠杆下,价格跌约 2% 就触发(因为 2% × 5 = 10%)。

这就是为什么官方反复强调「杠杆 2 倍时 50% 的止损太松」——2 倍杠杆下价格跌 25% 就亏 50%,而很多合约在跌到 25% 前就已经强平了。开杠杆必须同步收紧止损,否则止损形同虚设。

⚠️ 实战检查清单:开杠杆前确认——① 策略在现货已验证正期望;② stoploss 已按杠杆倍数收紧(如 3 倍杠杆下止损不超过 -15% 对应价格跌 5%);③ 用 isolated 保证金隔离风险;④ 开启 stoploss_on_exchange 防止掉线漏止损;⑤ liquidation_buffer 不低于 0.05。

本节要点回顾

  1. 三种模式:spot(默认,只做多无杠杆无强平)、margin(未开放)、futures(永续合约,有杠杆做空强平资金费率)。合约对格式 base/quote:settle
  2. 保证金模式:isolated(逐仓,仓位独立,新手推荐)、cross(全仓,共享保证金,连锁强平风险大,回测可能不准)。
  3. leverage 回调:按交易对/方向动态设杠杆,返回值钳制到 [1.0, max_leverage],不实现默认 1 倍。
  4. 杠杆放大:盈亏、ROI、止损都乘以杠杆;10 倍杠杆配 10% 止损,价格反向 1% 就触发。
  5. 强平保护:liquidation_buffer(默认 0.05)在真实强平价前留缓冲;freqtrade 不追踪强平费,buffer 太低会真被强平且统计不准。
  6. 资金费率:回测时若数据缺失可设 futures_funding_rate: 0(会让回测不准);现货策略迁移到合约要重估止损、重回测、先 Dry-Run。

下一节,我们看做空交易——做空信号的约定、现货做空(杠杆代币)与合约做空的差异、做空的风控要点。


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