3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT(迅投量化交易系统)中,期权交易可以通过标准的核心交易接口 passorder() 高效完成。通过指定不同的操作类型参数(opType),开发者可以精准执行期权买卖开平、备兑开平、证券锁定解锁以及期权行权等操作。
在调用 passorder 进行期权相关操作时,opType 对应的参数设置如下:
| opType 值 | 操作名称 | 说明 |
|---|---|---|
| 50 | 买入开仓 | 认购或认沽期权买入开仓 |
| 51 | 卖出平仓 | 期权多头卖出平仓 |
| 52 | 卖出开仓 | 期权空头卖出开仓 |
| 53 | 买入平仓 | 期权空头买入平仓 |
| 54 | 备兑开仓 | 使用备兑证券开仓卖出认购期权 |
| 55 | 备兑平仓 | 平仓备兑卖出的认购期权 |
| 56 | 认购行权 | 执行认购期权行权流程 |
| 57 | 认沽行权 | 执行认沽期权行权流程 |
| 58 | 证券锁定 | 将现货锁定为备兑证券 |
| 59 | 证券解锁 | 将备兑锁定证券解除锁定 |
以下为使用 passorder 实现证券锁定、备兑开仓以及期权行权的完整示例:
#coding:gbk
import time
def init(ContextInfo):
# 设置期权资金账号
ContextInfo.accountID = '1000000088'
ContextInfo.set_account(ContextInfo.accountID)
# 订阅期权标的与期权合约
ContextInfo.stock = '510300.SH' # 华泰柏瑞沪深300ETF
ContextInfo.optionCode = '10003280.SHO' # 对应期权合约代码
def handlebar(ContextInfo):
if not ContextInfo.is_last_bar():
return
accId = ContextInfo.accountID
stockCode = ContextInfo.stock
optionCode = ContextInfo.optionCode
# 1. 证券锁定:将 10000 股 510300.SH 锁定为备兑证券
# orderType=1101 (单股单账号普通数量下单), prType=5 (最新价/可填5), price=-1, volume=10000
passorder(58, 1101, accId, stockCode, 5, -1, 10000, 'option_strategy', 1, 'lock_sec', ContextInfo)
print(f"已发送证券锁定指令: {stockCode} 10000 股")
# 2. 备兑开仓:卖出开仓 10 张备兑认购期权
# volume=10 (张)
passorder(54, 1101, accId, optionCode, 5, -1, 10, 'option_strategy', 1, 'covered_open', ContextInfo)
print(f"已发送备兑开仓指令: {optionCode} 10 张")
# 3. 认购行权:对手头的认购期权发起行权申报 (行权 10 张)
passorder(56, 1101, accId, optionCode, 5, -1, 10, 'option_strategy', 1, 'exercise_call', ContextInfo)
print(f"已发送认购行权申报: {optionCode} 10 张")
# 4. 证券解锁:如需解除备兑锁定,可执行 opType=59
# passorder(59, 1101, accId, stockCode, 5, -1, 10000, 'option_strategy', 1, 'unlock_sec', ContextInfo)
510300.SH);.SHO(如 10003280.SHO),深交所期权后缀为 .SZO。opType=54)前,需确保账户中有足够数量的被锁定标的证券(可通过 opType=58 进行锁定),否则系统将按风控规则拒绝该笔申报。opType=56/57)通常仅在期权到期日(行权日)交易时间段内有效,请注意行权时机与对应资金/现货备付准备。