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

qmt 平台如何配置 smart_algo_passorder 的 VP 跟量与 PINLINE 跟价算法?

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

问题描述



Title: qmt 智能算法交易:VP 跟量与 PINLINE 跟价参数配置指南

Question: qmt 平台的 smart_algo_passorder 如何配置 VP 跟量和 PINLINE 跟价算法?

解决方案

qmt 智能算法交易:VP 跟量与 PINLINE 跟价参数配置指南

在量化交易中,为了减少大单对市场的冲击成本(Market Impact),投资者通常会使用智能算法交易。QMT 平台提供了强大的 smart_algo_passorder 接口,支持包括 VP(跟量)PINLINE(跟价) 在内的多种智能拆单算法。本文将为您详细解析这两种算法的原理、参数配置方法及 Python 代码实现。


1. 什么是 VP 算法与 PINLINE 算法?

  • VP(Volume Participation,跟量算法)

    • 原理:根据市场实时的成交量变化,按照设定的**量比(Participation Rate)**同比例进行跟单委托。市场成交活跃时多投,市场冷清时少投,使自己的交易量曲线与市场真实成交量曲线保持一致。
    • 适用场景:流动性较好、日内成交量波动较大的标的,旨在获取市场成交量加权平均价(VWAP)。
  • PINLINE(跟价算法)

    • 原理:根据设定的目标价格区间或盘口价格变化,动态调整委托价格和频率,紧密跟踪价格走势进行交易。
    • 适用场景:对价格敏感度高、希望在特定价格区间内快速完成建仓或平仓的交易场景。

2. smart_algo_passorder 接口定义

在 QMT 中,智能算法交易通过以下函数触发:

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

核心参数说明:

  • opType:操作类型。股票买入填 23,股票卖出填 24;信用账户买入填 33,卖出填 34
  • orderType:下单方式。常用 1101(单股单账号股数下单)或 1102(金额下单)。
  • smartAlgoType:智能算法类型。VP 算法填 "VP"PINLINE 算法填 "PINLINE"
  • limitOverRate:量比(参与率)。数据范围 0 - 100(代表 0% - 100%)。对于 VP 算法,此参数决定了跟单的比例。
  • minAmountPerOrder:单笔最小委托金额,范围 0 - 100000,默认填 0
  • startTime / endTime(可选):算法生效的起止时间,格式如 "09:30:00", "14:30:00"

3. Python 代码配置示例

以下是在 QMT 策略中配置 VP 跟量PINLINE 跟价 的完整 Python 示例:

#coding:gbk

def init(ContextInfo):
    # 设定交易账号
    ContextInfo.accid = '6000000105'
    ContextInfo.set_account(ContextInfo.accid)
    ContextInfo.stock = '000001.SZ' # 平安银行
    ContextInfo.set_universe([ContextInfo.stock])

def handlebar(ContextInfo):
    if not ContextInfo.is_last_bar():
        return
        
    # 示例 1:配置 VP(跟量)算法
    # 目标:买入 50000 股,使用 VP 算法,设定量比(参与率)为 15%,最小委托金额为 0
    # 运行时间限制在 09:30:00 至 14:30:00
    print("触发 VP 跟量算法交易...")
    smart_algo_passorder(
        23,                         # opType: 股票买入
        1101,                       # orderType: 按股数下单
        ContextInfo.accid,          # 资金账号
        ContextInfo.stock,          # 股票代码
        5,                          # prType: 最新价
        -1,                         # modelprice: 非指定价填 -1
        50000,                      # volume: 总买入量 50000 股
        "VP_Strategy",              # strageName: 策略名
        1,                          # quickTrade: 1 立即触发
        "remark_vp",                # userid: 投资备注
        "VP",                       # smartAlgoType: 算法类型为 VP
        15,                         # limitOverRate: 量比 15%
        0,                          # minAmountPerOrder: 最小委托金额 0
        0,                          # targetPriceLevel: 缺省
        '09:30:00',                 # startTime: 开始时间
        '14:30:00',                 # endTime: 截止时间
        ContextInfo
    )

    # 示例 2:配置 PINLINE(跟价)算法
    # 目标:卖出 30000 股,使用 PINLINE 算法,量比设定为 10%
    print("触发 PINLINE 跟价算法交易...")
    smart_algo_passorder(
        24,                         # opType: 股票卖出
        1101,                       # orderType: 按股数下单
        ContextInfo.accid,          # 资金账号
        ContextInfo.stock,          # 股票代码
        5,                          # prType: 最新价
        -1,                         # modelprice: -1
        30000,                      # volume: 总卖出量 30000 股
        "Pinline_Strategy",         # strageName: 策略名
        1,                          # quickTrade: 1 立即触发
        "remark_pinline",           # userid: 投资备注
        "PINLINE",                  # smartAlgoType: 算法类型为 PINLINE
        10,                         # limitOverRate: 量比 10%
        0,                          # minAmountPerOrder: 最小委托金额 0
        ContextInfo
    )

4. 常见问题与注意事项

  1. 实盘权限:智能算法交易(smart_algo_passorder)通常需要券商端开通相应的算法交易权限(如算法总线服务),在模拟运行或未授权的实盘账户下调用可能会报错或降级为普通委托。
  2. 量比(limitOverRate)的设置:量比设置过大(如 >30%)会失去防冲击的效果,设置过小(如 <5%)可能导致在算法截止时间内无法完成目标交易量。
  3. 时间区间覆盖:建议合理设置 startTimeendTime,避开开盘集合竞价(09:15-09:25)和收盘集合竞价(14:57-15:00)等高波动、非连续双向竞价时段。