3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT 量化平台中,想要获取特定标的(如 510300.SH)在指定月份到期且可交易的认购期权合约列表,可以使用 ContextInfo.get_option_list() API 接口。
ContextInfo.get_option_list(undl_code, dedate, opttype, isavailable)
str): 期权标的代码,如 '510300.SH'。str): 期权到期月或交易日期。
'YYYYMM' 格式:获取对应到期月份的期权合约(例如 '202101')。'YYYYMMDD' 格式:获取当前指定日期交易的期权合约。str): 期权类型。取值包括 'CALL'(认购)、'PUT'(认沽);留空则同时获取认购和认沽。bool): 是否仅限可交易。
dedate 为 'YYYYMMDD' 格式时,True 表示仅返回当前可用可交易合约,False 表示包含已退市/历史合约。list),例如 ['10003280.SHO', ...]。以下代码展示了如何在 init 或 handlebar 函数中筛选上证 50ETF 或 300ETF 的指定月份认购期权列表:
#encoding:gbk
def init(ContextInfo):
# 设定交易标的为 510300.SH
ContextInfo.target = '510300.SH'
print("策略初始化完成")
def handlebar(ContextInfo):
# 仅在最后一根 Bar 执行,避免重复打印
if not ContextInfo.is_last_bar():
return
# 示例1:获取到期月份为 2021年1月 的 510300ETF 认购期权(CALL)合约列表
option_call_list = ContextInfo.get_option_list('510300.SH', '202101', 'CALL')
print("202101 到期认购期权列表:", option_call_list)
# 示例2:获取特定交易日(20210104)当天可交易的认购期权合约
active_call_list = ContextInfo.get_option_list('510300.SH', '20210104', 'CALL', True)
print("20210104 可交易认购期权列表:", active_call_list)
# 遍历获取某个期权合约的详细信息(行权价、到期日等)
if option_call_list:
sample_code = option_call_list[0]
detail = ContextInfo.get_option_detail_data(sample_code)
print(f"合约 {sample_code} 行权价:", detail.get('OptExercisePrice'))
print(f"合约 {sample_code} 到期日:", detail.get('ExpireDate'))
ContextInfo.get_full_tick() 或 ContextInfo.get_market_data_ex() 获取期权行情,并使用 passorder 函数(opType 设置为 50 买入开仓、52 卖出开仓等)完成期权交易。