订单执行基础:订单类型、生命周期与撮合机制
做量化交易这些年,我越来越觉得一个道理特别朴素——策略再好,订单执行不好,一切都是白搭。你想想看,信号出来了,结果单子没成交,或者成交价格滑了十几个tick,那还赚什么钱?
今天我们就来聊聊订单执行最基础的东西。说白了,就是搞清楚三件事:订单长什么样、订单怎么走完一生、交易所怎么帮你配对。
一、订单类型:你手里的三种武器
我个人习惯把订单类型分成三大类。每一类都有它的脾气,用对了是神器,用错了就是坑。
1. 市价单(Market Order)
市价单,就是「不管什么价格,我现在就要成交」。你挂一个买入市价单,系统会立刻吃掉卖一、卖二、卖三……直到把你的单子填满。
优点:成交速度快,几乎100%成交。
缺点:价格不可控,遇到流动性差的时候,滑点能让你怀疑人生。
我在项目中遇到过一回,某个小币种深度特别差,我挂了个市价单想买100个,结果成交均价比预期高了2%。嗯,从那以后,我对市价单就多了一份敬畏。
2. 限价单(Limit Order)
限价单,就是「我只接受这个价格,高了不买,低了不卖」。你挂一个买入限价单,价格到了就成交,不到就等着。
优点:价格可控,还能吃盘口价差。
缺点:可能永远成交不了,尤其是行情单边暴涨暴跌的时候。
做高频交易的朋友特别喜欢用限价单。为什么?因为可以挂买单在买一,挂卖单在卖一,赚那个微小的价差。但这里有个坑——如果行情突然转向,你的限价单可能变成「接盘侠」。
3. 止损单(Stop Order)
止损单,说白了就是「亏到一定程度,我认输走人」。它本身不是一种成交方式,而是一种触发机制。价格到了止损价,它就变成市价单或限价单去执行。
注意:止损单不等于止损限价单。止损单触发后变市价单,止损限价单触发后变限价单。后者可能因为价格跳空而无法成交,导致止损失效。
我曾经吃过这个亏。有一次做股指期货,设了个止损限价单,结果行情瞬间跳空,价格直接穿过了我的止损价,单子根本没成交。那笔亏损,现在想起来还肉疼。
二、订单生命周期:一张单子的完整旅程
一张订单从出生到消亡,大概经历这么几个阶段。我画了个图,你一看就明白。
你看,订单创建后进入订单簿,然后等待撮合。如果完全成交,直接进入终态。如果部分成交,剩余部分继续等。如果一直没成交,你可以手动撤销,或者等它过期。
这里有个细节我想强调一下——部分成交在量化交易里非常常见。尤其是大单,经常是吃一口没吃完,剩下的还在那挂着。你的系统必须能处理这种「半吊子」状态。
三、交易所撮合机制:价格优先、时间优先
交易所怎么撮合订单?说白了就八个字:价格优先,时间优先。
- 价格优先:买单出价高的先成交,卖单出价低的先成交。
- 时间优先:同样价格,先挂单的先成交。
你想想看,这其实特别公平。你愿意多出钱,你就先买。你愿意少要钱,你就先卖。如果大家出价一样,那就按先来后到排队。
一个小技巧:如果你想快速成交,可以把限价单的价格往盘口中间靠一靠。比如买一价格是100,你挂100.01,那你的单子就会排在所有100元买单的前面。当然,你得多花一点点钱。
我见过不少新手犯一个错误——挂限价单的时候,价格跟盘口一模一样,结果前面排了几百手,等半天都轮不到自己。其实稍微让一点点价,成交速度能快好几倍。
四、实战中的几个坑
做量化这几年,踩过的坑不少。我挑几个典型的说说。
| 坑 | 表现 | 怎么避 |
|---|---|---|
| 市价单滑点 | 成交价比预期差很多 | 用限价单,或者拆成小单分批执行 |
| 止损单没触发 | 价格跳空,止损变废单 | 用市价止损单,别用止损限价 |
| 部分成交处理不当 | 剩余订单被遗忘,资金占用 | 系统里加个定时器,超时未成交就撤销重挂 |
| 订单簿深度误判 | 以为流动性好,实际一吃就穿 | 下单前先查一下盘口深度,心里有数 |
嗯,这些坑我基本都踩过。尤其是止损单那个,真的是血泪教训。后来我写了个检查逻辑,每次下止损单之前,先判断一下当前市场的跳空风险,如果波动率太高,就改用市价止损。
五、总结一下
订单执行这件事,说难不难,说简单也不简单。你只要记住三件事:
- 选对订单类型——市价单求快,限价单求稳,止损单求保命。
- 管好订单生命周期——创建、等待、成交/撤销,每一步都要有状态管理。
- 理解撮合规则——价格优先、时间优先,这是所有交易所的铁律。
我个人觉得,订单执行是量化交易里最容易被忽视的环节。很多人花大量时间优化策略,结果在订单执行上亏了钱。其实你想想看,策略再好,执行不到位,一切都是空谈。
好了,这一章就聊到这。下一章我们会深入讲讲订单簿的微观结构,到时候再细聊。