跳至主要内容

修改委託單

important
  • Bybit 使用 AtomicReplaceRequest (XAR) 進行委託修改。不支援 FIX 標準的 OrderCancelReplaceRequest (G)
  • 提供 OrderID (37)ClOrdID (11) 其中之一來識別委託單。若兩者均提供且不一致,以 OrderID 為準。
  • 僅包含需要修改的欄位,未填寫的欄位保持原值。
  • 僅可修改未成交部分成交的委託單。
  • 隊列優先級: 將價格改往更靠近盤口的方向可提高隊列優先級;增加 OrderQty 會失去當前隊列位置;減少 OrderQty 不影響撮合優先級。

訊息類型

AtomicReplaceRequest — MsgType XAR

請求欄位

Tag欄位必填類型說明
30010CategoryYString產品類型,目前僅支援 spot
55SymbolYString交易對名稱,例如 BTCUSDT
37OrderIDNString伺服器委託單 ID,OrderIDClOrdID 至少填一個
11ClOrdIDNString用戶端委託單 ID,OrderIDClOrdID 至少填一個
38OrderQtyNQty新的委託數量
44PriceNPrice新的委託價格
99StopPxNPrice條件委託的新觸發價格
30026TakeProfitPriceNPrice新的止盈觸發價格,當傳"0"時, 表示取消當前訂單上設置的止盈
30027StopLossPriceNPrice新的止損觸發價格,當傳"0"時, 表示取消當前訂單上設置的止損
30030TpLimitPriceNPrice新的止盈限價
30031SlLimitPriceNPrice新的止損限價

回應

伺服器回應 OrderAmendAck (XAA)

Tag欄位必填說明
37OrderIDN伺服器委託單 ID。拒絕時不返回
11ClOrdIDN原始訂單的 ClOrdID(orderLinkId)。拒絕時不返回,需依照發送順序關聯請求與拒絕回應
150ExecTypeN受理成功時為 E(PendingReplace)。拒絕時不返回 —— 收到 XAA 但缺少 150/39、且帶有 103/58,即代表本次改單被拒
39OrdStatusN受理成功時為 E(PendingReplace)。拒絕時不返回
103OrdRejReasonNBybit 內部錯誤碼(例如 10001)。僅在拒絕時存在
58TextN可讀的拒絕說明。僅在拒絕時存在
信息

OrderAmendAck 僅為受理確認ExecType=E PendingReplace),僅包含最小狀態欄位,不返回完整委託資訊(數量、價格等)。最終修改狀態由後續 ExecutionReport (35=8) 推送給出(在 ResponseMode=1 模式下),或可透過 REST API 查詢。


請求範例

8=FIX.4.4|9=239|35=XAR|34=3|49=FIX_CLIENT|52=20260824-10:37:21.002|56=BYBIT_FIX_SERVER|
30002=1787567841002|30001=5000|
30010=spot|55=BTCUSDT|30006=50fe3e28-f97c-487d-8f5d-8651acde7bc1|
37=2288679064669883136|11=e05649fe-e1a5-482a-821e-68cc25ed8254|38=0.002|10=140|

注意:| 在實際傳輸格式中代表 SOH(0x01)字元。

PendingReplace Ack(ExecType=E)

ExecType=E(PendingReplace)與 OrdStatus=E(PendingReplace)代表伺服器已收到並排隊處理改單,尚未進入終態。

  • OnlyAcks 模式下這是唯一的回應。
  • Everything 模式下這條先到,隨後會推送 ExecutionReport (35=8) 攜帶修改後的訂單狀態。
  • 速率限制標頭(30005 TraceId、30007 BapiLimit、30008 BapiLimitStatus、30009 BapiLimitResetTimestamp)僅出現在這條 ack 上,後續狀態推播不再攜帶。
  • 若請求攜帶 30006 ReqId,此 ack 會原樣回帶;後續狀態推送則不會攜帶 30006
8=FIX.4.4|9=264|35=XAA|34=2|49=BYBIT_FIX_SERVER|52=20260824-10:37:21.258|56=FIX_CLIENT|
30005=6bf19e217c37870d49032dbf7cda90dc|30006=50fe3e28-f97c-487d-8f5d-8651acde7bc1|30007=10|30008=9|30009=1787567841257|
11=e05649fe-e1a5-482a-821e-68cc25ed8254|37=2288679064669883136|150=E|39=E|10=140|

改單後訂單狀態推送範例(ExecType=5)

Everything 模式下,PendingReplace Ack 之後由 ExecutionReport (35=8) 推送修改後的訂單狀態:150=5(Replaced)表示本 report 承載的是 Replace 事件;39=0(New)表示改單後訂單持續狀態仍為 New(UTA 的 OrdStatus 不包含 Replaced)。OrderID 保持不變(改單為原子替換);38 OrderQty/44 Price 等反映改單後的最新值;30039 CreateTime 仍為原始下單時間,60 TransactTime 為改單事件時間。此推送不再攜帶速率限制標頭與 30006 ReqId

8=FIX.4.4|9=360|35=8|34=3|49=BYBIT_FIX_SERVER|52=20260824-10:37:21.263|56=FIX_CLIENT|
11=e05649fe-e1a5-482a-821e-68cc25ed8254|37=2288679064669883136|150=5|39=0|
30010=spot|55=BTCUSDT|54=1|40=2|38=0.002000|44=50000.0|59=1|30013=UNKNOWN|30014=N|
151=0.002|30041=100.0000000|14=0|30038=0.0000000|
60=20260824-10:37:21.258|30039=20260824-10:36:45.309|
30018=None|30019=N|30046=77307.8|10=213|

失敗回應範例(已拒絕)

客戶端需依發送順序關聯本次改單請求,並透過 103 內部錯誤碼與 58 錯誤描述判斷失敗原因。

8=FIX.4.4|9=239|35=XAA|34=2|49=BYBIT_FIX_SERVER|52=20260820-03:47:07.284|56=FIX_CLIENT|
30005=43a6c52966d9c0f137d9fedf7e8c12a0|30007=10|30008=9|30009=1787197627283|
58=The order remains unchanged as the parameters entered match the existing ones.|103=10001|10=085|