跳至主要内容

成交回報

ExecutionReport (8) 是 Bybit FIX API 的核心回應訊息,具有三種不同用途:

用途觸發條件ExecType
委託確認(Order ACK)NewOrderSingle (D) 的直接回應0(New)或 8(Rejected)
成交通知委託成交(部分或全部)F(Trade)
委託狀態推播被動委託狀態變更45

用途 2 與 3 僅在 ResponseMode=1(Everything)時推送。參見 ResponseMode


委託層級欄位

這些欄位描述整體委託狀態,在每條 ExecutionReport 中均包含。

Tag欄位說明
150ExecType執行事件類型(參見 ExecType 值
39OrdStatus目前委託狀態(參見 OrdStatus 值
37OrderID伺服器委託單 ID,委託建立被拒絕時缺失
11ClOrdID用戶端委託單 ID(orderLinkId
103OrdRejReason拒絕原因代碼(ExecType=8 時)
58Text錯誤訊息或備注
30010Category產品類型(spot
55Symbol交易對名稱
54Side1 = 買入;2 = 賣出
40OrdType1 = 市價;2 = 限價
38OrderQty原始委託數量
44Price委託價格
59TimeInForce委託有效期
151LeavesQty剩餘未成交數量
30041LeavesValue剩餘未成交金額
14CumQty累計已成交數量
6AvgPx平均成交價格
30038CumValue累計已成交金額
60TransactTime最後更新時間
30039CreateTime委託建立時間
30040CancelType取消原因(如 CancelByUserCancelBySmp
30013MarketUnit市價委託數量單位(baseCoin / quoteCoin)。限價單返回 UNKNOWN
30014IsLeverage是否使用保證金(Y/N

條件委託 / 止盈止損欄位(回傳委託狀態):

Tag欄位說明
30042StopOrderTypeStopTakeProfitStopLossOcoOrder
99StopPx觸發價格
30026TakeProfitPrice止盈觸發價格
30027StopLossPrice止損觸發價格
30030TpLimitPrice止盈限價
30031SlLimitPrice止損限價
30043OcoTriggerByOCO 觸發條件(現貨 OCO)

SMP 欄位:

Tag欄位說明
30018SmpType自我撮合防護類型
30044SmpGroupSMP 群組 ID
30045SmpOrderId觸發 SMP 的對手方委託單 ID

其他欄位:

Tag欄位說明
30046LastPriceOnCreated委託提交時的市場價格
30019RpiTakerAccess委託是否與 RPI 報價撮合
30048RpiMatchedQty透過 RPI 撮合的累計數量
30047BlockTradeId大宗交易識別碼
30022SlippageToleranceType滑點單位
30034SlippageTolerance滑點值

成交明細群組(NoFills)

僅在 ExecType=F(Trade)時存在,群組中每一條目代表一次個別成交。

NoFills (30050)NumInGroup 類型,宣告後續成交條目的數量。

重複組(Repeating Group)解析規則
  • Delimiter Tag:30051 FillExecID —— NoFills 組內每個成交條目必須以此 tag 開頭。解析器看到新的 30051 即代表下一條 entry 的開始。
  • 欄位順序:條目內欄位必須按下表宣告順序出現。選填欄位可省略,但存在時位置固定。FIX 引擎(QuickFIX / Onix 等)對順序敏感,錯序將直接 parse error。
Tag欄位說明
30051FillExecID執行 ID(execId)— delimiter tag,每條 entry 以此欄位開頭
30052FillQty本次成交數量
30053FillPx成交價格
30054FillTime成交時間
30055FillCommission手續費金額
30056FillCommCurr手續費幣別
30059FillCommRate手續費率
30057FillValue成交金額
30058FillIsMakerY 表示此次成交為掛單方
30063FillExecTypeTradeBlockTrade
30064FillLeavesQty本次成交後的剩餘數量
30065FillSeq用於跨訊息排序的跨序列號
30066FillBlockTradeId大宗交易 ID(如適用)

當一筆委託同時產生多次成交(如掃過多個價位)時,ExecutionReport 包含單條訊息且 NoFills > 1。委託層級的 CumQty (14)AvgPx (6) 反映群組內所有成交完成後的聚合狀態。

多筆成交報文示意(NoFills=2):

...30050=2|
30051=fill_A|30052=0.001|30053=50000|30054=20260101-00:00:00.000|...|
30051=fill_B|30052=0.002|30053=50001|30054=20260101-00:00:00.001|...

每次遇到 30051 即進入下一條 entry;重複組結束後即回到 order-level 欄位(或下一個重複組)。


累計手續費群組(NoFeeDetails)

選填,提供委託層級按幣別的手續費彙總。

NoFeeDetails (30060)NumInGroup 類型,宣告後續手續費條目的數量。

  • Delimiter Tag:30061 FeeCoin —— 每個條目必須以此 tag 開頭。
  • 條目內欄位固定為 30061 → 30062;此組僅兩個欄位,均為必填。
Tag欄位說明
30061FeeCoin手續費幣別 — delimiter tag,每條 entry 以此欄位開頭
30062Fee以此幣別計算的總手續費金額

ExecType 值

名稱說明
0New委託已接受並在掛單簿等待
4Canceled委託已取消
5Replaced改單事件。改單受理後由此類型的 ExecutionReport 推送最終訂單狀態;OrdStatus 仍為 0(New)——UTA 的 OrdStatus 不包含 Replaced 值
6PendingCancel取消中。不會透過 ExecutionReport 推送——取消請求由 OrderCancelAck (XCA) 確認收到。
8Rejected委託或請求被拒絕
APendingNew新委託的過渡狀態。OnlyAcks 模式下,NewOrderSingle 一定會先返回 PendingNew,再返回最終的 NewRejectedEverything 模式下,PendingNewNew 均會推送,但可能亂序到達。
DDeactivated條件委託已停用
EPendingReplace修改中。不會透過 ExecutionReport 推送——修改請求由 OrderAmendAck (XAA) 確認收到;修改後的訂單狀態由 ExecType=5(Replaced)的 ExecutionReport 推送給出(該推送中 OrdStatus 仍為 0 New,UTA 的 OrdStatus 不包含 Replaced 值)
FTrade委託成交(部分或全部)
TTriggered條件委託已觸發
UUntriggered條件委託等待觸發

OrdStatus 值

名稱說明
0New有效,未成交
1PartiallyFilled部分成交,仍有效
2Filled全部成交
4Canceled已取消
6PendingCancel取消請求處理中
8Rejected已拒絕
APendingNew委託提交處理中
DDeactivated條件委託已停用
EPendingReplace修改請求處理中
FPartiallyFilledCanceled部分成交後取消
TTriggered條件委託已觸發
UUntriggered條件委託等待觸發

範例

委託已接受(ExecType=0)

Everything 模式下,在 PendingNew ack 之後推送,攜帶完整訂單狀態。

8=FIX.4.4|9=359|35=8|34=3|49=BYBIT_FIX_SERVER|52=20260819-06:14:25.300|56=FIX_CLIENT|
11=6f008a79-7f4e-490f-a84f-b8953c45ab2d|37=2284923149198134016|150=0|39=0|
30010=spot|55=BTCUSDT|54=1|40=2|38=0.001000|44=30000.0|59=1|30013=UNKNOWN|30014=N|
151=0.001|30041=30.0000000|14=0|30038=0.0000000|
60=20260819-06:14:25.296|30039=20260819-06:14:25.295|
30018=None|30019=N|30046=64590.8|10=213|

全部成交(ExecType=F,單筆成交)

8=FIX.4.4|9=595|35=8|34=3|49=BYBIT_FIX_SERVER|52=20260819-04:53:16.267|56=FIX_CLIENT|
37=2284882304788957952|11=5042aecf-8a2a-44f5-9e96-4ba02fb4395a|150=F|39=2|
30010=spot|55=BTCUSDT|54=1|40=2|38=0.001000|44=67553.3|59=1|30013=UNKNOWN|30014=N|
151=0|30041=0.0000000|14=0.001|6=64627.5|30038=64.6275000|
60=20260819-04:53:16.262|30039=20260819-04:53:16.262|
30018=None|30019=N|30046=64627.4|
30050=1|30051=2100000000187175357|30052=0.001|30053=64627.5|30054=20260819-04:53:16.262|30055=0.000000427|30056=BTC|30059=0.000427|30057=64.6275|30058=N|30063=Trade|30064=0|30065=2178173800|
30060=1|30061=BTC|30062=0.000000427|
10=223|

委託被拒絕(ExecType=8)

8=FIX.4.4|9=130|35=8|49=BYBIT_FIX_SERVER|56=FIX_CLIENT|34=2|52=20240101-08:00:01.010|
30005=trace-abc125|30007=120|30008=119|30009=1704096060000|
11=my-order-002|150=8|39=8|103=99|58=Insufficient balance|10=xxx|

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