股票盘口:1档、5档、10档、1000档,档数越多盘口越深?

用户头像sh_*599ojc
2026-10-17 发布

同一个盘口接口,苹果返回1档,寒武纪5档,腾讯10档,比特币1000档。直觉会说比特币最深、苹果最浅。可把挂单换成钱一算,比特币1000档挂的钱,还不到腾讯10档的三分之一。这篇讲清档数到底由什么决定、盘口深度该怎么比,最后给行情App三条显示规矩和一段跨市场盘口代码。

10月16日晚上11点33分,美股正在交易,港股和A股已经收盘。我用同一个盘口接口,查了四个标的:苹果、寒武纪、腾讯、比特币。

返回的档数分别是:1、5、10、1000。

如果只看档数,结论似乎很明显:比特币的盘口最深,苹果最浅。但把每一档的价格乘上数量,换成挂单金额:

image.png

比特币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%。

image.png

推到这里,结论就清楚了:拿档数去比较数据源,比的是各家买了哪一级数据,不是在比市场;拿档数去比较不同市场,更是在比交易所规则。

那深度到底该怎么比?

二、看深度,要看两个数:覆盖多宽,挂了多少钱

档数不能比,是因为每一档的“宽度”和“厚度”都不一样。能跨市场比的,是两个数。

第一个数:可见盘口覆盖了多宽的价格

腾讯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万股。

image.png

一笔成交比整个可见盘口还大,原因很简单:收市竞价里积累的订单,不会提前全部挂在连续竞价的盘口上。只看盘口去估算“这只股票收盘时能成交多少”,会低估好几倍。

苹果的逐笔成交是另一种情况。我取的20笔成交,全部落在同一秒(北京时间23:33:30),数量从1股到160股不等,价格大多在344.71到344.85之间;其中有一笔10股的成交价是345.534,比同一秒其他成交高出约0.23%。

对做App的人来说,这意味着三件事:

  • 成交明细和盘口分开显示,不要用成交去“修正”盘口;
  • 同一秒的多笔成交,按接口返回的顺序排,不要按价格重排;
  • 偏离当时买卖价较多的成交,可以单独标出来,不要直接拿它刷新最新价。

把前三部分落到界面上,就是下面三条规矩。

四、行情App显示盘口的三条规矩

image.png

规矩一:有几档显示几档

接口给了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的盘口页看一眼:有没有补出来的空档,数量写没写单位,周末的盘口有没有写明是哪一天的。

参考资料

  1. 上证所信息网络有限公司,《上海证券交易所历史数据接口说明书》v1.1.2,2023年12月13日。sseinfo.com
  2. 香港交易所,Real-time Datafeeds 产品说明。hkex.com.hk
  3. Sidley Austin,《SEC Proposes Overhaul of Market Data Infrastructure》,2020年4月9日。sidley.com
  4. 数立方投研服务平台,《level1和level2数据的区别》。datacube.foundersc.com
  5. TickDB 官方文档,盘口接口说明。docs.tickdb.ai
  6. 苹果、寒武纪、腾讯、比特币的盘口与逐笔成交:TickDB 实测,2026年10月16日23:33(北京时间);比特币另于10月17日11:29复测。

评论