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

QMT大单拆单实战:冰山算法(ICEBERG)与盘口算法(FLOAT)哪个成本更低?

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

问题描述

QMT 算法交易:冰山算法(ICEBERG)与盘口算法(FLOAT)的执行效率对比
在 QMT 实盘大单拆单时,冰山算法和盘口算法哪一个成本更低,如何配置参数?

解决方案

QMT 算法交易:冰山算法(ICEBERG)与盘口算法(FLOAT)执行效率与实盘配置对比

在量化实盘交易中,当面临大单需要拆分下单以减少市场冲击成本时,选择合适的智能算法至关重要。QMT 平台提供了多种智能算法,其中**冰山算法(ICEBERG)盘口算法(FLOAT)**是两种非常经典的拆单与盘口跟踪算法。本文将从执行效率、交易成本及参数配置三个维度为您深度解析。


一、 冰山算法(ICEBERG) vs 盘口算法(FLOAT)核心对比

1. 冰山算法(ICEBERG)

  • 核心逻辑:将大额委托单拆分成若干个小额历史委托,只在盘口公开显示其中一小部分(即“冰山角”),当公开显示的部分成交后,再自动释放下一部分。
  • 优势隐蔽性极强。能有效防止其他市场参与者(如高频交易者)察觉大单意图,从而避免市场价格被推高或打压。
  • 劣势:由于需要等待前一笔小单成交后才挂出下一笔,整体执行速度较慢,在行情剧烈波动时可能面临错失行情的风险。
  • 适用场景:流动性一般、单笔委托量极大、对隐蔽性要求极高的中长期建仓或减仓。

2. 盘口算法(FLOAT)

  • 核心逻辑:动态跟踪盘口深度(如买一至买五、卖一至卖五),根据盘口挂单量和最新价的变化,实时调整自身的挂单价格和数量,使委托始终处于盘口的最优位置。
  • 优势执行效率极高。能够快速捕捉盘口瞬时流动性,成交速度快,能有效跟紧市场最新价格。
  • 劣势:由于频繁在盘口暴露和调整挂单,隐蔽性相对较弱,对于超大单可能会引起盘口微观结构的变化。
  • 适用场景:追求快速成交、行情波动较大、单笔委托量中等或流动性较好的标的。

3. 哪个成本更低?

  • 冲击成本控制冰山算法(ICEBERG)更低。它通过极佳的隐蔽性,最大程度降低了因大单暴露引起的非理性价格波动。
  • 机会成本控制盘口算法(FLOAT)更低。在快速上涨或下跌的行情中,盘口算法能更迅速地完成交易,避免因延迟成交而产生的价格滑点损失。

二、 QMT API 参数配置指南

在 QMT 中,这两种算法均通过 ContextInfo.smart_algo_passorder 接口执行。以下是关键参数的配置逻辑:

1. 关键参数解析

  • smartAlgoType: 算法类型。冰山算法传入 'ICEBERG',盘口算法传入 'FLOAT'
  • limitOverRate: 量比控制(0-100),限制算法委托量占市场成交量的最大比例,防止因自身交易占比过高推高成本。
  • minAmountPerOrder: 智能算法单笔最小委托金额(0-100000元),用于控制拆单后的单笔下限。
  • targetPriceLevel: 仅针对冰山算法有效。用于指定冰山公开挂单的价格档位:
    • 1:己方盘口1
    • 2:己方盘口2
    • 3:己方盘口3
    • 4:己方盘口4
    • 5:己方盘口5
    • 6:最新价
    • 7:对方盘口

三、 Python 实盘代码示例

以下是在 QMT 中分别调用冰山算法盘口算法进行买入的 Python 代码配置模板:

#coding:gbk

def init(ContextInfo):
    # 设定交易账号
    ContextInfo.accid = '6000000105'
    ContextInfo.set_account(ContextInfo.accid)

def handlebar(ContextInfo):
    if not ContextInfo.is_last_bar():
        return
    
    stock_code = '000001.SZ' # 平安银行
    total_volume = 100000    # 计划买入10万股
    
    # ==========================================
    # 配置 1:冰山算法(ICEBERG)—— 追求低冲击成本、高隐蔽性
    # ==========================================
    # 参数说明:
    # smartAlgoType = 'ICEBERG'
    # limitOverRate = 15 (量比控制在15%以内)
    # minAmountPerOrder = 20000 (单笔委托不低于2万元)
    # targetPriceLevel = 1 (挂在己方买一档,被动等待成交)
    # 有效时间:09:30:00 至 14:30:00
    
    ContextInfo.smart_algo_passorder(
        23, 1101, ContextInfo.accid, stock_code, 5, -1, total_volume, 
        "Iceberg_Strategy", 1, "remark_iceberg", 
        "ICEBERG", 15, 20000, 1, 
        '09:30:00', '14:30:00', ContextInfo
    )
    
    # ==========================================
    # 配置 2:盘口算法(FLOAT)—— 追求高执行效率、快速成交
    # ==========================================
    # 参数说明:
    # smartAlgoType = 'FLOAT'
    # limitOverRate = 25 (允许量比放大至25%)
    # minAmountPerOrder = 10000 (单笔委托不低于1万元)
    # targetPriceLevel = 0 (盘口算法无需此参数,可缺省或填0)
    # 有效时间:09:30:00 至 14:55:00
    
    # ContextInfo.smart_algo_passorder(
    #     23, 1101, ContextInfo.accid, stock_code, 5, -1, total_volume, 
    #     "Float_Strategy", 1, "remark_float", 
    #     "FLOAT", 25, 10000, 0, 
    #     '09:30:00', '14:55:00', ContextInfo
    # )

四、 实盘选择建议

  1. 大盘蓝筹股 / 流动性极佳:建议优先选择 盘口算法(FLOAT),利用其高执行效率快速吃单,滑点极小。
  2. 中小创 / 垃圾股 / 流动性较差:建议优先选择 冰山算法(ICEBERG),挂在己方买一或买二档被动承接,防止大单直接拉爆股价。
  3. 急于建仓 / 尾盘交易:选择 盘口算法(FLOAT),并将量比限制(limitOverRate)适当调高,确保在收盘前完成目标仓位。