NAV Navbar

FIX Market Data

Overview

Trading applications need information about the state of the market in order to effectively execute their strategies on an exchange. Seed CX provides a FIX Market Data Gateway which delivers market data to participants that have subscribed to the service. It is a so-called Level 3 or market-by-order system, where a complete view of the market (down to the level of anonymized individual orders) is made available for every instrument traded at Seed CX.

Supported Message Types

Administrative Messages

The following Administrative message types are supported under MsgType (35):

Application Messages

The following Applications message types are supported under MsgType (35):

Inbound Messages (Client → Seed CX)

Outbound Messages (Seed CX → Client)

Resources

Here is a QuickFIX-style data dictionary describing Seed CX FIX Market Data messages.

Sequence Diagrams

Connectivity and Logon

The API client must establish a FIX session by sending a Logon (35=A) message. Seed CX will act as an acceptor for all FIX sessions.

For all inbound messages, SenderCompID (49) is required. For all Application messages, both SenderCompID (49) and SenderSubID (50) fields are required. The values of these fields are bilaterally agreed between Seed CX and the client during the onboarding process.

Seed CX FIX Logon Message Flow

Initial Market Data Request

After performing the Logon process, the participant is required to send a MarketDataRequest (35=V) with a list of instruments' symbols to request a market data subscription for those instruments. If the request is malformed, or if any of the symbols specified is invalid, the whole request will be rejected and no subscription will be established. The Seed CX FIX Market Data Gateway will transmit a Reject (35=3) or MarketDataRequestReject (35=Y) with error codes describing the reject reason. If the MarketDataRequest (35=V) is valid, the participant will be subscribed to the market data flow for the instruments specified in the request. As a subscription confirmation, the Seed CX FIX Market Data Gateway will immediately transmit a SecurityStatus (35=f) message followed by a MarketDataSnaphotFullRefresh (35=W) message for each instrument specified in the request. Participant's client applications should use the snapshot as the initial state of instrument's order book.

Seed CX FIX Full Snapshot Flow

Ongoing and Incremental Updates

Any subsequent market data changes will be communicated using MarketDataIncrementalRefresh (35=X) messages, which the client applications need to apply to the instrument's order book. However, it is important to note that it is possible for the SecurityStatus (35=f) and MarketDataSnapshotFullRefresh (35=W) messages to be transmitted at any time (for example when an instrument transitions from Open to Close) and they should be appropriately processed by participant's client applications. Any new SecurityStatus (35=f) and MarketDataSnapshotFullRefresh (35=W) messages is the current state of the market.

Seed CX FIX MD Ongoing Updates Flow

Header and Trailer

Standard Header

Tag Name Required Data Type Description
8 BeginString Y String Must be FIX.4.4 for FIX 4.4 protocol version.
Must be the first field in the message.
9 BodyLength Y Length Must be the second field in the message.
35 MsgType Y String Message type.
Must be the third field in the message.
49 SenderCompID Y String Company identifier as allocated by Seed CX.
56 TargetCompID Y String Receiver FIX session identifier.
Always SEEDCX.
34 MsgSeqNum Y SeqNum Message sequence number.
50 SenderSubID N String The trading account ID which represents the unique combination of user and CTI code, produced and can be found in SeedPortal.
The value must be appropriately assigned to the SenderCompID (49).
142 SenderLocationID N String ISO identifier of message originator's location.
52 SendingTime Y UTCTimestamp Time of message transmission.
369 LastMsgSeqNumProcessed N SeqNum The last MsgSeqNum (34) value received and processed.
Used to detect a backlog.

Standard Trailer

Tag Name Required Data Type Description
10 CheckSum Y String Checksum of message and end of message delimiter.

Administrative Messages

The following are the message layouts for each FIX Market Data message supported by Seed CX:

Logon (35=A)

Tag Field Name Data Type Req’d Description
Component <StandardHeader>
98 EncryptMethod Int Y Method of encryption.
Not validated by Seed CX.
Supported values:
0 = None
108 HeartBtInt Int Y Heartbeat interval as assigned by the client.
Note: Same value used by both sides.
141 ResetSeqNumFlag Char N Indicates that both sides of the FIX session should reset sequence numbers.
Supported values:
N = No
Y = Yes, reset sequence numbers

Note: For FIX Market Data it is recommended to always set this field to N.

Component <StandardTrailer>

Client to Seed CX

8=FIX.4.4|9=77|35=A|34=1|49=LPZD0A20X5|52=20181222-00:58:31.652|56=SEEDCX|98=0|108=30|141=Y|10=135|

The Logon (35=A) message is used by a market participant to establish a FIX session with Seed CX. The Logon (35=A) message must be the first message sent by the client requesting to initiate a FIX session. It must be received within 5 seconds from establishing the connection, otherwise the connection will be closed.

Seed CX to Client

8=FIX.4.4|9=0099|35=A|49=SEEDCX|56=LPZD0A20X5|34=1|142=US,IL|52=20181222-00:58:31.667810958|369=1|98=0|108=30|141=Y|10=127|

A successful logon will result in a Logon (35=A) acknowledgement sent by Seed CX.

Heartbeat (35=0)

The Heartbeat (35=0) message is used by both the initiator and Seed CX during periods of inactivity. The duration of the inactive period is determined by the field HeartBtInt (108) in Logon (35=A) message.

Tag Field Name Data Type Req’d Description
Component <StandardHeader>
112 TestReqID String N Conditionally required if the heartbeat message is generated in response to a TestRequest (35=1) message.
Component <StandardTrailer>

TestRequest (35=1)

Heartbeat (35=0) and TestRequest (35=1) messages are used by Seed CX to monitor the live status of a FIX Session.

In the event of no response within the agreed upon heartbeat interval, HeartBtInt (108), in Logon (35=A) message, a TestRequest (35=1) message will be sent. The client must respond immediately to the TestRequest (35=1) message.

If Seed CX does not receive a response to the TestRequest (35=1) message within the heartbeat interval, it will terminate the FIX session to the counterparty.

Tag Field Name Data Type Req’d Description
Component <StandardHeader>
112 TestReqID String Y TestRequest (35=1) identifier.
Component <StandardTrailer>

ResendRequest (35=2)

ResendRequest (35=2) message is used as per FIX specification. It is not recommended to request resends of large ranges of market data messages; requesting a full snapshot may be more appropriate.

Tag Field Name Data Type Req’d Description
Component <StandardHeader>
7 BeginSeqNo SeqNum Y Message sequence number of first message in range to be resent. Valid sequence number for session.
16 EndSeqNo SeqNum Y Message sequence number of last message in range to be resent. Specify 0 for all the messages subsequent to a particular message.
Component <StandardTrailer>

