> ## Documentation Index
> Fetch the complete documentation index at: https://docs.intention.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# 订单簿

> 订单簿如何组织、当“时间”指的是区块内位置时“价格优先、时间优先”意味着什么，以及提交订单前如何读懂深度。

每个市场都有一个中央限价订单簿：挂着的买单在一侧，挂着的卖单在另一侧，各自按价格排序。新进的订单跨过两侧之间的缺口，成交就发生了。

订单簿在链上。它的状态是已提交链状态的一部分，这意味着所有人面对的是同一个订单簿，任何节点都能精确重建它在任意区块时的样子。

<h2 id="structure">
  结构
</h2>

<div className="dg" data-dg="order-book-ladder">
  <div className="dg-c" style={{aspectRatio:"720 / 318"}}>
    <svg className="dg-w" viewBox="0 0 720 318" aria-hidden="true" />

    <div className="dg-band" style={{left:"0.0000%",top:"40.2516%",width:"55.0000%",height:"15.0943%"}}><span className="dg-cap">价差</span></div>
    <div className="dg-b dg-plain" style={{left:"55.8333%",top:"27.9874%",width:"10.8333%",height:"10.0629%"}}><span className="dg-s dg-ink--orange">最优卖价</span></div>
    <div className="dg-b dg-plain" style={{left:"1.9444%",top:"43.3962%",width:"51.1111%",height:"10.0629%"}}><span className="dg-t">50,000 − 49,950 = 50</span><span className="dg-s">中间价 49,975</span></div>
    <div className="dg-b dg-plain" style={{left:"55.8333%",top:"66.3522%",width:"10.8333%",height:"10.0629%"}}><span className="dg-s dg-ink--green">最优买价</span></div>
    <div className="dg-b dg--orange dg-left" style={{left:"68.0556%",top:"25.7862%",width:"31.9444%",height:"44.0252%"}}><span className="dg-t">一笔 1.0 的市价买单</span><span className="dg-s">0.2 成交在 50,000<br />0.3 成交在 50,100<br />0.5 成交在 50,200</span><span className="dg-n">均价约 50,130，不是盘口挂出的<br />50,000。这段差额正是市价单<br />不会摆在你面前的成本。</span></div>
    <div className="dg-free" style={{left:"0.0000%",top:"0.0000%",width:"33.3333%"}}><div className="dg-n dg-ink--orange">卖单 — 卖方</div></div>
    <div className="dg-free" style={{left:"0.0000%",top:"59.7484%",width:"33.3333%"}}><div className="dg-n dg-ink--green">买单 — 买方</div></div>
    <div className="dg-bar" style={{left:"0.0000%",top:"7.5472%",width:"55.0000%",height:"8.1761%"}}><span className="dg-bar-lead" style={{width:"15.6566%"}}>50,200</span><span className="dg-bar-track"><span className="dg-bar-fill dg--orange" style={{left:"0%",width:"41.667%"}} /></span><span className="dg-bar-trail">0.5</span></div>
    <div className="dg-bar" style={{left:"0.0000%",top:"18.2390%",width:"55.0000%",height:"8.1761%"}}><span className="dg-bar-lead" style={{width:"15.6566%"}}>50,100</span><span className="dg-bar-track"><span className="dg-bar-fill dg--orange" style={{left:"0%",width:"25.000%"}} /></span><span className="dg-bar-trail">0.3</span></div>
    <div className="dg-bar" style={{left:"0.0000%",top:"28.9308%",width:"55.0000%",height:"8.1761%"}}><span className="dg-bar-lead" style={{width:"15.6566%"}}>50,000</span><span className="dg-bar-track"><span className="dg-bar-fill dg--orange" style={{left:"0%",width:"16.667%"}} /></span><span className="dg-bar-trail">0.2</span></div>
    <div className="dg-bar" style={{left:"0.0000%",top:"67.2956%",width:"55.0000%",height:"8.1761%"}}><span className="dg-bar-lead" style={{width:"15.6566%"}}>49,950</span><span className="dg-bar-track"><span className="dg-bar-fill dg--green" style={{left:"0%",width:"33.333%"}} /></span><span className="dg-bar-trail">0.4</span></div>
    <div className="dg-bar" style={{left:"0.0000%",top:"77.9874%",width:"55.0000%",height:"8.1761%"}}><span className="dg-bar-lead" style={{width:"15.6566%"}}>49,900</span><span className="dg-bar-track"><span className="dg-bar-fill dg--green" style={{left:"0%",width:"50.000%"}} /></span><span className="dg-bar-trail">0.6</span></div>
    <div className="dg-bar" style={{left:"0.0000%",top:"88.6792%",width:"55.0000%",height:"8.1761%"}}><span className="dg-bar-lead" style={{width:"15.6566%"}}>49,800</span><span className="dg-bar-track"><span className="dg-bar-fill dg--green" style={{left:"0%",width:"100.000%"}} /></span><span className="dg-bar-trail">1.2</span></div>
  </div>
