⚙️ 撮合引擎 Matching Engine
交易所的核心软件,实时把价格相符的买单和卖单配对,自动完成成交。每一个「买入」「卖出」按钮的背后,都是它在运转。
🛎️ 通俗来说 — 一个自动叫号的柜台
想象一个又像熟食店柜台、又像拍卖会的地方。想交易的人各自取号,再喊出一个价。引擎先招呼出价最好的,要是两个人出的价一样,谁先取号谁先来。撮合引擎干的就是这件事,只不过它一口气处理成千上万张单子,全程没有一个人插手。所有在排队的人——也就是所有挂着的买单和卖单,按价格排好序——合在一起就是订单簿。订单簿告诉你大家想怎么交易,撮合引擎则决定谁真正成交、以什么价成交。
🔁 你下单之后发生了什么
你一点「买入」或「卖出」,单子就被收下,并打上一个精确到时刻的到达时间戳。引擎随即在订单簿里扫一遍,找一个价格跟你能对上的对手方。一张新买单会去找不高于你出价的最低卖价;一张新卖单则去找不低于你出价的最高买价。两边价格一交叉,交易瞬间成交。要是没有相符的,你的单子就静静挂在订单簿里,等后来的单子来跟它配对。
📏 默认规则 — 价格优先、时间优先
多数交易所按价格优先、时间优先来撮合,也叫 FIFO(先进先出)。两条简单的「比谁先」规则撑起了整盘运转:
| 规则 | 含义 |
|---|---|
| 💰 价格优先 | 最便宜的卖单和出价最高的买单,先于条件更差的成交 |
| ⏱️ 时间优先 | 同一价位上的单子,先提交的先成交 |
📊 「价格优先、时间优先」是最常见的默认规则,但不是唯一的规则。有些市场用按比例分配(Pro-Rata,把成交量按单子大小分摊给同价位的各单),或别的算法。对新手来说,记住「价好者得,同价先到先得」就几乎够用了。
🧩 全部成交与部分成交
一笔单子能成交多少,全看对手方有多少相符的流动性。比如你想买 10 个币,可你那个价位上只挂着 6 个:引擎当场把这 6 个成交,剩下的 4 个就挂在订单簿里,等新的卖家出现。这就是部分成交。这也正是大单子会推动价格的原因——最便宜的卖单被吃光后,引擎只好去够更贵的,反映出来就是滑点。
🏦 这跟你有什么关系
你在中心化交易所下的每一张市价单和限价单,都要经过撮合引擎。中心化交易所跑的是一套飞快的链下引擎,每秒能消化巨量订单,所以你的成交才感觉是秒成的——但这也意味着你得相信交易所会诚实地运行这套引擎、并替你保管资产。不过,并不是每个交易场所都这么干。
🚫 哪些地方压根没有撮合引擎
这一点新手常常忽略:撮合引擎只是其中一种模式,并非唯一的模式。像 Uniswap 这类基于 AMM 的自动做市商,既没有订单簿、也没有撮合引擎。它不给你配一个对手交易者,而是用一个数学公式,让你的交易对着一个共享的流动性池来定价和结算。所以「订单簿 + 撮合引擎」只是描述了多数中心化交易所的运作方式——可加密货币交易里有相当一大块,是完全绕过引擎的。想把这两个世界摆在一起看,CEX vs DEX 是个好去处。
❓ 常见问题
- 成交对手是交易所里的人替我挑的吗?
- 不是。撮合是自动的、按规则来的。引擎先成交最优价,同一价位上谁先到就先轮到谁。没有任何人替你挑对手盘、也没人替你定价。
- 每一笔加密货币交易都用撮合引擎吗?
- 并非如此。订单簿式交易所会用到它,但像 Uniswap 这类基于 AMM 的 DEX 根本没有订单簿、也没有撮合引擎。它们改用一个数学公式,让你的交易直接对着流动性池来定价和结算。
- 我的单子为什么没一次全部成交?
- 一笔单子能成交多少,取决于对手方有多少相符的流动性。如果你这个价位上的量不够,就先成交一部分,剩下的挂在订单簿里,等新的单子进来再配对。