3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT 中,可以通过 ContextInfo.get_option_detail_data(optioncode) 接口来获取期权的详细信息,其中包括标的证券的代码和市场。
以下是具体的实现步骤和代码示例。
ContextInfo.get_option_detail_data(optioncode),传入期权代码(如 '10001506.SHO')。OptUndlCode(标的证券代码)和 OptUndlMarket(标的证券市场)。代码.市场),以便后续调用行情或交易接口。# -*- coding: gbk -*-
def init(ContextInfo):
# 示例:输入一个期权代码 (例如:50ETF购1月2200)
# 请确保该合约在当前市场环境中存在,或者使用您想查询的实际代码
option_code = '10001506.SHO'
# 获取期权详细信息
detail_data = ContextInfo.get_option_detail_data(option_code)
# 打印原始数据以便查看所有字段(调试用)
# print(detail_data)
if detail_data:
# 提取标的代码 (例如: 510050)
undl_code = detail_data.get('OptUndlCode')
# 提取标的市场 (例如: SH)
undl_market = detail_data.get('OptUndlMarket')
# 拼接成 QMT 标准格式 (例如: 510050.SH)
full_undl_code = f"{undl_code}.{undl_market}"
print(f"期权代码: {option_code}")
print(f"标的证券代码: {undl_code}")
print(f"标的证券市场: {undl_market}")
print(f"QMT标准标的代码: {full_undl_code}")
# 进一步获取标的名称验证
undl_name = ContextInfo.get_stock_name(full_undl_code)
print(f"标的名称: {undl_name}")
else:
print(f"未找到期权 {option_code} 的详细信息,请检查代码是否正确或是否已下载合约列表。")
def handlebar(ContextInfo):
pass
ContextInfo.get_option_detail_data 返回的字典中,与标的相关的关键字段如下:
| 字段 Key | 说明 | 示例值 |
|---|---|---|
| OptUndlCode | 期权标的证券代码 | '510050' |
| OptUndlMarket | 期权标的证券市场 | 'SH' |
| OptUndlRiskFreeRate | 期权标的无风险利率 | 数值 |
| OptUndlHistoryRate | 期权标的历史波动率 | 数值 |
510050.SH)可直接用于 get_market_data_ex 或 passorder 等函数。Q: 如果传入的期权代码不存在或错误,函数会返回什么?
A: 如果代码无效或本地没有该合约数据,get_option_detail_data 通常会返回空字典 {} 或 None。代码中应增加判断逻辑(如示例中的 if detail_data:)以避免报错。
Q: 这个接口支持期货期权吗?
A: 支持。对于期货期权(如 IO 或 MO 品种),该接口同样会返回标的期货合约的代码和市场。
Q: 如何反过来通过标的查询所有对应的期权合约?
A: 可以使用 ContextInfo.get_option_list(undl_code, dedate, opttype, isavailable) 接口。例如 ContextInfo.get_option_list('510050.SH', '202312', 'CALL') 可以获取标的为 50ETF 的 2023年12月到期的认购期权列表。