币安 SBE 是什么:Simple Binary Encoding 二进制编码在 REST、WebSocket 和行情流中的用法(2026)
简短回答
币安 SBE 指的是 Simple Binary Encoding(简单二进制编码),是币安现货 API 可以替代 JSON 返回的一种紧凑二进制格式,目的是让交易程序在收发和解析数据上花更少的时间。它按请求开启:REST 接口在请求头里加 Accept: application/sbe 和 X-MBX-SBE: <id>:<version>;WebSocket API 在连接地址里加 responseFormat=sbe 以及模式(schema)编号和版本;实时行情则要连接单独的 stream-sbe.binance.com,并使用 Ed25519 类型的 API Key。截至 2026 年 10 月 21 日,币安公开仓库里最新的生产环境模式是 id 3、version 5,发布于 2026 年 7 月 7 日。
收起完整分析
用大白话解释 SBE
JSON 是文本格式。每一个价格、数量和字段名都以可读字符的形式传输,你的程序收到后还得把文字重新转换成数字。SBE 是 FIX 交易社区(FIX Trading Community)发布的标准,它用 XML 模式文件事先定义好字段布局,然后以固定的二进制字段传输同样的信息。收发双方都提前知道每个字段在哪个位置,所以消息更小,解码时只需按已知位置读取字节。币安自己的常见问题文档对 SBE 的描述很直接:一种用于低延迟场景的序列化格式。
谁需要它?主要是跑自动化策略的量化团队、做市商,以及需要在本地维护订单簿、对毫秒和 CPU 占用很敏感的人。如果你每天只在 App 上手动下几单,SBE 对你没有任何影响;如果你的机器人要同时读取几十个交易对的深度更新,它能明显减少带宽和解析开销。
币安在哪些接口支持 SBE
文章表格:可横向滑动,或聚焦表格区域后使用方向键。
| 接口 | 如何请求 SBE | SBE 不可用时会怎样 |
|---|---|---|
| 现货 REST API | 请求头 Accept: application/sbe 加 X-MBX-SBE: <ID>:<VERSION> | 只写 application/sbe:若交易所未开启 SBE,返回 HTTP 406;同时写 application/sbe 和 application/json:自动回退为 JSON |
| 现货 WebSocket API | 连接地址加 responseFormat=sbe&sbeSchemaId=<ID>&sbeSchemaVersion=<VERSION> | 握手阶段返回 HTTP 400,握手错误信息为 JSON |
| FIX API | 参见币安 FIX 文档中的 SBE 章节 | 按 FIX 规则拒绝 |
| SBE 行情流 | 连接 stream-sbe.binance.com(或 9443 端口),在 X-MBX-APIKEY 头里放 Ed25519 API Key | 独立域名;JSON 行情仍在原来的行情服务器 |
币安的常见问题文档写明,现货的 REST API、WebSocket API 和 FIX API 都支持 SBE。我们查阅的是现货文档;合约接口是否使用同样的请求头,请先查合约文档再下结论。如果你还在挑选在哪个平台跑机器人,可以先看本站的 币安交易所介绍页,上面汇总了产品和费率。
第一次发 SBE 请求的步骤
- 选择模式文件。 从币安 GitHub 上的
binance-spot-api-docs仓库下载模式文件:实盘用spot_prod_latest.xml,现货测试网用spot_testnet_latest.xml。FIX 用户需要单独的spot_fix_prod_latest.xml等文件。 - 生成解码器。 币安推荐使用 Real Logic 的开源项目
simple-binary-encoding:克隆仓库,用 Gradle 编译,再用其中的 SbeTool 代码生成器读取模式文件生成代码。币安还提供了 Java、C++ 和 Rust 三个示例程序,演示如何解码"交易规则信息"(exchangeInfo)的返回结果。 - 发一个测试请求。 官方示例是对 BTCUSDT 调用 REST 接口
exchangeInfo,请求头为Accept: application/sbe和X-MBX-SBE: 1:0。实际使用时,填写与你的解码器对应的 id 和版本。 - 测试阶段保留 JSON 回退。 在 Accept 头里同时写
application/sbe和application/json,这样模式头写错或 SBE 被关闭时,返回的是 JSON 而不是错误,排查问题更方便。等解码器稳定后,如果你希望出错时立刻报警,可以去掉 JSON。 - 注意单位。 SBE 返回的时间戳单位是微秒,而 JSON 默认是毫秒。小数字段以尾数和指数两个字段分开传输,你的代码需要自己合并;模式文件里的
mbx:exponent属性会告诉你每个尾数对应哪个指数字段。
核对地区资格与账户条款
打开 →SBE 行情流
实时行情方面,币安专门开了一个域名 stream-sbe.binance.com。它和普通 JSON 行情流的规则有几处不同,很容易踩坑:
- 必须使用 API Key,而且只接受 Ed25519 类型的 Key。读取公开行情不需要额外权限,但如果这个 Key 设置了 IP 白名单,白名单仍然生效。
- 单个连接最长只能保持 24 小时,到点会被断开,要提前写好重连逻辑。
- 服务器每 20 秒发送一次 ping,一分钟内收不到 pong 就会关闭连接。
- 每个连接最多订阅 1,024 个数据流;客户端每秒最多发送 5 条消息;每个 IP 每 5 分钟最多发起 300 次连接。
- 订阅请求用 JSON 文本帧发送,行情数据以 SBE 二进制帧推送。服务器即将关闭时,会推送 JSON 格式的
serverShutdown事件提醒你重连。
可用的数据流包括:逐笔成交(<symbol>@trade,实时)、最优买卖价(<symbol>@bestBidAsk,实时)、增量深度(<symbol>@depth,每 20 毫秒)和有限档深度(<symbol>@depth20,每 50 毫秒)。最优买卖价流采用"自动剔除"机制:系统负载高时,如果某个交易对还有旧的更新没发出去,就丢掉旧的、只推最新的那一条,这通常正是交易机器人想要的效果。
模式版本:你的机器人为什么会突然失灵
币安用两个数字管理模式版本:出现不兼容的改动时 id 加一,version 归零;兼容的改动只让 version 加一。新模式上线后,旧模式即使只差一个小改动也会被标记为"已弃用",弃用后至少继续支持六个月,之后才"退役"。请求中指定已退役的模式,REST 和 WebSocket 都会返回 HTTP 400。
币安生产环境的生命周期文件目前显示:3:5 为最新版本,3:4 和 3:3 已弃用,从 1:0 到 3:2 的更早版本都已退役,其中 3:2 是最近一个退役的,日期为 2026 年 9 月 25 日。如果你的解码器基于旧模式,弃用版本的请求会以最高兼容版本返回,并在 REST 响应里带上 X-MBX-SBE-DEPRECATED 头,在 WebSocket 里把 sbeSchemaIdVersionDeprecated 字段设为 true。请把这些标记记录到日志里,它们是程序彻底失效之前的预警。
如果你在多个平台同时跑机器人,可以参考我们之前整理的 币安 SBE 与 Coinbase 行情模式管理对照清单。
要不要换成 SBE?
如果延迟或带宽确实是瓶颈,比如订阅的交易对很多、要读深度流、或者服务器托管在交易所附近,就值得切换。如果你只交易少数几个币对、看重调试方便,或者用的库已经把 JSON 处理得很好,继续用 JSON 就行。折中的做法是:只在最吃性能的行情链路上用 SBE,账户和下单接口先保留 JSON,等解码器跑稳了再说。
怎么行动
如果你正在开发币安量化机器人,先在现货测试网上测试,等解码器能正确处理模式弃用之后再切到实盘账户。还没有币安账户的话,可以通过 本站币安页面 用邀请码 11350287 注册,页面上也列出了当前的费率和产品。扩大策略规模之前,可以先在 费率对比页 把币安的交易成本和其他平台比一比。
常见问题速答
币安的 SBE 是什么意思? Simple Binary Encoding,即简单二进制编码,是 FIX 交易社区制定的二进制序列化标准,币安用它提供低延迟的 API 返回。
币安 REST 接口用哪个请求头开启 SBE?
Accept: application/sbe 加上 X-MBX-SBE: <模式 id>:<版本>,官方示例中是 1:0。
币安最新的 SBE 模式是哪个版本? 据币安生产环境生命周期文件,截至 2026 年 10 月 21 日最新的是 3:5,发布于 2026 年 7 月 7 日。
接收 SBE 行情需要 API Key 吗?
需要。stream-sbe.binance.com 要求在 X-MBX-APIKEY 头里提供 Ed25519 类型的 API Key,但不需要额外权限。
为什么 SBE 的时间戳和 JSON 不一样? SBE 时间戳以微秒为单位,JSON 默认以毫秒为单位。
相关专题与工具:交易所 API 与行情数据核查
核对地区资格与账户条款
打开 →