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

QMT 智能算法交易:PINLINE 跟价算法如何配置参数效果最好?

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

问题描述

qmt 算法交易实战:跟价算法 (PINLINE) 的参数配置与执行效率分析
qmt 智能算法中的 PINLINE 跟价算法怎么配置参数效果最好?

解决方案

QMT 智能算法交易:PINLINE 跟价算法最佳参数配置与实战指南

在量化交易中,大单直接申报容易对市场造成较大的冲击成本(Slippage)。QMT 平台提供了强大的智能算法交易接口,其中 PINLINE(跟价算法) 是一种通过紧密跟踪盘口价格变化、动态调整委托价格来争取高执行效率和低滑点的算法。本文将详细解析如何在 QMT 中配置 PINLINE 算法以达到最佳执行效果。


1. PINLINE 算法的核心逻辑

PINLINE(跟价算法)的核心目标是紧跟盘口价格。它会根据设定的基准价格和盘口动态,将大单拆分成小单,并在盘口价格对己方有利或处于特定档位时进行挂单。相比于 TWAP(时间加权)和 VWAP(成交量加权),PINLINE 更加注重价格敏感度,适合在趋势明显或波动剧烈的行情中争取更好的成交价格。


2. 核心 API 接口:smart_algo_passorder

在 QMT Python API 中,调用智能算法需要使用 ContextInfo.smart_algo_passorder() 函数。其基本格式如下:

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

PINLINE 关键参数解析与最佳配置推荐:

  1. smartAlgoType (智能算法类型): 必须设置为 'PINLINE'
  2. limitOverRate (量比限制):
    • 释义: 限制算法委托量占市场同期成交量的最大比例(取值范围 0-100)。
    • 最佳配置: 建议设置为 1020。若设置过高(如 >30),拆单委托过大,容易暴露交易意图并引起价格反弹;若设置过低(如 <5),在成交量低迷时可能导致无法按时完成目标仓位。
  3. minAmountPerOrder (单笔最小委托金额):
    • 释义: 限制单笔子单的最小发送金额(取值范围 0-100000 元)。
    • 最佳配置: 建议设置为 1000020000。避免拆单过碎产生过多的无效报撤单,同时符合交易所防范异常交易的监管要求。
  4. targetPriceLevel (目标价格档位):
    • 释义: 算法跟踪的盘口目标。可选值:1(己方盘口1)、2(己方盘口2)... 6(最新价)、7(对方盘口)。
    • 最佳配置:
      • 被动跟价(追求低成本): 设为 1(己方一档挂单等待成交)。
      • 主动跟价(追求高执行率): 设为 6(最新价)或 7(对方一档,即买入时用卖一价,卖出时用买一价)。
  5. startTimeendTime (执行时间窗口):
    • 最佳配置: 避开开盘前 15 分钟(09:30 - 09:45)和收盘前 15 分钟(14:45 - 15:00)的剧烈波动期。建议将时间窗口设在流动性相对平稳的区间,例如 '09:45:00''14:45:00'

3. PINLINE 算法 Python 实战代码示例

以下是一个在 QMT 中使用 PINLINE 算法买入平安银行(000001.SZ)的完整策略示例:

#coding:gbk
import time

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

def handlebar(ContextInfo):
    # 仅在最后一根 K 线(盘中实时行情)触发算法交易
    if not ContextInfo.is_last_bar():
        return
    
    # 设定交易参数
    opType = 23          # 股票买入
    orderType = 1101     # 单股、单账号、普通、股方式下单
    volume = 50000       # 目标买入 50,000 股
    prType = 5           # 最新价选价
    modelprice = -1      # 非指定价,传入 -1
    
    # 智能算法专属参数
    smartAlgoType = 'PINLINE'  # 跟价算法
    limitOverRate = 15         # 量比控制在 15%
    minAmountPerOrder = 10000  # 单笔子单不低于 10,000 元
    targetPriceLevel = 6       # 跟踪最新价进行动态调整
    startTime = '09:45:00'
    endTime = '14:30:00'
    
    # 发起智能算法交易任务
    ContextInfo.smart_algo_passorder(
        opType, orderType, ContextInfo.accid, ContextInfo.stock, 
        prType, modelprice, volume, 
        "Pinline_Strategy", 1, "remark_pinline", 
        smartAlgoType, limitOverRate, minAmountPerOrder, targetPriceLevel,
        startTime, endTime, ContextInfo
    )
    
    print(f"已提交 PINLINE 算法交易任务:买入 {ContextInfo.stock} {volume} 股")

4. 执行效率与滑点控制分析

为什么 PINLINE 能够提高执行效率?

  • 动态撤单重挂机制: 当市场价格偏离目标档位时,PINLINE 会自动撤销未成交的挂单,并按照最新的盘口价格重新申报。这保证了资金始终暴露在最容易成交的黄金价格区间。
  • 隐蔽性高: 通过 limitOverRate 严格限制子单在市场总成交中的占比,大单被化整为零,有效避免了“大单压盘”或“大单托盘”引发的跟风盘,从而锁定了更优的建仓均价。

调优建议:

  • 小市值/低流动性股票: 调低 limitOverRate(如 5%-10%),拉长执行时间窗口,防止算法自身推高股价。
  • 大市值/高流动性股票: 可适当调高 limitOverRate(如 20%),并将 targetPriceLevel 设为对方盘口(7),以牺牲极小的点差为代价换取极高的成交确定性。