3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT(Quantitative Trading System)量化交易平台中,获取股票的实时盘口深度数据(如五档买卖盘、最新成交价等)是构建高频交易、网格交易或盘口策略的基础。QMT 提供了 ContextInfo.get_full_tick(stock_code) 接口来满足这一需求。
get_full_tick 接口详解ContextInfo.get_full_tick(stock_code=[])
list)类型,传入需要获取盘口数据的股票代码列表(格式为 代码.市场,例如 ['600000.SH', '000001.SZ'])。如果不指定,默认获取当前主图合约的数据。返回一个嵌套字典(dict)。外层字典的 Key 是股票代码,Value 是一个包含该股票最新盘口数据的内层字典。内层字典包含以下核心字段:
lastPrice: 最新成交价askPrice: 卖价五档列表(从卖一到卖五)bidPrice: 买价五档列表(从买一到买五)askVol: 卖量五档列表(从卖一到卖五,单位:手)bidVol: 买量五档列表(从买一到买五,单位:手)volume: 成交总量(手)amount: 成交额以下是一个完整的 QMT 策略示例,展示了如何在 handlebar 行情驱动函数中,使用 get_full_tick 实时获取并打印指定股票的最新价及五档买卖盘数据。
#encoding:gbk
import time
def init(ContextInfo):
# 设定需要监控的股票池
ContextInfo.stock_list = ['600000.SH', '000001.SZ']
ContextInfo.set_universe(ContextInfo.stock_list)
print("初始化完成,开始监控盘口数据...")
def handlebar(ContextInfo):
# 仅在最后一根 K 线(即盘中实时行情)时执行,避免历史回测时输出过多日志
if not ContextInfo.is_last_bar():
return
# 获取最新分笔盘口数据
tick_data = ContextInfo.get_full_tick(ContextInfo.stock_list)
for stock in ContextInfo.stock_list:
if stock in tick_data:
data = tick_data[stock]
# 提取最新价与五档数据
last_price = data.get('lastPrice', 0.0)
ask_prices = data.get('askPrice', [])
ask_vols = data.get('askVol', [])
bid_prices = data.get('bidPrice', [])
bid_vols = data.get('bidVol', [])
# 打印盘口信息
print(f"\n====== 股票代码: {stock} ======")
print(f"最新成交价: {last_price}")
print("----------------------------")
# 打印卖五到卖一
for i in range(4, -1, -1):
if len(ask_prices) > i:
print(f"卖 {i+1} | 价格: {ask_prices[i]:.2f} | 数量: {ask_vols[i]}")
print("----------------------------")
# 打印买一到买五
for i in range(5):
if len(bid_prices) > i:
print(f"买 {i+1} | 价格: {bid_prices[i]:.2f} | 数量: {bid_vols[i]}")
print("============================\n")
get_full_tick 获取的是最新的实时快照数据,在盘中会随着 Tick 数据的推送而更新。建议在 handlebar 中配合 ContextInfo.is_last_bar() 使用,以确保只在最新 Tick 到来时触发逻辑。askVol / bidVol)单位通常为“手”(1手 = 100股),在计算实际委托股数时需注意换算。