Reject (35=3)

8=FIX.4.4|9=173|35=3|49=SEEDCX|56=YIZUG0TPF6|34=5|50=SCXM|142=US,IL|57=FKIDMMZZ7YAV|52=20181001-15:14:52.766813855|369=5|45=5|371=55|373=1|58=The message is missing required fields.|1028=N|10=015|

The Reject (35=3) message will be sent by Seed CX when a message is received but cannot be properly processed due to session-level rule violation.

Tag Field Name Data Type Req’d Description
Component <StandardHeader>
45 RefSeqNum SeqNum Y MsgSeqNum (34) of the rejected message.
371 RefTagID Int N The tag number of the FIX field being referenced.
372 RefMsgType String N The MsgType (35) of the FIX message being referenced.
373 SessionRejectReason Int N Code to identify reason for a session-level Reject (35=3) message.
Supported values:
1 = Required tag missing
5 = Value is incorrect (out of range) for this tag
6 = Type is incorrect for this tag
9 = CompID problem
10 = Sending time inaccuracy
11 = Invalid message type
99 = Other reason
58 Text String N Provides the reason the message was rejected.
Component <StandardTrailer>

SequenceReset (35=4)

SequenceReset (35=4) message can be used for both Gap Fill or to reset sequence numbers.

Tag Field Name Data Type Req’d Description
Component <StandardHeader>
36 NewSeqNo SeqNum Y New sequence number. The number cannot be lower than the expected sequence number of either side of the connection.
123 GapFillFlag Boolean N Indicates the sequence reset message is replacing messages which will not be resent.
Supported values:
Y = Gap Fill message, MsgSeqNum (34) is valid
N = Sequence Reset, ignore MsgSeqNum (34)
Component <StandardTrailer>

Logout (35=5)

Logout (35=5) message initiates or confirms the termination of a FIX session.

Tag Field Name Data Type Req’d Description
Component <StandardHeader>
58 Text String N Reason for logout.
789 NextExpectedMsgSeqNum SeqNum Y Next expected MsgSeqNum (34) value to be received.
Component <StandardTrailer>

Application Messages

MarketDataRequest (35=V)

8=FIX.4.4|9=172|35=V|34=2|49=LPZD0A20X5|52=20181222-01:07:05.748|56=SEEDCX|50=NTIUJDS6DGA6|146=1|55=COSP:BTC/USD|262=7MUbdowJTF2mdf0dsrW6HA|263=1|264=3|267=5|269=0|269=1|269=2|269=4|269=5|10=079|
Tag Name Required Data Type Description
Component <StandardHeader>
262 MDReqID Y String
263 SubscriptionRequestType Y Char Supported values:
0 Snapshot
1 Snapshot + Updates
2 Unsubscribe
264 MarketDepth Y Integer Only a value of 0 (full market depth) is supported.
267 NoMDEntryTypes Y NumInGroup Number of entry types requested.
→ 269 MDEntryType Y Char Supported values:
0 Bid
1 Offer
2 Trade
4 Opening Price
5 Closing Price
NOTE: The current implementation will transmit all market data entries, regardless of the types specified in the request.
146 NoRelatedSym Y NumInGroup Number of symbols requested.
→ 55 Symbol Y String
Component <StandardTrailer>

SecurityStatus (35=f)

8=FIX.4.4|9=0135|35=f|49=SEEDCX|56=LPZD0A20X5|34=11|142=US,IL|52=20181222-01:02:00.031206898|369=2|55=COSP:BTC/USD|326=4|60=20181222-01:02:00.031197919|10=132|
Tag Name Required Data Type Description
Component <StandardHeader>
55 Symbol Y String
326 SecurityTradingStatus Y Integer Supported values:
2 Trading Halt
4 Close
17 Ready to Trade
18 Trading Unavailable
20 Unknown or invalid state
21 Pre-Open
60 TransactTime Y UTCTimestamp
Component <StandardTrailer>

MarketDataSnapshotFullRefresh (35=W)

8=FIX.4.4|9=0222|35=W|49=SEEDCX|56=LPZD0A20X5|34=3|142=US,IL|52=20181221-20:50:51.569058805|369=2|1181=14033|55=COSP:BTC/USD|268=2|269=0|270=3380.0|271=5.0|278=327600000000004780|290=0|269=0|270=3380.0|271=5.0|278=327600000000004784|290=1|10=053|
Tag Name Required Data Type Description
Component <StandardHeader>
262 MDReqID N String Present if this message is in response to a MarketDataRequest (35=V).
1181 ApplSeqNum Y SeqNum Application sequence number, used to reconcile in-flight MarketDataIncrementalRefresh (X) messages.
55 Symbol Y String
268 NoMDEntries Y NumInGroup Number of repeating entries, with a value of 0 representing an empty book.
→ 269 MDEntryType Y Char Market Data entry type.
→ 270 MDEntryPx Y Price Market Data entry price.
→ 271 MDEntrySize Y Qty
→ 278 MDEntryID N String Unique identifier of the Market Data entry. For bids and offers, this field represents a unique order identifier.
→ 290 MDEntryPositionNo Y Integer Position of a bid or offer, numbered from most to least competitive.
Component <StandardTrailer>

MarketDataIncrementalRefresh (35=X)

8=FIX.4.4|9=165|35=X|34=5|49=SEEDCX|52=20181222-00:58:34.102821195|56=LPZD0A20X5|142=US,IL|369=2|268=1|1181=53|279=0|269=1|55=COSP:BTC/USD|270=6990.0|271=5.0|278=327600000000000024|10=135|
Tag Name Required Data Type Description
Component <StandardHeader>
268 NoMDEntries Y NumInGroup Number of market data entries.
→ 1181 ApplSeqNum Y SeqNum Unique sequence number per instrument.
→ 279 MDUpdateAction Y Char Supported values:
0 New
1 Change
2 Delete
→ 269 MDEntryType N Char Supported values:
0 Bid
1 Offer
2 Trade
4 Opening Price
5 Closing Price
→ 55 Symbol Y String
→ 270 MDEntryPx N Price Not populated for MDUpdateAction of Delete 279=2.
→ 271 MDEntrySize N Qty Not populated for MDUpdateAction of Delete 279=2.
Not populated for opening 269=4 and closing 269=5 prices.
→ 278 MDEntryID N String Unique identifier of the Market Data entry.
For bids and offers, this field represents a unique order identifier.
For trades, this field represents a unique execution identifier.
Not populated for MDUpdateAction of Delete 279=2.
→ 280 MDEntryRefID N String Reference to a previous Market Data entry.
For instance, the original order or execution identifier for changes or deletions.
Not populated for MDUpdateAction of New 279=0.
Component <StandardTrailer>

