現貨成交機制
OCO 訂單怎麼下?Binance 現貨止盈、Stop-Limit 與部分成交完整流程
從 Binance 現貨委託入口建立 OCO,正確排列止盈、Stop 與 Limit,並在觸發、部分成交或跳空後核對和重建剩餘持倉保護。
讀完這篇,你應該能為一筆已持有的現貨部位建立 OCO:同時設定上方止盈與下方防守條件,正確填入數量、止盈價、Stop 與 Limit,確認兩個子委託已建立;若其中一邊只成交部分,你也能算出剩餘持倉並重新處理保護,而不是誤以為 OCO 仍完整有效。
OCO 解決的是兩張退出委託互相衝突
OCO 是 One Cancels the Other。以持有現貨後的 SELL OCO 為例,它把兩條互斥路徑綁成一組:
- 價格上漲時,由上方限價或止盈委託賣出;
- 價格下跌時,由下方 Stop 或 Stop-Limit 防守委託嘗試賣出;
- 其中一邊部分或完全成交後,另一邊取消。
若把兩張賣單完全獨立建立,第一張成交後,第二張可能仍留在系統,造成可用餘額不足或意外超額賣出。OCO 的作用是管理這個連動關係,不是保證一定止盈、一定停損或最大損失固定。
在 Binance 現貨委託區找到條件單入口

截圖右側是 Binance 未登入的 BNB/USDT 現貨委託面板。Stop Limit 旁有下拉箭頭;OCO、OTO 或 OTOCO 等连動功能是否出現在下拉選單,會受產品、介面版本、所在地與帳戶狀態影響。登入後應以自己頁面的實際選項為準。
截圖沒有帳戶、餘額或個人資料,圖中價格也不是操作建議。若當前交易對沒有 OCO 選項,不要用兩張互不連動的普通委託假裝等同 OCO。
建立前先完成持倉與可用餘額核對
先記錄四個數字:
- 實際持有數量;
- 已被其他委託占用的數量;
- 可用餘額;
- 本次 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 的完整順序
- 進入 Trade → Spot,選定正確交易對。
- 在委託區選 Sell,從 Stop Limit 下拉選單找 OCO。
- 在 Amount/Quantity 填入不超過可用餘額的基礎資產數量。
- 填入上方止盈 Price。
- 填入下方 Stop 觸發價。
- 填入觸發後的下方 Limit 價。
- 重新讀出完整價格鏈,確認方向與順序沒有顛倒。
- 檢查總額、價格精度、數量步長和最低成交額。
- 送出後到 Open Orders/Order List 確認有一個 OCO 群組及兩個子委託。
- 記下管理數量與子委託狀態,成交後再到 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:
- 從 Trade History 確認 Executed Quantity = 0.004 BTC;
- 確認另一邊已變成 Canceled;
- 檢查原止盈子委託是否仍有剩餘量,或整個 OCO 已結束;
- 重新整理餘額,計算約 0.006 BTC 的剩餘持倉;
- 依實際可用餘額重新建立防守,不能沿用原 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;是否可用以當前產品為準。
建立後到成交後的完整驗收
- 確認 OCO 群組建立成功,不是錯誤提示。
- 核對兩個子委託的方向、數量、Price、Stop 與 Limit。
- 確認上方委託為 New/Open,下方條件單處於等待狀態。
- 價格接近任一側時,查看狀態而不是只看 K 線。
- 一邊有任何成交後,確認另一邊 Canceled。
- 從每筆 Fill 加總成交量、平均價與費用。
- 以可用餘額計算剩餘持倉。
- 剩餘持倉若仍需保護,重新建立新委託並再次驗收。
常見問題與修正方式
| 問題 | 真正原因 | 修正方式 |
|---|---|---|
| 找不到 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 真正建立並受控,而不是只在圖表上畫出止盈與停損線。
延伸閱讀
核對資料
- Binance Academy:OCO 委託
- Binance Academy:使用 API 建立 OCO 與部分成交規則
- Binance Academy:可用委託類型
- Binance Developer Docs:OCO 交易端點
- Binance Developer Docs:現貨 Filters
本文是現貨委託機制與風險管理教育,不構成投資建議。OCO 能連動委託,不能保證價格、流動性或最大損失。
