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.
Duplicate quote handling: When a client sends the same quote twice (identical price, amount, and instrument), Starbase preserves the bid and ask priorities.
Rate limiting and cancels: Setting a quote’s
bidQty or askQty to 0 cancels that side. A MassQuoteRequest where all quantities are zero is treated as a cancel: it consumes tokens from the mass quote bucket but is never rejected due to rate limits, even when throttled. Any message containing at least one non-zero quantity is subject to normal rate limiting. See API Rate Limits for details.Updating a resting quote
Each side of a quote entry is handled independently. When a side already has a resting order, the result depends on the quantity and price sent for that side:
Any update other than leaving the side unchanged is a full replenishment of the side: the resulting resting quantity is the quantity sent (or the last quoted quantity if
NULL_QUANTITY), regardless of fills since the previous quote. For example, quote 100, receive 12 in fills (88 resting), then send NULL_QUANTITY with a new price: 100 rests at the new price, so the side can be filled for up to 112 in total across the two quotes. To keep only the remaining size working, send the remaining quantity (88).
MassQuoteRequest (130)
Place buy and/or sell orders for up to 15 instruments in one message.
The table below outlines the content of field 5 (
flags, type MassQuoteFlags) of MassQuoteRequest. This message-level field carries resetMmp only. All other quote behavior is set per side in bidFlags/askFlags.
The table below outlines the content of fields 13/14 (
bidFlags/askFlags, type OrderFlags) of MassQuoteRequest. These are the same flags as field 10 of NewOrderRequest and are set independently per quote side.
Session-level cancel-on-disconnect: setting
cancelOnDisconnect on LogonRequest covers every order and quote submitted on that session, including both NewOrderRequest and MassQuoteRequest, with no need to tag each side individually. The per-side cancelOnDisconnect flag remains available. See Session-level CoD.MassQuoteResponse (230)
Acknowledges the successful execution of aMassQuoteRequest. 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.
Individual quote sides that aggress may be speed bumped, indicated by bidStatus = 8 or askStatus = 8 (Queued). Once the speed bump period expires, an unsolicited MassQuoteOrdersPlaced message is sent for the placed sides. See Speed Bumps for details.
MassQuoteReject (232)
Reject generated in case aMassQuoteRequest is unsuccessful.