Trade Streams
Stream: <symbol>@trade · Update speed: real-time
Status: Implemented.
One frame per fill, taken from the matching engine's fill feed as it happens. This is the same event that later appears in GET /api/v3/trades and, for its two parties, in myTrades.
Frame (values illustrative)
{
"e": "trade",
"E": 1756600000456,
"s": "CBTC-USDCB",
"t": "019910a4-5b2e-7c3d-9e8f-0a1b2c3d4e5f",
"p": "60001.50",
"q": "0.0100",
"T": 1756600000456,
"m": false
}
| Field | Type | Notes |
|---|---|---|
e | string | Always "trade". |
E | number | Event time, Unix ms (gateway receive time). |
s | string | Canonical symbol, uppercase with hyphen. |
t | string | Trade id — UUID string. Equal to id on GET /api/v3/trades and myTrades. |
p, q | string | Price and base quantity. |
T | number | Trade time, Unix ms. Same value as E: the engine's fill event carries no separate timestamp. |
m | boolean | true if the buyer was the maker (the taker sold). |
Not present, by design: b / a (buyer/seller order ids), M, and any party or account identifier. This is a public stream; nothing in it lets an observer attribute a print to a participant.
Semantics
- Internal engine events that are not fills (for example the cancellation of a MARKET order's unfilled remainder) are filtered out and never appear here.
- Fills are delivered in engine order. A slow consumer that overruns its 256-frame queue skips ahead and misses prints; reconcile with
GET /api/v3/trades(newest first) if you detect a gap in wall-clock time. - Every fill on the venue appears, including fills between Rocky house accounts.
Differences from Binance
tis a UUID string, not an integer.- No
b,a, orMfields;EandTare identical. - No
@aggTradestream.