For a deeper look into our Elektron API, look into:

Overview |  Quickstart |  Documentation |  Downloads |  Tutorials |  Articles

question

Upvotes
Accepted
1 1 0 1

Can not get streaming data with MARKET_BY_ORDER model by level 2 ric in HKSE

Hi,

We are struggling with requesting Hong Kong level 2 data(sample ric<0700.HKd>) with RDMMsgTypes.MARKET_BY_ORDER message type.

Last week your team confirmed that the DACS ID: NJ2_02_RHB_US69740 is permission to HKG. After working with the SDK, we still can not get data by *.HKd ric with MARKET_BY_ORDER model. In general, we got two questions.

First, we need your team to check again that the DACS account does have the permission to subscribe *.HKd ric with MARKET_BY_ORDER model. Form our DACS control panel, it shows "HKEX - HONG KONG STOCK EXCHANGE L1 L2". Our main DACS account is CustAdmin_US69740, the client name is NJ2-Cell37-TRHP-US69740.

The second question may need your tech team to help us with the Robust Foundation API development. We have reviewed the develop guide documentation and the example code from the tutorial (https://developers.thomsonreuters.com/thomson-reuters-enterprise-platform/robust-foundation-api-rfa-0/learning?content=3130&type=learning_material_item). In our understanding that requesting MARKET_BY_ORDER model is nothing different with requesting the usual MARKETPRICE except changing OMMMsg.setMsgModelType method when register the .HKd ric (like 0700.HKd). We have several issues when testing different requesting method with level 1 ric and level 2 ric.

First, we found that the OMMMsg response we get from .HKd MARKET_BY_ORDER subscribe type is a final message which determined by its isFinal() method. Also, the payload of OMMMsg is empty and the OMMTypes is NO_DATA.

However, requesting .HKd ric with MARKETPRICE model is normal and it can get streaming data. If there is no problem with .HKd ric' permission to request MARKET_BY_ORDER model, than why we can not get stream data with MARKET_BY_ORDER model?

Last is the strangest, using level 1 ric (like 0700.HK) to request MARKET_BY_ORDER can get stream data but with meaningless data.

Please see our implementation code of rfa Client attachment below and give any suggestion that might help us. Another attachment is the MARKET_BY_ORDER response with 0700.HKd ric and 0700.HK ric log and MARKETPRICE response log with 0700.HKd ric.

Thanks for your time.

responese-log.txt

elektronrefinitiv-realtimeelektron-sdkrequestlevel-2market-by-order
responese-log.txt (4.7 KiB)
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.

Hi @neo7664,

Thank you for your participation in the forum. Is the reply below satisfactory in resolving your query?

If so please can you click the 'Accept' text next to the appropriate reply. This will guide all community members who have a similar question.

Thanks,

AHS

Upvotes
Accepted
4.4k 10 6 9

Hi @neo7664

There are two categories of Level 2 data:

  1. Legacy Level 2 data on MARKET_PRICE domain
    This is typically restricted to the top of the Order Book due to the flat structure which uses unique fields for each Orderbook entry e.g. BEST_BID1, BEST_ASK1, BEST_BID2, BEST_ASK2, BEST_BID3, BEST_ASK3 and so on...
  2. New Level 2 data on MARKET_BY_ORDER and MARKET_BY_PRICE domain
    Which allows full depth due to its use of hierarchical / nested data structures.

New Level 2 use the same RIC as Level 1 RIC, while Legacy level 2 use <Level 1 RIC> + <special suffix>, i.e. 0700.HKd.

And as mentioned, new Level 2 data contains nested data structures.

I would suggest checking the level 2 tutorial for how to decode the level 2 data.


mbo.png (60.8 KiB)
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.

Wow, the ric category explanation really help us a lot! Thank you so much.

According to the tutorial tha decoding the level 2 data is the same with MARKETPRICE data, so this would be no problem.

The MbO level 2 data is different from MarketPrice level 1, so be sure to check the tutorial code and the example code that @Umer Nalla suggested.

@neo7664

Mainly, you must decode a map container before decode the field list container inside it.

Also, the application must be able to handle the map action such as add, update, or delete map entry.

Show more comments
Upvotes
24.5k 86 10 22

Hi @neo7664

You need to drop the small d suffix and use the base RIC when requesting RDM Level 2 data such as MarketByPrice and MarketByOrder - i.e. just use 0700.HK

The 0700.HKd means you want legacy Top of order book (L2) data - which is only available in MarketPrice format.

Also, try testing with a example application such as 'Consumer' example (RFA C++) or 'com.reuters.rfa.example.omm.cons' (RFA Java) - to help confirm if the issue lies with your code or your permissions.

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.