3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 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 客户端内部的策略编辑器中编写代码,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_quote 或 download_history_data,然后再 get_market_data_ex。ContextInfo.get_market_data_ex 即可,平台会自动处理订阅。