EMA application received refresh message which is blank but not Zero price before the market opens

HSIL_Kevin_Sun
HSIL_Kevin_Sun Newcomer
edited May 7 in EMA

I am using EMA as an alternative to JSFC to stream market prices.

as below capture 1-0 , JSFC can get the Zero price when connected to TREP at HTC 6:00 AM
1-0:

image.png


but Ema capture the blank data at the same time. See 2-0
2-0

image.png

I want to know if this blank data is normal, why is it not zero price ?

Answers

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @HSIL_Kevin_Sun

    Thank you for reaching out to us.

    JSFC retrieves Marketfeed data from a server. +0 in Marketfeed represents blank data. EMA retrieves OMM data from a server. OMM supports blank data.

    Therefore, blank data in OMM is equivalent to +0 in Marketfeed.

  • thanks Jirapongse.

    When application received blank data, does application accpect this type data and needs to blank the respective data fields ?

  • wasin.w
    wasin.w admin

    Hello @HSIL_Kevin_Sun

    An application code can check if fieldEntry.code() == Data.DataCode.BLANK to check if incoming fields data is blank.

    You can see a full example code on the ex360_MP_View example.

  • Hello @wasin.w

    I knew how to check the blank data, what I want to ask is whether the application needs to accept this kind of data? Can you explain in what scenarios blank data will appear?

    Because our application will cache the received data, I want to know whether it is necessary to clear the cache if blank data is received, or whether I need to skip this kind of data and not process it.

  • another question:
    Is it possible to have blank data in all data types (com.refinitiv.ema.access.DataTypes), or only DataTypes.Real have blank data ?
    Our application side considers treating DataTypes.Real's blank data as 0, but if the DataTypes.Enum also possiable have blank data, how our application side deal with it ?

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @HSIL_Kevin_Sun

    As far as I know, blank values are sent during closing run to clear data. The closing run is a housekeeping exercise performed by LSEG that prepares the display template for the next trading session. For example, last trade may be moved to historical close , or bid and ask prices may be cleared. Closing run functionality is defined by LSEG on an exchange by exchange basis.

    According to the API specifications, when contained in an RsslFieldEntry or RsslElementEntry, base primitive types can also represent a blank value. A blank value indicates that no value is currently present and any previously stored or displayed primitive value should be cleared. When decoding any base primitive value, the application should check for a blank value.

    I checked the historical data of 3613.HK and found that the real-time sets the enum to 0 during closing run.

    3613.HK,Market Price,2025-04-21T21:33:00.658955929Z,+8,Raw,UPDATE,CLOSING_RUN,,,,4945,,35694,,151
    ,,,,FID,22,,BID,,
    ,,,,FID,25,,ASK,,
    ,,,,FID,30,,BIDSIZE,,
    ,,,,FID,31,,ASKSIZE,,
    ,,,,FID,118,,PRC_QL_CD,0," "
    ,,,,FID,3386,,QUOTE_DATE,,
    ,,,,FID,1025,,QUOTIM,,
    ,,,,FID,6,,TRDPRC_1,,
    ,,,,FID,7,,TRDPRC_2,,
    ,,,,FID,8,,TRDPRC_3,,
    ,,,,FID,9,,TRDPRC_4,,
    ,,,,FID,10,,TRDPRC_5,,
    ,,,,FID,11,,NETCHNG_1,,
    ,,,,FID,14,,PRCTCK_1,0," "