3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT(迅投 Print Quant)量化平台上,实现跨品种或跨期套利交易需要精确控制不同合约的套利比例以及计算其合约乘数。平台提供了强大的 passorder 综合交易下单接口,支持组合套利下单功能。
在使用 passorder 接口进行组合套利交易时,参数配置与普通单股下单有所不同:
passorder(opType, orderType, accountID, orderCode, prType, hedgeRatio, volume, ContextInfo)
'stockAccountID, futureAccountID' 或套利账号组名。'basketName, futureName'。orderType 参数包括:
2331:组合、套利、合约价值自动套利、按组合股票数量方式下单2332:组合、套利、按合约价值自动套利、按组合股票权重方式下单2333:组合、套利、按合约价值自动套利、按账号可用方式下单0 ~ 2 之间(相当于 0% 到 200% 的套利对冲比例)。40(期货组合开多)、43(期货组合开空)、46(期货组合平多,优先平今)等。为了精准计算套利组合的头寸配比,需要获取期货合约的乘数。QMT 提供了 ContextInfo.get_contract_multiplier 函数:
# 获取沪深300股指期货合约乘数
multiplier = ContextInfo.get_contract_multiplier('IF2309.IF')
print("合约乘数:", multiplier)
以下是一个简单的 Python 策略,展示如何在 init 中设定套利账号,并在 handlebar 中动态计算比例并使用 passorder 下单:
#coding:gbk
import time
def init(ContextInfo):
# 设定交易账号(股票账户, 期货账户)
ContextInfo.account = '60000001, 110476'
ContextInfo.set_account(ContextInfo.account)
# 设定股票池/合约
ContextInfo.set_universe(['IF2309.IF'])
def handlebar(ContextInfo):
if not ContextInfo.is_last_bar():
return
# 1. 获取合约乘数
contract = 'IF2309.IF'
multiplier = ContextInfo.get_contract_multiplier(contract)
# 2. 设置套利参数
hedge_ratio = 1.0 # 套利比例设置为 100%
order_type = 2331 # 按组合股票数量方式套利下单
basket_name = 'MyBasket' # 已在客户端预设的篮子名称
order_code = f"{basket_name},{contract}"
# 3. 触发套利下单(开多组合,指定套利比例)
# opType=40 (期货组合开多), prType=5 (最新价), hedgeRatio=1.0, volume=1 (1份)
passorder(40, order_type, ContextInfo.account, order_code, 5, hedge_ratio, 1, ContextInfo)
print(f"已发送套利下单任务:代码={order_code}, 套利比例={hedge_ratio}")
prType 参数主要对组合篮子生效,期货端默认采用对应的市场/对手价等策略。init 方法中调用 ContextInfo.set_account() 绑定交易账号,否则无法正常接收回报及下单。quickTrade 参数设置为 1。