Skip to content

Maker Stream FIX 4.4 Mass Quote

Rules of Engagement

PrimeXM endeavours to ensure that the data and other material in this publication are correct and complete but does not accept liability for any error herein or omissions. The development of PrimeXM’s products and services is continuous and published information may not be up to date.

Change Log

FIX API 1.0.2

Version: 1.0.2
XCore: 6.01.73

Changes:

  • Added ResendRequest max count limit is 30.

Notes:

  • When the limit is exceeded, the maker is automatically disabled.
  • To re-enable it, the maker must be manually disabled and enabled again
FIX API 1.0.1

Version: 1.0.1

Changes:

  • Corrected documentation errors related to the Market Data Request (tag 35=V) message.

Introduction

  • Scope of this document

This document is intended to serve software developers as an implementation guide for the PrimeXM Maker FIX API.

  • FIX version

PrimeXM supports FIX version 4.4. For further information about this version please refer to the specifications published by the FIX Protocol Organization under https://www.fixtrading.org/standards/fix-4-4/.

  • FIX sessions

For better separation of pricing and trading data, Makers need to ensure two separate FIX connections (with two separate login credentials) to the PrimeXM FIX Server, one for pricing and one for trading data.

Messages

As defined in the FIX protocol, the PrimeXM FIX server is using two different data levels: Session and Application. The Session level handles the delivery of data and the Application level defines the business-related data content. The following session and application messages are supported by the PrimeXM FIX Engine:

Session Level Messages

  • Heartbeat (PrimeXM ↔ Maker)
  • Test Request (PrimeXM ↔ Maker)
  • Logon (PrimeXM → Maker)
  • Logout (PrimeXM ↔ Maker)
  • Resend Request (PrimeXM ↔ Maker)
  • Reject (PrimeXM ↔ Maker)
  • Sequence Reset (PrimeXM ↔ Maker)

Application Level Messages:

  • Market Data Request (PrimeXM → Maker)
  • Market Data Request Reject (PrimeXM ← Maker)
  • Mass Quote (PrimeXM ← Maker)
  • Mass Quote Acknowledgement (PrimeXM → Maker)

Session Messages

Test Request

Tag Field name Req’d Comments
Standard Header Y MsgType=1
112 TestReqID Y A unique identifier for this test message
Standard Trailer Y

Logon

Tag Field name Req’d Comments
Standard Header Y MsgType=A
108 HeartBtInt Y Heart beat interval in seconds
141 ResetSeqNumFlag N Indicates both sides of a FIX session should reset sequence numbers
553 Username Y Username (provided by Maker)
554 Password Y Password (provided by Maker)
Standard Trailer Y

Logout

Tag Field name Req’d Comments
Standard Header Y MsgType=5
58 Text N Reason for logout
Standard Trailer Y

Reject

Tag Field name Req’d Comments
Standard Header Y MsgType=3
45 RefSeqNum Y MsgSeqNum of the rejected message
371 RefTagID N The tag number of the FIX field being referenced
372 RefMsgType N The MsgType of the FIX message being referenced
373 SessionRejectReason N Code to identify the reason for a session-level
Standard Trailer Y

Sequence Reset

Tag Field name Req’d Comments
Standard Header Y MsgType=4
123 GapFillFlag N
36 NewSeqNo Y
Standard Trailer Y

Application Level Messages

Market Data Request

Tag Field name Req’d Comments
Standard header Y MsgType = V
262 MDReqID Y Unique request ID. This value will be reflected in tag 302 of the MassQuote.
263 SubscriptionRequestType Y 1 = Subscribe (Snapshot plus updates)

2 = Unsubscribe
264 MarketDepth Y Specifies the number of layers requested.

0 = full book

>0 = number of layers

XCore sends the depth configured on the provider stream.
265 MDUpdateType Y 1 = Incremental refresh
146 NoRelatedSym Y Always set to 1
→ 55 Symbol Y Name of the symbol
267 NoMDEntryTypes Y Always set to 2: one entry for Bid (269=0) and one for Offer (269=1)
→ 269 MDEntryType Y 0 = Bid

1 = Offer
Standard Trailer Y
Market Data Request Example

PrimeXM → Maker: 8=FIX.4.4 9=124 35=V 34=4 49=PXM_Qxx 52=20260923-10:09:47.025 56=Maker01 262=EUR/USD_0 263=1 264=3 265=1 146=1 55=EUR/USD 267=2 269=0 269=1 10=142

Market Data Request Reject

Tag Field name Req’d Comments
Standard Header Y MsgType=Y
262 MDReqID Y ID of the market data request
58 Text N Reason for market data request being rejected
Standard Trailer Y
Market Data Request Reject Example

PrimeXM ← Maker: 8=FIX.4.4 9=91 35=Y 49=Maker01 56=PXM_Qxx 34=4 52=20260923-10:09:51.626 262=GBP/USD_0 58=symbol not found 10=055

Mass Quote

Tag Field name Req’d Comments
Standard Header Y MsgType=i
117 QuoteID N If QuoteID is set the client has to respond immediately with a MassQuoteAcknowledgement

