🚀 AI 一键生成 qmt 策略代码
立即体验

QMT 算法交易进阶:如何配置 algo_passorder 实现超价委托与智能拆单

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

问题描述

请根据以下 SEO 主题生成完整页面内容:

Title: QMT 算法交易进阶:algo_passorder 超价与拆单参数配置

Question: 请问如何在 QMT 中使用 algo_passorder 函数实现超价委托和自定义时间间隔拆单?

解决方案

QMT 算法交易进阶:algo_passorder 超价与拆单参数配置

在 QMT(迅投量化交易系统)中,algo_passorder 函数允许开发者基于客户端函数交易面板中设置的参数或代码中传入的自定义字典参数,实现更精细化的算法拆单超价委托策略。相比于普通的 passorderalgo_passorder 能有效降低大单对市场的冲击,并提高追单与成交履约率。


1. algo_passorder 函数接口说明

algo_passorder 的基本调用格式如下:

algo_passorder(opType, orderType, accountid, orderCode, prType, modelprice, volume, strategyName, quickTrade, userOrderId, userOrderParam, ContextInfo)

关键参数解析

  • opType: 操作类型,如 23 代表股票买入,24 代表股票卖出。
  • orderType: 下单方式,如 1101(单股、单账号、普通、股/手方式下单)。
  • prType: 报价类型。prType = -1,系统会自动使用 userOrderParam 或交易面板中设定的报价类型与超价参数。
  • userOrderParam: 字典类型(dict),用于指定自定义的算法拆单及超价控制参数。

2. 超价与拆单核心参数(userOrderParam)

通过配置 userOrderParam 字典,可以精细化控制委托方式:

参数名 (Key) 说明 可选值/示例 说明
OrderType 交易模式 0: 普通交易, 1: 算法交易, 2: 随机量交易
PriceType 报价方式 数值同 prType(如 5: 最新价, 11: 指定价)
SuperPriceType 单笔超价类型 0: 按比例, 1: 按数值
SuperPriceValue 单笔超价(按数值) 0.02(加价 2 分钱)
SuperPriceRate 单笔超价(按比例) 取值范围 [0 - 1]
MaxOrderCount 最大拆单/委托次数 20
PlaceOrderInterval 下撤单时间间隔 单位为秒,如 15(每 15 秒检查并重新下撤单)

3. 实现超价委托与拆单的 Python 代码示例

以下是一个在 handlebar 中使用 algo_passorder 实现最新价超价 0.02 元买入,且每隔 15 秒重新下撤单拆单的完整策略示例:

#encoding:gbk

def init(ContextInfo):
    # 设定交易资金账号
    ContextInfo.accid = '6000000001'
    ContextInfo.set_account(ContextInfo.accid)
    # 设置股票池
    ContextInfo.set_universe(['000001.SZ'])

def handlebar(ContextInfo):
    # 仅在最后一根 K 线运行算法交易
    if not ContextInfo.is_last_bar():
        return
    
    stock_code = '000001.SZ'
    
    # 配置算法交易参数字典
    user_params = {
        "OrderType": 1,                # 1: 算法交易
        "PriceType": 5,                # 报价方式取最新价 (5)
        "SuperPriceType": 1,           # 0: 按比例, 1: 按固定数值超价
        "SuperPriceValue": 0.02,       # 固定超价 0.02 元
        "MaxOrderCount": 10,           # 最大下撤单拆单次数
        "PlaceOrderInterval": 15       # 下撤单间隔为 15 秒
    }
    
    # 调用 algo_passorder 下单
    # 参数:股票买入(23), 单股单账号(1101), 账号, 代码, prType(-1使用user_params的报价), 价格(-1), 数量(1000股), 策略名, quickTrade(2:立即触发), 备注, 算法参数, ContextInfo
    algo_passorder(
        23, 
        1101, 
        ContextInfo.accid, 
        stock_code, 
        -1, 
        -1, 
        1000, 
        'MyAlgoStrategy', 
        2, 
        'algo_order_001', 
        user_params, 
        ContextInfo
    )
    print(f"已对 {stock_code} 发起 algo_passorder 算法拆单任务")

4. 注意事项

  1. prType 填 -1:若要让 userOrderParam 中的 PriceType 和超价参数生效,algo_passorder 的第 5 个参数 prType 请传入 -1
  2. quickTrade 模式:实盘/模拟盘中建议设置 quickTrade = 12,使策略在调用时能即时触发下单逻辑。
  3. 撤单与挂单处理:设置 PlaceOrderInterval 后,系统会自动在间隔时间到达后对未成交部分进行撤单并重新按超价规则申报,直到达到 MaxOrderCount 或全部成交。