MarketDataRequestReject (35=Y)

Tag Name Required Data Type Description
Component <StandardHeader>
262 MDReqID Y String
281 MDReqRejReason Y Char Supported values:
0 Unknown Symbol
1 Duplicate MDReqID
2 Insufficient Bandwidth
3 Insufficient Permissions
4 Unsupported SubscriptionRequestType
5 Unsupported Market Depth
6 Unsupported MDUpdateType
8 Unsupported MDEntryType
58 Text N String
Component <StandardTrailer>

Examples

The sections below contain FIX Order flow messages, as well as corresponding FIX Market Data messages.

FIX Order Flow

New Buy → Partial → Partial → Full Fill

New buy

8=FIX.4.4|9=217|35=D|49=QL4ADZEUNZ|56=SEEDCX|34=2|50=2F8QNWXP2N9E|142=US,IL|57=SCXM|52=20190402-14:22:27.237|369=1|11=Order184946|1=2F8QNWXP2|55=COSP:BTC/USD|54=1|60=20190402-14:22:27|38=5|40=2|44=7300|59=0|1031=A|528=A|582=1|1028=N|10=104|

New Buy Ack

8=FIX.4.4|9=0313|35=8|49=SEEDCX|56=QL4ADZEUNZ|34=2|50=SCXM|142=US,IL|57=2F8QNWXP2N9E|52=20190402-14:22:28.238866835|369=2|1=2F8QNWXP2|37=337800000000012071|11=Order184946|17=337800000000466512|150=0|39=0|55=COSP:BTC/USD|54=1|60=20190402-14:22:28.226000000|38=5.0|151=5.0|14=0.0|6=0.0|40=2|44=7300.0|59=0|1031=A|528=A|582=1|1028=N|10=073|

Partial Fill

8=FIX.4.4|9=0339|35=8|49=SEEDCX|56=QL4ADZEUNZ|34=4|50=SCXM|142=US,IL|57=2F8QNWXP2N9E|52=20190402-14:22:30.300286885|369=3|1=2F8QNWXP2|37=337800000000012071|11=Order184946|17=337800000000466515|150=F|39=1|55=COSP:BTC/USD|54=1|60=20190402-14:22:30.265000000|38=5.0|151=3.0|14=2.0|31=7300.0|32=2.0|6=7300.0|40=2|44=7300.0|59=0|1031=A|528=A|582=1|1028=N|851=1|10=254|

Partial Fill

8=FIX.4.4|9=0339|35=8|49=SEEDCX|56=QL4ADZEUNZ|34=7|50=SCXM|142=US,IL|57=2F8QNWXP2N9E|52=20190402-14:22:32.171291389|369=4|1=2F8QNWXP2|37=337800000000012071|11=Order184946|17=337800000000466540|150=F|39=1|55=COSP:BTC/USD|54=1|60=20190402-14:22:32.136000000|38=5.0|151=1.0|14=4.0|31=7300.0|32=2.0|6=7300.0|40=2|44=7300.0|59=0|1031=A|528=A|582=1|1028=N|851=1|10=002|

Full Fill

8=FIX.4.4|9=0340|35=8|49=SEEDCX|56=QL4ADZEUNZ|34=10|50=SCXM|142=US,IL|57=2F8QNWXP2N9E|52=20190402-14:22:33.890950449|369=5|1=2F8QNWXP2|37=337800000000012071|11=Order184946|17=337800000000466557|150=F|39=2|55=COSP:BTC/USD|54=1|60=20190402-14:22:33.856000000|38=5.0|151=0.0|14=5.0|31=7300.0|32=1.0|6=7300.0|40=2|44=7300.0|59=0|1031=A|528=A|582=1|1028=N|851=1|10=063|

New Sell → Full Fill

New Limit Sell

8=FIX.4.4|9=217|35=D|49=QL4ADZEUNZ|56=SEEDCX|34=3|50=2F8QNWXP2N9E|142=US,IL|57=SCXM|52=20190402-14:22:29.282|369=2|11=Order184947|1=2F8QNWXP2|55=COSP:BTC/USD|54=2|60=20190402-14:22:29|38=2|40=2|44=7300|59=0|1031=A|528=A|582=1|1028=N|10=109|

Limit Sell Ack

8=FIX.4.4|9=0313|35=8|49=SEEDCX|56=QL4ADZEUNZ|34=3|50=SCXM|142=US,IL|57=2F8QNWXP2N9E|52=20190402-14:22:30.278105825|369=3|1=2F8QNWXP2|37=337800000000012072|11=Order184947|17=337800000000466514|150=0|39=0|55=COSP:BTC/USD|54=2|60=20190402-14:22:30.265000000|38=2.0|151=2.0|14=0.0|6=0.0|40=2|44=7300.0|59=0|1031=A|528=A|582=1|1028=N|10=052|

Full Fill

8=FIX.4.4|9=0339|35=8|49=SEEDCX|56=QL4ADZEUNZ|34=5|50=SCXM|142=US,IL|57=2F8QNWXP2N9E|52=20190402-14:22:30.300290448|369=3|1=2F8QNWXP2|37=337800000000012072|11=Order184947|17=337800000000466516|150=F|39=2|55=COSP:BTC/USD|54=2|60=20190402-14:22:30.265000000|38=2.0|151=0.0|14=2.0|31=7300.0|32=2.0|6=7300.0|40=2|44=7300.0|59=0|1031=A|528=A|582=1|1028=N|851=2|10=245|

New Sell → Full Fill

New Sell

8=FIX.4.4|9=217|35=D|49=QL4ADZEUNZ|56=SEEDCX|34=4|50=2F8QNWXP2N9E|142=US,IL|57=SCXM|52=20190402-14:22:31.153|369=5|11=Order184948|1=2F8QNWXP2|55=COSP:BTC/USD|54=2|60=20190402-14:22:31|38=2|40=2|44=7300|59=0|1031=A|528=A|582=1|1028=N|10=097|

New Sell Ack

8=FIX.4.4|9=0313|35=8|49=SEEDCX|56=QL4ADZEUNZ|34=6|50=SCXM|142=US,IL|57=2F8QNWXP2N9E|52=20190402-14:22:32.149059415|369=4|1=2F8QNWXP2|37=337800000000012073|11=Order184948|17=337800000000466539|150=0|39=0|55=COSP:BTC/USD|54=2|60=20190402-14:22:32.136000000|38=2.0|151=2.0|14=0.0|6=0.0|40=2|44=7300.0|59=0|1031=A|528=A|582=1|1028=N|10=066|

