🚀 AI 一键生成 qmt 策略代码
立即体验
👉 AI 生成代码 👈

QMT调用get_full_tick获取五档行情数据为0的排查与解决方法

qmt | 发布时间: 2026/6/3
以下内容由 EasyQuant 生成。

问题描述

获取五档行情数据,买二~买五,卖二~卖五数据显示是0

Result = Contextinfo.get full tick(ContextInfo.stock)
print('Result:'Result)
return
右上角选五档,另外行情选择国际站点

解决方案

在QMT(迅投/国信量化平台)中,使用 ContextInfo.get_full_tick() 获取分笔数据时,如果发现买一、卖一有数据,但买二至买五、卖二至卖五的数据全部为0,这通常不是代码本身的问题,而是客户端的行情订阅设置或行情源节点选择不当导致的

以下是详细的排查和解决步骤:

1. 更改客户端右上角的行情档位设置

QMT的API接口获取的数据依赖于客户端底层的行情接收状态。如果客户端界面只请求了一档行情,API自然无法获取到五档数据。

  • 操作方法:在QMT客户端界面的右上角,找到行情档位设置(通常在系统设置或行情界面的右上角下拉菜单中),将默认的“一档”切换为**“五档”**。

2. 切换行情站点(选择支持五档的服务器)

部分默认的行情服务器可能为了节省带宽,仅推送一档快照数据。你需要切换到提供完整五档盘口数据的行情节点。

  • 操作方法:在客户端的“网络设置”或“行情站点选择”中,将行情源切换为**“国际站点”**或其他明确标注支持Level-2/五档行情的优选主站。切换后建议重启客户端以确保连接生效。

3. 检查代码调用方式

确保你正确解析了 get_full_tick 返回的字典结构。该函数返回的是一个嵌套字典,包含了 askPrice(卖价五档)、bidPrice(买价五档)、askVol(卖量五档)和 bidVol(买量五档)的列表。

正确的代码示例:

#coding:gbk
def init(ContextInfo):
    # 设置需要获取行情的股票池
    ContextInfo.set_universe(['000001.SZ'])

def handlebar(ContextInfo):
    # 确保在最新的一根K线上获取实时tick
    if not ContextInfo.is_last_bar():
        return
        
    stock = ContextInfo.stockcode
    # 获取最新分笔数据
    result = ContextInfo.get_full_tick([stock])
    
    if stock in result:
        tick_data = result[stock]
        print(f"股票: {stock}")
        print(f"最新价: {tick_data['lastPrice']}")
        # 打印买卖五档价格,列表索引0-4分别对应一档到五档
        print(f"卖五档价格: {tick_data['askPrice']}")
        print(f"买五档价格: {tick_data['bidPrice']}")
        print(f"卖五档数量: {tick_data['askVol']}")
        print(f"买五档数量: {tick_data['bidVol']}")

总结

遇到五档数据为0的情况,请牢记**“两步走”**:

  1. 右上角选五档
  2. 行情选择国际站点(或支持五档的站点)
    完成这两步设置后,再次运行策略,get_full_tick 即可正常返回完整的盘口五档数据。