聚合成交(aggTrades)

聚合成交(aggregated trades,即 aggTrades)是币安的紧凑成交记录:同一笔吃单委托在同一个价位上产生的多笔成交被合并成一条事件,数量相加。因此一条 aggTrade 计的是一笔主动委托,而不是一次撮合,并且它带有判定主动方所需的挂单方标志。

Senzoukria · 术语表 · 更新于 2026 年 9 月


定义与字段

当一笔吃单委托在同一个价位上扫掉若干张挂单时,交易所会为每一张被吃掉的挂单生成一笔成交。币安的聚合成交数据流和归档把这些成交合并成一条记录:一个聚合 id、价格、相加后的数量、首尾两笔底层成交的 id、一个时间戳,以及一个标明买方是否为挂单方的标志。若买方是挂单方,那么拿走流动性的就是卖方,这笔成交属于卖方主动;反之则是买方主动。

这种表示法并没有丢掉足迹图需要的任何东西。每个价位、每一侧的成交量不会因为合并而改变,把每个价位上的主动买量减去主动卖量算出来的 delta 也完全一致。变化的只是条数:一张按事件条数作图的指标,展示的是主动委托笔数,而不是原始撮合笔数。

  • 每笔吃单委托在每个价位上只留一条记录,数量相加。
  • 买方身上的挂单方标志直接给出主动方,不需要动用 tick 规则去猜。
  • id 是有序的,数据流丢消息时可以据此发现缺口。

足迹图为什么偏爱这种格式

  • 同样的成交量,消息条数更少;在活跃交易对的快节奏时段里,这一点很要紧。
  • 主动方是明示的,于是 delta 是一次测量,而不是一次估计。
  • 历史归档也以同样的格式发布,因此重建出来的历史与实时的约定一致。
  • 成交规模的分布是按委托统计的,更接近大单过滤器本来想表达的意思。

在 Senzoukria 里

Binance Spot 与 Binance USD-M Perp 两个数据源实时读取 aggTrade 流,加密历史通道则从交易所的 aggTrades 归档重建 bid × ask 单元格 —— 这份归档同时提供了过去时段的数量和方向。首次加载时图表先导入近期成交,随后接着数据流继续;当数据流在一段时间内始终为空时,连接会如实报告,而不是画出一排平坦的 K 线。

每一条 aggTrade 在存储时都同时带上基础币数量和名义金额,因此足迹图、Big Trades 气泡和成交规模类指标可以一致地切换单位。由于记录是按主动委托计的,加密上的成交笔数和成交规模指标统计的是委托数。加密指南还链接到一份构建日志,记录了用这些归档重建当日 bid × ask 在实践中的代价,测量对象是 BTCUSDT 现货。

常见错误

  • 拿 aggTrade 的条数去和另一条数据流的原始成交笔数比较,再把差额读成数据缺失。
  • 把挂单方标志读反了:买方是挂单方,意味着主动的是卖方。
  • 以为 Bybit 用的是同一套聚合方式和同一个标志;它的方向字段要单独核对。
  • 把一条很大的 aggTrade 读成某个参与者的意图;它只是一笔委托,至于是谁发出的,数据里一无所知。

其他语言版本

常见问题

相比原始逐笔成交,aggTrades 会改变 delta 吗?
不会。把同一笔吃单委托在同一价位上的成交合并,等于把同一侧、同一价位上的数量相加,因此每一档的主动买量、主动卖量和两者之差都完全相同。不同的只是计数口径:aggTrades 数的是主动委托,原始成交数的是撮合次数。
能用 aggTrades 重建订单簿吗?
不能。它们记录的是成交了什么,而不是挂着什么、又被撤掉了什么。历史热力图需要的是该时段被录制下来的深度数据,在加密这边由一个独立的订单簿历史数据源提供。成交归档没有办法揭示一张从未成交过的挂单。

继续阅读