🚀 AI 一键生成 qmt 策略代码

QMT 平台 get_history_data 函数是否已经停用?

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

问题描述

老师,请问:get_history_data是否已经停用了?

老师,请问:get_history_data是否已经停用了?

解决方案

您好!在 QMT 平台中,get_history_data 函数并没有停用,您仍然可以正常使用它来获取历史行情数据。

您可能是将其与另一个函数混淆了。在 QMT 的官方文档中,明确指出已不建议使用(即将废弃)的函数是 get_market_data,官方建议将其替换为更强大的 get_market_data_ex

1. get_history_data 的当前状态与用途

get_history_data 依然是有效的 API。它的主要特点是:

  • 依赖股票池:必须先通过 ContextInfo.set_universe() 设定基础股票池,它只能获取股票池中股票的历史行情数据。
  • 返回数据结构:返回一个字典(dict)结构,key 为 stockcode.market,value 为行情数据 list(第 0 位为最早的价格,第 1 位为次早价格,依次类推)。
  • 适用场景:主要用来构建简单的指标。

使用示例:

def init(ContextInfo):
    # 必须先设置股票池
    ContextInfo.set_universe(['000300.SH', '000004.SZ'])

def handlebar(ContextInfo):
    # 获取股票池中所有股票的最近两日的收盘价
    hisdict = ContextInfo.get_history_data(2, '1d', 'close')
    for k, v in hisdict.items():
        if len(v) > 1:
            # 计算今日涨幅
            print(k, ':', v[1] - v[0])

2. 为什么会产生“停用”的误解?

这通常是因为开发者在查阅文档时,看到了关于 get_market_data 的废弃警告。QMT 提供了多种获取数据的接口,它们之间有细微的区别:

  • get_history_data():正常使用。获取设定股票池中股票的某段行情,返回 dict,适合简单指标计算。
  • get_market_data()不建议使用。官方建议用 get_market_data_ex 替代。
  • get_market_data_ex()强烈推荐使用。可获取任意股票行情(无需预先设置 universe),返回 pandas.DataFrame 格式,支持更丰富的数据字段和周期,非常适合复杂的数据分析和 Pandas 处理。

3. 建议:使用 get_market_data_ex 替代

如果您需要获取历史数据进行复杂的策略计算,建议直接使用 get_market_data_ex,它的灵活性和返回的数据结构(DataFrame)更符合现代 Python 量化开发习惯。

get_market_data_ex 示例:

def handlebar(ContextInfo):
    if not ContextInfo.is_last_bar():
        return
    # 获取沪深300指数的日线开高低收数据,返回 DataFrame
    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)

总结get_history_data 没有停用,但如果您需要更强大的数据获取能力和 DataFrame 格式的返回值,推荐使用 get_market_data_ex