GaiaExGaiaEx
什么是订单簿?交易是如何撮合的
初级交易6 min read

什么是订单簿?交易是如何撮合的

每一笔交易背后的引擎——买价、卖价与价格-时间优先

分享文章

什么是订单簿?

任何一笔交易要发生——无论在哪家交易所、哪个角落——总得有人先出手。一个买家挂出他愿意支付的价格。一个卖家报出自己的数字。这些声明每秒钟以成千上万条的速度堆积起来,汇成一个叫做订单簿的数据结构。

它的本质就是这么简单。一个队列。

每一条记录携带三项信息:方向(买或卖)、价格和数量。「在 $67,450 买入 0.40 BTC。」「在 $67,520 卖出 1.10 BTC。」把几千条这样的记录叠在一起,你就得到一张活生生、不停抖动的地图,标出买家认为公允价值在哪里、卖家又在哪里持不同意见。出价最激进的买家和报价最便宜的卖家之间的那道缝隙呢?那就是市场,被浓缩成了一个数字。

当一个买家的价格触及或超过某个卖家的价格时,撮合引擎就会触发。两条记录都从订单簿上消失。图表更新。没有讨价还价,没有电话,没有等待。19 世纪纽约证券交易所(NYSE)大厅里的专门经纪人(specialist broker)曾经手写维护这种账本——数字化的版本只是把它加快了六七个数量级。

在 GaiaEx 上打开任意一个市场——BTC/USDT、代币化黄金、ETH 的永续合约——订单簿就在那里,通过 WebSocket 逐笔(tick-by-tick)更新。它展示的是还没有成交的东西:还没人卖给它的那些买价,还没人买走的那些卖价。不是过去。而是未来。

买价、卖价与价差

订单簿有两侧。左边是买价(bid)——买家,按价格从高到低排列。右边是卖价(ask)——卖家,按价格从低到高排列。每一侧最激进的参与者都坐在最上方,隔着一道叫做价差(spread)的缝隙相互打量。

来看一份取自 GaiaEx BTC/USDT 订单簿的真实快照,捕捉于伦敦时段的某个下午,当时过去 24 小时的成交量约为 $380M:

买价买单数量卖价卖单数量
$67,4800.85 BTC$67,5100.42 BTC
$67,4702.30 BTC$67,5201.10 BTC
$67,4601.75 BTC$67,5403.85 BTC
$67,4504.20 BTC$67,5500.90 BTC
$67,4306.00 BTC$67,5805.20 BTC

价差:$30。这是最优买价($67,480)和最优卖价($67,510)之间的距离,约为 0.04%。对于 BTC/USDT 这样的主流交易对,这很正常——足够窄,一个来回(先买后卖)光是价差本身每枚币也只让你花掉约 $30。把它跟一个日成交量也许只有 $1.5M 的冷门山寨币比一比:0.5–1.0% 的价差很常见,会很快侵蚀你的优势。

累计深度讲的是另一个故事,和单个档位不一样。在上面的快照里,买方一侧在距最优买价 $50 以内堆积了 15.10 BTC——约 $1.02M 的买盘支撑。卖方一侧在更宽的 $70 区间内合计 11.47 BTC,约 $775K。买价比卖价多,而且堆得更密。如果你照单全收地相信订单簿,这就是温和的买盘压力。(至于为什么你不该总是相信它,后面再说。)

有一点经常把新手绊倒:你图表上闪烁的那个「价格」是最近成交价,而不是来自订单簿的实时报价。订单簿展示意图。图表展示历史。两者相关,但不是一回事。

BTC / USDT — 订单簿快照 GaiaEx · 14:32 UTC · 24h 成交量 $382M 数量 买价 卖价 数量 0.85 $67,480 2.30 $67,470 1.75 $67,460 4.20 $67,450 6.00 $67,430 价差 $30 · 0.04% $67,510 0.42 $67,520 1.10 $67,540 3.85 $67,550 0.90 $67,580 5.20 累计深度 $50 以内买盘 → 15.10 BTC (~$1.02M) $70 以内卖盘 → 11.47 BTC (~$775K) 最优买价 $67,480 × 0.85 → 当前最高的买入挂单 最优卖价 $67,510 × 0.42 → 最便宜的可买卖单 买盘深度超过卖盘 → 温和的买盘压力 绿条 = 买盘深度 · 红条 = 卖盘深度 · 条形宽度与数量成正比 买家(买价) 卖家(卖价) 价差区域 快照仅作示意。gaiaex.com 上的实时订单簿通过 WebSocket 更新。
一份 BTC/USDT 订单簿快照。买价(绿色)在左侧按价格从高到低堆叠;卖价(红色)在右侧按价格从低到高堆叠。价差位于中央。

