4. 订单类型详解:市价单、限价单、冰山订单、TWAP、VWAP、Peg订单

做量化交易这么多年,我见过不少新手一上来就问:「能不能直接给我一个能赚钱的订单类型?」说实话,没有哪种订单是万能的。每种订单都有自己的脾气,你得摸透了才能用好。

这一章,咱们就把市面上最常见的六种订单类型掰开揉碎了讲。我会结合我在交易所对接中踩过的坑,给你讲清楚它们的原理、适用场景,以及——嗯,那些文档里不会写的潜规则。

4.1 市价单(Market Order)

市价单,说白了就是「不管多少钱,我现在就要成交」。你下单的那一刻,系统会以当前市场上最优的可成交价格帮你吃掉对手盘。

优点:成交速度快,几乎瞬间完成。

缺点:你无法控制成交价格。遇到流动性差的时候,滑点能让你怀疑人生。

⚠️ 避坑指南: 我曾经在某个小交易所挂了一笔市价单,结果因为盘口太薄,直接吃穿了三个档位,成交均价比预期高了0.3%。从那以后,我对市价单就多了一份敬畏。建议只在流动性好的主流币种上使用市价单。

4.2 限价单(Limit Order)

限价单就是「我只接受这个价格,或者更好的价格」。你指定一个价格,系统只在价格达到或优于你的条件时才成交。

我个人习惯把限价单分为两种:

  • 被动限价单:挂在买一或卖一,等待别人来吃。这种单子能赚到maker返佣。
  • 主动限价单:直接以对手盘的最优价成交,本质上和市价单差不多,但你能控制最大滑点。
💡 核心要点: 限价单不保证成交。如果你的价格挂得太远,可能一天都成交不了。我在做高频策略时,通常会把限价单挂在买一和卖一之间,既能吃到返佣,又能保证一定的成交概率。

4.3 冰山订单(Iceberg Order)

冰山订单,顾名思义——你只露出水面的一小部分,大部分订单藏在下面。交易所只显示你设定的「可见量」,实际订单总量是可见量的好几倍。

为什么要用冰山订单?你想想看,如果你要买1000个BTC,直接挂一个限价单,市场瞬间就知道有大户在吃货,价格立马被拉上去。冰山订单就是为了避免这种「市场冲击」。

🔧 实战技巧: 我在做大宗交易时,通常会把冰山订单的可见量设为总量的10%-20%。比如我要买1000个ETH,可见量设成100-200个。这样既不会吓跑对手盘,又能持续吃单。

冰山订单的实现原理其实不复杂:交易所内部维护一个「总订单量」和「已显示量」。每次可见量被吃完后,系统自动补充新的可见量,直到总订单量全部成交。

// 冰山订单的伪代码逻辑
class IcebergOrder {
    totalQuantity: 1000    // 总订单量
    visibleQuantity: 100   // 可见量
    currentVisible: 100    // 当前显示的可见量
    
    onFill(filledQty) {
        currentVisible -= filledQty
        if (currentVisible <= 0 && totalQuantity > 0) {
            // 补充新的可见量
            let refill = min(visibleQuantity, totalQuantity)
            currentVisible = refill
            totalQuantity -= refill
            // 向交易所发送新的限价单
            sendLimitOrder(price, refill)
        }
    }
}

4.4 TWAP(时间加权平均价格算法)

TWAP,全称Time-Weighted Average Price。它的目标很简单:把一个大订单拆成很多小订单,在指定的时间段内均匀执行。

举个例子:你想在1小时内买入1000个ETH。TWAP会把这1小时分成60个1分钟的切片,每个切片只下16-17个ETH的单子。这样市场根本感觉不到你在大量买入。

TWAP的核心逻辑:

  1. 确定总执行时间(比如1小时)
  2. 将时间分成N个等长切片(比如60个1分钟切片)
  3. 每个切片执行等量的订单(1000/60 ≈ 16.67个ETH)
  4. 每个切片内使用限价单或市价单执行