message reflecting this value in tag 117
296 NoQuoteSets Y Number of Quote sets following
→ 302 QuoteSetID The MDReqID (tag 262 of the MarketDataRequest). Use this value to identify the symbol to which the data in this specific QuoteSet refers to.
→ 295 NoQuoteEntries Number of quote entries
→ → 299 QuoteEntryID Y Unique Market Data Identifier (0 <= x < depth).

The current QuoteSet data replaces prior QuoteSet data received under the same QuoteEntryID

Note: Tag 299 is only a key denoting the individual stream and is used to replace the most up-to-date information in that stream. It does not denote the position of the price update in the book.
→ → 134 BidSize N Maximum bid size. Not set = no changes.

-1 = quote cancel
→ → 135 OfferSize N Maximum offer size. Not set= no changes.

-1 = quote cancel
→ → 188 BidSpotRate N Spot bid rate. Not set = no changes
→ → 190 OfferSpotRate N Spot ask rate. Not set = no changes
Standard Trailer Y
Mass Quote Example

PrimeXM ← Maker: 8=FIX.4.4 9=196 35=i 49=Maker01 56=PXM_Qxx 34=2 52=20260923-10:09:51.124 117=Q2 296=1 302=EUR/USD_0 295=2 299=0 134=1000000 135=1000000 188=1.10000 190=1.10040 299=1 134=500000 135=500000 188=1.09990 190=1.10050 10=074

Mass Quote Acknowledgement

Tag Field name Req’d Comments
Standard Header Y MsgType=b
117 QuoteID Y QuoteID copy from MassQuote message
Standard Trailer Y
Mass Quote Acknowledgement Example

PrimeXM ← Maker: 8=FIX.4.4 9=196 35=i 49=Maker01 56=PXM_Qxx 34=2 52=20260923-10:09:51.124 117=Q2 296=1 302=EUR/USD_0 295=2 299=0 134=1000000 135=1000000 188=1.10000 190=1.10040 299=1 134=500000 135=500000 188=1.09990 190=1.10050 10=074

PrimeXM → Maker: 8=FIX.4.4 9=64 35=b 34=5 49=PXM_Qxx 52=20260923-10:09:51.125 56=Maker01 117=Q2 10=076

Full Pricing Session Example

PrimeXM → Maker: 8=FIX.4.4 9=124 35=V 34=4 49=PXM_Qxx 52=20260923-10:09:47.025 56=Maker01 262=EUR/USD_0 263=1 264=3 265=1 146=1 55=EUR/USD 267=2 269=0 269=1 10=142

PrimeXM → Maker: 8=FIX.4.4 9=125 35=V 34=3 49=PXM_Qxx 52=20260923-10:09:47.025 56=Maker01 262=GBP/USD_0 263=1 264=10 265=1 146=1 55=GBP/USD 267=2 269=0 269=1 10=150

PrimeXM ← Maker: 8=FIX.4.4 9=196 35=i 49=Maker01 56=PXM_Qxx 34=2 52=20260923-10:09:51.124 117=Q2 296=1 302=EUR/USD_0 295=2 299=0 134=1000000 135=1000000 188=1.10000 190=1.10040 299=1 134=500000 135=500000 188=1.09990 190=1.10050 10=074

PrimeXM → Maker: 8=FIX.4.4 9=64 35=b 34=5 49=PXM_Qxx 52=20260923-10:09:51.125 56=Maker01 117=Q2 10=076

PrimeXM ← Maker: 8=FIX.4.4 9=113 35=i 49=Maker01 56=PXM_Qxx 34=3 52=20260923-10:09:51.625 296=1 302=EUR/USD_0 295=1 299=0 134=2000000 135=2000000 10=018

PrimeXM ← Maker: 8=FIX.4.4 9=91 35=Y 49=Maker01 56=PXM_Qxx 34=4 52=20260923-10:09:51.626 262=GBP/USD_0 58=symbol not found 10=055

Information needed from Maker

Please see below the information required to be provided by the Maker in order for PrimeXM to connect and perform UAT conformance testing:

Pricing session

Field Name Example Comments
LoginUsername Client123 Client’s login username
LoginPassword password#@! Client’s login password
SenderCompID PXM_Qxx Unique client’s Pricing session identifier (value cannot be “PXM”)
TargetCompID Maker-123 Unique Maker identifier
SocketConnectHost 203.0.113.10 Maker’s FIX engine IP address or hostname used for establishing Pricing session connectivity
SocketConnectPort 2500 Maker’s FIX engine Port used for establishing Pricing session connectivity
ResetOnLogon Y Defines whether sequence numbers are to be reset prior to receiving a logon request. Typically set to ‘Y’ for pricing connections and ‘N’ for trading connections.
Sessions FRI17:05:30-FRI17:05:00 (America/New_York) Specifies the session times during which a connection to the maker can be established.
SocketUseSSL N Defines the use of SSL encryption for the connection. It is commonly configured as ‘N’ (No) for pricing connections and ‘Y’ (Yes) for trading connections. The default value is ‘N’ if not explicitly specified.