市价单 vs. 限价单

你与订单簿的每一次互动,归根结底都是一个选择:你想要成交的确定性,还是价格的确定性?两者不可兼得。

市价单很没耐心。「现在就买 1.5 BTC,卖方一侧报什么价都行。」撮合引擎立即照办。它先抓住最便宜的卖价——$67,510 的 0.42 BTC——然后向上挪到下一档:$67,520 的 1.08 BTC。搞定。你成交了。你的平均买入价落在 $67,517 左右,比报出的最优卖价略高,因为你为了凑齐全部数量吃穿了两个价格档位。你预期的价格和实际拿到的价格之间的那道缝隙,就是滑点(slippage)。

滑点能糟到什么程度?在伦敦时段 BTC/USDT 这样的深度订单簿上,一笔 1.5 BTC 的市价单几乎掀不起波澜——在一个 $101K 的头寸上,滑点也许就 $7。换成周日晚上、做市商把报价撤走的时候,你拿 50 BTC 来这么干试试。你可能扫穿十个档位,最后的平均价比初始最优卖价高出 $200。相对于深度的下单规模,才是一切的关键。

限价单把这个取舍反了过来。「买 2.0 BTC,但只在 $67,400 或更低的价格成交。」你的订单进入订单簿的买方一侧,停在那里,所有人都看得见,等着某个卖家降到你的价格。也许它几分钟就成交。也许要好几天。也许市场拉涨,你的订单根本不会成交——你在价格上省了钱,却彻底错过了这笔交易。

费率结构反映了这种动态。市价单消耗(take)流动性——它们拿走挂着的订单,让订单簿变薄。没有立即成交的限价单则提供(make)流动性——它们增加了让所有人受益的深度。GaiaEx 对挂单方(maker)收取的费用低于吃单方(taker),具体数字在费率页面上。这不是出于善心。深度好的订单簿吸引更多成交量。成交量更多意味着价差更窄。价差更窄又吸引更多交易者。一个正反馈循环。

那你该用哪一种?这问题问错了——你两种都会用,取决于当下的时机。BTC 刚刚突破一个关键阻力位,你需要进场?用市价单,接受价差,往前走。你觉得 ETH 会回踩 $3,200 的支撑、想趁机吸筹?在 $3,210 挂限价买单,走开,过会儿再回来看。订单簿不会评判你。

市价单 vs. 限价单 每种订单类型如何与订单簿互动 市价买入 「现在就成交——什么价都行」 以市价买入 1.5 BTC 卖方一侧(成交前): $67,510 × 0.42 BTC 已成交 ✓ $67,520 × 1.10 BTC 成交 1.08 ✓ $67,540 × 3.85 BTC 未触及 成交明细 0.42 BTC @ $67,510 = $28,354.20 1.08 BTC @ $67,520 = $72,921.60 平均成交价:$67,517.20 · 滑点 ≈ $7 ✓ 即时成交 ✓ 数量有保障 ✗ 支付价差 ✗ 吃单方费率 适合:突破行情 · 止损 · 紧急离场 限价买入 「按我的价格或更优价格成交」 买 2.0 BTC @ $67,400 买方一侧(当前): $67,480 × 0.85 BTC 最优买价 $67,470 × 2.30 BTC $67,460 × 1.75 BTC $67,400 × 2.00 BTC 你的订单 ▸ 状态:挂单中 —— 停在订单簿里 仅当价格跌到 $67,400 时才成交 ✓ 价格由你定 ✓ 挂单方费率 ✗ 可能不成交 ✗ 可能错过行情 适合:波段入场 · 定投 · 耐心吸筹 市价单消耗挂着的流动性 · 限价单增加挂着的流动性
市价买单扫穿卖价档位(左),而限价买单停在买方一侧,等待卖家来匹配(右)。

价格-时间优先

撮合引擎只跑一条规则:价格-时间优先(price-time priority)。价格更优者胜。价格相同?谁先挂单谁胜。

三个卖家分别挂在 $67,510、$67,540、$67,580。一笔进来的市价买单会打中 $67,510 那一单。每次都是。没有讨价还价,没有随机,没有偏袒。对侧价格最优的订单先成交,到此为止。

平价(tie)的情况时时发生。两个卖家都在 $67,510,一个在 14:32:01.003 UTC 挂了 0.42 BTC,另一个在 14:32:01.017 UTC 挂了 0.80 BTC。第一个——早了 14 毫秒——会比第二个先成交。这就是为什么高频公司不惜花数百万美元把服务器与交易所撮合引擎并置(co-locate):当价格相同时,时间是唯一起作用的决胜因素。

