現貨成交機制

OCO 訂單怎麼下?Binance 現貨止盈、Stop-Limit 與部分成交完整流程

從 Binance 現貨委託入口建立 OCO,正確排列止盈、Stop 與 Limit,並在觸發、部分成交或跳空後核對和重建剩餘持倉保護。

OCO 訂單怎麼下?Binance 現貨止盈、Stop-Limit 與部分成交完整流程

讀完這篇,你應該能為一筆已持有的現貨部位建立 OCO:同時設定上方止盈與下方防守條件,正確填入數量、止盈價、Stop 與 Limit,確認兩個子委託已建立;若其中一邊只成交部分,你也能算出剩餘持倉並重新處理保護,而不是誤以為 OCO 仍完整有效。

OCO 解決的是兩張退出委託互相衝突

OCO 是 One Cancels the Other。以持有現貨後的 SELL OCO 為例,它把兩條互斥路徑綁成一組:

  • 價格上漲時,由上方限價或止盈委託賣出;
  • 價格下跌時,由下方 Stop 或 Stop-Limit 防守委託嘗試賣出;
  • 其中一邊部分或完全成交後,另一邊取消。

若把兩張賣單完全獨立建立,第一張成交後,第二張可能仍留在系統,造成可用餘額不足或意外超額賣出。OCO 的作用是管理這個連動關係,不是保證一定止盈、一定停損或最大損失固定。

在 Binance 現貨委託區找到條件單入口

Binance BNB/USDT 公開現貨交易頁真實截圖,右側委託面板顯示 Limit、Market 與帶下拉箭頭的 Stop Limit,作為進入條件與連動委託功能的入口

截圖右側是 Binance 未登入的 BNB/USDT 現貨委託面板。Stop Limit 旁有下拉箭頭;OCO、OTO 或 OTOCO 等连動功能是否出現在下拉選單,會受產品、介面版本、所在地與帳戶狀態影響。登入後應以自己頁面的實際選項為準。

截圖沒有帳戶、餘額或個人資料,圖中價格也不是操作建議。若當前交易對沒有 OCO 選項,不要用兩張互不連動的普通委託假裝等同 OCO。

建立前先完成持倉與可用餘額核對

先記錄四個數字:

  1. 實際持有數量;
  2. 已被其他委託占用的數量;
  3. 可用餘額;
  4. 本次 OCO 要管理的數量。

例如帳面持有 0.010 BTC,但另一張賣單已占用 0.004 BTC,可用餘額只有 0.006 BTC。此時不能用 0.010 BTC 建立新的 SELL OCO,除非先取消原委託並確認餘額已釋放。

OCO 數量也不必等於全部持倉;可以只管理一部分,但未納入的部位不受這組 OCO 保護。

SELL OCO 的典型價格順序

假設目前成交價約為 60,000 USDT,要管理 0.010 BTC:

  • 上方止盈限價:66,000;
  • 下方 Stop:55,000;
  • 下方 Limit:54,500;
  • Quantity:0.010 BTC。

典型順序是:

止盈價 66,000 > 目前價格 60,000 > Stop 55,000 > Limit 54,500

上方價格要高於當前市場,才是等待上漲止盈;下方 Stop 要低於當前市場,才是等待下跌觸發。SELL Stop-Limit 中把 Limit 放在 Stop 下方一小段,是為快速下跌後提供一定成交範圍,但仍不保證成交。

數字只用於講解順序,不是 BTC 當前價格或建議比例。

Stop 與 Limit 是兩個不同指令

  • Stop:何時啟動防守子委託。
  • Limit:啟動後送入訂單簿的最低賣價。

當價格觸及 55,000,系統才建立 54,500 的限價賣單。它可以在 54,500 或更高價格成交;若市場直接從 55,100 跳到 53,000,買方不願支付 54,500,防守單可能保持未成交。

因此「Stop 已觸發」只代表限價單已啟動,不代表資產已賣出。必須繼續查看子委託的 Executed Quantity、Remaining Quantity 和狀態。

OCO 在 Binance 的兩個子委託如何組成

Binance 當前 OCO API 允許一個上方類型與一個下方類型配對:一邊是 LIMIT_MAKER、TAKE_PROFIT 或 TAKE_PROFIT_LIMIT,另一邊是 STOP_LOSS 或 STOP_LOSS_LIMIT。網頁/App 可能把它簡化成「Price、Stop、Limit、Amount」等欄位。

一般現貨 SELL OCO 常見為:

  • 上方 LIMIT_MAKER:立即進入訂單簿等待止盈;
  • 下方 STOP_LOSS_LIMIT:Stop 未到前等待,觸發後送出 Limit。

兩邊都必須使用同一個交易對、方向與管理數量,並分別通過價格、數量與成交額規則。

Binance 網頁建立 SELL OCO 的完整順序

  1. 進入 Trade → Spot,選定正確交易對。
  2. 在委託區選 Sell,從 Stop Limit 下拉選單找 OCO。
  3. 在 Amount/Quantity 填入不超過可用餘額的基礎資產數量。
  4. 填入上方止盈 Price。
  5. 填入下方 Stop 觸發價。
  6. 填入觸發後的下方 Limit 價。
  7. 重新讀出完整價格鏈,確認方向與順序沒有顛倒。
  8. 檢查總額、價格精度、數量步長和最低成交額。
  9. 送出後到 Open Orders/Order List 確認有一個 OCO 群組及兩個子委託。
  10. 記下管理數量與子委託狀態,成交後再到 Trade History 驗收。

只看到「已提交」提示還不夠。若整組因某一子委託參數錯誤而被拒絕,實際上沒有任何退出保護。

三種主要結果要分開理解

結果一:上方止盈完全成交

