问题描述
如何获取实时委买均价和委卖均价数据?
解决方案
在 QMT 中,获取实时委买均价(avgBidPrice)和委卖均价(avgOffPrice)属于 Level-2 行情快照指标。
你需要使用 get_market_data_ex 接口,并将周期参数 period 设置为 'l2quoteaux'。
注意: 使用此功能通常需要账号开通 Level-2 增强版权限。
以下是具体的代码实现示例:
# -*- coding: gbk -*-
def init(ContextInfo):
# 设置需要获取数据的股票池
ContextInfo.stock_list = ['600000.SH', '000001.SZ']
ContextInfo.set_universe(ContextInfo.stock_list)
def handlebar(ContextInfo):
# 仅在最后一根K线(实时行情)时获取
if not ContextInfo.is_last_bar():
return
# 定义需要获取的字段
# avgBidPrice: 委买均价
# avgOffPrice: 委卖均价
fields = ['avgBidPrice', 'avgOffPrice']
# 获取 Level-2 行情快照数据
# period='l2quoteaux' 是获取此类指标的关键参数
l2_data = ContextInfo.get_market_data_ex(
fields=fields,
stock_code=ContextInfo.stock_list,
period='l2quoteaux',
count=-1 # 获取最新一笔
)
# 遍历结果并打印
for stock_code, df in l2_data.items():
if not df.empty:
# 获取最新的一行数据
latest_data = df.iloc[-1]
avg_bid = latest_data.get('avgBidPrice')
avg_ask = latest_data.get('avgOffPrice')
print(f"股票: {stock_code}")
print(f" 委买均价: {avg_bid}")
print(f" 委卖均价: {avg_ask}")
print("-" * 30)
else:
print(f"股票: {stock_code} 无 Level-2 快照数据")
关键点说明:
- 接口函数:必须使用
ContextInfo.get_market_data_ex。 - 周期参数:
period必须设置为'l2quoteaux'。 - 字段名称:
avgBidPrice:委买均价avgOffPrice:委卖均价
- 订阅模式:如果你希望通过数据推送的方式获取(而不是在
handlebar中轮询),可以使用ContextInfo.subscribe_quote接口,同样将period设置为'l2quoteaux',并在回调函数中处理数据。