Placing multiple quotes
Mass Quotes Limit: Mass quotes are limited to 15 double-sided quotes.Fill Limits: The maximum number of fills on a single mass quote is 2000 fills for single-leg instruments and 400 fills for combo instruments.
MassQuoteRequest (130)
Place buy and/or sell orders for up to 15 instruments in one message.
| Field | Name | Type | Length | Description |
|---|
| 1 | quoteId | int64 | 8 | Numeric client quote ID |
| 2 | correlationId | int64 | 8 | Client-assigned ID |
| 3 | mmpGroupId | int64 | 8 | Identifier of MMP group |
| 4 | SMPToken | int64 | 8 | This order cannot match with any other orders within the same portfolio with the same token. |
| 5 | massQuoteFlags | uint8 | 1 | See the table below |
| 6 | reserved | uint16 | 2 | Padding for byte alignment |
| 7 | blockLengthOfQuotes | uint16 | 2 | 44 (bytes) |
| 8 | numberOfQuotes | uint16 | 2 | Number of quotes in repeating group. Maximum is 15. |
| ->9 | instrumentId | int64 | 8 | Numeric instrument ID |
| ->10 | buyPrice | FixedPoint9 | 8 | Limit price of buy side |
| ->11 | sellPrice | FixedPoint9 | 8 | Limit price of sell side |
| ->12 | buyAmount | Decimal72 | 9 | Buy amount. 0 to cancel existing order |
| ->13 | sellAmount | Decimal72 | 9 | Sell amount. 0 to cancel existing order |
| ->14 | buyFlags | uint8 | 1 | See the table below |
| ->15 | sellFlags | uint8 | 1 | See the table below |
The table below outlines the content of field 5 (massQuoteFlags) of MassQuoteRequest.
| Bit number (from last to first) | Name | Description |
|---|
| 1 | resetMMP | 0=False
1=True If an MMP freeze is active, this flag will remove the freeze before processing the rest of the message. Keep in mind there is a mandatory 1 second freeze that cannot be overruled |
| 2 | Reserved for future use | |
| 3 | Reserved for future use | |
| 4 | Reserved for future use | |
| 5 | Reserved for future use | |
| 6 | Reserved for future use | |
| 7 | Reserved for future use | |
| 8 | Reserved for future use | |
The table below outlines the content of field 14/15 (buyFlags/sellFlags) of MassQuoteRequest.
| Bit number (from last to first) | Name | Description |
|---|
| 1 | Post-only (amend) | Enables post-only that amends the quote price to the best bid/ask if it would be immediately executable. The amended price is then validated against price limits. Mutually exclusive with Post-only (reject) |
| 2 | Post-only (reject) | Enables post-only that rejects the quote if it would be immediately executable. Mutually exclusive with Post-only (amend) |
| 3 | Reserved for future use | |
| 4 | Reserved for future use | |
| 5 | Reserved for future use | |
| 6 | Reserved for future use | |
| 7 | Reserved for future use | |
| 8 | Reserved for future use | |
MassQuoteResponse (230)
Acknowledges the successful execution of a MassQuoteRequest. Quotes do not have a separate fillAmount and amount. A quote’s amount will always be what’s still available for execution. As such, in a MassQuoteResponse, the amounts of the quotes returned will already incorporate the accompanying fills.
| Field | Name | Type | Length | Description |
|---|
| 1 | transactTime | int64 | 8 | Nanoseconds since epoch. Time of entry into the order book |
| 2 | execId | int64 | 8 | Exchange-assigned event ID |
| 3 | quoteId | int64 | 8 | Numeric client quote ID |
| 4 | correlationId | int64 | 8 | Client-assigned ID |
| 5 | mmpGroupId | int64 | 8 | Identifier of MMP group |
| 6 | receiveTime | int64 | 8 | Nanoseconds since epoch. Time of receipt of order on the gateway. |
| 7 | blockLengthOfQuotes | uint16 | 2 | 76 (bytes) |
| 8 | numberOfQuotes | uint16 | 2 | Number of quotes in repeating group. Maximum is 15. |
| ->9 | instrumentId | int64 | 8 | Numeric instrument ID |
| ->10 | buyOrderId | int64 | 8 | Numeric exchange assigned order ID |
| ->11 | sellOrderId | int64 | 8 | Numeric exchange assigned order ID |
| ->12 | buyPrice | FixedPoint9 | 8 | Limit price of buy side (possibly different from submitted price if postOnly) |
| ->13 | sellPrice | FixedPoint9 | 8 | Limit price of sell side (possibly different from submitted price if postOnly) |
| ->14 | buyAmount | Decimal72 | 9 | Amount remaining of buy side |
| ->15 | sellAmount | Decimal72 | 9 | Amount remaining of sell side |
| ->16 | buyFilledAmount | Decimal72 | 9 | Buy amount filled |
| ->17 | SellFilledAmount | Decimal72 | 9 | Sell amount filled |
| ->18 | buyQuoteStatus | int8 | 1 | 0=Inactive
1=Unmodified
2=QuantityReduced
3=Updated
4=Filled
5=CanceledByRequest
6=CanceledByMmp
7=CanceledBySelfMatch
8=Queued |
| ->19 | sellQuoteStatus | int8 | 1 | Refer to buyQuoteStatus for possible values |
| ->20 | buyRejectReason | int8 | 1 | Rejection reason code. See Rejection Reason Codes for possible values. |
| ->21 | sellRejectReason | int8 | 1 | Rejection reason code. See Rejection Reason Codes for possible values. |
| 22 | blockLengthOfBuyFills | uint16 | 2 | 32 (bytes) |
| 23 | numberOfBuyFills | uint16 | 2 | Indicates the length of the following repeating group containing all immediate buy fills when the order was submitted |
| ->24 | matchId | int64 | 8 | Transaction ID representing match |
| ->25 | instrumentId | int64 | 8 | Numeric instrument ID |
| ->26 | fillPrice | FixedPoint9 | 8 | Price of fill |
| ->27 | fillAmount | Decimal72 | 9 | Amount of fill |
| 28 | blockLengthOfSellFills | uint16 | 2 | 32 (bytes) |
| 29 | numberOfSellFills | uint16 | 2 | Indicates the length of the following repeating group containing all immediate sell fills when the order was submitted |
| ->30 | matchId | int64 | 8 | Transaction ID representing match |
| ->31 | instrumentId | int64 | 8 | Numeric instrument ID |
| ->32 | fillPrice | FixedPoint9 | 8 | Price of fill |
| ->33 | fillAmount | Decimal72 | 9 | Amount of fill |
| 34 | blockLengthOfLegs | uint16 | 2 | 33 (bytes) |
| 35 | numberOfLegs | uint16 | 2 | Indicates the length of the following repeating group containing all combo leg quantities and prices. Non-zero for trades on combo instruments only. |
| ->36 | matchId | int64 | 8 | Transaction ID representing match. |
| ->37 | instrumentId | int64 | 8 | Numeric instrument ID. |
| ->38 | legQty | Decimal72 | 9 | Quantity of this leg in the combo instrument |
| ->39 | legPrice | FixedPoint9 | 8 | Price of this leg in the combo instrument |
| ->40 | legSide | int8 | 1 | 1=BUY
-1=SELL |
MassQuoteReject (232)
Reject generated in case a MassQuoteRequest is unsuccessful.
| Field | Name | Type | Length | Description |
|---|
| 1 | transactTime | int64 | 8 | Nanoseconds since epoch. Time of entry into the order book |
| 2 | quoteId | int64 | 8 | Numeric client quote ID |
| 3 | correlationId | int64 | 8 | Client-assigned ID |
| 4 | mmpGroupId | int64 | 8 | Identifier of MMP group |
| 5 | reason | int8 | 1 | 0=SystemError
1=InvalidMmpGroup
2=MmpGroupDisabled
3=MmpGroupFrozen |
| 6 | detailsLength | uint8 | 1 | Length of details field |
| 7 | details | char | 0-255 | ASCII-encoded string |