chrisleekr/binance-trading-bot · 风控断路器与急停

binance-trading-bot 风控怎么设:三个断路器与三级急停

它的风控分成两套机制:三个自动断路器(日亏损上限、连亏次数、回撤深度)在亏损达到你设的阈值时自己暂停新买入;三级手动急停在你要立刻收手时使用。两者都只停「新的下单」,都不会替你卖出已持仓,也不会撤销已经挂在币安上的订单——这是最容易被误会的一点,本文把边界逐条写清楚。

风控层级:Profile 级(断路器)+ 三级急停默认状态:三个断路器默认全部关闭结算窗口:00:00 UTC依据官方文档(2026-09-17 核验)
Bot live绿:worker 有报到
Bot down红:不再下新单
N paused黄:三个断路器之一
Today ±X00:00 UTC 结算
账户健康条芯片语义示意图(依据官方 account-health 文档绘制)。红芯片只表示 worker 没在跑、不再下新单;已挂在交易所的订单仍可能成交。
Entry breakers

三个断路器分别管什么、默认是什么状态

官方把这套东西叫 entry breaker(入场断路器):策略提出交易,这些限额可以否决它或把它缩小。它们都是 Profile 级的配置项,三个的默认值都是 0,也就是关闭——不设就等于没有。

断路器字段默认触发条件暂停多久怎么关闭注意点
日亏损上限dailyLossLimitQuote0(关闭)同一个 UTC 日内累计的已实现亏损达到你设的额度(按报价币种计,例如 USDT)到下一个 UTC 日 00:00 自动解除填空或填 0只算已实现盈亏,持仓浮亏不算;健康条到额度的 80% 就会先给一次预警
连亏次数lossStreak.maxLosingExits0(关闭)滚动窗口内以亏损平仓的笔数达到阈值(取值 0–50)lossStreak.pauseHours,默认 24 小时填空或填 0窗口内每一笔亏损平仓都计数,中间夹了盈利不会重置计数;与日限不同,它不随 UTC 零点清零
连亏回看窗口lossStreak.lookbackHours24—(决定上面那条从哪里开始数)只统计「现在往前这么多小时」内归档的亏损平仓,窗口越长越容易触发;取值 1–168
连亏暂停时长lossStreak.pauseHours24从触发那一刻起算,期间不会延长;到期后重新检查窗口,若亏损还在窗口里会再次暂停;暂停期间卖出与撤单照常
回撤深度drawdown.maxDrawdownQuote0(关闭)回看窗口内最深的一次「峰值 → 之后的谷值」已实现回落达到该额度drawdown.pauseHours,默认 24 小时填空或填 0取的是窗口内最深那次回落,不是当前回撤;事后回升不撤销它,只有等它滑出窗口才不再计数。它抓的是「一堆小亏慢慢磨」那种日限抓不到的滑落
回撤回看窗口drawdown.lookbackHours72(近三天)每次回落都从「它之前那一刻的运行高点」量起,所以后面出现更高的峰也不会让早先的回落失效;窗口以亏损开头时,从零起算
回撤暂停时长drawdown.pauseHours24与连亏暂停同一套规则:不延长、到期重算、可能再次触发;卖出、撤单与保护性止损全程照常
共同点(三者一致)Profile 级限额0 即关闭只暂停新买入与加仓不卖出任何东西,也不动保护性止损;同一账户下多个 Profile 的限额互相独立,但钱包是共享的
官方给的第一版起点:文档建议在第一次实盘运行前就把日限设上,取值可以按该 Profile 交易预算的 2–5% 来定一个「会心疼但不致命」的数字;连亏次数建议先设 3(设 2 在震荡日会非常频繁地暂停)。另外,官方还提到敞口与仓位上限是在买入定量之前检查的——超出上限的买入会被削减到刚好合规,而不是整笔被拒。具体字段范围与默认值请以官方文档的 Risk 配置页为准。
Account health

面板上那条健康条:每枚芯片到底在说什么

