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

QMT get_market_data_ex 怎么获取包含当天的最新行情数据?

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

问题描述

get_market_data_ex不能获取当天的行情数据吗,怎么获取包含当天的行情数据?

data = xtdata.get_market_data_ex(['open','high','low','close','volume'], stock, period='5m', count=60)

上面的代码执行的过程中,最新的结果也只是前面一天的数据,怎样才能获取当天的数据

解决方案

在 QMT(迅投极速交易平台)中,get_market_data_ex 函数是可以获取当天最新行情数据的。如果您发现获取到的数据只到前一天,通常是因为本地没有当天的最新数据

QMT 的数据获取机制是优先读取本地数据。为了获取当天的实时数据,您需要确保数据已经被下载或正在被实时订阅。

以下是解决该问题的几种方法:

方法一:使用 subscribe_quote 订阅实时行情(推荐用于独立 xtdata 环境)

如果您是在 QMT 外部使用独立的 xtdata 包,get_market_data_ex 默认只会读取本地已有的数据。要获取当天的实时数据,您必须先调用 subscribe_quote 订阅该品种和周期的行情,然后再调用 get_market_data_ex

from xtquant import xtdata
import time

stock = '000001.SZ'
period = '5m'

# 1. 先订阅实时行情,订阅后后台会自动接收当天的最新数据
xtdata.subscribe_quote(stock, period=period)

# 等待一小段时间让数据接收完成(实际使用中可以根据回调或循环检查)
time.sleep(1)

# 2. 再次获取数据,此时就会包含当天的最新数据
data = xtdata.get_market_data_ex(
    ['open', 'high', 'low', 'close', 'volume'], 
    [stock], 
    period=period, 
    count=60
)

print(data[stock])

方法二:使用 download_history_data 补充当天数据

如果您只需要在某个时间点获取一次包含当天的数据(例如盘后分析),可以先调用下载函数将数据补充到本地。

from xtquant import xtdata

stock = '000001.SZ'
period = '5m'

# 1. 下载/补充历史数据到本地(包含当天最新数据)
xtdata.download_history_data(stock, period=period)

# 2. 获取数据
data = xtdata.get_market_data_ex(
    ['open', 'high', 'low', 'close', 'volume'], 
    [stock], 
    period=period, 
    count=60
)

print(data[stock])

方法三:在 QMT 客户端内置策略中使用

如果您是在 QMT 客户端内部的策略编辑器中编写代码,ContextInfo.get_market_data_ex 默认带有一个 subscribe=True 的参数。只要保持默认设置,它会自动订阅并返回包含当天的最新数据。

def handlebar(ContextInfo):
    # 确保 subscribe=True(默认即为 True)
    data = ContextInfo.get_market_data_ex(
        ['open', 'high', 'low', 'close', 'volume'], 
        ['000001.SZ'], 
        period='5m', 
        count=60,
        subscribe=True
    )
    print(data['000001.SZ'])

总结

  • 独立环境 (xtdata):必须先 subscribe_quotedownload_history_data,然后再 get_market_data_ex
  • QMT 客户端内:直接使用 ContextInfo.get_market_data_ex 即可,平台会自动处理订阅。