第四章:冰山订单原理

冰山订单的定义

冰山订单,这个名字挺形象的。就像冰山一样,水面上的只是一小部分,水面下藏着巨大的体积。

在交易领域,冰山订单是一种特殊的限价订单。它允许你指定一个总数量,但只向市场暴露其中一部分。暴露的部分叫「显示数量」,隐藏的部分叫「隐藏数量」。

我刚开始接触这个工具时,觉得它就是个「遮遮掩掩」的订单类型。后来在实盘中吃过亏才明白——这不是遮遮掩掩,这是生存智慧。

核心定义:冰山订单 = 显示数量 + 隐藏数量。市场只能看到显示数量,当显示数量成交后,系统自动从隐藏部分补充新的显示数量,直到全部成交或撤销。

隐藏数量与显示数量

这两个参数是冰山订单的灵魂。我习惯把它们比作「诱饵」和「弹药」。

显示数量——你愿意让市场看到的量。它像钓鱼时的浮漂,告诉别人「这里有鱼」,但鱼有多大,没人知道。

隐藏数量——你真正想成交的量。它藏在水面下,市场看不到。

举个例子:

总数量:100,000 股
显示数量:10,000 股
隐藏数量:90,000 股

系统会先挂出10,000股。成交后,再补10,000股。如此反复,直到100,000股全部成交。

嗯,这里要注意一个细节:每次补充的量,等于你设定的显示数量。不是随机补,也不是一次补完。

参数 含义 我常用的设置
显示数量 向市场暴露的量 总订单量的5%-15%
隐藏数量 实际想成交的量 总订单量的85%-95%
补充规则 成交后自动补充 每次补充=显示数量

我的经验:显示数量设得太小,比如1%,会导致频繁撤单和重新挂单,增加交易成本。我一般设在10%左右,既能隐藏意图,又不会太折腾系统。

冰山订单的应用场景

说白了,冰山订单就解决一个问题:大单不想被市场发现

你想想看,如果你要买100万股,直接挂个买单,盘口瞬间就暴露了。做市商和算法交易机器人会立刻抬价,你的成本直接飙升。

冰山订单怎么破这个局?

  • 场景一:大额建仓

    我做过一个案例,需要买入50万股的某只股票。如果用普通限价单,盘口会被吃掉好几档。用冰山订单,每次只露5000股,市场以为只是散户在买,价格波动小了很多。

  • 场景二:做市商护盘

    做市商需要在买卖两侧都挂单。如果挂得太厚,会被其他算法盯上。冰山订单可以让你在买一侧挂大单,但只显示一小部分,避免被「狙击」。

  • 场景三:减少市场冲击

    我曾经在流动性差的品种上吃过亏。一次挂了2万手,结果价格直接跳了3个档位。后来改用冰山订单,每次只露2000手,价格稳定多了。

避坑指南:我曾经在盘口深度很薄的市场用冰山订单,显示数量设得太小,结果每次补充时都被高频交易者「抢跑」。后来我调整了策略——在流动性好的市场,显示数量可以设小一点;流动性差的市场,显示数量要适当放大。

冰山订单的核心逻辑

我画了一张图,帮你理解冰山订单的运作流程:

冰山订单运作流程图 总订单池 100,000 股 显示部分 10,000 股(暴露) 隐藏部分 90,000 股(隐藏) 分配显示量 成交后补充 市场盘口 卖单:5,000 股 @ 10.02 卖单:8,000 股 @ 10.01 当前价:10.00 冰山显示:10,000 股 @ 9.99 其他买单:3,000 股 @ 9.98 其他买单:2,000 股 @ 9.97 挂单到盘口 成交后自动补充

这张图展示了冰山订单的核心逻辑:总订单池分配显示部分到市场盘口,成交后从隐藏部分补充,直到全部完成。

我个人习惯在实盘前先用模拟盘跑一遍冰山订单的参数。不同市场、不同品种,最优的显示比例都不一样。别偷懒,多测试几次。

小技巧:如果你用的是Python做算法交易,可以这样实现冰山订单的补充逻辑:

def iceberg_order(total_qty, display_qty, price):
    remaining = total_qty
    while remaining > 0:
        current_qty = min(display_qty, remaining)
        place_order(price, current_qty)
        remaining -= current_qty
        wait_for_fill()  # 等待成交
    # 全部成交

嗯,冰山订单的原理其实不复杂。但真正用好它,需要你对市场微观结构有感觉。什么时候该露,什么时候该藏,这功夫在诗外。


专注资料整理