它是应用头部下方那条细带,回答的是一个问题:我的钱现在还好吗。它在一屏内告诉你机器人是否在跑、有没有什么东西被停下了、以及今天到目前为止的已实现结果。

你看到颜色含义该做什么
Bot live绿worker 最近有报到,交易决策正在发生什么都不用做
Bot down — restart workerworker 没有报到。没有任何币在被交易,也没有策略在盯着你的持仓重启 worker(排查步骤见排错手册)
N pausedN 个 Profile 撞上了 entry breaker——日限、连亏、回撤三者之一——已停止开新仓,直到它解除悬停看是哪几个 Profile、撞的是哪个断路器;要么接受,要么回到该 Profile 的 Risk 区复查那个限额
N near limitN 个在跑的 Profile 已经亏掉日限的 80% 或更多,但还没触发悬停看具体亏损对限额的比例。这是买入被停之前的最后一次预警
Today +12.40 USDT00:00 UTC 起记账的已实现盈亏,按报价资产各出一个数字;只算该 Profile 当前的报价资产不用做。它和日限量的是同一个数

红芯片不等于钱在动

红色只说明 worker 停了、没有新的下单动作。worker 是下单与撤单的执行者,它不在就不会有新动作;但已经挂在币安上的订单仍然有效、仍然可能成交。所以「Bot down」是「交易停了」,不是「资金安全」。

paused 只对应三个断路器

官方另有两个自动检查(config-proof 与 edge-decay),但它们只是建议性的:在面板上插旗、用通知器发消息,绝不会出现在这条健康条上。被你自己用急停停掉的 Profile 也不会出现在这里,面板上另有标记。

它故意不显示的东西

账户总值、以及持仓上的浮盈浮亏都不在这条带子里——它们属于面板的权益卡。这条带子是随时扫一眼用的,面板才是完整视图。另外,某个 Profile 的数字读不出来时,它会被从带子里排除,而不是被当成「没有停止」。

两点细节:「Today」是已实现盈亏,只在仓位平掉时变动,不随价格波动变动;如果账户在币安测试网,这个数字根本不显示——练习用的盈亏不会伪装成真实盈亏。健康条每 15 秒刷新一次,第一次刷新落地前什么都不显示,所以它不会闪出一个还没确认的结论。以官方 account-health 文档为准。
Kill switch

三级急停:单币、单 Profile、整账户

急停是手动的紧急停止,目的是让你能安心去调查问题。它有三个层级,各自的入口、持续时间与「是不是原子操作」都不一样——最后一点是官方专门点出来的风险。

层级在哪里持续多久是否原子注意点
单币种 Pause该币种页面上的 Pause 控件你设的时长,上限 7 天;到期自动恢复,也可以随时手动解除单币种操作要填一个原因,会写进审计日志,方便日后回想为什么暂停它。7 天上限是刻意的:一个被遗忘的暂停不该悄悄活过你当初的设想。暂停期间该币页面会显示横幅
单 Profile StopProfile 的 Settings 页上的 Stop 开关没有计时,一直生效到你把它关回去单 Profile 操作用它冻结这一整套配置的全部币种,比如你要去核对它的参数
整账户全停Account 设置页,一个按钮停掉该账户上的每个 Profile同样没有计时,且每个 Profile 需要单独重新打开不是原子操作:官方说明它是客户端逐个 Profile 扇出调用的,部分失败可能留下仍在交易的 Profile出大事时用它,但停完要逐个确认,别假设按一下整账户就都停住了
共同效果三层都只阻止新的买卖下单;都不卖出已持仓;都不撤销已经挂在币安上的订单
在哪里看到它生效面板上该 Profile 的卡片会显示 kill-switch 标记;Profile 切换器与侧边导航也会标记被停的 Profile每一次开与关都会写进该 Profile 的审计日志,事后可以复盘是谁在什么时候停的
怎么解除把同一个控件关回去:Profile 就是那个 Stop 开关,账户级就是逐个打开 Profile,暂停的币可以点横幅上的解除被暂停的币到期会自己恢复,不需要你记得回来手动开
官方原文的边界声明:急停「停的是新买单与卖单的下达」;它不卖出你已经持有的东西;它也不撤销已经挂在币安上的订单——那些单会一直有效,直到成交或被取消。要连挂单一起清掉,得去该币种页面取消,或者删除该 Profile(删除会主动撤销它的在挂订单)。以官方 kill-switch 文档为准。
After you stop it

