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

QMT 平台如何配置 smart_algo_passorder 智能算法交易?(TWAP/VWAP 实战详解)

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

问题描述

qmt 智能算法交易:smart_algo_passorder 实战配置与效率分析
QMT智能算法下单smart_algo_passorder中的TWAP和VWAP算法应该怎么配置参数?

解决方案

QMT 智能算法交易 smart_algo_passorder 实战配置指南

在量化交易中,面对大额订单时,直接下单容易对市场造成冲击,增加交易成本。QMT 平台提供了 smart_algo_passorder 接口,支持 TWAP(时间加权平均价格)VWAP(成交量加权平均价格) 等智能算法,通过科学的拆单策略实现无人值守的算法交易。


一、 smart_algo_passorder 核心参数解析

要配置 TWAP 或 VWAP 算法,需要正确填写 smart_algo_passorder 的参数。其完整调用格式如下:

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

1. 算法专用核心参数

  • smartAlgoType (string): 智能算法类型。配置 TWAP 填 "TWAP",配置 VWAP 填 "VWAP"
  • limitOverRate (int): 量比控制,数据范围 0 - 100。用于限制算法执行时的成交量占比,防止因交易过激暴露意图。
  • minAmountPerOrder (int): 智能算法单笔最小委托金额,数据范围 0 - 100000,默认设为 0
  • startTime (string, 可选): 算法开始执行时间,格式为 "HH:MM:SS"(如 "09:30:00")。
  • endTime (string, 可选): 算法截止执行时间,格式为 "HH:MM:SS"(如 "14:30:00")。

2. 基础交易参数

  • opType (int): 操作类型。股票买入填 23,股票卖出填 24;信用账户买入填 33,卖出填 34
  • orderType (int): 下单方式。单股单账号股数下单填 1101,金额下单填 1102
  • prType (int): 报价类型。通常填 5(最新价)或 11(指定价/模型价)。

二、 TWAP 与 VWAP 实战配置示例

1. TWAP 算法配置示例(时间加权)

TWAP 算法将订单均匀地分布在设定的时间段内执行,适合市场成交量分布较为均匀或波动较小的标的。

#coding:gbk
def init(ContextInfo):
    ContextInfo.accid = '600000105' # 替换为您的资金账号
    ContextInfo.set_account(ContextInfo.accid)

def handlebar(ContextInfo):
    if not ContextInfo.is_last_bar():
        return
    
    # 示例:使用 TWAP 算法买入 50000 股平安银行
    # 限制量比为 20%,最小委托金额为 0,执行时间段为 09:30:00 至 14:00:00
    smart_algo_passorder(
        23,                  # opType: 股票买入
        1101,                # orderType: 单股单账号股数下单
        ContextInfo.accid,   # accountid
        '000001.SZ',         # orderCode: 平安银行
        5,                   # prType: 最新价
        -1,                  # modelprice: 非指定价填 -1
        50000,               # volume: 50000股
        "MyStrategy",        # strageName: 策略名
        1,                   # quickTrade: 1 表示立即触发
        "remark_twap",       # userid: 投资备注
        "TWAP",              # smartAlgoType: TWAP算法
        20,                  # limitOverRate: 量比 20%
        0,                   # minAmountPerOrder: 最小金额 0
        0,                   # targetPriceLevel: 冰山算法参数,此处填 0 占位
        '09:30:00',          # startTime: 开始时间
        '14:00:00',          # endTime: 截止时间
        ContextInfo
    )

2. VWAP 算法配置示例(成交量加权)

VWAP 算法根据历史成交量分布预测,在成交量大的时段多下单,成交量小时段少下单,力求使最终成交均价逼近市场成交量加权均价。

#coding:gbk
def init(ContextInfo):
    ContextInfo.accid = '600000105'
    ContextInfo.set_account(ContextInfo.accid)

def handlebar(ContextInfo):
    if not ContextInfo.is_last_bar():
        return
    
    # 示例:使用 VWAP 算法卖出 30000 股平安银行
    # 限制量比为 15%,最小委托金额为 1000,执行时间段为 10:00:00 至 14:30:00
    smart_algo_passorder(
        24,                  # opType: 股票卖出
        1101,                # orderType: 股数下单
        ContextInfo.accid,   # accountid
        '000001.SZ',         # orderCode
        5,                   # prType: 最新价
        -1,                  # modelprice
        30000,               # volume
        "MyStrategy",        # strageName
        1,                   # quickTrade
        "remark_vwap",       # userid
        "VWAP",              # smartAlgoType: VWAP算法
        15,                  # limitOverRate: 量比 15%
        1000,                # minAmountPerOrder: 最小金额 1000 元
        0,                   # targetPriceLevel
        '10:00:00',          # startTime
        '14:30:00',          # endTime
        ContextInfo
    )

三、 算法交易效率分析与实战建议

  1. 量比控制 (limitOverRate) 的艺术
    • 对于流动性极佳的宽基指数成分股(如沪深300),量比可设在 20% - 30% 之间,以加快执行速度。
    • 对于中稀缺或小盘股,建议将量比控制在 10% 以内,避免算法拆单本身对盘口造成二次冲击。
  2. 时间窗口 (startTime / endTime) 的选择
    • 尽量避开开盘前 15 分钟(09:30 - 09:45)和收盘前 15 分钟(14:45 - 15:00)的市场剧烈波动期,除非使用特定的 MOC(尾盘)算法。
    • 将执行区间拉长(如设置 2-3 小时),能让 TWAP/VWAP 算法更充分地平摊成本,获取更平滑的均价。