What are the meaning of the fields "SALTIM_MS", "QUOTIM_MS"

I saw the below link.

https://raw.githubusercontent.com/Refinitiv/Real-Time-SDK/master/Java/etc/RDMFieldDictionary


But I can't understand the difference between "SALTIM_MS" and "QUOTIM_MS".

I find out that the "SALTIM_MS", "QUOTIM_MS" seems to be appeared together at each trade data.

Can you explain these fields clearly??

I wrote a test code

import java.time.Instant;
import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

public class JustTestTest {

private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS.ZZZ");

@Test
@DisplayName("SALTIM_MS, QUOTIM_MS COMPARISON ... ")
public void test1(){

// test case 1)
// "SALTIM_MS":"74190165" "QUOTIM_MS":"59062944"
OffsetDateTime saltim_ms1 = processMilliSecondField("74190165");
OffsetDateTime quotim_ms1 = processMilliSecondField("59062944");
String string1 = formatString(saltim_ms1.format(formatter), quotim_ms1.format(formatter));
System.out.println(string1);
System.out.println();

// test case 2)
// "SALTIM_MS":"75014899" "QUOTIM_MS":"75017913"
OffsetDateTime saltim_ms2 = processMilliSecondField("75014899");
OffsetDateTime quotim_ms2 = processMilliSecondField("75017913");
String string2 = formatString(saltim_ms2.format(formatter), quotim_ms2.format(formatter));
System.out.println(string2);
System.out.println();

// test case 3)
// "SALTIM_MS":"74828357" "QUOTIM_MS":"75000573"
OffsetDateTime saltim_ms3 = processMilliSecondField("74828357");
OffsetDateTime quotim_ms3 = processMilliSecondField("75000573");
String string3 = formatString(saltim_ms3.format(formatter), quotim_ms3.format(formatter));
System.out.println(string3);
System.out.println();

}

public OffsetDateTime processMilliSecondField(String timeStr){
OffsetDateTime serverTodayUTCMilli = ZonedDateTime.now(ZoneId.of("Etc/UTC"))
.withZoneSameLocal(ZoneId.of("Etc/UTC"))
.truncatedTo(ChronoUnit.DAYS)
.toOffsetDateTime();

long timeMilli = Long.parseLong(timeStr);
Long tradeMilli = serverTodayUTCMilli.toInstant().toEpochMilli() + timeMilli;
OffsetDateTime offsetDateTime = OffsetDateTime.ofInstant(Instant.ofEpochMilli(tradeMilli), ZoneOffset.UTC);
return offsetDateTime;
}

public String formatString (String saltim_ms, String quotim_ms){
StringBuilder builder = new StringBuilder();
builder.append("SALTIM_MS = ").append(saltim_ms).append(", ")
.append("QUOTIM_MS = ").append(quotim_ms).append(".");
return builder.toString();
}

}


And. I ran it, the result is like below text.

SALTIM_MS = 2022-03-01T20:36:30.165.+0000, QUOTIM_MS = 2022-03-01T16:24:22.944.+0000.

SALTIM_MS = 2022-03-01T20:50:14.899.+0000, QUOTIM_MS = 2022-03-01T20:50:17.913.+0000.

SALTIM_MS = 2022-03-01T20:47:08.357.+0000, QUOTIM_MS = 2022-03-01T20:50:00.573.+0000.


Best Answer

  • Jirapongse
    Answer ✓

    @goodsgjung

    The followings are the definitions of SALTIM_MS and QUOTIM_MS in the data dictionary file (RDMFieldDictionary)

    SALTIM_MS  "SALTIM MS"           3854  NULL        INTEGER            15  UINT64           4
    !
    ! Time of the last trade with precision in milliseconds - the time of the last update 
    ! to the field TRDPRC_1 (FID 6).
    !
    QUOTIM_MS  "QUOTIM MS"           3855  NULL        INTEGER            15  UINT64           4
    !
    ! Time of best bid/ask quote update in milliseconds
    !

    However, the usages may be different among exchanges. You can contact the content support team directly via MyRefinitiv to verify the definitions in each exchange.

Answers