假设你在币安下了一张限价买单,历史委托显示部分成交、已过期。先看它的生效时间:IOC 可以成交一部分后取消剩余数量;FOK 要求立即全部成交,否则整单取消;GTC 则允许剩余数量继续挂着。
动手的是限价单下面那个很少有人点开的小下拉框:生效时间,英文叫 Time in Force,选项写着 GTC、IOC、FOK。它不管价格,只管一件事——这张单子提交之后,马上成交不了的那部分怎么处置。三个缩写就是三种处置办法,外加一个经常被放在旁边的「只做挂单」。
这一栏藏在哪,为什么你可能从没见过
币安网页端现货页可以从右上角「设置 → 布局 → 订单模式 → 高级」调出高级订单选项;下单前再检查当前限价面板提供的生效时间。官方帮助页明确给出了只做 Maker 勾选框的这条入口,手机端和合约面板不一定使用相同布局。
别凭「以前的单子一直挂着」就认定这次选的是 GTC。提交前展开这一栏看实际选项;查旧单时看订单详情里的生效时间。限价决定你接受的价格,生效时间决定没能立即成交的数量怎么处理,两栏都要看。
顺带认一下中文名。同一家平台的帮助页里,GTC 叫「一直有效至取消」,IOC 叫「立即成交或取消」,FOK 叫「完全成交或取消」;「只做挂单」在那边写的是「只做 Maker」,英文 Post Only。别的平台可能译成「生效方式」「有效期」「执行策略」,看到这几个英文缩写,说的就是同一回事。
同一张单子,换三个选项各走一遍
下面用一个假设的场景,数字是编来演示的,不对应任何真实行情。
你想买 10 个某币,限价填在一个价位上。提交那一刻,卖盘里价格不高于你这个价的挂单,加起来只有 6 个。剩下的卖单都比你的价高。
| 生效时间 | 马上成交几个 | 未成交数量怎么处理 | 历史委托里大概长这样 |
|---|---|---|---|
| GTC | 6 个 | 剩余 4 个留在订单簿上,按你的限价继续等 | 先是部分成交,挂在当前委托里,直到全成或被取消 |
| IOC | 6 个 | 剩余 4 个当场取消,不挂上盘口 | 成交 6,状态多半是已过期 |
| FOK | 0 个 | 10 个全部取消,那 6 个可成交数量也不执行 | 成交 0,状态多半是已过期 |
FOK 那一行最反直觉。明明有 6 个可以成交,它一个都不要。它的规矩就是 10 个必须当场一次凑齐,凑不齐就当这张单没下过。
再看最后一列。开头那个「已过期」就是这么来的:交易所的接口文档里,用户自己撤掉的单子记为 CANCELED,按单子本身的规则被系统取消的记为 EXPIRED,中文界面一般译成已撤销和已过期。IOC 剩下的那部分、FOK 整张作废,都属于后一种。不过,EXPIRED 也包括交易所维护、强平处置等导致的取消,不能只凭这个状态断定是 IOC 或 FOK。先看订单条件和已成交数量,再查对应的取消原因。两种状态的原始定义在币安现货接口的枚举说明里,查证于 2026 年 9 月。
手续费只跟着成交走。IOC 那 6 个按正常费率收,被取消的 4 个没有成交,也就没有交易手续费;FOK 整张作废,一分不收。
GTC 的「一直有效」,有两个会咬人的地方
第一个是忘。
GTC 的剩余数量可以继续挂着,不会因为你离开页面就自动撤销。几周前随手挂的一张低价买单,某天夜里一根针扎下来,它成交了,你第二天早上才发现手里多了一笔仓位。挂单前觉得这个价「反正到不了」的,最该回头看一眼当前委托。
忘掉的单子还占着钱。一张挂着的买单会把对应的计价币冻结住,卖单冻结的是币本身,这部分在资产页上显示为冻结,不能拿去下别的单,也划转不走。钱明明在账户里却用不了,很多时候就是几张陈年 GTC 单在压着,可用、冻结、锁定那篇讲过怎么把它们翻出来。
第二个是「一直」其实有期限,至少在合约上是这样。币安 U 本位合约的接口文档里写着,GTC 单从下单起有效期是一年,超过一年的会被系统自动撤掉。现货那边的帮助页只写了「直到完成或你取消」,没提年限。一年听起来很长,但对习惯在远处埋几张抄底单然后就不管的人,这句话值得记住:埋得再深,也不是永久的。
合约面板上有时还能看到第四个选项 GTD,意思是有效到某个时间。你自己定一个截止时刻,到点没成交完的部分就自动取消。它适合「这张单只在今晚有意义」的情况,比如只想在某个数据公布前后那段时间里挂着,过了那个点,价格再好你也不想要了。GTD 和前面说的一年期限,都写在U 本位合约的通用定义那页上,查证于 2026 年 9 月,平台随时可能调整。
IOC 和 FOK,什么时候值得去点那个下拉框
换个说法理解 IOC 会更顺手:IOC 限价单会在你的限价范围内立即尝试成交,但它仍然是限价单。
市价单不由你设定限价,但仍可能受平台的价格保护和流动性限制。IOC 限价单是「能吃多少吃多少,但超过我填的这个价,一个都不吃」。行情急、盘口薄的时候,你想马上出掉一批币,又怕市价单一路滑到离谱的位置,IOC 就合适——价填在你能接受的最差位置,能走的当场走掉,走不掉的不会留在盘口上变成一张你没打算挂的挂单。滑点具体是怎么产生的,成交价为什么和你点的不一样那篇有完整的过程。
代价是可能只成交一部分,剩下的得你自己再想办法。所以用 IOC 的时候要想清楚:半张单成交,对你来说能不能接受。
如果答案是不能,那才轮到 FOK。
什么时候部分成交比完全不成交还糟?手动交易里其实不多。比较典型的是你要的恰好是一个整数量,少一点就没用:比如你想一次性买够某个数量去做对冲,买到一半反而让两边对不上;又或者你要卖的数量很小,拆出来的零头低于平台的最小下单金额,剩在手里卖不掉。这些时候,宁可什么都不发生,也比留下一个半截仓位好收拾。
我会先问自己能不能接受部分成交。能接受,再选继续挂着还是取消余量;只有明确需要立即全额成交时,才考虑 FOK。程序化交易也会用到这种全成或全撤的条件,但人手下单一样可以按自己的数量要求来选。
冰山单(把大单拆成很多小块挂出去的那种)在官方帮助页里写明不支持 IOC 和 FOK,勾了冰山,生效时间就只能留在 GTC。另外,止盈止损这类条件单能不能选生效时间、能选哪几项,各家平台做法不一样,别默认它跟普通限价单一个规矩,用之前在自己的界面上点开看一眼。
「只做挂单」跟它们是一家人,方向刚好反过来
把四个选项放在一起看,它们都在回答同一个问题:下单那一刻,这张单子会立刻成交的部分和不会立刻成交的部分,各自留还是扔。
- GTC:两部分都留,能成交的成交,剩下的挂着。
- IOC:留前者、扔后者。
- FOK:要么前者就是全部,要么全扔。
- 只做挂单:只肯要后者。只要这张单子有任何一部分会立刻成交,整张直接撤掉。
最后一条的用处在于:这张单子只要成交,就是以挂单身份成交、按挂单费率收费。现货里它通常是个勾选框,叫「只做挂单」或「只做 Maker」;合约接口里它干脆就是生效时间的一个取值,叫 GTX,全称 Good Till Crossing,字面意思是「一旦会穿过对面的价就失效」。名字不同,做的是同一件事。
它什么时候会让你措手不及?行情快的时候。你照着屏幕填了一个略低于卖一的买价,点提交的那一两秒里卖一往下掉了,你的价格变成会立刻成交的价,单子当场被撤。连撤几次还以为是系统卡了。挂单和吃单在费率上到底差多少、普通档上是否真有差,挂单和吃单差在哪那篇算过,这里不重复。
最后留一个判断顺序,下次点开那个下拉框之前在脑子里过一遍:这张单子没成交的部分,你希望它等着、消失,还是无法全成就从一开始不成交?先回答这个问题,再选条件。还没想清楚,就先别提交;GTC 会留下挂单,IOC 可能只成交一部分,FOK 可能完全不成交,三种结果都要能接受才下单。
点开下拉框之后常被问到的
IOC 被取消的那部分会收手续费吗?
不会。交易手续费按实际成交的部分收,被取消的那部分没有成交,也就没有交易手续费。FOK 整张作废时同理,一分不收。
FOK 单下了就消失,是网络出问题了吗?
不一定是网络问题。FOK 要求立即全部成交,无法满足时整单取消。先看历史委托中的状态、成交数量和取消原因;调整价格、数量或订单类型会改变风险与成交条件,也不能保证成交。
挂着没成交的 GTC 单会占用我的钱吗?
会。买单冻结对应的计价币,卖单冻结要卖的那部分币,冻结期间不能用来下别的单,也不能划转。撤掉这张单,冻结的部分就回到可用。