</div>

**最优买价**是买方愿意支付的最高价。**最优卖价**是卖方愿意接受的最低价。两者之间的缺口是**价差**，中点是**中间价**——它在多处被用作参考，包括[资金费率](/zh/trading/funding)的溢价部分。

**深度**是每个价位上挂着的数量。你的订单是在盘口附近成交，还是一路吃到更差的价格，就看它。

<h2 id="priority">
  优先级
</h2>

订单按**价格优先，其次时间优先**成交。

价格很直白：出价高的买方排在出价低的前面。时间才是这里和多数场所不一样的地方。

**“时间”指你的订单在已提交区块序列中的位置——不是它到达某个节点的时刻。**

同一区块内的两笔订单也有先后，而这个先后每个验证者都能从共识已经确定的数据里算出来，结果完全一致。网络离得再近也改变不了。区块之间，到达时间仍然重要；区块之内，微秒级的竞赛不存在。

[排序规则](/zh/trading/tx-sequencing)进一步强化了这一点：同一区块内，撤单先于主动吃单执行，所以过期报价撤得回来，不会被同一时刻到达的订单吃掉。

<h2 id="reading-depth-before-you-submit">
  提交前先读深度
</h2>

你看到的报价是最优买价和最优卖价。如果你的订单大于挂在那里的数量，它们**不是**你能拿到的价格。

沿着上面那张订单簿的卖单侧往下走：

| 档位 |     价格 |  数量 |  累计 |
| -- | -----: | --: | --: |
| 1  | 50,000 | 0.2 | 0.2 |
| 2  | 50,100 | 0.3 | 0.5 |
| 3  | 50,200 | 0.5 | 1.0 |

一笔 0.2 的市价买单全部在 50,000 成交。一笔 1.0 的市价买单会吃穿三档——平均价格约 50,130，而不是盘口显示的 50,000。

所以[市价单](/zh/trading/market-to-limit)会带一条边界，由“你这笔数量实际会吃掉多少深度”推导出来；也所以把大单拆到[时间](/zh/trading/twap)或[价格](/zh/trading/scale-orders)上，通常比一口吃掉更便宜。

<Note>
  订单相对订单簿偏大时，提交之前有个习惯值得养成：算出你这笔数量会触到的最差价格，别只看盘口。两个数字之间的差，就是市价单藏起来的成本。
</Note>

<h2 id="prices-are-integers">
  价格是整数
</h2>

订单簿价格是该市场**最小价格变动单位**（tick size）的整数倍，数量是**最小数量单位**（lot size）的整数倍。执行路径上没有浮点数——两个节点之间只要有一处舍入不一致，就是一次分叉。参见[精度](/zh/trading/precision)。

<h2 id="what-the-book-does-not-show">
  订单簿看不到什么
</h2>

**条件单不在订单簿上**。止损、止盈和其他[条件单](/zh/trading/conditional-orders)存在另一个盯着价格的存储区里。触发之前，它们不占队列位置，也不贡献深度。

实际后果是：行情快速变动时，真实深度可能比订单簿显示的更薄——价格一穿过一簇触发价，就会把一批看不见的订单同时变成真实订单，而且全在同一侧。

<h2 id="where-to-go-next">
  后续阅读
</h2>

<CardGroup cols={2}>
  <Card title="订单类型" href="/zh/trading/order-types">
    你能往订单簿上放什么，以及什么会挂着、什么会吃掉流动性。
  </Card>

  <Card title="市价单" href="/zh/trading/market-to-limit">
    由深度推导出的边界如何保护一笔市价单。
  </Card>

  <Card title="交易排序" href="/zh/trading/tx-sequencing">
    为什么同一区块内撤单胜过主动吃单。
  </Card>

  <Card title="撮合" href="/zh/protocol/architecture/matching">
    订单簿在内核中如何组织与遍历。
  </Card>
</CardGroup>
