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

QMT 算法交易进阶:如何配置 PINLINE 跟价与 FLOAT 盘口算法实现隐蔽下单?

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

问题描述

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

Title: qmt 算法交易进阶:PINLINE 跟价与 FLOAT 盘口算法实战

Question: 请教在 qmt 中如何通过 smart_algo_passorder 配置 PINLINE 跟价和 FLOAT 盘口算法实现隐蔽下单?

解决方案

QMT 算法交易进阶:PINLINE 跟价与 FLOAT 盘口算法实战

在量化交易或大资金拆单交易中,直接使用普通限价单或市价单容易暴露交易意图并对市场产生较大的冲击成本。QMT 平台的 smart_algo_passorder 智能算法交易接口提供了多种高级算法,其中 PINLINE(跟价算法)FLOAT(盘口算法) 是实现动态跟价与隐蔽下单的理想选择。


一、算法原理与适用场景

1. PINLINE(跟价算法)

  • 运行机制:动态跟踪设定的目标价格层级(如己方盘口、对方盘口或最新价),当价格满足条件时小批量挂单,兼顾成交效率与冲击成本。
  • 适用场景:希望挂单紧跟市场价格波动,同时限制最大参与比例(量比)的场景。

2. FLOAT(盘口算法)

  • 运行机制:贴合盘口深度进行挂单撤单,在盘口微观结构变动时自动调整订单位置,有效隐藏大单真实意图。
  • 适用场景:对价格敏感度高、流动性较好且需要极高隐蔽性的交易场景。

二、核心 API 参数说明

QMT 中通过 smart_algo_passorder 触发智能算法,其关键参数配置如下:

smart_algo_passorder(
    opType,              # 操作类型,如 23: 股票买入,24: 股票卖出
    orderType,           # 下单方式,如 1101: 单股单账号股/手下单
    accountID,           # 资金账号
    orderCode,           # 股票代码,如 '000001.SZ'
    prType,              # 选价类型(如 5: 最新价, 11: 指定价/模型价)
    price,               # 报价价格
    volume,              # 下单总量
    strategyName,        # 策略名称
    quickTrade,          # 触发机制 (0: 否, 1: 是)
    userOrderId,         # 投资备注 / 订单自定义 ID
    smartAlgoType,       # 智能算法类型 ('PINLINE' 或 'FLOAT')
    limitOverRate,       # 量比 (0-100)
    minAmountPerOrder,   # 单笔最小委托金额
    targetPriceLevel,    # 目标价格层级 (1: 己方一档, 6: 最新价, 7: 对方盘口等)
    ContextInfo
)

三、Python 实战代码示例

以下策略展示了如何在 QMT 中分别配置 PINLINEFLOAT 算法实现隐蔽下单:

#coding:gbk
import time

def init(ContextInfo):
    # 1. 设定资金账号
    ContextInfo.accID = '6000000105'
    ContextInfo.set_account(ContextInfo.accID)
    
    # 2. 设定标的股票
    ContextInfo.stock = '000001.SZ'
    ContextInfo.set_universe([ContextInfo.stock])
    
    # 标记订单是否已发送
    ContextInfo.order_sent = False

def handlebar(ContextInfo):
    # 只在最后一根 Bar 上驱动执行
    if not ContextInfo.is_last_bar() or ContextInfo.order_sent:
        return

    # 示例 1: 使用 PINLINE (跟价算法) 隐蔽买入
    # 参数配置:买入 20000 股,设置量比上限 15%,单笔最小金额 10000 元,挂单目标层级为己方一档 (1)
    smart_algo_passorder(
        23,                  # opType: 股票买入
        1101,                # orderType: 单股单账号股数下单
        ContextInfo.accID,   # 资金账号
        ContextInfo.stock,   # 代码
        5,                   # prType: 最新价
        -1,                  # price
        20000,               # volume: 总量 20,000 股
        "PINLINE_Buy",       # strategyName
        1,                   # quickTrade: 立即下单
        "PINLINE_Order_01",  # userOrderId
        "PINLINE",           # smartAlgoType: 跟价算法
        15,                  # limitOverRate: 量比 15%
        10000,               # minAmountPerOrder: 最小金额 10,000 元
        1,                   # targetPriceLevel: 己方盘口1档
        ContextInfo
    )
    print("已成功提交 PINLINE 跟价算法下单任务")

    # 示例 2: 使用 FLOAT (盘口算法) 隐蔽卖出
    # 参数配置:卖出 30000 股,设置量比上限 20%,单笔最小金额 5000 元
    smart_algo_passorder(
        24,                  # opType: 股票卖出
        1101,                # orderType
        ContextInfo.accID,
        ContextInfo.stock,
        5,                   # prType
        -1,
        30000,               # volume: 总量 30,000 股
        "FLOAT_Sell",        # strategyName
        1,                   # quickTrade
        "FLOAT_Order_01",    # userOrderId
        "FLOAT",             # smartAlgoType: 盘口算法
        20,                  # limitOverRate: 量比 20%
        5000,                # minAmountPerOrder: 最小金额 5,000 元
        7,                   # targetPriceLevel: 对方盘口
        ContextInfo
    )
    print("已成功提交 FLOAT 盘口算法下单任务")

    ContextInfo.order_sent = True

四、注意事项与最佳实践

  1. 量比控制 (limitOverRate):建议将量比限制在 10% - 30% 之间,过高会导致盘口冲击过大暴露意图,过低可能导致行情剧烈变化时成交完成率不足。
  2. 最小委托金额 (minAmountPerOrder):合理设置单笔最小委托金额,避免产生过多碎单,降低交易所报单频率超限风险。
  3. 账户绑定:务必在 init 中调用 ContextInfo.set_account(),保证交易主推和任务状态的回调响应正常。