在日线(1d)甚至小时线(1h)上折腾指标,是绝大多数个人量化开发者亏损的根源。无论你怎么优化 MACD、RSI 还是布林带,它们本质上都是对已发生价格的平滑滞后反应**。**
对于日内短线、动量突破或做市策略来说,真正的“圣杯”隐藏在未成交的委托单中。本文将带大家跳出 K 线的低频思维,用 Python 接入原生五档盘口(Level 2 简版深度),通过计算**盘口不平衡度(Order Book Imbalance, OBI)**指标,实时捕捉多空双方在微秒级的筹码博弈信号。
什么是五档盘口?它是买一到买五、卖一到卖五的实时挂单价格和挂单数量。
大部分开源库(如 AkShare、efinance)对于这种高频数据的支持极差:要么是爬虫抓取延迟高(达秒级),要么是频繁被源站封 IP,根本无法支撑实盘监控。
而我们今天使用的 QuantDash SDK,提供了原生的高吞吐深度盘口接口 qd.depth.get() [2],直接返回毫秒级对齐的五档报价和委托量 [2]。
OBI 是高频交易中最经典的微观结构指标,其计算公式非常直观:

- 当 OBI 接近 1 时:说明买方挂单量远大于卖方,下方支撑极强,价格短期向上概率大。
- 当 OBI 接近 -1 时:说明上方抛压极重,买盘稀薄,价格短期大概率下行。
下面我们编写一段标准的、非阻塞的盘口实时监控脚本。我们会拉取美股特斯拉(TSLA.US)或 A股贵州茅台(600519.SH)的最新五档盘口 [2],动态计算并打印其 OBI 指标。
import time
from quantdash import QuantDash
# 初始化 QuantDash 客户端(可前往 quantdash.net 免费获取免信用的 API Key)
qd = QuantDash(api_key="your_api_key_here")
def calculate_obi_indicator(symbol: str) -> dict:
"""
获取指定标的的五档盘口并计算 OBI 指标
"""
try:
# 获取毫秒级五档深度数据
depth = qd.depth.get(symbol)
if not depth:
print(f"[-] 无法获取 {symbol} 的深度数据")
return None
# 提取买五/卖五挂单量
bid_sizes = depth.get("bid_sizes", [])
ask_sizes = depth.get("ask_sizes", [])
bid_prices = depth.get("bid_prices", [])
ask_prices = depth.get("ask_prices", [])
if not bid_sizes or not ask_sizes:
print(f"[-] {symbol} 盘口挂单为空,可能处于非交易时段")
return None
# 统计前五档委托总量
total_bid_volume = sum(bid_sizes[:5])
total_ask_volume = sum(ask_sizes[:5])
if (total_bid_volume + total_ask_volume) == 0:
return None
# 计算 OBI
obi = (total_bid_volume - total_ask_volume) / (total_bid_volume + total_ask_volume)
# 获取当前的买一价和卖一价
bid_1 = bid_prices[0] if bid_prices else 0.0
ask_1 = ask_prices[0] if ask_prices else 0.0
return {
"symbol": symbol,
"bid_1": bid_1,
"ask_1": ask_1,
"total_bid_vol": total_bid_volume,
"total_ask_vol": total_ask_volume,
"obi": round(obi, 4)
}
except Exception as e:
print(f"[-] 计算 OBI 异常: {e}")
return None
if __name__ == "__main__":
target_stock = "TSLA.US" # 可切换为 "600519.SH" 或 "00700.HK"
print(f"[+] 开始实时监控 {target_stock} 的盘口博弈信号...")
# 模拟盘中高频轮询(每 3 秒获取一次快照)
for _ in range(10):
metrics = calculate_obi_indicator(target_stock)
if metrics:
timestamp = time.strftime('%H:%M:%S', time.localtime())
print(
f"[{timestamp}] 标的: {metrics['symbol']} | "
f"买一/卖一: {metrics['bid_1']}/{metrics['ask_1']} | "
f"买五量: {metrics['total_bid_vol']} | "
f"卖五量: {metrics['total_ask_vol']} | "
f"OBI 指标: {metrics['obi']}"
)
time.sleep(3)
在利用五档盘口构建实盘策略时,请务必注意以下工程细节:
- 虚假挂单(Spoofing):主力资金常常在买四、买五或卖四、卖五挂出巨量单,但一临近成交便迅速撤单。因此,不能仅看绝对的 OBI 数值,更要观察其连续变化率。如果 OBI 突然从 +0.8 骤降至 0 附近,大概率发生了诱多后的撤单。
- 多线程并发:在全市场扫描异动股时,请避免串行循环获取。QuantDash 提供了 universes=["CN_Stock"] 的整包批量获取机制 [1],可以用极少的请求带宽拉取全 A 股行情,避免触发流控。
如果你已经厌倦了日复一日去调参那些失效的 K 线指标,不如从底层盘口数据切入,看看市场真正的“挂单肌肉”。前往 pip install quantdash,通过极简的几行 Python,给自己的高频或日内策略装上一双“显微镜”。
相关链接 :
- QuantDash 官方:QuantDash
- Python SDK 快速开始:快速开始 - QuantDash

