🚀 AI 一键生成 qmt 策略代码

QMT调用get_market_data时period参数报错怎么办?

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

问题描述

用get_market_data获取行情数据时period=‘1’报错、

period 取值 1m\5m\15m\30m 时,都正常,本地也下载了 5m 的历史数据。请大神们帮助。

解决方案

在 QMT 平台中使用 get_market_dataget_market_data_ex 函数获取历史行情数据时,period 参数必须严格按照官方 API 文档规定的字符串格式传入。

报错原因分析

您在调用时传入了 period='1',这不是一个合法的周期参数。QMT 无法识别 '1' 代表的是 1分钟、1天还是其他周期,因此会抛出错误。正如您所测试的,传入 '1m''5m' 等合法参数时,函数就能正常工作。

正确的 period 参数取值列表

根据 QMT 官方 API 文档,period 参数支持以下取值:

  • 'tick':分笔线
  • '1m':1分钟线
  • '3m':3分钟线
  • '5m':5分钟线
  • '15m':15分钟线
  • '30m':30分钟线
  • '1h':小时线
  • '1d':日线
  • '1w':周线
  • '1mon':月线
  • '1q':季线
  • '1hy':半年线
  • '1y':年线

解决方案

如果您想获取 1分钟线 的数据,请将参数修改为 '1m';如果您想获取 日线 数据,请修改为 '1d'

代码示例:

def init(ContextInfo):
    ContextInfo.set_universe(['000001.SZ'])

def handlebar(ContextInfo):
    # 获取 1分钟线 数据,正确传入 '1m'
    df_1m = ContextInfo.get_market_data(['close'], stock_code=ContextInfo.get_universe(), period='1m', count=10)
    print("1分钟线数据:\n", df_1m)
    
    # 获取 日线 数据,正确传入 '1d'
    df_1d = ContextInfo.get_market_data(['close'], stock_code=ContextInfo.get_universe(), period='1d', count=10)
    print("日线数据:\n", df_1d)

温馨提示:

  1. 确保您在【数据管理】中已经下载了对应周期(如 1分钟线、日线)的历史数据,否则即使参数正确,也可能获取不到数据。
  2. 官方建议优先使用 ContextInfo.get_market_data_ex 接口替代旧版的 get_market_data,以获得更好的性能和更丰富的数据结构返回。