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(); } } }