NewOrderSingle (35=D)
Creates a new BUY or SELL order on the Exchange.This call is asynchronous, so the response with Pending New is simply an acceptance of the request, but not necessarily mean it is confirmed into order book.
The drop copy subscription can be used to check when the order is successfully created.
See FIX Spot Order Life Cycle and ExecutionReport for details.
Mandatory parameters based on OrdType:
| OrdType | Side | Additional Mandatory Parameters |
|---|---|---|
| 1: MARKET | 1: BUY | CashOrderQty or OrderQty, mutually exclusive |
| 1: MARKET | 2: SELL | OrderQty |
| 2: LIMIT | 1: BUY | OrderQty, Price |
| 2: LIMIT | 2: SELL | OrderQty, Price |
Response Attributes:
- MsgType (35) = 8
- OrderID (37): Newly created order ID
- OrdStatus (39) = A for an order being accepted, but not yet confirmed
- ClOrdID (11): Unique identifier as assigned by the buy-side
- ExecType (150) = A for an order being accepted, but not yet confirmed
- ExecType (150) = I will also be sent when a trigger order is confirmed but not yet triggered
Request
Body
required
- 6: POST_ONLY, - 8: SMART_POST_ONLY, - Or leave empty
Unique identifier for Order as assigned by the buy-side. Uniqueness must be guaranteed across trading sessions.
Required for OTC Order. Indicates whether OrderQty is for Base Currency or Quote Currency (Limit Orders Only). Options are:
Possible values: [6, 8]
For LIMIT Orders, MARKET orders only - Order Quantity
Possible values: [1, 2, D]
1: MARKET, 2: LIMIT, D: PREVIOUSLY_QUOTED. Must of D for OTC RFQ Order. Must of 1 or 2 for OTC RFS Order
For LIMIT orders only - Unit price
Possible values: [1, 2]
1: BUY, 2: SELL
e.g., ETH_CRO, BTC_USDT
Possible values: [1, 3, 4]
(Limit Orders Only) Options are: - 1: GOOD_TILL_CANCEL (Default if unspecified), - 3: IMMEDIATE_OR_CANCEL, - 4: FILL_OR_KILL.
Time this order request was initiated/released by the trader or trading system. i.e. 20190525-08:26:38.989 (in GMT)
Required for OTC Order. Must be RFS for OTC RFS Order
For MARKET (BUY) orders only - Notional amount to spend
Possible values: [1, 2, 3]
1: SPOT places order without margin (default for Spot), 2: SPOT places order with margin
Possible values: [2, I, M]
which price to use for ref_price: 2: LAST_PRICE (default for Spot), I: INDEX_PRICE, M: MARK_PRICE
Possible values: [M, S]
Optional Field. Possible Values: - M: Matches Master or Sub a/c, - S: Matches Sub a/c only. Note: orderbook-specific settings takes higher precedence.
Mandatory if SelfMatchPreventionScope is set. Possible Values: - 1: Cancel Taker, - 2: Cancel Maker, - 3: Cancel Both Maker and Taker
Optional Field. Possible Value: 0 to 32767. Default Value: - If SelfMatchPreventionScope & SelfMatchPreventionInstruction are not specified, REJECT, - If SelfMatchPreventionScope is specified, default value = 0. Note: orderbook-specific settings takes higher precedence.
Fee currency for trade. Only present if this message was the result of a fill.
Valid Values: [SPOT] Buy - Base/Quote token/USD/USDT/EUR [SPOT] Sell - Quote token/USD/USDT/EUR [DERIV] Buy/Sell - USD/USDT/EUR
Example: If a client would like to BUY CRO/BTC, the default fee token is CRO, valid tokens are CRO/BTC/USD/USDT/EUR. If a client would like to SELL CRO/BTC, the default fee token is BTC, valid tokens are BTC/USD/USDT/EUR. If a client would like to BUY/SELL BTCUSD-PERP, the default fee token is USD, valid tokens are USD/USDT/EUR.
If a client has an insufficient balance in their preferred fee token, the system will switch to the default fee token.
Optional Field, Broker ID of the client.
This field is for setting the latency threshold. By default, if this field is not set explicitly, default value 5000 (i.e. 5000 milliseconds) will be applied. If this field is set out of valid range, default value 5000 will be applied. The effective value of this field, is used for checking against the time difference between current time when message is received and SendingTime (Tag52) from request message. If the difference is larger than effective ReceiveWindow value, the order will be rejected. Valid Range of values (in milliseconds): 100 - 5000
Possible values: [D]
Message Type = D (New Order Single)
Schema
Client-selected order ID.
ClOrdID of the previous non-rejected order. i.e. Response from OrderCancelReplaceRequest(35=G) or OrderCancelRequest(35=F).
Possible values: [6, 8]
Instructions for order handling on exchange. If more than one instruction is applicable to an order, this field can contain multiple instructions separated by space.
For CDC internal reference only
Server-assigned order ID
unique execution ID. Equal to Fill ID if this message was the result of a fill
Symbol name
Possible values: [1, 2]
"1": buy; "2": sell
Original order quantity
Original order price
Possible values: [0, 4, 6, 8, A, F, I]
Reason for this message (see below)
Possible values: [0, 1, 2, 4, 6, 8, A]
Order status (Please refer to standard FIX spec)
Quantity of order that has already been filled
Quantity of order that is still open
Possible values: [Y, N]
Indicates if the order is currently being worked.
Time of the order update. Only present on order updates. It is stamped in response flow [no matter there were trades or not]; our system stamp this time when there are updates for an order (so it is called update_time on Web Socket)
TransactTime when order is created with 39=0|150=0. it is stamped in request flow; when our system confirmed and accepted the order (i.e. it is called create_time on Web Socket)
Fill price. Only present if this message was the result of a fill
Fill quantity. Only present if this message was the result of a fill
"2": taker fill; "1": maker fill. Only present if this message was the result of a fill
Average fill price for all fills in order. Only present if this message was the result of a fill
Fee for trade. Only present if this message was the result of a fill
Fee currency for trade. Only present if this message was the result of a fill
Possible values: [3]
Always 3 (absolute)
Reason the order was rejected (see below). Only present on rejected NewOrderSingle (D) requests. i.e. 1 = Unkown symbol, 5 = Unknown Order, 99 = Other
Description of the reason the order was rejected (e.g., Too many requests). Only present on rejected NewOrderSingle (D) requests
Possible values: [1, 2, 3]
1: messages corresponds to a spot order. 2: messages corresponds to a margin order. 3: messages correspond to liquidation.
Trade match ID
TransactTime when order is getting partial filled or fullly filled. It is stamped in response flow [only when there has trade happened]; i.e. the trade time / order matching time of when the trade happened (i.e. the time of this order being matched with another order) [i.e. the transaction_time in Web Socket]
Number of orders matched for this trade execution. If it is Maker's Order, value is always 1. If it is Taker's Order, it is the number of orders matched for this trade execution
Only appears if it is Maker's order. It represents which order entry of corresponding price level was matched. This value is 0 base. If the matched order is on the top of the queue, it is shown 0.
Possible values: [8]
Message Type = 8 (Execution Report)