3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在微观高频量化策略与盘口执行算法中,实时分析买卖盘口的深度数据(五档挂单价格与挂单量)是判断短期价格压力与支撑的关键。QMT 平台提供了便捷的 ContextInfo.get_full_tick() 接口,帮助开发者实时提取盘口数据并构建量化指标。
ContextInfo.get_full_tick(stock_code) 用于获取合约最新的 Tick 快照数据,返回一个包含五档买卖盘口及量价信息的字典。
[卖一, 卖二, 卖三, 卖四, 卖五][买一, 买二, 买三, 买四, 买五]定义五档总买量与五档总卖量:
$$\text{TotalBidVol} = \sum_{i=1}^{5} \text{bidVol}i$$
$$\text{TotalAskVol} = \sum{i=1}^{5} \text{askVol}_i$$
买卖挂单压差(Order Book Imbalance)可计算为:
$$\text{Imbalance} = \frac{\text{TotalBidVol} - \text{TotalAskVol}}{\text{TotalBidVol} + \text{TotalAskVol}}$$
以下策略在 QMT 平台的实时运行或最新 Bar 触发时获取 600000.SH 的五档盘口,并计算挂单压差:
#coding:gbk
def init(ContextInfo):
ContextInfo.stock = '600000.SH'
ContextInfo.set_universe([ContextInfo.stock])
print("策略初始化:开始监控盘口五档压差")
def handlebar(ContextInfo):
# 仅在最新 Bar 判定执行,避免历史 Bar 重复触发
if not ContextInfo.is_last_bar():
return
stock = ContextInfo.stock
# 获取最新 Tick 快照
tick_data = ContextInfo.get_full_tick([stock])
if stock in tick_data:
info = tick_data[stock]
ask_vols = info.get('askVol', [])
bid_vols = info.get('bidVol', [])
last_price = info.get('lastPrice', 0)
total_ask_vol = sum(ask_vols)
total_bid_vol = sum(bid_vols)
total_vol = total_ask_vol + total_bid_vol
if total_vol > 0:
imbalance = (total_bid_vol - total_ask_vol) / total_vol
else:
imbalance = 0.0
print(f"[盘口分析] {stock} | 最新价: {last_price}")
print(f"卖五档总量: {total_ask_vol} | 买五档总量: {total_bid_vol}")
print(f"买卖挂单倾斜度 (Imbalance): {imbalance:.2%}")
# 信号判定逻辑示例
if imbalance > 0.4:
print("【信号】买盘支撑强劲,关注突破买入机会")
elif imbalance < -0.4:
print("【信号】卖盘压顶严重,注意防范回调风险")
subscribe_quote 订阅 l2quoteaux)可实时捕捉大单撤单与挂单变动,提升盘口微观结构判断的准确度。