具体到你身上,这意味着什么?如果你在 $67,510 挂出一个限价卖单,而已经有另一位交易者的 0.42 BTC 坐在那里,进来的买单会先吃掉他们的数量,才轮到你。你在排队。想插队,就改善你的价格——挂在 $67,509 卖出——或者抢在所有人之前到位。整场游戏就是这么回事。

GaiaEx 的引擎以亚毫秒级(sub-millisecond)的速度处理订单。在 2024 年 3 月那波涨势中,BTC 冲破 $73,000、消息流飙升到每秒数万笔订单时,撮合引擎一拍都没乱。它在市场动得最快的时候最为重要——而这恰恰是那些慢半拍的系统最容易把你坑了的时候。

读懂深度:买卖墙、薄订单簿与陷阱

单个价格档位是有用的。累计深度——在距最优价格某个区间内总共停着多少成交量——则更有用。深度图(depth chart)把它画了出来:买价向左堆叠,卖价向右堆叠,两条曲线在当前价格处几乎相吻。

陡峭的曲线意味着成交量集中在订单簿顶端附近。平缓、逐渐的斜坡意味着它分布得很薄。曲线的形状告诉你,给定规模的市价单实际上会把价格推动多少。

有几种形态值得留意。

买墙(buy wall)出现在某人在单一档位停放了一笔巨额买单时——周围各档位每档只挂 2–3 BTC,而 $66,000 这一档却挂着 120 BTC。那就是在一个价格上超过 $8M 的买盘支撑。卖家必须把它全部啃穿,价格才能往下走。这些墙往往聚集在整数关口和已知的技术支撑位附近,功能上像一道地板——直到它被撤掉。

卖墙(sell wall)反过来运作。在一个通常每档只显示 1–2 BTC 的订单簿上,$70,000 处堆着 80 BTC。买家需要十足的信念(和资金)才能吸收掉那些供给。当一道卖墙终于被攻破时,之后的走势往往很暴烈——它后面什么都没有。一片虚空。

薄订单簿(thin book)是另一种风险。在非活跃时段——试试周日凌晨 3 点 UTC——或在某个重大宏观数据发布之前,做市商会撤走他们的报价。深度蒸发掉。一笔在伦敦时段只会造成 $7 滑点的 5 BTC 市价单,此时也许会把价格推动 $200。如果你正在往一个薄订单簿里下单,限价单不是可选项。而是保命用的。

墙可能是假的。幌骗(spoofing)——挂出一笔巨额订单来模拟需求或供给,然后在它成交之前撤单——至今仍是个真实存在的问题。那笔订单从一开始就没打算成交。它是个虚张声势,意在把其他交易者逼着采取行动。Navinder Sarao 在 2010 年闪崩(flash crash)期间的幌骗让他被罚了 $25.7M,但这种做法在监管更松的场所依然存在。对大额挂单保持健康的怀疑:价格一靠近,它们可能就消失了。

GaiaEx 上的订单簿

GaiaEx 为每一个上线的市场运行一个中央限价订单簿(CLOB)。现货交易对、永续合约、代币化的真实世界资产——它们全都汇入同一个按价格-时间优先运作的撮合引擎。和 CME 或纳斯达克(Nasdaq)相同的架构,只是为 7×24 小时的加密市场做了适配。

深度可视化通过 WebSocket 实时推送。你屏幕上看到的,反映的是几毫秒之内的真实订单簿状态——不是三秒前的快照,也不是某种近似。它是货真价实的东西。在高波动期,你可以看着档位每秒出现又消失几十次,既迷人,又有点吓人。

除了市价单和限价单,平台还支持止损限价单、止盈单和追踪止损单。一个挂在 $66,000 的止损限价单在最近成交价触及你的触发价之前什么都不做——然后它转换成一个限价单并进入订单簿。在触发价被触发之前,它对其他参与者是不可见的。这对于保护头寸、又不把你的离场计划昭告天下很有用。

每一笔成交都附带时间戳、确切价格、撮合数量,以及一个清楚的标签,注明你支付的是挂单方还是吃单方费率。没有「价格改善」(price improvement)的玄机。没有订单内部化(order internalization)。订单簿就是订单簿,回执也对得上。

有一件事没人会告诉新手:读懂订单簿是一项技能,而且会复利累积。一个交易者,如果知道深度坐在哪里、价差在凌晨 4 点 UTC 与下午 2 点 UTC 是如何拉宽的、以及何时该用限价单何时该用市价单,就会持续地拿到比盲目交易的人更好的价格——哪怕用的是同一套策略。优势不在策略里。而在执行里。下一次美联储(the Fed)利率决议时,在 GaiaEx 上打开 BTC/USDT 深度图,就这么看着。你不需要交易。只要观察当 50 万人在同一时刻有同一个念头时,订单簿是如何表现的。