Full Fill

8=FIX.4.4|9=0339|35=8|49=SEEDCX|56=QL4ADZEUNZ|34=8|50=SCXM|142=US,IL|57=2F8QNWXP2N9E|52=20190402-14:22:32.171296547|369=4|1=2F8QNWXP2|37=337800000000012073|11=Order184948|17=337800000000466541|150=F|39=2|55=COSP:BTC/USD|54=2|60=20190402-14:22:32.136000000|38=2.0|151=0.0|14=2.0|31=7300.0|32=2.0|6=7300.0|40=2|44=7300.0|59=0|1031=A|528=A|582=1|1028=N|851=2|10=006|

New Sell → Partial Fill

New Sell

8=FIX.4.4|9=217|35=D|49=QL4ADZEUNZ|56=SEEDCX|34=5|50=2F8QNWXP2N9E|142=US,IL|57=SCXM|52=20190402-14:22:32.873|369=8|11=Order184949|1=2F8QNWXP2|55=COSP:BTC/USD|54=2|60=20190402-14:22:32|38=2|40=2|44=7300|59=0|1031=A|528=A|582=1|1028=N|10=113|

New Sell Ack

8=FIX.4.4|9=0313|35=8|49=SEEDCX|56=QL4ADZEUNZ|34=9|50=SCXM|142=US,IL|57=2F8QNWXP2N9E|52=20190402-14:22:33.868415027|369=5|1=2F8QNWXP2|37=337800000000012074|11=Order184949|17=337800000000466556|150=0|39=0|55=COSP:BTC/USD|54=2|60=20190402-14:22:33.856000000|38=2.0|151=2.0|14=0.0|6=0.0|40=2|44=7300.0|59=0|1031=A|528=A|582=1|1028=N|10=085|

Full Fill

8=FIX.4.4|9=0340|35=8|49=SEEDCX|56=QL4ADZEUNZ|34=11|50=SCXM|142=US,IL|57=2F8QNWXP2N9E|52=20190402-14:22:33.890953474|369=5|1=2F8QNWXP2|37=337800000000012074|11=Order184949|17=337800000000466558|150=F|39=1|55=COSP:BTC/USD|54=2|60=20190402-14:22:33.856000000|38=2.0|151=1.0|14=1.0|31=7300.0|32=1.0|6=7300.0|40=2|44=7300.0|59=0|1031=A|528=A|582=1|1028=N|851=2|10=067|

New Sell → Amendment → Cancel

New Sell

8=FIX.4.4|9=218|35=D|49=QL4ADZEUNZ|56=SEEDCX|34=6|50=2F8QNWXP2N9E|142=US,IL|57=SCXM|52=20190402-14:22:34.374|369=11|11=Order184950|1=2F8QNWXP2|55=COSP:BTC/USD|54=2|60=20190402-14:22:34|38=2|40=2|44=7300|59=0|1031=A|528=A|582=1|1028=N|10=149|

New Sell Ack

8=FIX.4.4|9=0314|35=8|49=SEEDCX|56=QL4ADZEUNZ|34=12|50=SCXM|142=US,IL|57=2F8QNWXP2N9E|52=20190402-14:22:35.369261712|369=6|1=2F8QNWXP2|37=337800000000012075|11=Order184950|17=337800000000466573|150=0|39=0|55=COSP:BTC/USD|54=2|60=20190402-14:22:35.357000000|38=2.0|151=2.0|14=0.0|6=0.0|40=2|44=7300.0|59=0|1031=A|528=A|582=1|1028=N|10=117|

Amendment

8=FIX.4.4|9=257|35=G|49=QL4ADZEUNZ|56=SEEDCX|34=7|50=2F8QNWXP2N9E|142=US,IL|57=SCXM|52=20190402-14:22:37.237|369=6|37=337800000000012075|41=Order184950|11=Replace184951|1=2F8QNWXP2|55=COSP:BTC/USD|54=2|60=20190402-14:22:37|38=15|40=2|44=7310|59=0|1031=A|528=A|582=1|1028=N|10=112|

Amendment Ack

8=FIX.4.4|9=0333|35=8|49=SEEDCX|56=QL4ADZEUNZ|34=13|50=SCXM|142=US,IL|57=2F8QNWXP2N9E|52=20190402-14:22:38.262064202|369=7|1=2F8QNWXP2|37=337800000000012076|11=Replace184951|41=Order184950|17=337800000000466575|150=5|39=0|55=COSP:BTC/USD|54=2|60=20190402-14:22:38.249000000|38=15.0|151=15.0|14=0.0|6=0.0|40=2|44=7310.0|59=0|1031=A|528=A|582=1|1028=N|10=125|

Cancel

8=FIX.4.4|9=257|35=F|49=QL4ADZEUNZ|56=SEEDCX|34=8|50=2F8QNWXP2N9E|142=US,IL|57=SCXM|52=20190402-14:22:40.307|369=7|41=Replace184951|37=337800000000012076|11=Cancel184952|1=2F8QNWXP2|55=COSP:BTC/USD|107=COSP:BTC/USD|54=2|60=20190402-14:22:40|1031=A|528=A|582=1|38=15|1028=N|10=200|

Cancel Confirmation

8=FIX.4.4|9=0333|35=8|49=SEEDCX|56=QL4ADZEUNZ|34=14|50=SCXM|142=US,IL|57=2F8QNWXP2N9E|52=20190402-14:22:41.302509798|369=8|1=2F8QNWXP2|37=337800000000012076|11=Cancel184952|41=Replace184951|17=337800000000466577|150=4|39=4|55=COSP:BTC/USD|54=2|60=20190402-14:22:41.290000000|38=15.0|151=0.0|14=0.0|6=0.0|40=2|44=7310.0|59=0|1031=A|528=A|582=1|1028=N|10=157|

FIX Market Data Flow

Here are FIX Market Data messages generated by the order flow above.

Subscription Request

SubscriptionRequestType (263) = 1 (Snapshot + Incremental Updates)

Note: Usually applications subscribe to not just opening prices, but other MDEntryTypes (tag 269).

