订单执行基础:订单类型、生命周期与撮合机制

做量化交易这些年,我越来越觉得一个道理特别朴素——策略再好,订单执行不好,一切都是白搭。你想想看,信号出来了,结果单子没成交,或者成交价格滑了十几个tick,那还赚什么钱?

今天我们就来聊聊订单执行最基础的东西。说白了,就是搞清楚三件事:订单长什么样、订单怎么走完一生、交易所怎么帮你配对

一、订单类型:你手里的三种武器

我个人习惯把订单类型分成三大类。每一类都有它的脾气,用对了是神器,用错了就是坑。

1. 市价单(Market Order)

市价单,就是「不管什么价格,我现在就要成交」。你挂一个买入市价单,系统会立刻吃掉卖一、卖二、卖三……直到把你的单子填满。

优点:成交速度快,几乎100%成交。

缺点:价格不可控,遇到流动性差的时候,滑点能让你怀疑人生。

我在项目中遇到过一回,某个小币种深度特别差,我挂了个市价单想买100个,结果成交均价比预期高了2%。嗯,从那以后,我对市价单就多了一份敬畏。

2. 限价单(Limit Order)

限价单,就是「我只接受这个价格,高了不买,低了不卖」。你挂一个买入限价单,价格到了就成交,不到就等着。

优点:价格可控,还能吃盘口价差。

缺点:可能永远成交不了,尤其是行情单边暴涨暴跌的时候。

做高频交易的朋友特别喜欢用限价单。为什么?因为可以挂买单在买一,挂卖单在卖一,赚那个微小的价差。但这里有个坑——如果行情突然转向,你的限价单可能变成「接盘侠」

3. 止损单(Stop Order)

止损单,说白了就是「亏到一定程度,我认输走人」。它本身不是一种成交方式,而是一种触发机制。价格到了止损价,它就变成市价单或限价单去执行。

注意:止损单不等于止损限价单。止损单触发后变市价单,止损限价单触发后变限价单。后者可能因为价格跳空而无法成交,导致止损失效。

我曾经吃过这个亏。有一次做股指期货,设了个止损限价单,结果行情瞬间跳空,价格直接穿过了我的止损价,单子根本没成交。那笔亏损,现在想起来还肉疼。

二、订单生命周期:一张单子的完整旅程

一张订单从出生到消亡,大概经历这么几个阶段。我画了个图,你一看就明白。

创建订单 进入订单簿 等待撮合 成交/撤销 终态 撤销/过期 部分成交,剩余继续等待 订单生命周期流程图 从创建到终态,一张订单的完整旅程

你看,订单创建后进入订单簿,然后等待撮合。如果完全成交,直接进入终态。如果部分成交,剩余部分继续等。如果一直没成交,你可以手动撤销,或者等它过期。

这里有个细节我想强调一下——部分成交在量化交易里非常常见。尤其是大单,经常是吃一口没吃完,剩下的还在那挂着。你的系统必须能处理这种「半吊子」状态。

三、交易所撮合机制:价格优先、时间优先

交易所怎么撮合订单?说白了就八个字:价格优先,时间优先

  • 价格优先:买单出价高的先成交,卖单出价低的先成交。
  • 时间优先:同样价格,先挂单的先成交。

你想想看,这其实特别公平。你愿意多出钱,你就先买。你愿意少要钱,你就先卖。如果大家出价一样,那就按先来后到排队。

一个小技巧:如果你想快速成交,可以把限价单的价格往盘口中间靠一靠。比如买一价格是100,你挂100.01,那你的单子就会排在所有100元买单的前面。当然,你得多花一点点钱。

我见过不少新手犯一个错误——挂限价单的时候,价格跟盘口一模一样,结果前面排了几百手,等半天都轮不到自己。其实稍微让一点点价,成交速度能快好几倍。

四、实战中的几个坑

做量化这几年,踩过的坑不少。我挑几个典型的说说。

表现 怎么避
市价单滑点 成交价比预期差很多 用限价单,或者拆成小单分批执行
止损单没触发 价格跳空,止损变废单 用市价止损单,别用止损限价
部分成交处理不当 剩余订单被遗忘,资金占用 系统里加个定时器,超时未成交就撤销重挂
订单簿深度误判 以为流动性好,实际一吃就穿 下单前先查一下盘口深度,心里有数

嗯,这些坑我基本都踩过。尤其是止损单那个,真的是血泪教训。后来我写了个检查逻辑,每次下止损单之前,先判断一下当前市场的跳空风险,如果波动率太高,就改用市价止损。

五、总结一下

订单执行这件事,说难不难,说简单也不简单。你只要记住三件事:

  1. 选对订单类型——市价单求快,限价单求稳,止损单求保命。
  2. 管好订单生命周期——创建、等待、成交/撤销,每一步都要有状态管理。
  3. 理解撮合规则——价格优先、时间优先,这是所有交易所的铁律。

我个人觉得,订单执行是量化交易里最容易被忽视的环节。很多人花大量时间优化策略,结果在订单执行上亏了钱。其实你想想看,策略再好,执行不到位,一切都是空谈。

好了,这一章就聊到这。下一章我们会深入讲讲订单簿的微观结构,到时候再细聊。


专注资料整理