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

qmt 平台如何配置算法交易中的随机量拆单(OTP_RANDVOLUME)模式?

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

问题描述

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

Title: qmt 算法交易教程:如何配置随机量拆单 (OTP_RANDVOLUME) 模式?

Question: 如何在 qmt 中通过 algo_passorder 发起随机量隐藏拆单?

解决方案

qmt 算法交易教程:如何配置随机量拆单 (OTP_RANDVOLUME) 模式?

在执行大额订单交易时,直接挂出大单容易暴露交易意图并引发市场跟风,从而增加冲击成本。QMT 平台提供了 algo_passorder 算法交易接口,支持通过设置 OrderType: 2(即 OTP_RANDVOLUME 随机量交易模式)实现自动拆单与随机委托,有效隐藏真实交易意图。


1. 核心接口介绍:algo_passorder

在 QMT 中,通过 algo_passorder 传入自定义参数字典 userOrderParam,可以覆盖默认的交易面板参数,实现灵活的算法拆单控制。

接口参数说明:

  • opType: 操作类型(如 23 代表股票买入,24 代表股票卖出)。
  • orderType: 下单方式(如 1101 单股单账号股/手方式下单)。
  • accountID: 资金账号。
  • orderCode: 股票代码(如 '000001.SZ')。
  • prType: 报价类型(设置 -1 时使用 userOrderParam 中指定的报价方式)。
  • modelprice: 下单价格(配合限价或指定价使用)。
  • volume: 总下单量。
  • strategyName: 策略名称。
  • quickTrade: 快速交易标志(12 立即触发)。
  • userOrderId: 自定义委托 ID / 备注。
  • userOrderParam: 自定义算法交易参数字典(核心设置)。

2. 随机量拆单(OTP_RANDVOLUME)关键参数配置

userOrderParam 字典中,通过配置以下关键字段来启动随机拆单逻辑:

参数名 类型 说明 示例值
OrderType int 交易模式,0: 普通交易,1: 算法交易,2: 随机量交易 (OTP_RANDVOLUME) 2
MaxOrderCount int 最大拆单/委托次数 20
SingleNumMin int 单笔下单量最小值 100
SingleNumMax int 单笔下单量最大值 500
PlaceOrderInterval int 下撤单时间间隔(秒) 10
PriceType int 报价方式(同 prType,如 5 最新价,11 指定价) 5

3. Python 源码示例

以下是在 handlebar 中通过 algo_passorder 发起随机量隐藏拆单的完整 Python 示例:

import time

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

def handlebar(ContextInfo):
    # 仅在最后一根 K 线且为最新 Tick 时触发
    if not ContextInfo.is_last_bar():
        return
    
    # 配置随机量拆单参数
    user_param = {
        "OrderType": 2,              # 2 代表 OTP_RANDVOLUME 随机量交易模式
        "MaxOrderCount": 15,          # 最多拆分为 15 次委托
        "SingleNumMin": 100,          # 单笔最小委托量 100 股
        "SingleNumMax": 500,          # 单笔最大委托量 500 股
        "PlaceOrderInterval": 10,     # 每次下单间隔 10 秒
        "PriceType": 5                # 使用最新价挂单
    }
    
    # 发起买入算法委托:以最新价买入 3000 股平安银行
    algo_passorder(
        23,                           # opType: 股票买入
        1101,                         # orderType: 单股单账号
        ContextInfo.account,          # 资金账号
        '000001.SZ',                  # 股票代码
        -1,                           # prType: -1 表示使用 user_param 中的 PriceType
        -1,                           # modelprice: 任意值(使用最新价时不生效)
        3000,                         # volume: 买入总数量
        'rand_volume_strategy',       # strategyName: 自定义策略名
        1,                            # quickTrade: 1 立即触发
        'rand_order_001',             # userOrderId: 用户自设委托ID
        user_param,                   # 自定义算法参数
        ContextInfo
    )
    
    print("已成功提交随机量拆单任务!")

4. 注意事项

  1. 权限开通:使用 algo_passorder 算法交易功能前,请确保交易柜台及客户端已开通对应的程序化算法交易权限。
  2. 单笔下单限制:设置的 SingleNumMinSingleNumMax 需符合交易所对单笔申报数量的限制(如 A 股需为 100 股的整数倍)。
  3. 撤单机制:若上一笔随机委托未在 PlaceOrderInterval 设定的时间内成交,系统会自动执行撤单并重新按随机量挂单。