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

QMT 智能算法下单:如何使用 smart_algo_passorder 实现 VWAP 算法拆单?

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

问题描述

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

Title: QMT 智能算法下单:smart_algo_passorder 实现 VWAP 拆单

Question: 请问如何使用 QMT 的 smart_algo_passorder 接口配置 VWAP 算法进行大单拆单下单?

解决方案

QMT 智能算法下单:使用 smart_algo_passorder 实现 VWAP 拆单

在机构和量化交易中,直接挂大单容易产生较大的市场冲击成本并暴露交易意图。为了实现隐藏意图、降低冲击成本,我们可以使用 QMT 平台提供的 smart_algo_passorder 接口配置智能算法交易(如 VWAP、TWAP 等)进行自动拆单。


一、什么是 VWAP 算法?

VWAP(Volume-Weighted Average Price,成交量加权平均价格) 是一种根据历史预测成交量分布来分割大单的拆单算法。它会在设定的时间段内,按照市场的成交量分布曲线将大单拆分并分批挂出,力求使最终的平均成交价格贴近市场的 VWAP 均价。


二、smart_algo_passorder 接口说明

1. 函数定义与核心参数

smart_algo_passorder(opType, orderType, accountid, orderCode, prType, modelprice, volume, strategyName, quickTrade, userOrderId, smartAlgoType, limitOverRate, minAmountPerOrder, [targetPriceLevel, startTime, endTime], ContextInfo)

2. 关键参数详解

  • opType:操作类型。股票买入填 23,股票卖出填 24;融资买入填 27,融券卖出填 28 等。
  • orderType:下单方式。单股单账号股数下单填 1101,金额下单填 1102
  • accountid:资金账号(字符串)。
  • orderCode:标的代码(如 '000001.SZ')。
  • prType:选价类型。-1 表示按默认类型/挂单类型,5 为最新价,11 为模型指定价。
  • modelprice:下单价格(在指定价时生效,其他类型填 -1)。
  • volume:下单总数量(股数或金额)。
  • smartAlgoType:智能算法类型,字符串格式。填 'VWAP' 即开启 VWAP 算法。
  • limitOverRate:量比上限(0-100),控制拆单成交量占市场成交量的最大比例限制。
  • minAmountPerOrder:最小单笔委托金额(单位:元),防止拆单过小,填 0 表示不限制。
  • startTime / endTime:算法运行的开始和截止时间,格式如 '09:30:00', '14:30:00'

三、Python 源码示例:VWAP 算法拆单

以下是在 QMT 策略中,使用 smart_algo_passorder 接口进行 VWAP 拆单买入股票的完整策略示例:

#encoding:gbk

def init(ContextInfo):
    # 设置交易账号
    ContextInfo.account_id = '6000000105'
    ContextInfo.set_account(ContextInfo.account_id)
    
    # 设置股票池
    ContextInfo.stock = '000001.SZ'
    ContextInfo.set_universe([ContextInfo.stock])

def handlebar(ContextInfo):
    # 仅在最后一根 K 线/最新 tick 触发一次下单逻辑
    if not ContextInfo.is_last_bar():
        return
    
    account = ContextInfo.account_id
    stock = ContextInfo.stock
    
    # 策略参数配置
    opType = 23             # 股票买入
    orderType = 1101        # 单股、单账号、普通股数下单
    prType = 5              # 选价类型:最新价
    price = -1              # prType=5 时 price 可填 -1
    total_volume = 100000   # 拟买入总股数:10万股
    
    strategy_name = "VWAP_Strategy"
    quickTrade = 1          # 立即触发下单
    user_order_id = "vwap_buy_001"
    
    # VWAP 智能算法配置
    smartAlgoType = "VWAP"  # 算法类型为 VWAP
    limitOverRate = 15      # 限制参与量比不超过市场成交量的 15%
    minAmount = 10000       # 单笔拆单最小金额 10,000 元
    targetLevel = 1         # 盘口档位:己方盘口1(可缺省或按需设置)
    start_time = '09:30:00' # 算法开始执行时间
    end_time = '14:30:00'   # 算法执行截止时间
    
    print(f"开始发送 VWAP 智能拆单指令,标的: {stock}, 总量: {total_volume} 股")
    
    # 调用智能算法交易接口
    smart_algo_passorder(
        opType,
        orderType,
        account,
        stock,
        prType,
        price,
        total_volume,
        strategy_name,
        quickTrade,
        user_order_id,
        smartAlgoType,
        limitOverRate,
        minAmount,
        targetLevel,
        start_time,
        end_time,
        ContextInfo
    )

四、注意事项与最佳实践

  1. 绑定交易账号:必须在 init() 中通过 ContextInfo.set_account() 绑定账号,确保能正确接收算法任务的委托主推。
  2. 运行模式:智能算法下单在实盘运行模式或模型交易中生效,回测模式下算法拆单无实际模拟意义。
  3. 执行时间控制:设置合理的 startTimeendTime,预留足够的执行窗口(如避开集合竞价或尾盘剧烈波动期),使 VWAP 拆单有充裕的时间分批平滑成交。