⚠️ 注意: TWAP不保证成交价格。它只保证时间上的均匀分布。如果市场剧烈波动,TWAP可能会让你买在最高点或卖在最低点。我个人习惯在TWAP中加入一个「价格偏离保护」——如果当前价格偏离基准价超过1%,就暂停执行。

4.5 VWAP(成交量加权平均价格算法)

VWAP比TWAP更聪明一些。它不只是均匀分配时间,而是根据历史成交量分布来分配订单量。

为什么这么做?因为市场的成交量并不是均匀分布的。比如开盘和收盘时成交量通常更大,中午时段成交量较小。VWAP会模仿这种分布,让你的订单「融入」市场,减少市场冲击。

VWAP的计算方式:

VWAP = Σ(价格 × 成交量) / Σ(成交量)

// 实际执行时,我们会用历史成交量分布来预测未来
// 比如过去30天,每分钟的成交量占全天总成交量的比例
// 然后按照这个比例分配订单

我记得有一次做美股交易,VWAP策略帮我省了不少钱。当时我要卖出10万股苹果股票,如果用TWAP,中午流动性差的时候可能会砸出个大坑。但VWAP把大部分订单分配到了开盘和收盘时段,执行效果好了很多。

💡 选择建议:
  • 如果市场流动性好,用TWAP就够了,实现简单
  • 如果市场流动性差,或者你有历史成交量数据,用VWAP效果更好
  • 我个人在加密货币市场更常用TWAP,因为成交量分布不太稳定

4.6 Peg订单(Pegged Order)

Peg订单,也叫「锚定订单」。它会自动跟随某个基准价格移动。最常见的两种:

  • Peg to Best Bid: 锚定最优买价。比如你设置「比最优买价高0.01」,那么当最优买价变化时,你的订单价格也会自动调整。
  • Peg to Best Ask: 锚定最优卖价。类似,但锚定的是卖一价。
  • Peg to Midpoint: 锚定买卖中间价。这个比较少见,但做市商很喜欢用。

Peg订单的核心价值在于:你不需要手动调整价格。市场在动,你的订单也在动,始终保持在最优位置。

⚠️ 踩坑经验: 我曾经在对接某交易所的Peg订单时,发现它的更新频率只有每秒一次。在高频行情下,这个延迟会导致你的订单总是慢半拍。后来我改用自己实现的「伪Peg订单」——在本地监听行情,每10毫秒重新计算一次价格,然后取消旧单、下新单。虽然成本高一点,但效果好了很多。

4.7 六种订单类型对比

订单类型 成交速度 价格控制 市场冲击 适用场景
市价单 最快 紧急成交、流动性好的品种
限价单 做市、赚返佣、控制成本
冰山订单 中等 中等 大额交易、隐藏意图
TWAP 极低 大额订单、时间均匀执行
VWAP 极低 大额订单、模仿市场分布
Peg订单 中等 中等 做市、被动策略

4.8 核心逻辑流程图

下面这张图展示了六种订单类型的核心逻辑和决策路径。你可以看到,从「是否立即成交」这个起点开始,不同的选择会走向不同的订单类型。

订单类型决策逻辑图 开始下单 立即成交? 市价单 隐藏意图? 冰山订单 跟随市场? Peg订单 拆分订单? 限价单 加权方式? 时间 TWAP 成交量 VWAP 从「是否立即成交」出发,根据你的需求选择最合适的订单类型 图例 起点 决策节点 最终订单类型 限价单(不拆分) 注:实际交易中,订单类型可以组合使用,比如「冰山限价单」

嗯,这张图基本把六种订单的决策路径串起来了。你从「开始下单」出发,每遇到一个决策点,就根据你的需求选择方向,最终会落到具体的订单类型上。

我个人建议,刚开始做量化交易的朋友,先把限价单和市价单玩熟。这两个是基础中的基础。等你对市场有了感觉,再慢慢尝试冰山订单和TWAP。至于Peg订单,嗯,那是做市商和高级策略玩家的玩具,新手可以先放一放。

最后说一句:没有最好的订单类型,只有最适合当前场景的订单类型。多试、多总结,你慢慢就会找到感觉。

专注资料整理