8=FIX.4.4|9=111|35=V|49=QL4ADZEUNZ|56=SEEDCX|34=2|52=20190402-14:22:04.152|262=2|263=1|264=0|267=1|269=4|146=1|55=COSP:BTC/USD|10=031|
              BeginString    8  =  FIX.4.4
               BodyLength    9  =  111
                  MsgType   35  =  V (MARKET_DATA_REQUEST)
             SenderCompID   49  =  QL4ADZEUNZ
             TargetCompID   56  =  SEEDCX
                MsgSeqNum   34  =  2
              SendingTime   52  =  20190402-14:22:04.152
                  MDReqID  262  =  2
  SubscriptionRequestType  263  =  1 (SNAPSHOT_AND_UPDATES)
              MarketDepth  264  =  0
           NoMDEntryTypes  267  =  1
              MDEntryType  269  =  4 (OPENING_PRICE)
             NoRelatedSym  146  =  1
                   Symbol   55  =  COSP:BTC/USD
                 CheckSum   10  =  031

SecurityStatus (35=f)

8=FIX.4.4|9=00135|35=f|49=SEEDCX|56=QL4ADZEUNZ|34=2|142=US,IL|52=20190402-14:22:05.133958798|369=2|55=COSP:BTC/USD|326=17|60=20190402-14:22:05.133958380|10=054|
              BeginString    8  =  FIX.4.4
               BodyLength    9  =  00135
                  MsgType   35  =  f
             SenderCompID   49  =  SEEDCX
             TargetCompID   56  =  QL4ADZEUNZ
                MsgSeqNum   34  =  2
         SenderLocationID  142  =  US,IL
              SendingTime   52  =  20190402-14:22:05.133958798
   LastMsgSeqNumProcessed  369  =  2
                   Symbol   55  =  COSP:BTC/USD
    SecurityTradingStatus  326  =  17 (READY_TO_TRADE)
             TransactTime   60  =  20190402-14:22:05.133958380
                 CheckSum   10  =  054

MarketData Snapshot (35=W)

Note that this is an empty snapshot, since NoMDEntries (268) is 0. There are no resting orders for this instrument.

8=FIX.4.4|9=00111|35=W|49=SEEDCX|56=QL4ADZEUNZ|34=3|142=US,IL|52=20190402-14:22:05.133967999|369=2|1181=16|55=COSP:BTC/USD|268=0|10=087|
              BeginString    8  =  FIX.4.4
               BodyLength    9  =  00111
                  MsgType   35  =  W (MARKET_DATA_SNAPSHOT_FULL_REFRESH)
             SenderCompID   49  =  SEEDCX
             TargetCompID   56  =  QL4ADZEUNZ
                MsgSeqNum   34  =  3
         SenderLocationID  142  =  US,IL
              SendingTime   52  =  20190402-14:22:05.133967999
   LastMsgSeqNumProcessed  369  =  2
               ApplSeqNum 1181  =  16
                   Symbol   55  =  COSP:BTC/USD
              NoMDEntries  268  =  0
                 CheckSum   10  =  087

Incremental Updates (35=X)

New order

Resting: MDEntryType (269) = 0 (Bid) or 1 (Offer), while MDUpdateAction (279) = 0 (New).

8=FIX.4.4|9=00165|35=X|49=SEEDCX|56=QL4ADZEUNZ|34=4|142=US,IL|52=20190402-14:22:28.228012694|369=2|268=1|1181=17|279=0|269=0|55=COSP:BTC/USD|270=7300.0|271=5.0|278=337800000000012071|10=059|
              BeginString    8  =  FIX.4.4
               BodyLength    9  =  00165
                  MsgType   35  =  X (MARKET_DATA_INCREMENTAL_REFRESH)
             SenderCompID   49  =  SEEDCX
             TargetCompID   56  =  QL4ADZEUNZ
                MsgSeqNum   34  =  4
         SenderLocationID  142  =  US,IL
              SendingTime   52  =  20190402-14:22:28.228012694
   LastMsgSeqNumProcessed  369  =  2
              NoMDEntries  268  =  1
               ApplSeqNum 1181  =  17
           MDUpdateAction  279  =  0 (NEW)
              MDEntryType  269  =  0 (BID)
                   Symbol   55  =  COSP:BTC/USD
                MDEntryPx  270  =  7300.0
              MDEntrySize  271  =  5.0
                MDEntryID  278  =  337800000000012071
                 CheckSum   10  =  059
8=FIX.4.4|9=00165|35=X|49=SEEDCX|56=QL4ADZEUNZ|34=5|142=US,IL|52=20190402-14:22:30.267540422|369=2|268=1|1181=18|279=0|269=1|55=COSP:BTC/USD|270=7300.0|271=2.0|278=337800000000012072|10=051|
              BeginString    8  =  FIX.4.4
               BodyLength    9  =  00165
                  MsgType   35  =  X (MARKET_DATA_INCREMENTAL_REFRESH)
             SenderCompID   49  =  SEEDCX
             TargetCompID   56  =  QL4ADZEUNZ
                MsgSeqNum   34  =  5
         SenderLocationID  142  =  US,IL
              SendingTime   52  =  20190402-14:22:30.267540422
   LastMsgSeqNumProcessed  369  =  2
              NoMDEntries  268  =  1
               ApplSeqNum 1181  =  18
           MDUpdateAction  279  =  0 (NEW)
              MDEntryType  269  =  1 (OFFER)
                   Symbol   55  =  COSP:BTC/USD
                MDEntryPx  270  =  7300.0
              MDEntrySize  271  =  2.0
                MDEntryID  278  =  337800000000012072
                 CheckSum   10  =  051

Order Amended or Partially Filled

MDEntryType (269) = 0 (Bid) / 1 (Offer), while MDUpdateAction (279) = 1 (Change).

8=FIX.4.4|9=00188|35=X|49=SEEDCX|56=QL4ADZEUNZ|34=6|142=US,IL|52=20190402-14:22:30.267608570|369=2|268=1|1181=19|279=1|269=0|55=COSP:BTC/USD|270=7300.0|271=3.0|278=337800000000012071|280=337800000000012071|10=155|
              BeginString    8  =  FIX.4.4
               BodyLength    9  =  00188
                  MsgType   35  =  X (MARKET_DATA_INCREMENTAL_REFRESH)
             SenderCompID   49  =  SEEDCX
             TargetCompID   56  =  QL4ADZEUNZ
                MsgSeqNum   34  =  6
         SenderLocationID  142  =  US,IL
              SendingTime   52  =  20190402-14:22:30.267608570
   LastMsgSeqNumProcessed  369  =  2
              NoMDEntries  268  =  1
               ApplSeqNum 1181  =  19
           MDUpdateAction  279  =  1 (CHANGE)
              MDEntryType  269  =  0 (BID)
                   Symbol   55  =  COSP:BTC/USD
                MDEntryPx  270  =  7300.0
              MDEntrySize  271  =  3.0
                MDEntryID  278  =  337800000000012071
             MDEntryRefID  280  =  337800000000012071
                 CheckSum   10  =  155

