🚀 AI 一键生成 qmt 策略代码

QMT数据日期停留在2021年?get_market_data_ex获取不到最新数据的终极排查指南

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

问题描述

qmt数据日期不更新,get_market_data_ex获取不到最新数据

1.qmt 数据日期一直无法更新,时间停留在 2021 年,如何才能更新到最新日期
image.png

2.get_market_data_ex 获取不到最新数据,只能获取到 2021-06-11 前的数据

这个是目前主要使用的函数,其它获取行情函数都不推荐使用了。

已经试了很多方法,换电脑及 QMT 软件卸载重新安装,清除数据,重新下载全部 K 线数据,都不能解决问题。

哪位大神能帮忙解答一下,万分感谢!

解决方案

遇到 QMT 平台数据日期不更新(如停留在 2021 年),且 get_market_data_ex 无法获取最新数据的问题,通常是由行情服务器连接、本地数据未正确补充、或代码参数设置不当引起的。即使重装软件,如果核心配置或数据源未对齐,问题依然会存在。

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

1. 检查行情服务器连接状态

QMT 必须连接到券商的行情服务器才能获取最新数据。

  • 操作步骤:查看 QMT 客户端右下角的连接状态图标。如果显示为红色或“未连接”,说明网络或服务器配置有问题。
  • 解决方法:点击右下角连接状态,尝试切换行情服务器(通常券商会提供多个行情节点),直到显示绿色“已连接”。

2. 正确使用“数据管理”补充数据

虽然您提到已经重新下载了数据,但请确认下载的范围和品种是否正确。

  • 操作步骤
    1. 点击菜单栏的 数据管理 -> 补充数据
    2. 选择您需要的市场(如沪深 A 股)和周期(如日线、1分钟线)。
    3. 关键点:检查“时间范围”设置,确保结束时间设置为当前最新日期,而不是默认的旧日期。
    4. 点击“开始补充”,等待进度条完成。

3. 检查 get_market_data_ex 的参数设置

get_market_data_ex 是 QMT 推荐的获取行情数据的接口,其参数设置直接影响数据的获取。

  • 检查 subscribe 参数
    默认情况下 subscribe=True,表示会订阅最新数据。如果被错误地设置为 False,系统将只读取本地已有数据(即您本地停留在 2021 年的数据)。
  • 检查 start_timeend_time
    确保没有在代码中将 end_time 写死为 2021 年的某个日期。如果留空 '',则默认获取到最新数据。

正确调用示例

def handlebar(ContextInfo):
    if not ContextInfo.is_last_bar():
        return
    # 获取沪深300最新日线数据,确保 subscribe=True
    data = ContextInfo.get_market_data_ex(
        fields=['open', 'high', 'low', 'close'], 
        stock_code=['000300.SH'], 
        period='1d',
        start_time='', 
        end_time='', 
        count=-1,
        dividend_type='follow', 
        fill_data=True,
        subscribe=True # 关键:开启数据订阅
    )
    print(data)

4. 检查回测时间区间设置

如果您是在回测模式下运行策略,获取的数据范围受限于回测参数的设置。

  • 操作步骤
    1. 检查策略编辑器右侧的 回测参数 -> 结束时间,确保设置为最新日期。
    2. 检查代码中 init 函数是否写死了 ContextInfo.end
      def init(ContextInfo):
          # 确保这里的结束时间不是 2021 年
          # ContextInfo.end = '2021-06-11 15:00:00' 
      

5. 检查账号权限与版本

  • 数据权限:某些特殊数据(如 Level-2 数据、期权数据)需要券商开通特定权限。如果普通 A 股数据也无法获取,通常不是权限问题。
  • 软件版本:确保您使用的是券商官网提供的最新版 QMT 客户端。如果券商后台升级了接口,旧版客户端可能无法拉取数据。

总结

如果重装和清空数据无效,最可能的原因是行情服务器未连接,或者补充数据时的时间区间未包含最新日期。请优先检查右下角的网络连接状态,并在代码中确保 subscribe=True