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

QMT 平台如何使用 ext_data_range 获取指定时间区间的扩展数据序列?

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

问题描述

请根据以下 SEO 主题生成完整页面内容:

Title: QMT 扩展数据 API:ext_data_range 获取指定时间区间的自定义指标序列

Question: QMT 中如何使用 ext_data_range 提取某只股票在过去一年内的扩展数据字典?

解决方案

QMT 扩展数据 API:ext_data_range 获取指定时间区间的自定义指标序列

在 QMT(迅投量化交易系统)中,扩展数据(ext_data)允许开发者引入客户端技术指标或自定义数据。如果需要一次性获取某只股票在**特定时间区间段(如过去一年)**的扩展数据序列,可以使用 ext_data_range() 函数。


1. ext_data_range 函数说明

1.1 函数用法

ext_data_range(extdataname, stockcode, begintime, endtime, ContextInfo)

1.2 参数解析

  • extdataname (str): 扩展数据名称(在 QMT 客户端软件中设置或定义的扩展数据名称)。
  • stockcode (str): 合约代码,格式为 代码+市场,例如 '600000.SH'
  • begintime (str): 区间起始时间(包含该时间点),格式为 'YYYY-MM-DD HH:MM:SS'
  • endtime (str): 区间结束时间(包含该时间点),格式为 'YYYY-MM-DD HH:MM:SS'
  • ContextInfo (PythonObj): 策略全局上下文环境对象。

1.3 返回值

返回一个 Python 字典(dict),字典的 key 为时间戳或日期字符串,value 为对应时间点的扩展数据数值。


2. 提取过去一年扩展数据的代码示例

以下是一个完整示例,展示如何在 handlebar 触发时提取平安银行(000001.SZ)在过去一年内的扩展数据:

#coding:gbk
import datetime

def init(ContextInfo):
    # 设置交易标的
    ContextInfo.set_universe(['000001.SZ'])

def handlebar(ContextInfo):
    # 仅在最后一根 Bar 上执行提取逻辑
    if not ContextInfo.is_last_bar():
        return
    
    # 设定合约与扩展数据名称
    stock_code = '000001.SZ'
    ext_name = 'mycci'  # 替换为你在QMT客户端中设置的扩展数据名称
    
    # 计算过去一年的时间范围
    now = datetime.datetime.now()
    one_year_ago = now - datetime.timedelta(days=365)
    
    start_time = one_year_ago.strftime('%Y-%m-%d 00:00:00')
    end_time = now.strftime('%Y-%m-%d %H:%M:%S')
    
    # 获取指定时间区间内的扩展数据字典
    ext_data_dict = ext_data_range(ext_name, stock_code, start_time, end_time, ContextInfo)
    
    print(f"获取 {stock_code} 从 {start_time} 到 {end_time} 的扩展数据:")
    print(ext_data_dict)

3. 相关扩展数据函数对比

函数名 说明 返回类型
ext_data 获取单根 Bar 偏移位置的扩展数值 number
ext_data_range 获取指定时间区间内的扩展数据 dict
ext_data_rank 获取扩展数值在所有品种中的排名 number
ContextInfo.get_ext_all_data 一次性提取所有扩展数据与其排名(推荐在 init 中使用) pandas.Panel

4. 注意事项

  1. 扩展数据预先生成:在使用 ext_data_range 前,必须确保客户端的扩展数据已经通过系统“扩展数据管理”计算并下载生成完毕,否则可能返回空数据或报错。
  2. 编码声明:QMT 脚本首行需加上 #coding:gbk 避免编码格式问题。