Trade
Summary
List of message supported on the trade and otc trade connections
- New Order Single (Client → TDX)
- Order Cancel Request (Client → TDX)
- Execution Report (Client ← TDX)
- Order Cancel Reject (Client ← TDX)
- RFQ Orders in OTC
- Quote Request (Client → TDX)
- Quote (Client ← TDX)
- Quote Response (Client → TDX)
- Execution Report (Client ← TDX)
- Quote Cancel (Client ← TDX)
New Order Single
Tag | Field name | Req'd | Data Type | Comments |
---|---|---|---|---|
Standard Header | Y | MsgType = D | ||
11 | ClOrdID | Y | String | Must be unique identifier sent by the client. Used for response |
1 | Account | Y | String | The client SubAccount that is trading, found in the TDX Client Profile |
526 | EndClientIdentifier | N | For institutional clients that don't segregate assets account but need trading alerts detection on end client performed by TDX. (Need to be enabled beforehand). Must be an unique ID per end client. Must be anonymized (non-PII). Ignored in OTC Trading | |
54 | Side | Y | Char | Side of order in reference to the dealt assets (tag 15). Valid values: 1 = Buy 2 = Sell |
55 | Symbol | Y | String | Symbol to trade on, for instance BTC/EUR |
38 | OrderQty | Y | Qty | The amount for the order of the specified asset (tag 15) |
40 | OrdType | Y | Char | Type of order. Valid values: 1 = Market 2 = Limit |
44 | Price | C | Price | Required for limit orders |
59 | TimeInForce | N | Char | How long the order remains in effect. Valid values: 0 = Day (default for limit orders) 1 = Good till cancel 5 = Immediate or cancel (default for market orders) |
60 | TransactTime | Y | UTCTimestamp | Time this order was initiated/released by the client trading system |
Standard Trailer | Y |
Order Cancel Request
Used to cancel an order. An order already partially filed will have the remaining quantity canceled.
Tag | Field name | Req'd | Data Type | Comments |
---|---|---|---|---|
Standard Header | Y | MsgType = F | ||
11 | ClOrdID | Y | String | Must be a unique identifier for the cancel request, sent by the client. Returned in the cancellation execution report |
41 | OrigClOrdID | Y | String | ClOrdID of the order to be cancelled. |
55 | Symbol | Y | String | Symbol of the order to cancel |
54 | Side | Y | Char | Ignored (required by FIX) |
38 | OrderQty | Y | Qty | Ignored (required by FIX) |
60 | TransactTime | Y | UTCTimestamp | Time this cancel request was initiated/released by the client trading system |
Standard Trailer | Y |
Execution Report
Tag | Field name | Req'd | Data Type | Comments |
---|---|---|---|---|
Standard Header | Y | MsgType = 8 | ||
37 | OrderID | Y | String | Unique identifier defined by TDX. Unique and unchanged for this chain of order (the initial execution report and all the following execution report from regarding a status update or the order eventual modification / cancellation) |
11 | ClOrdID | Y | String | Must be the unique identifier sent by the client. Used for response |
54 | Side | Y | Char | Side of the order |
55 | Symbol | Y | String | Symbol |
38 | OrderQty | Y | Qty | Quantity ordered |
40 | OrdType | Y | Char | Type of order |
44 | Price | C | Price | Price at which the client wants to buy/sell. Only if OrdType = 40 (limit). |
110 | MinQty | N | Qty | Minimum quantity ordered by the client |
150 | ExecType | Y | Char | The execution report’s type. Valid values: 0 = New 3 = Done 4 = Cancelled 5 = Replaced 8 = Rejected C = Expired F = Trade (Partial Fill or Fill) |
39 | OrdStatus | Y | Char | Current order state. Valid values: 0 = New 1 = Partially filled 2 = Filled 4 = Cancelled 8 = Rejected C = Expired |
32 | LastQty | C | Quantity | Quantity bought/sold on the last fill. Only when ExecType = F (trade). |
31 | LastPx | C | Price | Price of this last fill. Only when ExecType = F (trade). |
151 | LeavesQty | C | Quantity | Remaining quantity open for execution |
14 | CumQty | C | Quantity | Sum of executed quantities for this chain of fills for the same order. Only set when ExecType = F (trade) |
6 | AvgPx | C | Price | Average price of the chain of fills weighted by quantity. Only set when ExecType = F (trade) |
60 | TransactTime | Y | UTCTimestamp | Time this cancel request was initiated/released by the client trading system |
58 | Text | C | String | Will contain the reason if a rejection occurred |
Standard Trailer | Y |
Order Cancel Reject
Tag | Field name | Req'd | Data Type | Comments |
---|---|---|---|---|
Standard Header | Y | MsgType = 9 | ||
37 | OrderID | Y | String | Unique identifier defined by TDX. Unique and unchanged for this chain of order (the initial execution report and all the following execution report from regarding a status update or the order eventual modification / cancellation) |
11 | ClOrdID | Y | String | Must be the unique identifier sent by the client. Used for response |
41 | OrigClOrdID | Y | String | ClOrdID of the Order that could not be cancelled |
39 | OrdStatus | Y | Char | Current order state. Valid values: 0 = New 1 = Partially filled 2 = Filled 3 = Done for the day 4 = Cancelled 6 = Pending cancel 8 = Rejected C = Expired |
58 | Text | Y | String | Will contain the reason |
Standard Trailer | Y |
OTC RFQs
The OTC Trading of TDX supports the RFQ trading flow. While the flow results in trades, it is substantially different from single orders and its usage in FIX is less mainstream, it is thus described in detail here.
Overview
In this integration the stream of quotes is initiated by sending a QuoteRequest (R) message. When a valid QuoteRequest is received, TDX begins streaming Quote (S) messages. A client accepts a quote by sending a QuoteResponse (AJ) message, and any resulting trade (or rejection) is reported via an ExecutionReport (8). Finally, a Quote Cancel (Z) message marks the end of the quote stream.