Order Removed From The Book

Cancelled or fully filled orders get removed from the book.

MDEntryType (269) = 0 (Bid) / 1 (Offer), while MDUpdateAction (279) = 2 (Delete).

8=FIX.4.4|9=00146|35=X|49=SEEDCX|56=QL4ADZEUNZ|34=7|142=US,IL|52=20190402-14:22:30.267650237|369=2|268=1|1181=20|279=2|269=1|55=COSP:BTC/USD|280=337800000000012072|10=199|
              BeginString    8  =  FIX.4.4
               BodyLength    9  =  00146
                  MsgType   35  =  X (MARKET_DATA_INCREMENTAL_REFRESH)
             SenderCompID   49  =  SEEDCX
             TargetCompID   56  =  QL4ADZEUNZ
                MsgSeqNum   34  =  7
         SenderLocationID  142  =  US,IL
              SendingTime   52  =  20190402-14:22:30.267650237
   LastMsgSeqNumProcessed  369  =  2
              NoMDEntries  268  =  1
               ApplSeqNum 1181  =  20
           MDUpdateAction  279  =  2 (DELETE)
              MDEntryType  269  =  1 (OFFER)
                   Symbol   55  =  COSP:BTC/USD
             MDEntryRefID  280  =  337800000000012072
                 CheckSum   10  =  199

Trade

A trade is communicated by an incremental update message (35=X) with MDEntryType (269) = 2 (Trade) and MDUpdateAction (279) = 0 (New).

8=FIX.4.4|9=00165|35=X|49=SEEDCX|56=QL4ADZEUNZ|34=8|142=US,IL|52=20190402-14:22:30.267691956|369=2|268=1|1181=21|279=0|269=2|55=COSP:BTC/USD|270=7300.0|271=2.0|278=337800000000466515|10=083|
              BeginString    8  =  FIX.4.4
               BodyLength    9  =  00165
                  MsgType   35  =  X (MARKET_DATA_INCREMENTAL_REFRESH)
             SenderCompID   49  =  SEEDCX
             TargetCompID   56  =  QL4ADZEUNZ
                MsgSeqNum   34  =  8
         SenderLocationID  142  =  US,IL
              SendingTime   52  =  20190402-14:22:30.267691956
   LastMsgSeqNumProcessed  369  =  2
              NoMDEntries  268  =  1
               ApplSeqNum 1181  =  21
           MDUpdateAction  279  =  0 (NEW)
              MDEntryType  269  =  2 (TRADE)
                   Symbol   55  =  COSP:BTC/USD
                MDEntryPx  270  =  7300.0
              MDEntrySize  271  =  2.0
                MDEntryID  278  =  337800000000466515
                 CheckSum   10  =  083

New order

Resting: MDEntryType (269) = 0 (Bid) / 1 (Offer), with MDUpdateAction (279) = 0 (New).

8=FIX.4.4|9=00165|35=X|49=SEEDCX|56=QL4ADZEUNZ|34=9|142=US,IL|52=20190402-14:22:32.138113666|369=2|268=1|1181=22|279=0|269=1|55=COSP:BTC/USD|270=7300.0|271=2.0|278=337800000000012073|10=056|
              BeginString    8  =  FIX.4.4
               BodyLength    9  =  00165
                  MsgType   35  =  X (MARKET_DATA_INCREMENTAL_REFRESH)
             SenderCompID   49  =  SEEDCX
             TargetCompID   56  =  QL4ADZEUNZ
                MsgSeqNum   34  =  9
         SenderLocationID  142  =  US,IL
              SendingTime   52  =  20190402-14:22:32.138113666
   LastMsgSeqNumProcessed  369  =  2
              NoMDEntries  268  =  1
               ApplSeqNum 1181  =  22
           MDUpdateAction  279  =  0 (NEW)
              MDEntryType  269  =  1 (OFFER)
                   Symbol   55  =  COSP:BTC/USD
                MDEntryPx  270  =  7300.0
              MDEntrySize  271  =  2.0
                MDEntryID  278  =  337800000000012073
                 CheckSum   10  =  056

Order Amended or Partially Filled

MDEntryType (269) = 0 (Bid) / 1 (Offer), with MDUpdateAction (279) = 1 (Change).

8=FIX.4.4|9=00189|35=X|49=SEEDCX|56=QL4ADZEUNZ|34=10|142=US,IL|52=20190402-14:22:32.138203609|369=2|268=1|1181=23|279=1|269=0|55=COSP:BTC/USD|270=7300.0|271=1.0|278=337800000000012071|280=337800000000012071|10=185|
              BeginString    8  =  FIX.4.4
               BodyLength    9  =  00189
                  MsgType   35  =  X (MARKET_DATA_INCREMENTAL_REFRESH)
             SenderCompID   49  =  SEEDCX
             TargetCompID   56  =  QL4ADZEUNZ
                MsgSeqNum   34  =  10
         SenderLocationID  142  =  US,IL
              SendingTime   52  =  20190402-14:22:32.138203609
   LastMsgSeqNumProcessed  369  =  2
              NoMDEntries  268  =  1
               ApplSeqNum 1181  =  23
           MDUpdateAction  279  =  1 (CHANGE)
              MDEntryType  269  =  0 (BID)
                   Symbol   55  =  COSP:BTC/USD
                MDEntryPx  270  =  7300.0
              MDEntrySize  271  =  1.0
                MDEntryID  278  =  337800000000012071
             MDEntryRefID  280  =  337800000000012071
                 CheckSum   10  =  185

Order Removed From The Book

Cancelled or fully filled orders get removed from the book.

MDEntryType (269) = 0 (Bid) / 1 (Offer), with MDUpdateAction (279) = 2 (Delete).

8=FIX.4.4|9=00147|35=X|49=SEEDCX|56=QL4ADZEUNZ|34=11|142=US,IL|52=20190402-14:22:32.138238492|369=2|268=1|1181=24|279=2|269=1|55=COSP:BTC/USD|280=337800000000012073|10=252|
              BeginString    8  =  FIX.4.4
               BodyLength    9  =  00147
                  MsgType   35  =  X (MARKET_DATA_INCREMENTAL_REFRESH)
             SenderCompID   49  =  SEEDCX
             TargetCompID   56  =  QL4ADZEUNZ
                MsgSeqNum   34  =  11
         SenderLocationID  142  =  US,IL
              SendingTime   52  =  20190402-14:22:32.138238492
   LastMsgSeqNumProcessed  369  =  2
              NoMDEntries  268  =  1
               ApplSeqNum 1181  =  24
           MDUpdateAction  279  =  2 (DELETE)
              MDEntryType  269  =  1 (OFFER)
                   Symbol   55  =  COSP:BTC/USD
             MDEntryRefID  280  =  337800000000012073
                 CheckSum   10  =  252

