🚀 AI 一键生成 qmt 策略代码

QMT平台获取历史/过期期权合约列表的正确方法

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

问题描述

怎么获取历史时刻的期权列表?

get_stock_list_in_sector获取过期期权代码列表无数据,获取当前的就有,请问使用方法有问题吗?

解决方案

在 QMT 平台中,get_stock_list_in_sector 函数主要用于获取当前板块的成分股,通常不支持直接获取已经退市或过期的期权合约列表。因此,您在使用该函数获取过期期权时会发现没有数据。

要获取历史时刻的期权列表或过期期权合约,您应该使用 QMT 专门提供的期权和过期合约 API,并且必须提前在数据管理中下载/补充“过期合约列表”数据

以下是正确的获取方法:

方法一:使用 get_option_list 获取指定标的的历史期权

ContextInfo.get_option_list(undl_code, dedate, opttype, isavailable) 可以用来获取指定期权标的在某个历史日期的期权列表。

参数说明:

  • undl_code:期权标的代码,如 '510300.SH'
  • dedate:期权到期月或当前交易日期。"YYYYMM" 格式为期权到期月,"YYYYMMDD" 格式为获取指定日期交易的期权。
  • opttype:期权类型,如 "CALL"(认购),"PUT"(认沽),为空时认购认沽都取。
  • isavailable:是否可交易。当 dedate"YYYYMMDD" 格式时,isavailableFalse 时返回该日期已经上市的认购合约(包括退市/过期的)。

示例代码:

def handlebar(ContextInfo):
    # 获取20210104当天上交所510300ETF已经上市的认购合约(包括退市/历史合约)
    data = ContextInfo.get_option_list('510300.SH', '20210104', "CALL", False)
    print("历史期权列表:", data)

方法二:使用 get_his_contract_list 获取指定市场的全部过期合约

如果您需要获取某个市场所有的过期合约,可以使用 ContextInfo.get_his_contract_list(market)

参数说明:

  • market:市场代码,如 'SHO'(上交所期权), 'SZO'(深交所期权)。

示例代码:

def handlebar(ContextInfo):
    # 获取深交所期权过期合约列表
    szo_his_options = ContextInfo.get_his_contract_list('SZO')
    print("深交所过期期权列表:", szo_his_options)

⚠️ 重要注意事项

无论使用哪种方法获取历史或过期期权,前提条件是您必须在 QMT 客户端的【数据管理】中,手动勾选并补充**“过期合约列表”**以及对应的历史行情数据,否则接口将返回空数据。