Skip to main content
订单只要还没完全成交,价格和数量都能改。底下发生什么,取决于你改的是哪一项;而这个差别,对你在队列中的位置有实实在在的影响。

两条路径

这里的“数量”指剩余数量
修改请求
改了什么?
仅减少数量原地修改 — 保留队列位置
更改价格,或增加数量先撤单,再下新单 — 队列位置丢失
数量 10、已成交 4 的订单,剩余为 6
改成 5 — 是减少
改成 8 — 是增加,尽管小于最初的 10
撤单重下这条路径有先后,但并不原子只有撤单成功才会尝试下新单,而新单仍可能因保证金失败——于是原订单被撤销,你也没有挂单在场上。
减少数量走原地修改。 订单留在订单簿原来的位置上,优先级不变。没有撤单,也没有重新下单。 其他所有改动都是先撤单再下新单。 改价格是真的保不住位置:不同的价格就是订单簿上不同的位置。增加数量不一样——新增的那部分从未排过队,但已经挂在那里的那部分排过。今天不论哪种情况都是整笔订单重下,所以增加数量,连原有数量已经挣到的优先级也一并赔进去。 这样划分是刻意的,也和那些把每次修改都当成撤单重下的场所不一样。缩小一笔订单,要的严格小于你已经拥有优先级的那部分,所以没有理由让你为此付出代价。

队列位置为什么重要

在某个价格档位上,订单按到达顺序成交。排在档位前面的订单先于后面的成交——而在一个繁忙的档位上,队首和队尾的差别就是成交与眼看着行情走掉的差别。 对做市商来说,全部就在这里。为了管理风险缩小数量却不丢位置,和不得不重新排到你犹豫那会儿新来的人后面,是完全不同的两件事。

这里的“数量”指什么

数量比较用的是剩余数量,而不是你最初提交的数量。 一笔数量为 10、已成交 4 的订单,剩余为 6。把它改成 5 是减少——原地修改;把它改成 8 则是相对于 6 的增加,尽管 8 小于最初的 10——撤单重下。

撤单重下这条路径可能部分失败

修改一旦走上撤单重下这条路,两个步骤有先后,但并不原子:
  • 只有撤单成功,才会尝试下新单。 你不会同时拥有两笔。
  • 新单仍然可能失败——最常见的是保证金原因,因为市场可能在两步之间移动了。
于是有一种结果确实可能出现,值得预先规划:原订单被撤销,而替代订单并不存在。 你不会被重复成交,但你也没有挂单在场上。
只要事情有时效性,就不要假定修改已经成功。在按“你在那个档位上仍有活动订单”行事之前,先确认生成的订单确实存在。

时机

原地减少数量在当前区块内生效——不需要等待。 更改价格和增加数量走两步路径,与任何撤单、任何新订单适用同一套排序规则。撤单在撤单阶段运行,先于同一区块内的主动吃单,所以和你的修改请求同时到达的订单,打不掉你那笔过时的报价。 订单有效期会延续下来:改过的订单,有效期不变;替代订单也照它执行。

实务提示

  • 放心缩小。 成本低廉,也不损失任何优先级。
  • 把改价当成一笔新订单,因为它本来就是。
  • 程序化修改,请用客户端订单 ID。 收到含糊的响应之后,你可以直接确认什么还在,而不是靠推断。
  • 要一次改多个字段,就干脆显式地撤单再重下——结果一样,但失败处理更清晰。

后续阅读

订单簿

价格-时间优先级如何决定一个档位内的成交顺序。

交易排序

为什么同一区块内撤单先于主动吃单执行。

客户端订单 ID

在收到含糊响应之后确认什么确实存在。

订单类型

订单有效期,以及修改后哪些属性会延续。