3. 限价单执行逻辑:挂单流程、排队机制、价格优先与时间优先原则、部分成交与撤单
限价单这东西,说白了就是「我指定一个价格,到了就买,不到就等」。很多新手觉得市价单更爽快,但做量化时间长了你会发现——限价单才是真正的利润来源。我自己的策略里,大概 70% 的订单都是限价单,尤其是在流动性不太好的品种上。
好,咱们一步步拆解限价单的执行逻辑。
3.1 挂单流程:你的订单是怎么进到交易所的?
你下了一个限价买单,价格 100.5,数量 1000 股。这个订单会经历什么?
- 客户端校验:你的交易系统先检查账户余额、持仓、风控规则。我见过有人忘了这步,直接往交易所发了个空单,结果被拒了。
- 网络传输:订单通过 API 发到交易所的撮合引擎。延迟在这里很关键,尤其是高频场景。
- 订单簿匹配:交易所收到后,先看当前最优卖价。如果卖一价 ≤ 100.5,直接成交;否则进入挂单队列。
- 进入队列:订单被放到买盘的对应价位上,等待后续的对手单。
嗯,这里要注意:挂单不等于成交。你的订单只是「排上了队」,能不能成交取决于后面有没有人愿意以这个价格卖给你。
3.2 排队机制:先来后到,但价格说了算
交易所的订单簿,本质上就是一个价格优先、时间优先的排队系统。我画了个图,帮你理解这个结构:
你看,买一和卖一之间有个价差。你的限价单如果价格比买一高,就会直接吃掉卖单;如果价格等于买一,就排在买一队列的末尾。
核心原则:价格优先永远排在时间优先前面。一个出价 100.5 的买单,哪怕晚到 1 秒,也会排在出价 100.0 的买单前面。只有价格相同时,才看谁先到。
3.3 价格优先与时间优先:谁先成交?
我举个例子你就明白了。
假设当前订单簿是这样的:
| 方向 | 价格 | 数量 | 到达时间 |
|---|---|---|---|
| 卖单 | 100.5 | 300 | 09:30:01.000 |
| 卖单 | 100.5 | 200 | 09:30:01.500 |
| 买单 | 100.0 | 500 | 09:30:00.000 |
| 买单 | 100.0 | 300 | 09:30:00.800 |
现在来了一个市价卖单,数量 400。它会怎么成交?
- 先看买一价 100.0,有 500 股在排队。
- 时间优先:最早到达的 500 股先成交 400 股。
- 结果:09:30:00.000 的买单被吃掉 400 股,还剩 100 股继续挂着。
你看,价格相同的情况下,先到的人先享受成交。这就是时间优先的威力。
实战技巧:如果你的策略需要抢在别人前面成交,可以考虑用「价格提升 + 时间优势」的组合。比如在买一价基础上加 0.01,就能插队到更优价格队列。但代价是成本高了 0.01。
3.4 部分成交:订单没全成交怎么办?
这是限价单最让人头疼的地方。你挂了 1000 股,结果只成交了 300 股,剩下的 700 股还挂在订单簿上。
为什么会部分成交?
- 对手单数量不足:比如卖一只有 300 股,你的 1000 股买单只能吃掉这 300 股。
- 价格变动:成交过程中价格突然跳开,剩下的订单无法继续匹配。
- 多笔对手单:可能连续来了几笔小单,每笔只成交几十股,累积起来也没填满你的单子。
我记得有一次做 ETF 套利,挂了个 5000 股的限价单,结果只成交了 1200 股。剩下的 3800 股挂在那边,价格突然反转,我反而亏了。从那以后,我对部分成交特别敏感。
注意:部分成交后,剩余订单的「时间优先级」保持不变。也就是说,你剩下的 700 股仍然排在原来队列的位置,不会因为部分成交而被挪到队尾。
3.5 撤单:挂错了怎么办?
撤单是限价单的必备功能。你挂了个单,发现价格不对,或者市场变了,想撤回来重新挂。
撤单的流程其实很简单:
- 客户端发送撤单请求,带上订单 ID。
- 交易所找到该订单,检查是否还在队列中。
- 如果订单尚未成交,直接从队列中移除。
- 如果订单已经部分成交,则移除剩余部分。
- 如果订单已全部成交,撤单失败(返回错误)。
这里有个坑:撤单不是瞬间完成的。从你发出撤单指令到交易所确认,中间可能有几毫秒甚至几十毫秒的延迟。在这段时间里,你的订单可能已经被成交了。
避坑指南:我曾经在快速行情中同时挂了买单和撤单,结果撤单还没到,买单已经成交了。后来我加了个「撤单确认」的循环检查,确保订单确实被撤掉后再发新单。
撤单的时机也很讲究。我个人习惯在以下情况撤单:
- 价格偏离:市场价已经远离我的挂单价,继续挂着意义不大。
- 流动性变化:订单簿深度变差,我的单子可能被「钓鱼」。
- 策略信号反转:原本看多,现在信号转空了,赶紧撤。
- 风控触发:账户风险指标超标,强制撤单。
3.6 实战中的限价单策略
说了这么多理论,来点实际的。我常用的几种限价单玩法:
| 策略 | 做法 | 适用场景 |
|---|---|---|
| 冰山订单 | 挂一个大单,但只暴露小部分数量 | 大额交易,避免暴露意图 |
| 价格滑点控制 | 限价单价格设在买一/卖一附近 | 降低冲击成本 |
| 时间加权挂单 | 分时段挂多个限价单 | 日内交易,平滑入场成本 |
| 撤单重挂 | 频繁撤单并调整价格 | 高频做市,抢队列位置 |
嗯,这里要特别提醒:撤单重挂虽然能抢位置,但也会产生大量撤单费用。有些交易所对撤单收费,或者限制撤单频率。我见过有人因为撤单太频繁被交易所警告的。
最后说一句:限价单的核心优势是控制成本,市价单的核心优势是保证成交。两者没有绝对的好坏,关键看你的策略需要什么。我个人习惯在流动性好的品种上用限价单,在流动性差的品种上老老实实用市价单。
小技巧:如果你不确定该用限价单还是市价单,可以算一笔账:限价单的预期节省成本 vs 未成交的风险成本。哪个大就选哪个。