question

Upvotes
Accepted
48 8 16 19

leve2 orderbook processing problem

Hello everyone, I read this article How to Sort & Process Level 2....., now I have some general understanding as to how to process level2 orderbook message. Some extra problem I want to know more :

First, Is there any flag for the first RefreshMsg just like the Complete flag for the last RefreshMsg ? As I see, application should clear the whole cached orderbook if receiving the first RefreshMsg, as it can't apply the RefreshMsg on the maybe outdated local cache caused by network problem, like connection loss.

Second, I read that it is theoretically possible to receive an UpdateMsg interspersed with the multi-part RefreshMsgs, so is there possible that the update message for certain row arrives before refresh message for that row ? For example, the update message indicates delete the row, while later the subsequent refresh message add the row, which may cause the wrong processing result.

Third, Will full RefreshMsg sent periodically especially after market close? If no, suppose my application lost some operation for example deleting some order entries due to network problem, Then it will forever exist in my local cached orderbook and will never have opportunity to be deleted again.

Thanks, expecting your reply!

ema-apilevel-2depth-of-book
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
Accepted
25.3k 87 12 25

Hi @iscas.wang

To answer Q1 and Q3 - as with Level 1 MarketPrice data, If there is a temporary issue e.g. the Service is down/unavailable; you would expect to receive a statusMsg with either a DataState Suspect - so you would need to handle any such status message accordingly.

Once the connection recovers - the server should send you a full unsolicited Refresh - which would contain the full order book again - thereby ensuring you have the latest representation of the Order Book.

In other connection loss scenarios, you will receive a StatusMsg with a StreamState Closed/ClosedRecover etc - depending on whether the upstream server believed the item was recoverable in the near future. Once a stream is closed, you will not receive any further updates for that instrument stream. You can read the following article for more details on EMA connection and item recovery.
The Mechanics of EMA Connection and Item Recovery | Refinitiv Developers

In terms of Q2, an UpdateMsg can only reference a row that has already been sent to you as part of a previous RefreshMsg.


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvote
18 1 1 2

@umer.nalla Thanks for your reply. Your article helps me greatly in understanding the level2 orderbook data format and processing logic.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.