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

QMT 冰山委托 (ICEBERG) 算法下单参数详解与应用

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

问题描述

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

Title: QMT 冰山委托 (ICEBERG) 算法下单参数详解与应用

Question: 如何在 QMT 中配置 smart_algo_passorder 的冰山算法实现大单隐蔽挂单?

解决方案

QMT 冰山委托 (ICEBERG) 算法下单参数详解与应用

在执行大额委托时,直接大单挂单容易暴露交易意图并对盘口造成较大冲击。QMT 提供了 冰山委托 (ICEBERG) 算法,将大单拆分为多笔小单分批挂出,以实现隐蔽挂单、降低冲击成本的目的。


1. 什么是冰山委托 (ICEBERG)

冰山委托是一种隐藏真实交易量的拆单算法。它仅在盘口展示极小一部分委托量(冰山一角),当该部分成交完毕后,算法会自动补充下一批小单挂单,直至总目标委托量全部完成。


2. smart_algo_passorder 函数接口

在 QMT 中,调用冰山算法需使用 smart_algo_passorder 函数。其基本调用格式如下:

smart_algo_passorder(
    opType,
    orderType,
    accountID,
    orderCode,
    prType,
    price,
    volume,
    strategyName,
    quickTrade,
    userOrderId,
    smartAlgoType,
    limitOverRate,
    minAmountPerOrder,
    targetPriceLevel,
    ContextInfo
)

冰山算法核心参数说明

参数名称 类型 说明 示例/取值
opType int 操作类型 23(买入)、24(卖出)
orderType int 下单方式 1101(单股单账号按股/手)
prType int 选价类型 11(指定价/模型价)、5(最新价)
price float 下单价格 prType=11 时填写具体限价
volume int 总委托数量 欲执行的总股数(如 100000)
smartAlgoType str 算法类型 固定填 'ICEBERG'
limitOverRate int 量比限制 范围 0-100
minAmountPerOrder int 单笔最小委托金额 单位:元,默认 0
targetPriceLevel int 目标价格层级 1-己方盘口1,6-最新价,7-对方盘口

3. 完整示例代码:冰山算法买入

以下示例展示如何在行情触发时,使用 冰山算法 分批买入 50,000 股平安银行(000001.SZ)。

#encoding:gbk
import time

def init(ContextInfo):
    ContextInfo.accID = '6000000105'
    ContextInfo.set_account(ContextInfo.accID)
    ContextInfo.set_universe(['000001.SZ'])

def handlebar(ContextInfo):
    # 仅在最后一根 Bar 执行下单逻辑
    if not ContextInfo.is_last_bar():
        return
    
    stock_code = '000001.SZ'
    total_volume = 50000
    limit_price = 12.50  # 买入限价
    
    # 调用 smart_algo_passorder 执行冰山算法
    # 目标价格层级 targetPriceLevel=1 (己方买一价悬挂/补充)
    smart_algo_passorder(
        23,                        # opType: 股票买入
        1101,                      # orderType: 单股单账号股数下单
        ContextInfo.accID,         # accountID: 资金账号
        stock_code,                # orderCode: 股票代码
        11,                        # prType: 指定价
        limit_price,               # price: 下单价格
        total_volume,              # volume: 买入总数量
        'IcebergStrategy',         # strategyName: 策略名称
        1,                         # quickTrade: 立即下单
        'remark_iceberg_01',       # userOrderId: 备注信息
        'ICEBERG',                 # smartAlgoType: 冰山算法
        20,                        # limitOverRate: 参与量比20%
        10000,                     # minAmountPerOrder: 每次挂单最小金额10000元
        1,                         # targetPriceLevel: 己方盘口1
        ContextInfo
    )
    print(f"已下发冰山委托买入任务:{stock_code}, 总量:{total_volume}, 限价:{limit_price}")

4. 注意事项

  1. 适用场景:适合资金量较大、不希望引起市场价格大幅波动的买卖场景。
  2. 账户模式:智能算法下单仅在 实盘模式 下生效,回测模式不进行真实智能拆单模拟。
  3. 任务管理:下发算法任务后,可以通过 get_trade_detail_data(accountID, strAccountType, 'TASK') 查询任务运行状态,或通过 pause_task / cancel_task 对算法任务进行暂停与撤销。