question

Upvotes
Accepted
89 8 14 17

different dates for one RIC?

ECSSH1 (RawLegacyMarketDepth)

Please comment

1. Why are there so many different messages on ECSSH1?

2. What is "Start date"?

3. Why is "Start date" the same as "Expiration Date"? 03/14/2011

4. Why is there no date for "Start dat" on the first line?

5. Why "Change date 03/18/2011" but "Expiration Date 03/14/2011"?

6. What is ECSSH1 ^ 1?

code:

using System;
using System.Linq;
using System.Diagnostics;
using System.IO;
using ThomsonReuters.Dss.Api.StandardExtractions;
using ThomsonReuters.Dss.Api;
using ThomsonReuters.Dss.Api.Content;
using ThomsonReuters.Dss.Api.Extractions;
using ThomsonReuters.Dss.Api.Extractions.ExtractionRequests;
using ThomsonReuters.Dss.Api.Extractions.ReportExtractions;
using ThomsonReuters.Dss.Api.Extractions.ReportTemplates;
using ThomsonReuters.Dss.Api.Extractions.Schedules;
using ThomsonReuters.Dss.Api.Extractions.SubjectLists;
using ThomsonReuters.Dss.Api.Search;
using ThomsonReuters.Dss.Core.RestApi;
using System.Text;
using ICSharpCode.SharpZipLib.GZip;

namespace RefinitivHistoryTesting
{
    class Program
    {
        static void Main(string[] args)
        {
            //-----------------------------------------------------------------
            //Connect and authenticate to the DSS server:
            //-----------------------------------------------------------------
            Uri dssUri = new Uri("https://hosted.datascopeapi.reuters.com/RestApi/v1/");
            string dssUserName = "***";
            string dssUserPassword = "****";

            var out_dir = @".\Storage\";
            var SearchContext = new SearchContext(dssUri, dssUserName, dssUserPassword);

            var ExtractionsContext = new ExtractionsContext(dssUri, dssUserName, dssUserPassword);
            ExtractionsContext.Options.AutomaticDecompression = false;
            try
            {
                ExtractionsContext.DefaultRequestHeaders.Add("x-direct-download", "true");
            }
            catch (Exception)
            { }

            var availableMbPFields = ExtractionsContext.GetValidContentFieldTypes(ReportTemplateTypes.TickHistoryRaw);
            var availableTnSFields = ExtractionsContext.GetValidContentFieldTypes(ReportTemplateTypes.TickHistoryTimeAndSales);


            var dateRange = DateTimeRange.Create(
                new DateTimeOffset(2008, 01, 01, 0, 0, 0, TimeSpan.Zero),
                new DateTimeOffset(2020, 12, 22, 0, 0, 0, TimeSpan.Zero));

            var request = new HistoricalChainResolutionRequest
            {
                ChainRics = new[] { "0#ECSSH1" },//{ "0#ESH1"},//{ "0#ECSSH1" },//{ "0#1URO:" },
                Range = dateRange
            };

            var chain_results = SearchContext.HistoricalChainResolution(request);
            foreach (var chain in chain_results)
            {
                Console.WriteLine("Chain Identifier: {0} {1}, Constituents: {2}", chain.IdentifierType, chain.Identifier, chain.Constituents.Count());
                foreach (var constituent in chain.Constituents)
                {
                    var searchResults = SearchContext.HistoricalSearch(
                        HistoricalSearchRequest.Create(
                            constituent.Identifier, constituent.IdentifierType, dateRange, HistoricalResultsBy.Ric, null));

                    //foreach (var result in from pos in searchResults where pos.DomainCode == "8" select pos)
                    //foreach (var result in searchResults)

                    var result = searchResults.FirstOrDefault(pos => pos.Identifier.Contains("ECSSH1"));//("ESH1m"));//("ECSSH1"));
                    if (result != null)
                    {

                        var extractionDatesResult = ExtractionsContext.Extract(
                            new HistoricalReferenceExtractionRequest
                            {
                                ContentFieldNames = new DssCollection<string>()
                                {
                                    "RIC", "Start date", "Change Date", "Expiration Date"
                                },

                                Condition = new HistoricalReferenceCondition
                                {
                                    StartDate = result.FirstDate,
                                    EndDate = result.LastDate
                                },

                                IdentifierList = new InstrumentIdentifierList
                                {
                                    InstrumentIdentifiers = new[]
                                    {
                                        InstrumentIdentifier.Create(result.IdentifierType, result.Identifier)
                                    },
                                    ValidationOptions = new InstrumentValidationOptions
                                    {
                                        AllowHistoricalInstruments = true
                                    },
                                    UseUserPreferencesForValidationOptions = false
                                }
                            });

                       dynamic srcLastDate = null;
                        foreach (var content in extractionDatesResult)
                            foreach (var prop in content.DynamicProperties)
                            {
                                Console.WriteLine("{0}\t {1},\r", prop.Key, prop.Value);
                                if (srcLastDate == null && prop.Key == "Expiration Date" && prop.Value != null) srcLastDate = prop.Value;
                            }

                        dynamic lastDate = srcLastDate != null ? new DateTimeOffset(srcLastDate) : new DateTimeOffset(DateTime.UtcNow);   //result.LastDate;
                        dynamic startDate = result.FirstDate;//lastDate.AddMonths(-1);//new DateTimeOffset(2020, 12, 22, 0, 0, 0, TimeSpan.Zero); //lastDate.AddMonths(-4);//result.FirstDate;


                        Console.WriteLine("{0},\t {1},\t {2},\t {3},\t {4}", result.Identifier, result.IdentifierType, startDate, lastDate, result.DomainCode);

                        var extractionResult = ExtractionsContext.ExtractRaw(

                                new TickHistoryMarketDepthExtractionRequest
                                {
                                    Condition = new TickHistoryMarketDepthCondition
                                    {
                                        ReportDateRangeType = ReportDateRangeType.Range,
                                        QueryStartDate = startDate, //new DateTimeOffset(2016, 07, 25, 20, 0, 0, TimeSpan.Zero),
                                        QueryEndDate = lastDate, //new DateTimeOffset(2016, 08, 02, 19, 59, 59, TimeSpan.Zero),
                                        ExtractBy = TickHistoryExtractByMode.Ric,
                                        MessageTimeStampIn = TickHistoryTimeOptions.GmtUtc,
                                        SortBy = TickHistorySort.SingleByRic,
                                        View = TickHistoryMarketDepthViewOptions.LegacyLevel2,
                                        DisplaySourceRIC = true

                                    },
                                    IdentifierList = new InstrumentIdentifierList
                                    {
                                        InstrumentIdentifiers = new[]
                                        {
                                            InstrumentIdentifier.Create(result.IdentifierType, result.Identifier)
                                        },
                                        ValidationOptions = new InstrumentValidationOptions
                                        {
                                            AllowHistoricalInstruments = true
                                        }
                                    },

                                });

                        string line;
                        var fileName = out_dir + "_" + result.Identifier + "_" + startDate.DateTime.ToString("dd.MM.yyyy") + "_" + lastDate.DateTime.ToString("dd.MM.yyyy") + "_RawLegacyMarketDepth.csv";
                        var sw = new StreamWriter(fileName, false);
                        var streamResponse = ExtractionsContext.GetReadStream(extractionResult);
                        using (GZipInputStream gzip = new GZipInputStream(streamResponse.Stream))
                        {
                            using (StreamReader reader = new StreamReader(gzip, Encoding.UTF8))
                            {
                                while ((line = reader.ReadLine()) != null)
                                {
                                    sw.WriteLine(line);
                                }
                            }
                        }
                        sw.Close();
                    }
                }
            }
            try
            {
                ExtractionsContext.DefaultRequestHeaders.Remove("x-direct-download");
            }
            catch (Exception)
            { }
            Console.WriteLine("Press Enter to exit");
            Console.ReadLine();
        }
    }
}



