Skip to main content

Placing a new order

Fill Limits: The maximum number of fills on a single order is 2000 fills for single-leg instruments and 400 fills for combo instruments.
Lowest-latency order entry: Set the MMP flag (field 10, bit 4) so the order uses the MMP risk bypass — the lowest-latency method for market access, which skips the pre-trade risk engine. The bypass applies whether the order makes or takes. Most integrating clients should prefer this path for all order entry. The bypass requires the MMP configuration’s Quantity Limit ≤ Max Quote Quantity.

NewOrderRequest (100)

Request to place a new order sent by the client. The order will belong to the portfolio with which the connection was authenticated. Will be followed by a NewOrderResponse in case the order placement is successful or by a NewOrderReject in case the order placement is unsuccessful. Any immediate fills will be added to the NewOrderResponse and will NOT be sent in an OrderFilled. Any consecutive unsolicited change to the order (including fills) will be sent in an OrderFilled. If the order aggresses and is subject to a speed bump, the NewOrderResponse is sent immediately with orderState = 4 (queued). Once the speed bump period expires and the order is entered into the book, an unsolicited OrderPlaced message is sent. See Speed Bumps for details.
Null values: Some optional fields use NULL_LONG / NULL_QUANTITY (0x8000000000000000L) as a sentinel to indicate “not set”. For example, set displayAmount = NULL_QUANTITY to place a non-iceberg order, or limitPrice = NULL_LONG for a market order.
Quantity units: Encode quantity as Decimal72 in the instrument’s quantityAsset and validate it against minOrderQuantity from the multicast InstrumentDefinition. Do not copy a FIX contract count directly into this field. See Quantity units and contract size.
The table below outlines the content of field 10 (flags) of NewOrderRequest.
No reduce-only flag: reduce-only cannot be set per order in SBE. It exists only as a portfolio-level restriction applied by Deribit, reported as cancelReason = 8 (REDUCE_ONLY) when an order would increase a position. Per-order reduce-only is available on the JSON-RPC (private/buy, reduce_only) and FIX (NewOrderSingle, ExecInst = E) APIs.

NewOrderResponse (200)

Response to confirm a NewOrderRequest was successful, sent from the exchange to the client. Any immediate fills generated by the NewOrderRequest will be included in the NewOrderResponse and will NOT be sent additionally in an OrderFilled.

NewOrderReject (202)

Reject generated in case a NewOrderRequest is unsuccessful.