4. 订单类型详解:市价单、限价单、冰山订单、TWAP、VWAP、Peg订单
做量化交易这么多年,我见过不少新手一上来就问:「能不能直接给我一个能赚钱的订单类型?」说实话,没有哪种订单是万能的。每种订单都有自己的脾气,你得摸透了才能用好。
这一章,咱们就把市面上最常见的六种订单类型掰开揉碎了讲。我会结合我在交易所对接中踩过的坑,给你讲清楚它们的原理、适用场景,以及——嗯,那些文档里不会写的潜规则。
4.1 市价单(Market Order)
市价单,说白了就是「不管多少钱,我现在就要成交」。你下单的那一刻,系统会以当前市场上最优的可成交价格帮你吃掉对手盘。
优点:成交速度快,几乎瞬间完成。
缺点:你无法控制成交价格。遇到流动性差的时候,滑点能让你怀疑人生。
4.2 限价单(Limit Order)
限价单就是「我只接受这个价格,或者更好的价格」。你指定一个价格,系统只在价格达到或优于你的条件时才成交。
我个人习惯把限价单分为两种:
- 被动限价单:挂在买一或卖一,等待别人来吃。这种单子能赚到maker返佣。
- 主动限价单:直接以对手盘的最优价成交,本质上和市价单差不多,但你能控制最大滑点。
4.3 冰山订单(Iceberg Order)
冰山订单,顾名思义——你只露出水面的一小部分,大部分订单藏在下面。交易所只显示你设定的「可见量」,实际订单总量是可见量的好几倍。
为什么要用冰山订单?你想想看,如果你要买1000个BTC,直接挂一个限价单,市场瞬间就知道有大户在吃货,价格立马被拉上去。冰山订单就是为了避免这种「市场冲击」。
冰山订单的实现原理其实不复杂:交易所内部维护一个「总订单量」和「已显示量」。每次可见量被吃完后,系统自动补充新的可见量,直到总订单量全部成交。
// 冰山订单的伪代码逻辑
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小时)
- 将时间分成N个等长切片(比如60个1分钟切片)
- 每个切片执行等量的订单(1000/60 ≈ 16.67个ETH)
- 每个切片内使用限价单或市价单执行
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订单的核心价值在于:你不需要手动调整价格。市场在动,你的订单也在动,始终保持在最优位置。
4.7 六种订单类型对比
| 订单类型 | 成交速度 | 价格控制 | 市场冲击 | 适用场景 |
|---|---|---|---|---|
| 市价单 | 最快 | 无 | 高 | 紧急成交、流动性好的品种 |
| 限价单 | 慢 | 强 | 低 | 做市、赚返佣、控制成本 |
| 冰山订单 | 中等 | 中等 | 低 | 大额交易、隐藏意图 |
| TWAP | 慢 | 弱 | 极低 | 大额订单、时间均匀执行 |
| VWAP | 慢 | 弱 | 极低 | 大额订单、模仿市场分布 |
| Peg订单 | 中等 | 中等 | 低 | 做市、被动策略 |
4.8 核心逻辑流程图
下面这张图展示了六种订单类型的核心逻辑和决策路径。你可以看到,从「是否立即成交」这个起点开始,不同的选择会走向不同的订单类型。
嗯,这张图基本把六种订单的决策路径串起来了。你从「开始下单」出发,每遇到一个决策点,就根据你的需求选择方向,最终会落到具体的订单类型上。
我个人建议,刚开始做量化交易的朋友,先把限价单和市价单玩熟。这两个是基础中的基础。等你对市场有了感觉,再慢慢尝试冰山订单和TWAP。至于Peg订单,嗯,那是做市商和高级策略玩家的玩具,新手可以先放一放。
最后说一句:没有最好的订单类型,只有最适合当前场景的订单类型。多试、多总结,你慢慢就会找到感觉。