按下急停之后,挂单为什么还在市场上

这是最常被误会的一步。急停的语义是「别再下新单」,不是「把局面清空」。下面按顺序把它收干净。

  1. 先确认急停确实生效了

    面板上对应 Profile 的卡片出现 kill-switch 标记,被暂停的币页面出现横幅,侧边导航也会标记被停的 Profile。每一次开与关都写进审计日志。若这里对不上,说明你按的不是你以为的那个层级。

  2. 判断已挂订单要不要处理

    急停不撤销任何挂单。如果某个挂单你并不希望它成交,就进该币种页面把它取消;如果你希望它保留(例如它是保护性止损),那就放着不动。

  3. 要一次清掉某个 Profile 的全部挂单,只能删它

    停用(disable)与急停一样保留在挂订单;只有删除 Profile会主动撤销它在交易所上的订单。所以「我不想再要这套配置了」用删除,「我暂时停一下」用 Stop。

  4. 回头看审计日志复盘

    被暂停的币会记录暂停原因;Profile 的每一次停止/恢复也有记录。复盘时先看时间线,再决定要不要调整那个触发它的限额。

  5. 确认交易所上没有遗留的无人跟踪挂单

    如果一个订单在交易所上挂着、却没有任何 Profile 在跟踪它,它就成了孤儿单:它锁着 base 资产,还可能让一个真实持仓失去保护。这类情况在官方排错文档里有独立处置页,处理步骤见本项目的排错手册。

对比项急停(kill switch)停用 Profile删除 Profile
阻止新的下单是(Profile 已不存在)
已挂订单保留,仍可能成交保留,仍可能成交主动撤销
已持仓位不动,继续按策略与保护性止损运行不动不再被跟踪
计时单币有计时(≤7 天);Profile 与账户级无计时无计时不适用
典型用途出事了要立刻收手的紧急停止平时那个开关:这套配置暂时先不用这套配置彻底不要了
Misconfiguration

两套机制的分工,以及最常见的几种配错

三个断路器是自动的——到阈值它自己停;急停是手动的——你自己按。两者是彼此独立的两套机制,健康条上的 paused 只代表前者。下面这些是中文用户最容易踩的几种配置。

误配会发生什么怎么改
dailyLossLimitQuote 留在 0,以为默认已有保护日限实际处于关闭状态,亏损不会触发任何自动暂停,健康条也永远不会为此变黄按该 Profile 交易预算的 2–5%(官方给的起点)设一个你会心疼但不致命的数字
把日限当成「账户级总限额」它是 Profile 级的。同一账户下多个 Profile 各有各的限额,合起来可能远远超过你心里那个总数;而它们共享的是同一个钱包按账户整体额度逐 Profile 分配,而不是每个 Profile 都填同一个数
忽略 00:00 UTC 这个结算点你本地时间的「今天」和它的「今天」是错开的,早上看到的数字其实来自前一晚的交易,容易误判「还有多少额度」看 Today 与日限时换算成 UTC;两者用的是同一个窗口,改不了也不需要改
回看窗口设得过长(连亏 168 小时 / 回撤 168 小时)窗口越长越容易触发。设太长会让 Profile 动不动就被暂停,长期无法开新仓按策略的交易频率定:默认 24 小时(连亏)与 72 小时(回撤)对日频到小时级的 Profile 是合理的起点
指望断路器帮你平仓止损它只暂停新买入,不平仓。如果你把它当作「亏损保护网」,那它做不到这件事把「什么时候卖出」交给策略自己的离场规则与保护性止损;断路器只负责「先别再买了,停下来看看」
只设断路器,不配通知器实盘 Profile 没配通知器时面板会告警,但你不盯面板就不会知道已经被暂停了——而「被暂停」正是最该第一时间知道的状态按官方文档配 Slack、Telegram 或通用 Webhook 通知器;运营类告警也走通知器,不走健康条
关于「保护」这两个字的边界:本文描述的是官方文档写明的机制,不代表任何结果保证。官方在 README 与文档首页明确写着无法保证盈利、使用风险自负,并声明该项目仍在开发中、不建议投入真实资金。断路器能做的只是暂停新买入,不能阻止价格下跌,也不能把亏损变小。
Interface evidence