價格上漲到 66,000,0.010 BTC 全部成交;下方防守子委託取消。驗收時應看到止盈端 Filled、防守端 Canceled,並核對費用與實收 USDT。

結果二:下方 Stop 觸發並成交

價格跌到 55,000,止盈端取消,54,500 限價賣單進入市場。只要有足夠買盤願意支付 54,500 或更高,可能全部或部分成交。

結果三:Stop 觸發但 Limit 未成交

價格快速跌穿 54,500,防守限價留在簿上。此時 OCO 的連動已發生,但持倉可能仍在。不能把觸發線當成已實現的停損價。

部分成交是 OCO 最重要的驗收點

Binance 當前官方 OCO 指南說明:其中一個子委託只要部分或完全成交,另一個子委託就取消。未成交的剩餘持倉需要另外處理。

例如 OCO 管理 0.010 BTC,止盈端只成交 0.004 BTC:

  1. 從 Trade History 確認 Executed Quantity = 0.004 BTC;
  2. 確認另一邊已變成 Canceled;
  3. 檢查原止盈子委託是否仍有剩餘量,或整個 OCO 已結束;
  4. 重新整理餘額,計算約 0.006 BTC 的剩餘持倉;
  5. 依實際可用餘額重新建立防守,不能沿用原 0.010 BTC。

手續費若從 BTC 扣除,可用餘額還可能與簡單的 0.010 − 0.004 不完全相同,所以最後以帳戶餘額與 Commission Asset 為準。

跳空或流動性不足時怎麼處理

建立 OCO 前先寫好替代方案:若 Stop-Limit 觸發後未成交,是否要取消並改用其他委託、縮小數量、分批,或接受繼續持有。不要在快速行情中才第一次思考。

Stop 與 Limit 距離太窄,價格控制較緊但未成交風險更高;距離較寬,成交機率可能提高,但最差可接受價格也更低。兩者沒有通用的固定百分比,應由交易對深度、波動與你的最大可接受價格決定。

價格、數量與餘額造成的常見拒單

價格順序錯誤

SELL OCO 的上方與下方價格放錯,或 Stop 設在會立即觸發的位置,可能整組被拒絕。送出前應把「上方價 > 當前價 > 下方 Stop」完整讀一遍。

PRICE_FILTER

上方 Price、Stop 和 Limit 都必須符合交易對的 tickSize。若價格步長為 0.10,54,500.05 可能不是合法輸入。

LOT_SIZE

Quantity 必須符合 minQty、maxQty 和 stepSize。若步長為 0.001,0.0105 可能不符合要求。

MIN_NOTIONAL/NOTIONAL

兩個子委託都要滿足名義成交額要求。部分持倉太小時,即使餘額存在,也可能無法建立 OCO。

INSUFFICIENT_BALANCE

資產可能被其他委託、Earn、保證金用途或轉帳占用。先取消衝突委託並確認可用餘額更新,不要只看總餘額。

OCO、兩張獨立委託與 OTOCO 的差別

結構 適用目標 核心限制
兩張獨立委託 平臺沒有連動功能且使用者能自行監控 一邊成交後另一邊不會自動取消,可能衝突
OCO 已持有部位,同時規劃兩條互斥退出路徑 部分成交後另一邊取消,剩餘持倉要另管
OTOCO 先建立入場,完全成交後再啟動 OCO 出場組 入場若只部分成交,待執行退出組可能尚未啟動

OCO 不是「一張買入加兩張退出」。若你還沒有持倉,却想把入場與兩個退出條件連成一組,概念上更接近 OTOCO;是否可用以當前產品為準。

建立後到成交後的完整驗收

  1. 確認 OCO 群組建立成功,不是錯誤提示。
  2. 核對兩個子委託的方向、數量、Price、Stop 與 Limit。
  3. 確認上方委託為 New/Open,下方條件單處於等待狀態。
  4. 價格接近任一側時,查看狀態而不是只看 K 線。
  5. 一邊有任何成交後,確認另一邊 Canceled。
  6. 從每筆 Fill 加總成交量、平均價與費用。
  7. 以可用餘額計算剩餘持倉。
  8. 剩餘持倉若仍需保護,重新建立新委託並再次驗收。

常見問題與修正方式

問題 真正原因 修正方式
找不到 OCO 介面、地區或產品未提供 查看 Stop Limit 下拉;不要用獨立單冒充連動單
OCO 整組建立失敗 任一子委託價格、數量或總額不合規 逐一檢查 tickSize、stepSize、notional 與價格順序
Stop 已觸發卻沒賣出 Stop-Limit 只啟動限價,市場已跌穿 Limit 到 Open Orders 確認,按預先方案處理
止盈只成交一部分後沒有防守 另一邊因部分成交已取消 計算剩餘可用持倉並建立新保護
顯示餘額足夠卻不能建立 資產被其他委託占用 看 Available Balance,不只看 Total Balance
手動取消一邊後兩邊都消失 OCO 子委託相互連動 取消前先確認影響,取消後核對整組狀態

完成檢查表

  • 我知道 OCO 適合管理已持有部位的兩條互斥退出路徑。
  • 我能正確排列止盈價、目前價、Stop 與 Limit。
  • 我會以可用餘額而不是總餘額設定 Quantity。
  • 我知道 Stop 觸發不等於 Limit 已成交。
  • 我知道一邊部分成交後,另一邊會取消,剩餘持倉需另行管理。
  • 我會核對 OCO 群組、兩個子委託、每筆 Fill、費用與剩餘餘額。

六項都能完成,才算 OCO 真正建立並受控,而不是只在圖表上畫出止盈與停損線。

延伸閱讀

核對資料

本文是現貨委託機制與風險管理教育,不構成投資建議。OCO 能連動委託,不能保證價格、流動性或最大損失。