如何用五档盘口数据判断买卖盘力量?(委比/委差实战)
如何用五档盘口数据判断买卖盘力量?(委比/委差实战)
一句话回答: 五档盘口给出买一到买五、卖一到卖五的价格和挂单量。把买盘总量和卖盘总量做对比就能算出委比和委差,量化当前买卖盘的力量对比;结合挂单结构还能识别涨停封板、跌停砸盘和大单埋伏。
什么是五档盘口
盘口(深度)数据反映的是还没成交的挂单:
- 买一~买五:五个最高的买入报价,以及每档的挂单量;
- 卖一~卖五:五个最低的卖出报价,以及每档的挂单量。
它反映的是市场当下的供求意愿,是判断短线买卖压力的直接依据。
获取盘口数据
from alphafeed import AlphaFeed
af = AlphaFeed(api_key="your-api-key")
depth = af.depth.get("600519.SH")
print(f"标的: {depth['symbol']} 地区: {depth['region']}")
for i in range(5):
print(f" 买{i+1}: {depth['bid_prices'][i]:>10.2f} x {depth['bid_volumes'][i]:<6}"
f" | 卖{i+1}: {depth['ask_prices'][i]:>10.2f} x {depth['ask_volumes'][i]}")
返回结构:
| 字段 | 含义 |
|---|---|
bid_prices | 买一~买五价格(长度 5 的列表) |
bid_volumes | 买一~买五挂单量 |
ask_prices | 卖一~卖五价格 |
ask_volumes | 卖一~卖五挂单量 |
计算委比和委差
- 委差 = 买盘总量 − 卖盘总量(正数说明买盘更强)
- 委比 = (买盘总量 − 卖盘总量) / (买盘总量 + 卖盘总量) × 100%,取值 -100% ~ +100%
def order_book_strength(depth):
bid = sum(depth["bid_volumes"])
ask = sum(depth["ask_volumes"])
weibi_diff = bid - ask # 委差
weibi = (bid - ask) / (bid + ask) * 100 if (bid + ask) else 0 # 委比 %
return round(weibi, 2), weibi_diff
depth = af.depth.get("000001.SZ")
weibi, diff = order_book_strength(depth)
print(f"委比: {weibi}% 委差: {diff}")
怎么读:
| 委比 | 含义 |
|---|---|
| > +50% | 买盘明显占优,短线偏强 |
| -50% ~ +50% | 多空相对均衡 |
| < -50% | 卖盘明显占优,短线偏弱 |
注意:委比只反映五档以内的挂单,不代表全部真实意愿。大资金常常隐藏挂单或用撤单诱导,需结合成交量一起判断。
识别涨停封板 / 跌停砸盘
这是盘口数据一个非常实用的场景。逻辑很直接:
- 涨停封板:股价封在涨停价,卖一没有挂单(
ask_volumes[0] == 0),买一堆着巨量封单; - 跌停砸盘:股价封在跌停价,买一没有挂单(
bid_volumes[0] == 0)。
结合标的元数据里的涨跌停价可以精确确认:
def check_limit(symbol):
depth = af.depth.get(symbol)
if depth["ask_volumes"][0] == 0 and depth["bid_volumes"][0] > 0:
return "涨停封板", depth["bid_volumes"][0]
if depth["bid_volumes"][0] == 0 and depth["ask_volumes"][0] > 0:
return "跌停封板", depth["ask_volumes"][0]
return "正常交易", None
state, seal = check_limit("600519.SH")
print(f"状态: {state} 封单量: {seal}")
批量扫描全市场封板情况
结合全市场行情 + 元数据涨跌停价 + 盘口确认,可以扫出当前所有涨停封板的票:
import pandas as pd
# 1. 全 A 行情
quotes = af.quotes.get(universes=["CN_Stock"], to_dataframe=True)
# 2. 标的元数据里的涨停价(SDK 自动分批)
insts = af.instruments.batch(quotes["symbol"].tolist())
limit_up = {x["symbol"]: x["ext"]["limit_up"]
for x in insts if x.get("ext", {}).get("limit_up") is not None}
# 3. 价格初筛:最新价 ≈ 涨停价
def near_limit(row):
lu = limit_up.get(row["symbol"])
return lu is not None and abs(row["last_price"] - lu) < 1e-3
candidates = quotes[quotes.apply(near_limit, axis=1)]
# 4. 盘口确认:卖一量为 0 才算真封板(SDK 自动分批)
depths = af.depth.batch(candidates["symbol"].tolist())
sealed = [s for s, d in depths.items() if d["ask_volumes"][0] == 0]
print(f"涨停封板: {len(sealed)} 只")
print(candidates[candidates["symbol"].isin(sealed)][["symbol", "ext.name", "last_price"]])
af.instruments.batch和af.depth.batch会自动分批请求,传入几千只标的也无需自己切片。标的池查询需要 Starter 及以上权限。
常见问题(FAQ)
Q:能拿到十档吗? A:当前提供 A 股五档盘口(买卖各 5 档)。
Q:盘口数据多久刷新? A:与实时行情快照同步,约每 3 秒一次。
Q:委比为什么会突然大幅变化? A:大额挂单/撤单会瞬间改变某一档的量,这也是盘口博弈的一部分,建议配合成交量、分时走势综合判断。
Q:能批量取盘口吗?
A:可以,用 af.depth.batch([...]) 一次取多只,返回以标的代码为 key 的字典。
小结
五档盘口把”市场当下想以什么价成交多少量”直接摊在你面前。委比委差量化了买卖力量,封单识别帮你抓涨停跌停。它是短线量化里信息密度最高的数据之一,用 af.depth 接口几行就能取到并计算。
相关链接:
- AlphaFeed 官网:https://alphafeed.org/
- 五档盘口文档:https://docs.alphafeed.org/zh-Hans/sdk/python-quickstart