When there is a trade, you will see an "X" message with MDEntryType (269) = 2 (Trade). MDUpdateAction (279) = 0 (New).

8=FIX.4.4|9=00166|35=X|49=SEEDCX|56=QL4ADZEUNZ|34=12|142=US,IL|52=20190402-14:22:32.138283291|369=2|268=1|1181=25|279=0|269=2|55=COSP:BTC/USD|270=7300.0|271=2.0|278=337800000000466540|10=117|
              BeginString    8  =  FIX.4.4
               BodyLength    9  =  00166
                  MsgType   35  =  X (MARKET_DATA_INCREMENTAL_REFRESH)
             SenderCompID   49  =  SEEDCX
             TargetCompID   56  =  QL4ADZEUNZ
                MsgSeqNum   34  =  12
         SenderLocationID  142  =  US,IL
              SendingTime   52  =  20190402-14:22:32.138283291
   LastMsgSeqNumProcessed  369  =  2
              NoMDEntries  268  =  1
               ApplSeqNum 1181  =  25
           MDUpdateAction  279  =  0 (NEW)
              MDEntryType  269  =  2 (TRADE)
                   Symbol   55  =  COSP:BTC/USD
                MDEntryPx  270  =  7300.0
              MDEntrySize  271  =  2.0
                MDEntryID  278  =  337800000000466540
                 CheckSum   10  =  117

New order

Resting: MDEntryType (269) = 0 (Bid) / 1 (Offer), with MDUpdateAction (279) = 0 (New).

8=FIX.4.4|9=00166|35=X|49=SEEDCX|56=QL4ADZEUNZ|34=13|142=US,IL|52=20190402-14:22:33.857455566|369=2|268=1|1181=26|279=0|269=1|55=COSP:BTC/USD|270=7300.0|271=2.0|278=337800000000012074|10=122|
              BeginString    8  =  FIX.4.4
               BodyLength    9  =  00166
                  MsgType   35  =  X (MARKET_DATA_INCREMENTAL_REFRESH)
             SenderCompID   49  =  SEEDCX
             TargetCompID   56  =  QL4ADZEUNZ
                MsgSeqNum   34  =  13
         SenderLocationID  142  =  US,IL
              SendingTime   52  =  20190402-14:22:33.857455566
   LastMsgSeqNumProcessed  369  =  2
              NoMDEntries  268  =  1
               ApplSeqNum 1181  =  26
           MDUpdateAction  279  =  0 (NEW)
              MDEntryType  269  =  1 (OFFER)
                   Symbol   55  =  COSP:BTC/USD
                MDEntryPx  270  =  7300.0
              MDEntrySize  271  =  2.0
                MDEntryID  278  =  337800000000012074
                 CheckSum   10  =  122

Order Removed From The Book

Orders that are cancelled or fully filled get removed from the book.

MDEntryType (269) = 0 (Bid) / 1 (Offer), with MDUpdateAction (279) = 2 (Delete).

8=FIX.4.4|9=00147|35=X|49=SEEDCX|56=QL4ADZEUNZ|34=14|142=US,IL|52=20190402-14:22:33.857514808|369=2|268=1|1181=27|279=2|269=0|55=COSP:BTC/USD|280=337800000000012071|10=006|
              BeginString    8  =  FIX.4.4
               BodyLength    9  =  00147
                  MsgType   35  =  X (MARKET_DATA_INCREMENTAL_REFRESH)
             SenderCompID   49  =  SEEDCX
             TargetCompID   56  =  QL4ADZEUNZ
                MsgSeqNum   34  =  14
         SenderLocationID  142  =  US,IL
              SendingTime   52  =  20190402-14:22:33.857514808
   LastMsgSeqNumProcessed  369  =  2
              NoMDEntries  268  =  1
               ApplSeqNum 1181  =  27
           MDUpdateAction  279  =  2 (DELETE)
              MDEntryType  269  =  0 (BID)
                   Symbol   55  =  COSP:BTC/USD
             MDEntryRefID  280  =  337800000000012071
                 CheckSum   10  =  006

Order Amended or Partially Filled

MDEntryType (269) = 0 (Bid) / 1 (Offer), with MDUpdateAction (279) = 1 (Change).

8=FIX.4.4|9=00189|35=X|49=SEEDCX|56=QL4ADZEUNZ|34=15|142=US,IL|52=20190402-14:22:33.857548175|369=2|268=1|1181=28|279=1|269=1|55=COSP:BTC/USD|270=7300.0|271=1.0|278=337800000000012074|280=337800000000012074|10=221|
              BeginString    8  =  FIX.4.4
               BodyLength    9  =  00189
                  MsgType   35  =  X (MARKET_DATA_INCREMENTAL_REFRESH)
             SenderCompID   49  =  SEEDCX
             TargetCompID   56  =  QL4ADZEUNZ
                MsgSeqNum   34  =  15
         SenderLocationID  142  =  US,IL
              SendingTime   52  =  20190402-14:22:33.857548175
   LastMsgSeqNumProcessed  369  =  2
              NoMDEntries  268  =  1
               ApplSeqNum 1181  =  28
           MDUpdateAction  279  =  1 (CHANGE)
              MDEntryType  269  =  1 (OFFER)
                   Symbol   55  =  COSP:BTC/USD
                MDEntryPx  270  =  7300.0
              MDEntrySize  271  =  1.0
                MDEntryID  278  =  337800000000012074
             MDEntryRefID  280  =  337800000000012074
                 CheckSum   10  =  221

Trade

MDEntryType (269) = 2 (Trade), with MDUpdateAction (279) = 0 (New).

8=FIX.4.4|9=00166|35=X|49=SEEDCX|56=QL4ADZEUNZ|34=16|142=US,IL|52=20190402-14:22:33.857601093|369=2|268=1|1181=29|279=0|269=2|55=COSP:BTC/USD|270=7300.0|271=1.0|278=337800000000466557|10=135|
              BeginString    8  =  FIX.4.4
               BodyLength    9  =  00166
                  MsgType   35  =  X (MARKET_DATA_INCREMENTAL_REFRESH)
             SenderCompID   49  =  SEEDCX
             TargetCompID   56  =  QL4ADZEUNZ
                MsgSeqNum   34  =  16
         SenderLocationID  142  =  US,IL
              SendingTime   52  =  20190402-14:22:33.857601093
   LastMsgSeqNumProcessed  369  =  2
              NoMDEntries  268  =  1
               ApplSeqNum 1181  =  29
           MDUpdateAction  279  =  0 (NEW)
              MDEntryType  269  =  2 (TRADE)
                   Symbol   55  =  COSP:BTC/USD
                MDEntryPx  270  =  7300.0
              MDEntrySize  271  =  1.0
                MDEntryID  278  =  337800000000466557
                 CheckSum   10  =  135