tick-history-rest-apidateexpiration
ecssh1.png (59.6 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.

Upvote
Accepted
29k 32 11 15

Hello @s61670,

These questions are specific to Tick History content, rather then about RTH REST API usage. With questions on content, as a customer, the best approach is to pose them directly to Refinitiv Helpdesk Online -> Content -> Tick History, and be referred to Refinitiv content experts.

This developers forum is dedicated to general questions and discussions centered around Refinitiv API usage, the majority of the forum's members are developers, moderators are Refinitiv API experts, do not have the in-depth knowledge of many types of Refinitiv content.

In my understanding, HistoricalReferenceExtractionRequest query reflects the most details on the RIC, any changes that have taken place are reflected, so if anything have changed about the RIC, there will be an entry reflecting that, if you don't request the field that has changed it may seem that the entry is the same.

Please find the data dictionary with tab "Field Descriptions" at Data Dictionary - Refinitiv Tick History Custom Reporting,

Historical Reference -> Start Date = "Starting date of the instrument". However, for more in-depth info, content experts will be of more help then me.

"^" symbol denotes expired instruments.

Please let me know if you are able to proceed, or would like us to open a content inquiry on your behalf?

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
89 8 14 17

Please open a support request.


Please let me know if you are able to proceed, or would like us to open a content inquiry on your behalf? 
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.

Hello @s61670,

Ticked is submitted, support case number is 09702446