🚀 AI 一键生成 qmt 策略代码

QMT平台get_market_data_ex函数订阅1小时(60m)K线数据不更新怎么办?

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

问题描述

get_market_data_ex订阅1小时K线数据不更新问题

新手求问各位大大,如果基于股票的1hour K线高低点做交易,订阅发现行情不更新,正常吗?

是不是get_market_data_ex函数不支持订阅60m的数据 ?

data_K = C.get_market_data_ex(["close",'high','low','open'],[A.stock],period = ‘60m’, count = 10, dividend_type='front')

解决方案

您好!在 QMT 平台中,get_market_data_ex 函数是支持获取和订阅 1 小时 K 线数据的。您遇到的行情不更新问题,主要是因为 period 参数的取值写错了

问题原因

在 QMT 的 API 规范中,1 小时线的标准参数值是 '1h',而不是 '60m'。当传入不支持的周期字符串时,底层可能无法正确解析并建立订阅通道,从而导致数据获取失败或无法实时更新。

正确的代码写法

请将您的代码中的 period = '60m' 修改为 period = '1h',同时建议显式开启订阅参数 subscribe=True(虽然默认是 True,但显式写出更清晰):

# 正确的 1小时线 获取与订阅方式
data_K = ContextInfo.get_market_data_ex(
    fields=['open', 'high', 'low', 'close'], 
    stock_code=[A.stock], 
    period='1h', 
    count=10, 
    dividend_type='front',
    subscribe=True  # 确保开启订阅以获取实时更新
)

进阶排查建议

如果修改为 '1h' 后仍然发现数据不更新,请按以下步骤排查:

  1. 检查数据补充:QMT 获取历史 K 线(如 count=10)需要本地有数据基础。请在 QMT 终端的【数据管理】中,确保已经补充了该股票的 1小时线(60分钟线) 历史数据。
  2. 理解驱动机制get_market_data_ex 的实时更新依赖于主图行情的 Tick 驱动。请确保您的策略是运行在实盘/模拟模式下,并且 handlebar(ContextInfo) 函数正在被实时行情正常触发。
  3. K线闭合机制:1 小时 K 线的数据在盘中是动态变化的(比如 10:00 到 11:00 之间的 K 线,其 close/high/low 会随 tick 变动)。如果您只在 K 线走完时才做交易,建议配合 ContextInfo.is_last_bar() 或判断时间戳来确认当前 1 小时 K 线是否已经确定。

附:QMT 常用周期参数对照表

  • 'tick':分笔线
  • '1m':1分钟线
  • '5m':5分钟线
  • '15m':15分钟线
  • '30m':30分钟线
  • '1h':小时线(即60分钟线)
  • '1d':日线