How to process HKEX Broker Feed in EMA style ?

We access the HKEX Broker Queue Page in EMA style.

The RefreshMsg format in EMA looks like:

RefreshMsg
streamId="5"
domain="MarketPrice Domain"
solicited
RefreshComplete
state="Open / Ok / None / 'All is well'"
itemGroup="00 03"
permissionData="03 01 a9 49 48 c0"
name="0700bk.HKd"
nameType="1"
serviceId="425"
serviceName="hEDD"
Payload dataType="FieldList"
FieldList FieldListNum="82" DictionaryId="1"
FieldEntry fid="1" name="PROD_PERM" dataType="UInt" value="4948"
FieldEntry fid="2" name="RDNDISPLAY" dataType="UInt" value="151"
FieldEntry fid="3" name="DSPLY_NAME" dataType="Rmtes" value="TENCENT"
FieldEntry fid="15" name="CURRENCY" dataType="Enum" value="(blank data)"
FieldEntry fid="259" name="RECORDTYPE" dataType="UInt" value="121"
FieldEntry fid="315" name="ROW80_1" dataType="Rmtes" value="TENCENT <0700.HK> <HKBK01> 0700bk.HKd"
FieldEntry fid="316" name="ROW80_2" dataType="Rmtes" value=" BID ASK "
FieldEntry fid="317" name="ROW80_3" dataType="Rmtes" value=" 6898 8306 8306 6699 | 3286 6387 1450 +3s "
FieldEntry fid="318" name="ROW80_4" dataType="Rmtes" value=" 5359 8303 5998 4821 | 1836 8037 3439 6997 "
FieldEntry fid="319" name="ROW80_5" dataType="Rmtes" value=" 5998 8467 1298 8308 | 8020 3439 5465 5998 "
FieldEntry fid="320" name="ROW80_6" dataType="Rmtes" value=" 8564 5998 5998 8303 | 3289 1836 6699 0747 "
FieldEntry fid="321" name="ROW80_7" dataType="Rmtes" value=" 5999 8304 5999 8307 | 5339 5337 +2s 0747 "
FieldEntry fid="322" name="ROW80_8" dataType="Rmtes" value=" -1s 6999 5999 6728 | 3439 0346 8734 1929 "
FieldEntry fid="323" name="ROW80_9" dataType="Rmtes" value=" 1048 8965 6997 8301 | 1048 3439 0746 4978 "
FieldEntry fid="324" name="ROW80_10" dataType="Rmtes" value=" 8468 6825 6997 6996 | 8698 +1s 1049 7769 "
FieldEntry fid="325" name="ROW80_11" dataType="Rmtes" value=" 6999 8185 6999 6997 | 7355 3439 3347 8197 "
FieldEntry fid="326" name="ROW80_12" dataType="Rmtes" value=" 5999 5882 2246 6699 | 7389 0746 4973 +4s "
FieldEntry fid="327" name="ROW80_13" dataType="Rmtes" value=" "
FieldEntry fid="1080" name="PREF_DISP" dataType="UInt" value="(blank data)"
FieldEntry fid="1671" name="GN_TX20_7" dataType="Rmtes" value="********************"
FieldEntry fid="1672" name="GN_TX20_8" dataType="Rmtes" value="********************"
FieldEntry fid="1673" name="GN_TX20_9" dataType="Rmtes" value="********************"
FieldEntry fid="1709" name="RDN_EXCHD2" dataType="Enum" value="(blank data)"
FieldEntry fid="3422" name="PROV_SYMB" dataType="Rmtes" value="(blank data)"
FieldEntry fid="3694" name="MNEMONIC" dataType="Rmtes" value="700"
FieldEntry fid="5357" name="CONTEXT_ID" dataType="Real" value="2416.0"
FieldEntry fid="6401" name="DDS_DSO_ID" dataType="UInt" value="4097"
FieldEntry fid="6480" name="SPS_SP_RIC" dataType="Ascii" value=".[SPSHKPL1"
FieldListEnd
PayloadEnd
RefreshMsgEnd

The UpdateMsg format in EMA looks like:

UpdateMsg
    streamId="5"
    domain="MarketPrice Domain"
    updateTypeNum="1"
    name="0700bk.HKd"
    serviceId="425"
    serviceName="hEDD"
    Payload dataType="FieldList"
        FieldList
            FieldEntry fid="317" name="ROW80_3" dataType="Rmtes" value="8468  7389  0759  11908037   +1s  3279  7126"
            FieldEntry fid="318" name="ROW80_4" dataType="Rmtes" value="7365  9069  7389  66997389  1048  1836  1838"
            FieldEntry fid="319" name="ROW80_5" dataType="Rmtes" value="9068  1195  5333  59395344  7358  8022  4973"
            FieldEntry fid="320" name="ROW80_6" dataType="Rmtes" value="7365  7389  6123  28461836   +1s  5465  1836"
            FieldEntry fid="321" name="ROW80_7" dataType="Rmtes" value="7389  9028  8565  73899069  8024  3439  002"
            FieldEntry fid="322" name="ROW80_8" dataType="Rmtes" value="4499  1190  7389  59997389   +1s  0027  8397"
            FieldEntry fid="323" name="ROW80_9" dataType="Rmtes" value="8468  4098  3279  69977389  0747  6389  3289"
            FieldEntry fid="324" name="ROW80_10" dataType="Rmtes" value="7369  6387  4495  738s5467  1048   +2s  6387"
            FieldEntry fid="325" name="ROW80_11" dataType="Rmtes" value="5359  4978  5998  73898027  4973  1049  8044"
            FieldEntry fid="326" name="ROW80_12" dataType="Rmtes" value="6898  8117  7389  44893278  5999  1450  5465"
        FieldListEnd
    PayloadEnd
UpdateMsgEnd
UpdateMsg
streamId="5"
domain="MarketPrice Domain"
updateTypeNum="1"
name="0700bk.HKd"
serviceId="425"
serviceName="hEDD"
Payload dataType="FieldList"
FieldList
FieldEntry fid="317" name="ROW80_3" dataType="Rmtes" value="7389 8117 7389 638"
FieldEntry fid="318" name="ROW80_4" dataType="Rmtes" value="5359 4978 5998 7"
FieldEntry fid="319" name="ROW80_5" dataType="Rmtes" value="8468 7389 0759 1190"
FieldEntry fid="320" name="ROW80_6" dataType="Rmtes" value="7365 9069 7389 6699"
FieldEntry fid="321" name="ROW80_7" dataType="Rmtes" value="9068 1195 5333 59"
FieldEntry fid="322" name="ROW80_8" dataType="Rmtes" value="7365 7389 6123 2846"
FieldEntry fid="323" name="ROW80_9" dataType="Rmtes" value="7389 9028 8565 7389"
FieldEntry fid="324" name="ROW80_10" dataType="Rmtes" value="4499 1190 7389"
FieldEntry fid="325" name="ROW80_11" dataType="Rmtes" value="8468 4098 3279 6997"
FieldEntry fid="326" name="ROW80_12" dataType="Rmtes" value="7369 6387 449"
FieldListEnd
PayloadEnd
UpdateMsgEnd


We need to transfer the broker id in Broker Queue Page into separated one.

But the RFA processing method seems not work for EMA:

https://community.developers.refinitiv.com/questions/13002/how-to-interpret-hk-broker-feed.html


And we could not found tutorial or document about it.

Please help me on this case.

Thank you.

Best Answer

Answers

  • @umer.nalla thanks for your reply.

    According to this article, we have to maintain some RmtesBuffer for each page.

    So it seems we have to rebuild the whole page into string to get brokers which means potential heavy GC load.

    It is there any way to make this process more efficiency ?

  • Thanks for your reply.

    According to this article, we have to maintain some RmtesBuffer objs for each page.

    So it seems we have to rebuild the whole page into string to get brokers which means potential heavy GC load.

    It is there any way to make this process more efficiency ?

  • Hi,I looked at the article and found that strings are extracted from FID, not brokerId

  • UpdateMsg

    streamId="6"

    domain="MarketPrice Domain"

    updateTypeNum="1"

    name="8429bk.HKd"

    serviceId="257"

    serviceName="ELEKTRON_DD"

    Payload dataType="FieldList"

    FieldList

    FieldEntry fid="317" name="ROW80_3" dataType="Rmtes" value="-9s "

    FieldEntry fid="318" name="ROW80_4" dataType="Rmtes" value=" -14s"

    FieldEntry fid="319" name="ROW80_5" dataType="Rmtes" value="-10s "

    FieldEntry fid="320" name="ROW80_6" dataType="Rmtes" value=" -15s"

    FieldEntry fid="321" name="ROW80_7" dataType="Rmtes" value="-11s"

    FieldEntry fid="322" name="ROW80_8" dataType="Rmtes" value="6259"

    FieldEntry fid="323" name="ROW80_9" dataType="Rmtes" value="-7s 1836 1836"

    FieldEntry fid="324" name="ROW80_10" dataType="Rmtes" value=" -12s 2299"

    FieldEntry fid="325" name="ROW80_11" dataType="Rmtes" value="-8s 1836 -16s"

    FieldEntry fid="326" name="ROW80_12" dataType="Rmtes" value=" -13s 8463"

    FieldListEnd

    PayloadEnd

    UpdateMsgEnd

    This is the information I received on how to extract it. I also noticed that the rules of the messages I received were different


  • another msg 微信图片_20220725175417.jpgThis causes the offset method to be ungeneric