首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >如何利用 QuantDash API 与 Python 玩转高频五档盘口与全市场实时监控?

如何利用 QuantDash API 与 Python 玩转高频五档盘口与全市场实时监控?

原创
作者头像
用户9138916
发布2026-07-11 18:54:43
发布2026-07-11 18:54:43
360
举报

在日内策略、网格交易或算法执行(例如 TWAP / VWAP)中,单纯的日K线数据已经无法满足高频决策的诉求[8]。交易员需要捕捉更细颗粒度的盘口深度信息(Level 2 五档或十档)以判断短期的资金博弈。

本文将介绍如何使用 QuantDash Python SDK,批量获取实时行情、提取五档盘口深度数据[9][10],并计算一个经典的短线技术指标——盘口不平衡率 (Order Book Imbalance, OBI),从而展示如何在生产环境进行实时行情监控。


一、 量化交易中的“盘口不平衡率 (OBI)”

在短线交易中,买盘挂单与卖盘挂单的相对力量常常暗示了价格在未来数秒或数分钟内的潜在走势。 盘口不平衡率 (OBI) 就是基于此逻辑设计的指标,其最基础的计算公式如下:

  • TotalBidVolumeTotalBidVolume:买一到买五的总挂单量[11]。
  • TotalAskVolumeTotalAskVolume:卖一到卖五的总挂单量[11]。
  • 指标含义:OBI 趋近于 1 说明买方挂单极度强于卖方;趋近于 −1 则说明卖方抛压沉重。

二、 实战代码:五档数据拉取与 OBI 动态计算

1. 安装 SDK 与初始化

首先确保安装了 quantdash SDK,并向官方申请好 API 密钥(可在 QuantDash 官网 获取)[1]。

代码语言:bash
复制
pip install quantdash pandas
2. 计算 OBI 并实时监控

以下示例演示如何获取单只标的(例如 AAPL.US 或港股 00700.HK)的五档深度,并实时计算其 OBI 指标[9][11]:

代码语言:python
复制
import os
import time
from quantdash import QuantDash

# 初始化客户端
api_key = os.getenv("QUANTDASH_API_KEY", "your_api_key_here")
qd = QuantDash(api_key=api_key)

def calculate_obi_5(symbol: str):
    """
    获取指定标的的五档盘口数据,并计算 OBI
    """
    try:
        # 获取深度盘口数据
        depth = qd.depth.get(symbol)
        
        if not depth:
            print(f"未能获取 {symbol} 深度数据")
            return None
        
        # 提取买五和卖五的挂单量
        # QuantDash 返回的 depth 数据通常包含 bid_sizes 和 ask_sizes 列表
        bid_sizes = depth.get("bid_sizes", [])
        ask_sizes = depth.get("ask_sizes", [])
        
        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 0.0
            
        # 计算 OBI
        obi = (total_bid_volume - total_ask_volume) / (total_bid_volume + total_ask_volume)
        
        # 提取买一价与卖一价
        bid_prices = depth.get("bid_prices", [])
        ask_prices = depth.get("ask_prices", [])
        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

# 模拟一个每 5 秒轮询一次的监控循环
if __name__ == "__main__":
    monitor_symbol = "AAPL.US"
    print(f"开始监控 {monitor_symbol} 盘口不平衡度...")
    
    try:
        for _ in range(5):  # 示例仅运行5次
            metrics = calculate_obi_5(monitor_symbol)
            if metrics:
                print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] "
                      f"标的: {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(5)
    except KeyboardInterrupt:
        print("监控已手动终止。")

三、 实战:批量获取全市场实时行情看板

除了深度盘口,如果我们想对自选股池或全市场进行快速扫描(比如检测全市场哪些股票正在异动),需要用到批量实时行情接口[9][10]。

以下代码展示如何使用 universes 机制批量拉取实时快照:

代码语言:python
复制
from quantdash import QuantDash

qd = QuantDash(api_key="your_api_key_here")

# 批量获取 A 股(或者指定股票池)的最新实时价格
try:
    # 传入 universes 参数(支持 A 股市场 'CN_Stock')
    quotes_df = qd.quotes.get(universes=["CN_Stock"], to_dataframe=True)
    
    # 过滤出你关心的列进行展示
    if not quotes_df.empty:
        # 假设我们筛选出涨幅最大的前 5 只标的
        # 实际开发时可以利用这一步实现自选股监控或动态预警
        print("批量全市场快照获取成功,样本数据预览:")
        print(quotes_df[["symbol", "last_price", "change_percent", "volume"]].head())
        
except Exception as e:
    print(f"批量拉取行情失败: {e}")

四、 如何在腾讯云环境中实现生产级部署?

如果你打算将上述实时监控系统投入实战,建议将其部署在云端服务器(如腾讯云 Lighthouse),以保证 24 小时不间断稳定运行:

  1. 守护进程管理:使用 PM2 或 supervisor 启动你的监控 Python 脚本,以防因偶然的网络闪断导致进程意外崩溃。
  2. 轻量级数据库落库:将每次盘口变化及计算出的 OBI 写入本地 SQLite 数据库[7],或利用腾讯云自带的 TencentDB for MySQL,方便盘后进行策略优化与机器学习特征训练。
  3. 报警网关接入:如果检测到 OBI 发生剧烈失衡(如 OBI 突然连续大于 0.90.9 超过 10 秒),可以配合腾讯云短信 API 或企业微信机器人接口,实时推送买入预警。
  • 想要了解完整的实时和分时接口细节,请访问官方快速通道:QuantDash API 说明 [1]

参考文档:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、 量化交易中的“盘口不平衡率 (OBI)”
  • 二、 实战代码:五档数据拉取与 OBI 动态计算
    • 1. 安装 SDK 与初始化
    • 2. 计算 OBI 并实时监控
  • 三、 实战:批量获取全市场实时行情看板
  • 四、 如何在腾讯云环境中实现生产级部署?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档