同一个盘口接口,苹果返回1档,寒武纪5档,腾讯10档,比特币1000档。直觉会说比特币最深、苹果最浅。可把挂单换成钱一算,比特币1000档挂的钱,还不到腾讯10档的三分之一。这篇讲清档数到底由什么决定、盘口深度该怎么比,最后给行情App三条显示规矩和一段跨市场盘口代码。
10月16日晚上11点33分,美股正在交易,港股和A股已经收盘。我用同一个盘口接口,查了四个标的:苹果、寒武纪、腾讯、比特币。
返回的档数分别是:1、5、10、1000。
如果只看档数,结论似乎很明显:比特币的盘口最深,苹果最浅。但把每一档的价格乘上数量,换成挂单金额:

比特币1000档,买卖两侧合计约2,450万美元;腾讯10档,约7,890万美元。1000档的钱,不到10档的三分之一。苹果只有1档,买一卖一合计才约4万美元,可它10月16日全天的成交额有约206亿美元。
所以,档数不是深度。档数是交易所规则和数据权限决定的;深度要看两个数:盘口覆盖了多宽的价格,这段价格里挂了多少钱。
这篇适合谁:
- 做行情App、交易工具、看板的产品经理和开发者:盘口要显示几档、空档怎么处理、数量怎么标;
- 拿“支持多少档”比较数据供应商的采购和技术负责人;
- 用盘口估算滑点、做盘口因子的量化开发者。
不写代码的读者,读完前三部分就够了,第四部分可以直接转给技术同事。
一、档数是规则和权限,不是市场深度
很多人默认,五档、十档、一千档,是数据“好”和“更好”的区别。其实档数主要由两件事决定:交易所怎么发行情,你买的是哪一级数据。
A股:Level-1是五档,Level-2才是十档
上证所信息网络公司的接口说明书写得很清楚:Level-1行情快照里,买卖盘字段是“申买五价、申卖五价”;Level-2快照是“申买十价、申卖十价”,另外还有逐笔数据和买一卖一的前50笔订单。我们平时在大多数行情软件里看到的五档,就是Level-1。
港股:十档属于Level 2,更深要另买
港交所的行情产品按层级划分:Level 2及以上提供十个价位的市场深度;超过十档的汇总深度在更高一级的产品里;完整的逐笔订单只在Full Book里。
美股:公共合并行情只有最优价
美股分散在十几家交易所交易,公共合并行情(SIP)的“核心数据”,是各家交易所的最优买卖价和对应数量,也就是常说的top of book。更深的盘口,主要要从各交易所单独购买专有数据。所以很多美股行情服务只给1档,并不说明美股浅。
加密:1000档挤在很窄的价格里
比特币的最小价格变动是0.01美元,每一档之间几乎没有间隔。1000档听起来很多,其实只覆盖了中间价上下约0.3%。

推到这里,结论就清楚了:拿档数去比较数据源,比的是各家买了哪一级数据,不是在比市场;拿档数去比较不同市场,更是在比交易所规则。
那深度到底该怎么比?
二、看深度,要看两个数:覆盖多宽,挂了多少钱
档数不能比,是因为每一档的“宽度”和“厚度”都不一样。能跨市场比的,是两个数。
第一个数:可见盘口覆盖了多宽的价格
腾讯10档,买卖各覆盖中间价上下约0.43%;比特币1000档,买盘0.31%、卖盘0.25%;寒武纪5档,买盘0.35%,卖盘只有0.05%;苹果1档,只有最优价,什么范围都看不出来。
第二个数:中间价附近挂了多少钱
我用“中间价上下0.1%以内的挂单金额”来比:
| 标的 | 买方(中间价下方0.1%内) | 卖方(中间价上方0.1%内) |
|---|---|---|
| 腾讯 | 7.22万股,约3,014万港元 | 13.15万股,约5,496万港元 |
| 比特币 | 76.19 BTC,约622万美元 | 83.62 BTC,约683万美元 |
| 寒武纪 | 400股,约37万元 | 3,600股,约329万元 |
| 苹果 | 只有1档,算不出来 | 同左 |
读法:同样是中间价附近0.1%,各市场能吃到多少钱。数据为10月16日盘口快照,A股、港股为收盘后最后一份盘口。
还有一个细节,能看出“档多不等于每档有量”:比特币第2到第5档,每档只挂着约0.0001 BTC,不到10美元。这些“灰尘单”把档数撑满了,对深度几乎没有贡献。
这不是一时的巧合。我在周六上午11点29分又取了一次比特币盘口,还是1000档,覆盖范围买盘0.29%、卖盘0.24%,合计挂单约2,600万美元,和周五晚上差不多。
所以,“能不能吃下一笔单子”,要看范围和金额,而不是档数。但即使看了金额,盘口也只是一半的信息。
三、盘口是意愿,成交是事实
盘口是还挂着、等着成交的订单,随时可能撤;成交是已经发生的事实。两者不仅不是一回事,大小还可能完全对不上。
腾讯10月16日的最后一笔成交,发生在16:08:14,价格417.8,数量114.24万股。这个时间正落在港股收市竞价的随机收市窗口里,是竞价撮合出来的一笔。而收盘后能看到的10档卖盘,加起来只有76.02万股。

一笔成交比整个可见盘口还大,原因很简单:收市竞价里积累的订单,不会提前全部挂在连续竞价的盘口上。只看盘口去估算“这只股票收盘时能成交多少”,会低估好几倍。
苹果的逐笔成交是另一种情况。我取的20笔成交,全部落在同一秒(北京时间23:33:30),数量从1股到160股不等,价格大多在344.71到344.85之间;其中有一笔10股的成交价是345.534,比同一秒其他成交高出约0.23%。
对做App的人来说,这意味着三件事:
- 成交明细和盘口分开显示,不要用成交去“修正”盘口;
- 同一秒的多笔成交,按接口返回的顺序排,不要按价格重排;
- 偏离当时买卖价较多的成交,可以单独标出来,不要直接拿它刷新最新价。
把前三部分落到界面上,就是下面三条规矩。
四、行情App显示盘口的三条规矩

