什么是 Fill or Kill?
在股票、外汇乃至加密货币市场中,“Fill or Kill(FOK)”是一种极端高效的挂单方式:经纪商必须在收到指令的瞬间完成全部数量的撮合;如果做不到,该笔订单立即作废,拒绝任何“部分成交”。换句话说,FOK订单要么全吃,要么全撤,没有任何中间地带。
FOK 的诞生背景:与时间赛跑的高频需求
很多新手受影视作品影响,以为交易大厅里永远“买买买”与“卖卖卖”的嘶吼就能即刻成交。事实上,常规市价或限价单常需排队等待对手盘。Fill or Kill的出现,正是为了解决大额订单在毫秒级波动环境中可能被“撕单”的风险。
- 闪崩行情里,0.1 秒的价格滑点就能让数百万头寸失控;
- 对做市商或量化基金而言,FOK是避免库存短暂暴露的最后一道防线。
FOK 与其他订单的“亲戚关系”
许多交易者容易把 Fill or Kill、All or None(AON)、Immediate or Cancel(IOC)混为一谈。下面用一句话厘清三者的差别:
| 订单类型 | 必须立刻成交 | 必须全部成交 | 允许部分成交 |
|---|---|---|---|
| FOK | ✅ | ✅ | ❌ |
| IOC | ✅ | ❌ | ✅ 后取消余量 |
| AON | ❌ | ✅ | ❌ |
由此可见,FOK 集成了 AON 的“一口吃”属性与 IOC 的“即刻动手”属性,是二者的“交集”。
哪些场景必须用 FOK?
- 大宗交易 Block Trade:单次买入 5 万股时,需要防止被拆分为数千笔小额成交导致滑点飙升。
- 套利窗口:跨所价差仅剩 2 秒,迟 0.5 秒就无利可图,FOK 确保一次性全仓到位。
- 指数调仓:某股票被移出指数,被动基金调仓时为了复制基准权重,需在集合竞价阶段启用的就是 FOK,一次性完成权重。
实战中,FOK 并非高频使用,原因有二:
- 市场深度不足时,即时足量成交概率低;
- 多数零售级平台默认关闭FOK权限,只向机构开放。
从“纸面”到“盘口”:FOK 真实案例
模拟环节:
- 交易员 Lindsey 计划以 230 USD 买入 10,000 股 TSLA。
- 她发送了一笔 FOK 订单并设定限时 0.05 秒。
- 挂出瞬间,卖方五档挂单总量仅 9,800 股且最低价在 230.10 USD。
结果:
➤ 数量不足+价格不符 → FOK 当场作废,Lindsey 避免了 200 股残单带来的风险暴露。整个过程在毫秒内完成,没有任何隐形成本。
常见问题(FAQ)
Q1:FOK 与 FAK(Fill and Kill)有何不同?
A:国内期货市场常见的 FAK 虽字面相似,但允许部分成交后立即撤单剩余量;FOK 则是全部或零。
Q2:FOK 能否用在市价单?
A:不行。FOK 默认是限价单,仅接受期初指定价格,才会确保“价格+数量”双满足。
Q3:FOK 成交失败会影响账户资金吗?
A:不会失败计入交易量,亦不会占用保证金;订单失效后,资金、持仓保持原状。
Q4:为什么我交易界面找不到 FOK 选项?
A:部分券商将其隐藏于高级指令→附加条件里,亦需账户级别达到专业级或API接入才会解锁。
Q5:FOK 有无可能滑点?
A:不会。FOK 的价格字段为绝对成交/作废基准,只要市价扫到挂单即可;一旦买盘不足便直接撤销,绝无滑点发生。
Q6:FOK 占不占行情流量?
A:大幅交易会对盘口造成瞬间抽取,线缆延迟是主要瓶颈,建议在高并发柜台直连( co-location )上架设策略。
如何设置与取消 FOK?
以机构 API 为例,仅需三步:
- 在订单结构体中设置
TimeInForce = FOK; OrderQty填写你将“全吃”的总量;- 若超时未收到“成交回报”,系统自动取消订单,无需人工撤回。
散户若想尝试,可检查券商是否提供限价+FOK组合;若不支持,可用 ICE(IOC + AON) 替代,但需接受可能留有残单。
小结
- Fill or Kill是速度与精度的终极平衡:全吃或全撤。
- 对机构而言,它是管理仓位暴露的利器;对散户而言,若无百万级头寸需求,更常见的 IOC 即可覆盖日常交易。
- 牢记两大核心关键词:瞬间成交、全额成交——任何一环节不达标,FOK 都会毫不犹豫地“杀死”自己,为你守住成本底线。