OCO订单被取消,大部分情况下不是因为系统异常,而是因为它的核心逻辑——"一个成交,另一个自动取消"被触发了,或者是止损单触发了但限价单没有成交。搞清楚OCO的触发规则和订单簿的实际情况,就能定位问题原因。
OCO的基本触发规则:谁先成交,谁就赢
OCO(One-Cancels-the-Other,选择性委托)订单是同时挂出"限价单"和"止损限价单"两个订单,价格一个在现价上方,一个在下方。
卖出OCO(常用于止盈止损):限价单在现价上方,止损单在现价下方。价格上涨触及限价单,限价单成交,止损单自动取消;价格下跌触发止损单,止损限价单被激活,限价单自动取消。
买入OCO(常用于突破或回调入场):限价单在现价下方,止损单在现价上方。价格下跌触及限价单,限价单成交,止损单取消;价格上涨触发止损单,限价单取消。
情况A:其中一边触发后,另一边被自动取消
这是OCO最正常、最符合设计预期的取消原因。
触发逻辑:当价格到达其中一边的条件时,系统会执行这一边的订单,并立即自动取消另一边的订单。如果你看到订单被取消的记录,去查一下同一时间另一边是否成交了。如果成交了,取消是正常的。
完成标准:在【历史订单】或【成交记录】里,能看到其中一边有成交记录,另一边在相同时间点被取消。
情况B:止损单触发后,限价单未成交
这是造成OCO"被取消"最常见的技术性原因。OCO的止损端通常设置为止损限价单,它分两步:
触发(Trigger):价格达到你设置的"触发价格",系统生成一个限价单。
成交(Execution):这个新生成的限价单需要等市场上有人愿意以你的"限价"接盘,才能成交。
如果市场行情剧烈波动,价格迅速穿过了你的限价单,订单可能在触发后因为来不及成交而被直接取消。例如,你设置"触发价87,000,限价85,000",价格从87,000直接跌到84,500,你85,000的限价单根本来不及成交,就会被系统取消。
情况C:部分成交后,剩余部分被取消
如果OCO中的一方只是"部分成交"(比如只成交了你挂单量的一半),这笔交易的剩余部分会继续等待成交。但由于OCO"一个成交,另一个取消"的规则,当任何一笔订单只要有成交发生,另一边的订单就会被立即取消。但如果OCO的限价单部分成交后,剩余部分没有被立即取消,而是留在订单簿中,直到OCO的另一端被触发后,才整个被取消。
风险提醒:在波动剧烈的行情下,OCO中的止损限价单有较高的"滑点"和"未成交即取消"风险。限价单的"触发价"和"限价"之间如果太窄,很容易因为来不及成交而被系统取消,导致你的止损策略失效。在设置OCO时,为止损单的"限价"留出合理的缓冲空间,比设得越紧越好。