Quote Request
To request a stream of quotes, send a QuoteRequest message :
Tag | FieldName | Required | Data Type | Comment |
---|---|---|---|---|
Standard Header | Y | MsgType = R | ||
131 | QuoteRequestID | Y | string | A globally unique identifier chosen by the client (a UUID v4 is recommended). |
146 | NoRelatedSym | Y | integer | Set to 1, indicating that one symbol (and its associated component block) follows. |
55 | Symbol | Y | string | The pair symbol for which quotes are requested (e.g. ETH/USD ). |
1 | Account | Y | string | The sub-account used on TDX for trading. |
38 | OrderQty | Y | decimal | The base quantity to be quoted at the preferred precision (e.g. 42.0000 , meaning 42 ETH). |
Quote
The Quote message provides the details of each bid or ask :
Tag | FieldName | Required | Data Type | Comment |
---|---|---|---|---|
Standard Header | Y | MsgType = S | ||
117 | QuoteID | Y | string | An encoded token to use when accepting this specific quote. |
55 | Symbol | Y | string | The pair symbol for which the quote is provided (e.g. ETH/USD ). |
54 | Side | Y | char | Indicates the side: 1 (Buy, for an Ask quote) or 2 (Sell, for a Bid quote). |
23432 | OtcRfqID | Y | string | A UUID identifying this stream of quotes; must be repeated for any message that references this stream. |
132 | BidPx | Y | decimal | The proposed unit price, applicable for a Bid. |
133 | OfferPx | Y | decimal | The requested unit price, applicable for an Ask. |
134 | BidSize | Y | decimal | Same as the OrderQty from the QuoteRequest, repeated for ease of consumption. |
135 | OfferSize | Y | decimal | Same as the OrderQty from the QuoteRequest, repeated for ease of consumption. |
Quote Response
To accept a quote from the stream, send a QuoteResponse message :
Tag | FieldName | Required | Data Type | Comment |
---|---|---|---|---|
Standard Header | Y | MsgType = AJ | ||
694 | QuoteResponseType | Y | char | Must be set to 1 (Hit/Lift) to accept the quote. |
693 | QuoteResponseID | Y | string | A unique, client-provided id to identify this quote response |
1 | Account | Y | string | The sub-account used on TDX for trading (as in the QuoteRequest). |
55 | Symbol | Y | string | The pair symbol for which the quotes were requested (e.g. ETH/USD ). |
117 | QuoteID | Y | string | The encoded token from the Quote that the client wishes to accept. |
23432 | OtcRfqID | Y | string | The UUID identifying the flow of quotes to which the accepted quote belongs. |
Execution Report
After accepting a quote, TDX sends an ExecutionReport message that contains the trade’s outcome. While it is also present in normal order flows, the most relevant and RFQ-specific fields are repeated here :
Tag | FieldName | Required | Data Type | Comment |
---|---|---|---|---|
Standard Header | Y | MsgType = 8 | ||
150 | ExecType | Y | char | F indicates that the quote acceptance resulted in a trade; 8 indicates rejection. |
17 | ExecID | Y | string | A UUID corresponding to the traded quote. |
23432 | OtcRfqID | Y | string | The UUID identifying the stream of quotes that generated this trade. |
39 | OrderStatus | Y | char | 2 (Filled) if traded, or 8 (Rejected) if not; provided for ease of integration and to show that quotes are fulfilled in one trade. |
693 | QuoteResponseID | Y | string | Repeats the QuoteResponseID provided by the client during acceptance. |
11 | ClOrdID | Y | string | Repeats the ClOrdID provided by the client during the quote acceptance. |
Quote Cancel
When a quote stream terminates or is explicitly cancelled, the following message is sent:
Tag | FieldName | Required | Data Type | Comment |
---|---|---|---|---|
Standard Header | Y | MsgType = Z | ||
298 | QuoteCancelType | Y | integer | Will be set to 4 , indicating “All Quotes”. |
23432 | OtcRfqID | Y | string | The UUID identifying the stream of quotes that is being terminated. |
Updated 12 days ago