🚀 AI 一键生成 qmt 策略代码

QMT平台无法获取Tick(分笔)数据的常见原因及解决办法

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

问题描述

无法获取tick数据

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

解决方案

在QMT(迅投极速量化交易平台)中,遇到无法获取或下载Tick(分笔)数据的问题,通常是由本地数据未补充、API接口使用不当或参数设置错误引起的。以下是详细的排查步骤和解决方法:

1. 确认本地数据是否已补充

QMT平台在回测或获取历史数据时,依赖于本地客户端的数据缓存。如果您没有提前下载Tick数据,API将返回空值。
解决办法

  • 打开QMT客户端,进入**【数据管理】** -> 【补充数据】
  • 选择您需要的市场、品种,并在“周期”中勾选**“分笔(Tick)”**。
  • 设定好时间范围(注意:Tick数据量非常大,建议按需下载,不要一次性下载过长时间的数据),点击下载。

2. 检查API接口及参数设置

获取Tick数据时,必须使用支持Tick周期的接口,并正确设置period参数。

推荐接口一:get_market_data_ex(获取历史或最新Tick)

使用此接口时,必须将period参数设置为'tick'

def handlebar(ContextInfo):
    # 确保只在最后一根K线执行,避免重复打印
    if not ContextInfo.is_last_bar():
        return
        
    # 获取平安银行最近的Tick数据
    tick_data = ContextInfo.get_market_data_ex(
        fields=[], 
        stock_code=['000001.SZ'], 
        period='tick', 
        start_time='', 
        end_time='', 
        count=10, # 获取最近10笔
        subscribe=True
    )
    print(tick_data)

推荐接口二:get_full_tick(获取最新一笔Tick快照)

如果您只需要当前最新的分笔快照数据,使用get_full_tick最为高效。

def handlebar(ContextInfo):
    if not ContextInfo.is_last_bar():
        return
        
    # 获取最新分笔数据
    latest_tick = ContextInfo.get_full_tick(['000001.SZ', '600000.SH'])
    print(latest_tick)

3. 检查回测时间与数据匹配

如果您是在回测模式下获取Tick数据,请确保:

  • 策略编辑器中的回测参数(开始时间、结束时间)在您已下载的Tick数据时间范围内。
  • 如果回测周期是日线(1d),但在代码中尝试获取当天的历史Tick,可能会因为数据未对齐而获取失败。建议在实盘/模拟运行模式下测试实时Tick获取。

4. 权限问题(Level2数据)

普通的Tick数据(快照,通常3秒一次)所有用户均可获取。但如果您尝试获取逐笔成交逐笔委托等Level2级别的高频数据(如period='l2quoteaux'),需要您的QMT账号开通了Level2增强版权限。如果未开通,相关接口将无法返回数据。

总结:绝大多数“无法获取Tick数据”的问题都是因为未在数据管理中手动下载对应时间段的分笔数据。请先补充数据,再运行上述测试代码。