Skip to content

Maker Stream FIX 4.4 Full Refresh

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 http://www.fixprotocol.org/specifications/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)
  • Market Data-Snapshot/Full Refresh (PrimeXM ← Maker)
  • Full Refresh 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. Reflect this value in tag 262 of the Market Data-Snapshot/Full Refresh.
263 SubscriptionRequestType Y 1 = Subscribe (Snapshot plus updates)

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

full book =0

number of layers<=5

Note: The depth is restricted to 5 , but if the provider wants to stream depth more than 5, then Massquote has to be implemented

XCore sends the depth configured on the provider stream, capped at 5 (0 = full book).
265 MDUpdateType Y 0 = Full 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=2 49=PXM_Qxx 52=20260923-10:09:17.026 56=Maker01 262=EUR/USD_0 263=1 264=3 265=0 146=1 55=EUR/USD 267=2 269=0 269=1 10=137

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=3 52=20260923-10:09:21.324 262=GBP/USD_0 58=symbol not found 10=046

Full Refresh

Tag Field name Req’d Comments
Standard Header Y MsgType=W
55 Symbol Y Subscribed symbol
262 MDReqID Y ID of the market data request
117 QuoteID N If set, XCore replies with a Full Refresh Acknowledgement (35=b) echoing this value.
268 NoMDEntries Y Number of entries in the Market Data message
→ 269 MDEntryType Y Type of market data entry

0 = Bid
1 = Ask
→ 270 MDEntryPx Y Price of the market data entry
→ 271 MDEntrySize Y Quantity of the market data entry
→ 299 QuoteEntryID C Mandatory if MarketDataRequest.MDUpdateType = Incremental Refresh.

Unique Market Data Identifier (0 <= x < depth).

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.
Standard Trailer Y

In the standard Full Refresh configuration, a message carrying more than 10 bid and offer entries in total triggers a Business Message Reject (MsgType=j) with 58=maximum depth of 5 exceeded. XCore then unsubscribes (263=2) every symbol of the session.

Full Refresh Example

PrimeXM ← Maker: 8=FIX.4.4 9=148 35=W 49=Maker01 56=PXM_Qxx 34=2 52=20260923-10:11:16.410 55=EUR/USD 262=EUR/USD_0 268=2 269=0 270=1.10000 271=1000000 269=1 270=1.10040 271=1000000 10=254

Full Refresh Acknowledgement

Tag Field name Req’d Comments
Standard Header Y MsgType=b
117 QuoteID Y QuoteID copy from the Full Refresh message
Standard Trailer Y
Full Refresh Acknowledgement Example

PrimeXM ← Maker: 8=FIX.4.4 9=155 35=W 49=Maker01 56=PXM_Qxx 34=2 52=20260923-10:09:21.323 55=EUR/USD 262=EUR/USD_0 117=Q1 268=2 269=0 270=1.10000 271=1000000 269=1 270=1.10040 271=1000000 10=091

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

Full Pricing Session Example

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

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

PrimeXM ← Maker: 8=FIX.4.4 9=155 35=W 49=Maker01 56=PXM_Qxx 34=2 52=20260923-10:09:21.323 55=EUR/USD 262=EUR/USD_0 117=Q1 268=2 269=0 270=1.10000 271=1000000 269=1 270=1.10040 271=1000000 10=091

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

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

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.