Market Data & Quoting Messages
Overview
ACY Connect currently supports Full refresh streaming quotes, which is specified in the MDUpdateType <265> field of the first Market Data Request (35=V). This specification will be remained for subsequent requests within this session.
Messaging Sequence
Market Data Request (35=V)
The Market Data Request message is used to subscribe to streaming market data feeds. This message enables clients to request real-time price updates for specified instruments with configurable refresh mechanisms.
Usage Guidelines
- Single Symbol Recommendation – Though multiple symbols are supported, send one request per symbol for cleaner error handling and easier subscription control.
- Update Type Consistency – The MDUpdateType set in the first request defines the delivery method for the entire session.
- Session Persistence – Subscriptions stay active until explicitly cancelled or the session ends.
Message Structure
| Tag | Field Name | Required | Type | Description |
|---|---|---|---|---|
| <Standard Header> Y - MsgType <35> = A | ||||
| 262 | MDReqID | Y | String | Unique identifier for this market data subscription request per session. Should include timestamp components to ensure session-wide uniqueness. Maximum length: 64 characters. |
| 263 | SubscriptionRequestType | Y | char | Specifies the type of market data subscription being requested. Valid Values: 1 = Snapshot Plus Updates (Subscribe) 2 = Disable Previous Snapshot + Update Request (Unsubscribe) |
| 264 | MarketDepth | Y | int | Indicates the number of price levels requested. Standard values are 1–10, and 0 requests the full available depth. Note: Regardless of the value sent, the system currently always publishes 6 price levels of quotes. |
| 265 | MDUpdateType | Y | int | Defines the update mechanism for streaming data delivery. Must be set to 0 = Full Refresh (Complete book snapshots) |
| 267 | NoMDEntryTypes | Y | int | Number of market data entry types being requested. Must be 2 for standard bid/offer subscription. |
| >269 | MDEntryType | Y | char | Specifies the side of market data being requested. Better include both following Valid Values: 0 = Bid 1 = Offer (Ask) |
| 146 | NoRelatedSym | Y | int | Number of symbols being subscribed in this request. Supports both single and multiple symbol subscription. |
| >55 | Symbol | Y | String | Instrument symbol (for FX, use CCY1CCY2 format). Supports both single and multiple symbol subscription. |
Market Data Request Reject (35=Y)
The Market Data Request Reject (Y) is sent in response to an invalid or unsupported Market Data Request (V), due to business or technical reasons. It provides detailed rejection reasons to facilitate troubleshooting.
Error Handling
- Symbol Validation – Requests with invalid or unavailable symbols are rejected.
- Parameter Validation – Unsupported MarketDepth / MDUpdateType combinations trigger rejection.
- Rate Limiting – Too many requests in quick succession may lead to temporary rejections.
Message Structure
| Tag | Field Name | Required | Type | Description |
|---|---|---|---|---|
| <Standard Header> Y - MsgType <35> = Y | ||||
| 262 | MDReqID | Y | String | Echo of the MDReqID from the rejected Market Data Request message. |
| 281 | MDReqRejReason | N | char | Enumerated reason code for the rejection. |
| 58 | Text | N | String | Human-readable explanation of the rejection reason. Provides additional context beyond the standardized reason code. |
Market Data Snapshot Full Refresh (35=W)
The Market Data messages are used as the response to a Market Data Request (V) message, and provides a complete market data snapshot for subscribed symbols. This message contains the full order book state at the time of transmission.
Message Structure
| Tag | Field Name | Required | Type | Description |
|---|---|---|---|---|
| <Standard Header> Y - MsgType <35> = W | ||||
| 262 | MDReqID | Y | String | References the original Market Data Request that initiated this subscription. |
| 55 | Symbol | Y | String | Instrument identifier for which market data is being provided. |
| 268 | NoMDEntries | Y | NumInGroup | Count of market data entries in this message, which represents bid/offer pairs plus any trade information. |
| >269 | MDEntryType | Y | char | Type of market data entry. Valid Values: 0 = Bid 1 = Offer |
| >270 | MDEntryPx | Y | Price | Price level for this market data entry. Precision follows instrument-specific tick size rules. |
| >271 | MDEntrySize | N | Qty | Available quantity at the specified price level. Absence indicates price-only information. |
| >276 | QuoteCondition | N | MultipleValueString | Describes the state and tradability of the quote. Valid Values: A = Tradeable Quote |
| >282 | MDEntryOriginator | N | String | Identifies the source of this market data entry. |
| >299 | QuoteEntryID | Y | String | Unique identifier for this market data entry within the session context. |
Quote Cancel (35=Z)
Enables cancellation of previously submitted quotes. Supports both individual quote cancellation and bulk cancellation operations.
Cancellation Behavior
- Selective Cancellation – QuoteCancelType=1 cancels specific symbols while keeping others active.
- Bulk Operations – QuoteCancelType=4 cancels all active quotes in one step.
- Confirmation – Cancellations can trigger market data updates to show removed liquidity.
- Error Handling – Canceling non-existent quotes is acknowledged without error (idempotent).
Message Structure
| Tag | Field Name | Required | Type | Description |
|---|---|---|---|---|
| <Standard Header> Y - MsgType <35> = Z | ||||
| 117 | QuoteID | Y | String | Unique identifier for this quote cancellation request. Should be distinct from any previously used QuoteID values. |
| 298 | QuoteCancelType | Y | int | Specifies the scope of the cancellation operation. Valid Values: 1 = Cancel for specific Symbol(s) 4 = Cancel All Quotes |
| 295 | NoQuoteEntries | C | NumInGroup | Required when QuoteCancelType = 1. Specifies the number of symbols being cancelled. |
| >55 | Symbol | C | String | Instrument identifier for quote cancellation. Required when NoQuoteEntries > 0. Must match previously quoted symbols. |