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

QMT平台无法获取或下载Tick(分笔)数据的排查与解决方法

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

问题描述

无法获取tick数据

无法下载或者获取 tick 数据,试过最近一天也不行

解决方案

在QMT平台中遇到无法获取或下载Tick(分笔)数据的问题,通常是由本地数据未补充API接口使用不当参数格式错误引起的。请按照以下步骤进行排查和解决:

1. 检查并补充本地数据(最常见原因)

QMT的回测和历史数据获取依赖于本地数据。如果您没有在客户端手动下载Tick数据,API将无法读取。

  • 操作步骤:打开QMT客户端 -> 点击左侧或顶部的【数据管理】 -> 选择【补充数据】 -> 选择您需要的市场和品种 -> 周期务必勾选【分笔】(Tick) -> 设定时间范围(注意Tick数据量极大,建议每次只下载最近几天) -> 点击【开始补充】。

2. 检查股票代码格式

QMT的股票代码必须包含市场后缀,格式为 代码.市场。例如:平安银行必须写为 000001.SZ,贵州茅台为 600051.SH。如果只写 000001,将无法获取数据。

3. 使用正确的API接口获取Tick数据

根据您的需求(实时最新Tick还是历史Tick),请使用不同的API接口:

A. 获取最新分笔数据(实盘/模拟盘中)

建议使用 ContextInfo.get_full_tick() 接口,该接口直接返回最新的Tick快照。

def handlebar(ContextInfo):
    if not ContextInfo.is_last_bar():
        return
    # 获取平安银行的最新Tick数据
    tick_data = ContextInfo.get_full_tick(['000001.SZ'])
    print(tick_data)

B. 获取历史/本地分笔数据

建议使用 ContextInfo.get_local_data()ContextInfo.get_market_data_ex(),并将 period 参数设置为 'tick'

def handlebar(ContextInfo):
    if not ContextInfo.is_last_bar():
        return
    # 使用 get_local_data 获取本地Tick数据
    # 注意:必须先在【数据管理】中下载了对应时间段的分笔数据
    local_tick = ContextInfo.get_local_data(
        stock_code='000001.SZ',
        start_time='20231010',
        end_time='20231010',
        period='tick'
    )
    print("本地Tick数据:", local_tick)

    # 或者使用 get_market_data_ex
    ex_tick = ContextInfo.get_market_data_ex(
        fields=[],
        stock_code=['000001.SZ'],
        period='tick',
        start_time='20231010093000',
        end_time='20231010150000'
    )
    print("MarketDataEx Tick:", ex_tick)

4. 检查订阅状态(针对实盘推送)

如果您希望在盘中实时接收Tick推送,需要使用 ContextInfo.subscribe_quote() 接口订阅Tick周期的数据,并绑定回调函数。

def on_quote(datas):
    print("收到Tick推送:", datas)

def init(ContextInfo):
    # 订阅平安银行的分笔数据
    ContextInfo.subscribe_quote('000001.SZ', period='tick', dividend_type='none', callback=on_quote)

总结:请务必先去【数据管理】下载分笔数据,然后再使用 get_local_dataget_market_data_ex 提取。如果仅需最新盘口,直接调用 get_full_tick 即可。