红芯片不等于钱在动
红色只说明 worker 停了、没有新的下单动作。worker 是下单与撤单的执行者,它不在就不会有新动作;但已经挂在币安上的订单仍然有效、仍然可能成交。所以「Bot down」是「交易停了」,不是「资金安全」。
chrisleekr/binance-trading-bot · 风控断路器与急停
它的风控分成两套机制:三个自动断路器(日亏损上限、连亏次数、回撤深度)在亏损达到你设的阈值时自己暂停新买入;三级手动急停在你要立刻收手时使用。两者都只停「新的下单」,都不会替你卖出已持仓,也不会撤销已经挂在币安上的订单——这是最容易被误会的一点,本文把边界逐条写清楚。
官方把这套东西叫 entry breaker(入场断路器):策略提出交易,这些限额可以否决它或把它缩小。它们都是 Profile 级的配置项,三个的默认值都是 0,也就是关闭——不设就等于没有。
| 断路器 | 字段 | 默认 | 触发条件 | 暂停多久 | 怎么关闭 | 注意点 |
|---|---|---|---|---|---|---|
| 日亏损上限 | dailyLossLimitQuote | 0(关闭) | 同一个 UTC 日内累计的已实现亏损达到你设的额度(按报价币种计,例如 USDT) | 到下一个 UTC 日 00:00 自动解除 | 填空或填 0 | 只算已实现盈亏,持仓浮亏不算;健康条到额度的 80% 就会先给一次预警 |
| 连亏次数 | lossStreak.maxLosingExits | 0(关闭) | 滚动窗口内以亏损平仓的笔数达到阈值(取值 0–50) | lossStreak.pauseHours,默认 24 小时 | 填空或填 0 | 窗口内每一笔亏损平仓都计数,中间夹了盈利不会重置计数;与日限不同,它不随 UTC 零点清零 |
| 连亏回看窗口 | lossStreak.lookbackHours | 24 | —(决定上面那条从哪里开始数) | — | — | 只统计「现在往前这么多小时」内归档的亏损平仓,窗口越长越容易触发;取值 1–168 |
| 连亏暂停时长 | lossStreak.pauseHours | 24 | — | — | — | 从触发那一刻起算,期间不会延长;到期后重新检查窗口,若亏损还在窗口里会再次暂停;暂停期间卖出与撤单照常 |
| 回撤深度 | drawdown.maxDrawdownQuote | 0(关闭) | 回看窗口内最深的一次「峰值 → 之后的谷值」已实现回落达到该额度 | drawdown.pauseHours,默认 24 小时 | 填空或填 0 | 取的是窗口内最深那次回落,不是当前回撤;事后回升不撤销它,只有等它滑出窗口才不再计数。它抓的是「一堆小亏慢慢磨」那种日限抓不到的滑落 |
| 回撤回看窗口 | drawdown.lookbackHours | 72(近三天) | — | — | — | 每次回落都从「它之前那一刻的运行高点」量起,所以后面出现更高的峰也不会让早先的回落失效;窗口以亏损开头时,从零起算 |
| 回撤暂停时长 | drawdown.pauseHours | 24 | — | — | — | 与连亏暂停同一套规则:不延长、到期重算、可能再次触发;卖出、撤单与保护性止损全程照常 |
| 共同点(三者一致) | Profile 级限额 | — | — | — | 0 即关闭 | 只暂停新买入与加仓;不卖出任何东西,也不动保护性止损;同一账户下多个 Profile 的限额互相独立,但钱包是共享的 |
它是应用头部下方那条细带,回答的是一个问题:我的钱现在还好吗。它在一屏内告诉你机器人是否在跑、有没有什么东西被停下了、以及今天到目前为止的已实现结果。
| 你看到 | 颜色 | 含义 | 该做什么 |
|---|---|---|---|
| Bot live | 绿 | worker 最近有报到,交易决策正在发生 | 什么都不用做 |
| Bot down — restart worker | 红 | worker 没有报到。没有任何币在被交易,也没有策略在盯着你的持仓 | 重启 worker(排查步骤见排错手册) |
| N paused | 黄 | 有 N 个 Profile 撞上了 entry breaker——日限、连亏、回撤三者之一——已停止开新仓,直到它解除 | 悬停看是哪几个 Profile、撞的是哪个断路器;要么接受,要么回到该 Profile 的 Risk 区复查那个限额 |
| N near limit | 黄 | 有 N 个在跑的 Profile 已经亏掉日限的 80% 或更多,但还没触发 | 悬停看具体亏损对限额的比例。这是买入被停之前的最后一次预警 |
| Today +12.40 USDT | 无 | 从 00:00 UTC 起记账的已实现盈亏,按报价资产各出一个数字;只算该 Profile 当前的报价资产 | 不用做。它和日限量的是同一个数 |
红色只说明 worker 停了、没有新的下单动作。worker 是下单与撤单的执行者,它不在就不会有新动作;但已经挂在币安上的订单仍然有效、仍然可能成交。所以「Bot down」是「交易停了」,不是「资金安全」。
官方另有两个自动检查(config-proof 与 edge-decay),但它们只是建议性的:在面板上插旗、用通知器发消息,绝不会出现在这条健康条上。被你自己用急停停掉的 Profile 也不会出现在这里,面板上另有标记。
账户总值、以及持仓上的浮盈浮亏都不在这条带子里——它们属于面板的权益卡。这条带子是随时扫一眼用的,面板才是完整视图。另外,某个 Profile 的数字读不出来时,它会被从带子里排除,而不是被当成「没有停止」。
急停是手动的紧急停止,目的是让你能安心去调查问题。它有三个层级,各自的入口、持续时间与「是不是原子操作」都不一样——最后一点是官方专门点出来的风险。
| 层级 | 在哪里 | 持续多久 | 是否原子 | 注意点 |
|---|---|---|---|---|
| 单币种 Pause | 该币种页面上的 Pause 控件 | 你设的时长,上限 7 天;到期自动恢复,也可以随时手动解除 | 单币种操作 | 要填一个原因,会写进审计日志,方便日后回想为什么暂停它。7 天上限是刻意的:一个被遗忘的暂停不该悄悄活过你当初的设想。暂停期间该币页面会显示横幅 |
| 单 Profile Stop | Profile 的 Settings 页上的 Stop 开关 | 没有计时,一直生效到你把它关回去 | 单 Profile 操作 | 用它冻结这一整套配置的全部币种,比如你要去核对它的参数 |
| 整账户全停 | Account 设置页,一个按钮停掉该账户上的每个 Profile | 同样没有计时,且每个 Profile 需要单独重新打开 | 不是原子操作:官方说明它是客户端逐个 Profile 扇出调用的,部分失败可能留下仍在交易的 Profile | 出大事时用它,但停完要逐个确认,别假设按一下整账户就都停住了 |
| 共同效果 | — | — | — | 三层都只阻止新的买卖下单;都不卖出已持仓;都不撤销已经挂在币安上的订单 |
| 在哪里看到它生效 | 面板上该 Profile 的卡片会显示 kill-switch 标记;Profile 切换器与侧边导航也会标记被停的 Profile | — | — | 每一次开与关都会写进该 Profile 的审计日志,事后可以复盘是谁在什么时候停的 |
| 怎么解除 | 把同一个控件关回去:Profile 就是那个 Stop 开关,账户级就是逐个打开 Profile,暂停的币可以点横幅上的解除 | — | — | 被暂停的币到期会自己恢复,不需要你记得回来手动开 |
这是最常被误会的一步。急停的语义是「别再下新单」,不是「把局面清空」。下面按顺序把它收干净。
面板上对应 Profile 的卡片出现 kill-switch 标记,被暂停的币页面出现横幅,侧边导航也会标记被停的 Profile。每一次开与关都写进审计日志。若这里对不上,说明你按的不是你以为的那个层级。
急停不撤销任何挂单。如果某个挂单你并不希望它成交,就进该币种页面把它取消;如果你希望它保留(例如它是保护性止损),那就放着不动。
停用(disable)与急停一样保留在挂订单;只有删除 Profile会主动撤销它在交易所上的订单。所以「我不想再要这套配置了」用删除,「我暂时停一下」用 Stop。
被暂停的币会记录暂停原因;Profile 的每一次停止/恢复也有记录。复盘时先看时间线,再决定要不要调整那个触发它的限额。
如果一个订单在交易所上挂着、却没有任何 Profile 在跟踪它,它就成了孤儿单:它锁着 base 资产,还可能让一个真实持仓失去保护。这类情况在官方排错文档里有独立处置页,处理步骤见本项目的排错手册。
| 对比项 | 急停(kill switch) | 停用 Profile | 删除 Profile |
|---|---|---|---|
| 阻止新的下单 | 是 | 是 | 是(Profile 已不存在) |
| 已挂订单 | 保留,仍可能成交 | 保留,仍可能成交 | 主动撤销 |
| 已持仓位 | 不动,继续按策略与保护性止损运行 | 不动 | 不再被跟踪 |
| 计时 | 单币有计时(≤7 天);Profile 与账户级无计时 | 无计时 | 不适用 |
| 典型用途 | 出事了要立刻收手的紧急停止 | 平时那个开关:这套配置暂时先不用 | 这套配置彻底不要了 |
三个断路器是自动的——到阈值它自己停;急停是手动的——你自己按。两者是彼此独立的两套机制,健康条上的 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 通知器;运营类告警也走通知器,不走健康条 |
三个断路器都在 Profile 的 Risk 区里配置,字段、标签与说明都由策略自己的 schema 生成,所以界面上看到的和文档里写的是一份东西。
没有。三个断路器(日亏损上限、连亏次数、回撤深度)的默认值都是 0,也就是关闭;不设就等于没有这一层保护。官方把默认设为关闭的理由是限额取决于你的账户规模与承受能力,需要你自己定,并在第一次实盘运行前就设好。以官方文档的 Risk 配置说明为准。
不会。三个断路器都只暂停新买入与加仓,不卖出任何东西,也不触碰保护性止损。官方明确说这样做的目的是不让你处于「没有保护」的状态;也正因为只停新买入且不动止损,它并不能阻止价格继续下跌。以官方文档为准。
「Today」按 00:00 UTC 结算,而不是你本地的零点,所以如果你在 UTC 之前,早上的数字对应的其实是前一晚的交易。另外它是已实现盈亏,只在仓位平掉时变动,不随价格波动变动;如果账户在币安测试网,这个数字根本不显示。以官方 account-health 文档为准。
因为急停的语义是「不再下新单」,它不撤销已经挂在币安上的订单,也不卖出已持仓。要清掉挂单,得去该币种页面手动取消,或者删除该 Profile(删除会主动撤销它的在挂订单)。没有 Profile 跟踪的遗留挂单就是孤儿单,它锁着资产并可能让持仓失去保护,处理步骤见本项目的排错手册。以官方 kill-switch 文档为准。
不能。这些限额是 Profile 级的,同一账户下每个 Profile 的限额互相独立、互不影响;但它们的钱包是共享的,所以正确做法是把各个 Profile 的限额放在一起、按账户整体额度来规划,而不是每个 Profile 都填同一个数字。官方文档没有提供账户级断路器,账户级只有那个手动全停按钮。以官方文档为准。
会分别显示:每个断路器各占一行,因为每一条都指向不同的设置项。悬停健康条上的 paused 芯片就能看出是哪些 Profile、被哪一个(或哪几个)断路器停住的。以官方 account-health 文档为准。
可以走 EasyClaw 的研究路线:本机已核验的技能里有加密货币行情数据、策略回测与风险指标、以及图表出图这类能力,不需要部署服务器,也不接交易所账户。但要清楚边界——EasyClaw 的技能里没有下单类能力,也没有本文这些断路器与急停机制,它不能替代实盘执行;binance-trading-bot 与 EasyClaw 之间无已证实集成。各技能的具体能力与限制以技能自身说明为准,研究结论不构成投资建议。