规矩一:有几档显示几档
接口给了5档就显示5档,给了1档就显示1档。不要补0,不要复制最后一档,也不要用空行凑满十档。补出来的档位,用户和策略都会当成真实挂单来算,这就是在制造假深度。
规矩二:数量写单位,再换算成金额
A股盘口的数量通常按手计(1手为100股,按接口实测推断,接入时以文档确认),港股、美股按股,加密按币。寒武纪买一显示的“2”,是200股,不是2股。单位不写清,用户估算能成交多少时会差100倍。要跨市场比较,就统一换算成金额。
规矩三:深度用“范围 + 金额”表达,不用档数
想告诉用户盘口有多深,就显示“中间价上下0.1%内挂了多少钱”,或者“可见盘口覆盖了多宽的价格”。不要在产品介绍里写“支持1000档深度”,那只说明交易所规则和数据层级。
另外,今天是周末,打开App,A股和港股的盘口还停在周五收盘那一刻。盘口旁边要写明它属于哪个交易日、哪一刻,不要让用户以为这是现在的挂单。
这三条规矩落到各个市场,是这张表:
| 市场 | 常见档数 | 数据层级 | 数量单位 | 显示建议 |
|---|---|---|---|---|
| A股 | 5档 | Level-1;Level-2为10档 | 手(推断) | 换算成股和金额;不补到10档 |
| 港股 | 10档 | Level 2;更深需另购 | 股 | 显示金额;收市竞价成交单独标注 |
| 美股 | 1档 | 公共合并行情只有最优价 | 股 | 不暗示深度;成交明细单独显示 |
| 加密 | 最多1000档 | 交易所提供 | 币 | 用范围和金额表达;过滤灰尘单 |
读法:档数一列只说明规则,判断深度看最后一列。
怎么做
TickDB 为开发者和 AI 应用提供统一的全球行情数据接口,让团队通过一套接入获取多市场实时与历史数据,更快构建行情、分析和监控产品。
文中四个市场的盘口,是用它的同一个盘口接口、在同一时刻取到的:接口按市场返回原生档位,美股1档、港股10档、A股5档、加密最多1000档,有几档返回几档,不做补齐;外汇和指数不提供盘口。
下面这段代码不比档数,而是算每个盘口的覆盖范围和中间价上下0.1%内的挂单金额:
# 测试环境:Python 3.11 / 2026-10-17(用 10/16 四个市场的真实盘口验证)
# 用途:跨市场比较盘口深度,不比档数,比“覆盖范围”和“中间价附近挂了多少钱”
import os
from decimal import Decimal
import requests
LOT = {"SH": 100, "SZ": 100} # A股盘口数量按手计(推断,接入时以文档确认),换算成股
def get_book(symbol):
r = requests.get("//api.tickdb.ai/v1/market/depth", params={"symbol": symbol},
headers={"X-API-Key": os.environ["TICKDB_API_KEY"]}, timeout=10) # Key 只放服务端
body = r.json()
if body.get("code") != 0:
raise RuntimeError(body.get("message"))
return body["data"]
def depth_stats(book, width=Decimal("0.001")):
mult = LOT.get(book["symbol"].rsplit(".", 1)[-1], 1)
bids = [(Decimal(p), Decimal(q) * mult) for p, q in book["bids"]] # 有几档用几档,不补齐
asks = [(Decimal(p), Decimal(q) * mult) for p, q in book["asks"]]
mid = (bids[0][0] + asks[0][0]) / 2
near = lambda side, ok: sum(p * q for p, q in side if ok(p))
return {
"levels": (len(bids), len(asks)),
"range_pct": (float((bids[0][0] - bids[-1][0]) / mid * 100),
float((asks[-1][0] - asks[0][0]) / mid * 100)),
"notional_near_mid": (float(near(bids, lambda p: p >= mid * (1 - width))), # 中间价下方 0.1% 内的买单金额
float(near(asks, lambda p: p <= mid * (1 + width)))), # 中间价上方 0.1% 内的卖单金额
}
if __name__ == "__main__":
for s in ["AAPL.US", "700.HK", "688256.SH", "BTCUSDT"]:
print(s, depth_stats(get_book(s)))
设置环境变量 TICKDB_API_KEY 后运行,Key 只放在服务端。用10月16日的四份盘口跑,腾讯中间价上方0.1%内的卖单约5,496万港元,比特币约683万美元,和第二部分的表格一致。
档数说明的是规则和权限,深度要用范围和金额来量。盘口告诉你有人愿意在哪里买卖,成交告诉你实际发生了什么,两样都要看,也都要分开看。
今天就可以打开你们App的盘口页看一眼:有没有补出来的空档,数量写没写单位,周末的盘口有没有写明是哪一天的。
参考资料
- 上证所信息网络有限公司,《上海证券交易所历史数据接口说明书》v1.1.2,2023年12月13日。sseinfo.com
- 香港交易所,Real-time Datafeeds 产品说明。hkex.com.hk
- Sidley Austin,《SEC Proposes Overhaul of Market Data Infrastructure》,2020年4月9日。sidley.com
- 数立方投研服务平台,《level1和level2数据的区别》。datacube.foundersc.com
- TickDB 官方文档,盘口接口说明。docs.tickdb.ai
- 苹果、寒武纪、腾讯、比特币的盘口与逐笔成交:TickDB 实测,2026年10月16日23:33(北京时间);比特币另于10月17日11:29复测。