Risk 设置区长什么样

三个断路器都在 Profile 的 Risk 区里配置,字段、标签与说明都由策略自己的 schema 生成,所以界面上看到的和文档里写的是一份东西。

binance-trading-bot 的 Profile 风控设置区截图
Profile 的 Risk 设置区(来源:项目官方文档 docs/assets/screenshots/user-guide/profile-risk.png,Apache-2.0)。三个断路器默认都是 0(关闭),需要自行设置。
FAQ

关于 binance-trading-bot 风控的常见问题

默认是不是已经有保护了?

没有。三个断路器(日亏损上限、连亏次数、回撤深度)的默认值都是 0,也就是关闭;不设就等于没有这一层保护。官方把默认设为关闭的理由是限额取决于你的账户规模与承受能力,需要你自己定,并在第一次实盘运行前就设好。以官方文档的 Risk 配置说明为准。

断路器触发后会把我的币卖掉吗?

不会。三个断路器都只暂停新买入与加仓,不卖出任何东西,也不触碰保护性止损。官方明确说这样做的目的是不让你处于「没有保护」的状态;也正因为只停新买入且不动止损,它并不能阻止价格继续下跌。以官方文档为准。

为什么「今天」的盈亏算不出来,或者跟我以为的对不上?

「Today」按 00:00 UTC 结算,而不是你本地的零点,所以如果你在 UTC 之前,早上的数字对应的其实是前一晚的交易。另外它是已实现盈亏,只在仓位平掉时变动,不随价格波动变动;如果账户在币安测试网,这个数字根本不显示。以官方 account-health 文档为准。

我按了急停,为什么交易所上还有订单?

因为急停的语义是「不再下新单」,它不撤销已经挂在币安上的订单,也不卖出已持仓。要清掉挂单,得去该币种页面手动取消,或者删除该 Profile(删除会主动撤销它的在挂订单)。没有 Profile 跟踪的遗留挂单就是孤儿单,它锁着资产并可能让持仓失去保护,处理步骤见本项目的排错手册。以官方 kill-switch 文档为准。

能设一个账户级的总限额吗?

不能。这些限额是 Profile 级的,同一账户下每个 Profile 的限额互相独立、互不影响;但它们的钱包是共享的,所以正确做法是把各个 Profile 的限额放在一起、按账户整体额度来规划,而不是每个 Profile 都填同一个数字。官方文档没有提供账户级断路器,账户级只有那个手动全停按钮。以官方文档为准。

一个 Profile 被两个断路器同时按住会怎样?

会分别显示:每个断路器各占一行,因为每一条都指向不同的设置项。悬停健康条上的 paused 芯片就能看出是哪些 Profile、被哪一个(或哪几个)断路器停住的。以官方 account-health 文档为准。

我不想承担实盘风险,只想研究策略,怎么办?

可以走 EasyClaw 的研究路线:本机已核验的技能里有加密货币行情数据、策略回测与风险指标、以及图表出图这类能力,不需要部署服务器,也不接交易所账户。但要清楚边界——EasyClaw 的技能里没有下单类能力,也没有本文这些断路器与急停机制,它不能替代实盘执行;binance-trading-bot 与 EasyClaw 之间无已证实集成。各技能的具体能力与限制以技能自身说明为准,研究结论不构成投资建议。

下一步:出问题怎么往下排查

如果机器人不交易、Key 状态报错、或者交易所上出现了没人跟踪的挂单,按排错手册的症状表逐条对照;想先确认配置能不能放行实盘,就回到回测与放行门禁。