New order

Resting: MDEntryType (269) = 0 (Bid) / 1 (Offer), with MDUpdateAction (279) = 0 (New).

8=FIX.4.4|9=00166|35=X|49=SEEDCX|56=QL4ADZEUNZ|34=17|142=US,IL|52=20190402-14:22:35.358359225|369=3|268=1|1181=30|279=0|269=1|55=COSP:BTC/USD|270=7300.0|271=2.0|278=337800000000012075|10=116|
              BeginString    8  =  FIX.4.4
               BodyLength    9  =  00166
                  MsgType   35  =  X (MARKET_DATA_INCREMENTAL_REFRESH)
             SenderCompID   49  =  SEEDCX
             TargetCompID   56  =  QL4ADZEUNZ
                MsgSeqNum   34  =  17
         SenderLocationID  142  =  US,IL
              SendingTime   52  =  20190402-14:22:35.358359225
   LastMsgSeqNumProcessed  369  =  3
              NoMDEntries  268  =  1
               ApplSeqNum 1181  =  30
           MDUpdateAction  279  =  0 (NEW)
              MDEntryType  269  =  1 (OFFER)
                   Symbol   55  =  COSP:BTC/USD
                MDEntryPx  270  =  7300.0
              MDEntrySize  271  =  2.0
                MDEntryID  278  =  337800000000012075
                 CheckSum   10  =  116

Order Amended or Partially Filled

MDEntryType (269) = 0 (Bid) / 1 (Offer), with MDUpdateAction (279) = 1 (Change).

8=FIX.4.4|9=00190|35=X|49=SEEDCX|56=QL4ADZEUNZ|34=18|142=US,IL|52=20190402-14:22:38.251297432|369=3|268=1|1181=31|279=1|269=1|55=COSP:BTC/USD|270=7310.0|271=15.0|278=337800000000012076|280=337800000000012075|10=002|
              BeginString    8  =  FIX.4.4
               BodyLength    9  =  00190
                  MsgType   35  =  X (MARKET_DATA_INCREMENTAL_REFRESH)
             SenderCompID   49  =  SEEDCX
             TargetCompID   56  =  QL4ADZEUNZ
                MsgSeqNum   34  =  18
         SenderLocationID  142  =  US,IL
              SendingTime   52  =  20190402-14:22:38.251297432
   LastMsgSeqNumProcessed  369  =  3
              NoMDEntries  268  =  1
               ApplSeqNum 1181  =  31
           MDUpdateAction  279  =  1 (CHANGE)
              MDEntryType  269  =  1 (OFFER)
                   Symbol   55  =  COSP:BTC/USD
                MDEntryPx  270  =  7310.0
              MDEntrySize  271  =  15.0
                MDEntryID  278  =  337800000000012076
             MDEntryRefID  280  =  337800000000012075
                 CheckSum   10  =  002

Order Removed From The Book

Cancelled or fully filled orders get removed from the book.

MDEntryType (269) = 0 (Bid) / 1 (Offer), with MDUpdateAction (279) = 2 (Delete).

8=FIX.4.4|9=00147|35=X|49=SEEDCX|56=QL4ADZEUNZ|34=19|142=US,IL|52=20190402-14:22:41.291990999|369=3|268=1|1181=32|279=2|269=1|55=COSP:BTC/USD|280=337800000000012076|10=024|
              BeginString    8  =  FIX.4.4
               BodyLength    9  =  00147
                  MsgType   35  =  X (MARKET_DATA_INCREMENTAL_REFRESH)
             SenderCompID   49  =  SEEDCX
             TargetCompID   56  =  QL4ADZEUNZ
                MsgSeqNum   34  =  19
         SenderLocationID  142  =  US,IL
              SendingTime   52  =  20190402-14:22:41.291990999
   LastMsgSeqNumProcessed  369  =  3
              NoMDEntries  268  =  1
               ApplSeqNum 1181  =  32
           MDUpdateAction  279  =  2 (DELETE)
              MDEntryType  269  =  1 (OFFER)
                   Symbol   55  =  COSP:BTC/USD
             MDEntryRefID  280  =  337800000000012076
                 CheckSum   10  =  024

Invalid Instrument

Market data requests (35=V) with invalid symbol result in market data reject (35=Y) with MDReqRejReason (281) = 0 (Unknown Symbol).

Request

8=FIX.4.4|9=113|35=V|49=QL4ADZEUNZ|56=SEEDCX|34=5|52=20190402-14:23:09.500|262=20|263=1|264=0|267=1|269=4|146=1|55=COSP:BTC/USDT|10=171|
              BeginString    8  =  FIX.4.4
               BodyLength    9  =  113
                  MsgType   35  =  V (MARKET_DATA_REQUEST)
             SenderCompID   49  =  QL4ADZEUNZ
             TargetCompID   56  =  SEEDCX
                MsgSeqNum   34  =  5
              SendingTime   52  =  20190402-14:23:09.500
                  MDReqID  262  =  20
  SubscriptionRequestType  263  =  1 (SNAPSHOT_AND_UPDATES)
              MarketDepth  264  =  0
           NoMDEntryTypes  267  =  1
              MDEntryType  269  =  4 (OPENING_PRICE)
             NoRelatedSym  146  =  1
                   Symbol   55  =  COSP:BTC/USDT
                 CheckSum   10  =  171

Reject

8=FIX.4.4|9=00114|35=Y|49=SEEDCX|56=QL4ADZEUNZ|34=20|142=US,IL|52=20190402-14:23:10.482774347|369=5|262=20|281=0|58=Unknown symbol.|10=186|
              BeginString    8  =  FIX.4.4
               BodyLength    9  =  00114
                  MsgType   35  =  Y (MARKET_DATA_REQUEST_REJECT)
             SenderCompID   49  =  SEEDCX
             TargetCompID   56  =  QL4ADZEUNZ
                MsgSeqNum   34  =  20
         SenderLocationID  142  =  US,IL
              SendingTime   52  =  20190402-14:23:10.482774347
   LastMsgSeqNumProcessed  369  =  5
                  MDReqID  262  =  20
           MDReqRejReason  281  =  0 (UNKNOWN_SYMBOL)
                     Text   58  =  Unknown symbol.
                 CheckSum   10  =  186