question

Upvotes
Accepted
89 2 6 9

DataScope TRTH available but Rest API empty.

Need help.

DataScope Select - RAW Market-By-Pryce history available

RIC

Manifest: ESH7,Market By Price,2016-08-13T15:02:17.740531675Z,2017-03-25T18:21:00.047260224Z,Active,181197764
Manifest: ESH8,Market By Price,2016-12-04T18:16:04.684128916Z,2018-05-07T01:22:43.117534073Z,Active,261526135
Manifest: ESH9,Market By Price,2017-12-03T18:15:02.531401540Z,2019-03-30T18:26:42.279641706Z,Active,365422825
Manifest: ESM0,Market By Price,2019-03-05T00:58:28.391678447Z,2020-07-25T18:57:46.995355407Z,Active,648897270
Manifest: 1UROH7,Market By Price,2016-08-13T15:02:17.640962231Z,2017-03-18T18:18:37.788002625Z,Active,141381193
Manifest: 1UROH8,Market By Price,2016-08-13T15:02:17.640338134Z,2018-05-07T01:49:44.623195432Z,Active,208038329

DataScope Select - RAW Market-Price history available

Manifest: ECSSH1,Market Price,2009-09-15T03:01:33.605356000Z,2011-03-19T06:26:57.240593000Z,Active,96301190
Manifest: ECSSZ0,Market Price,2009-06-16T02:45:01.118862000Z,2010-12-18T06:26:00.060835000Z,Active,1075602
Manifest: ESU7,Market Price,1997-09-08T14:47:03.710000000Z,2017-09-23T23:29:39.414026666Z,Active,172439010

But using code from REST API I get empty files with 0 kb on these RICs

What could be the problem?

see images

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;

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);
            var availableMbPFields = ExtractionsContext.GetValidContentFieldTypes(ReportTemplateTypes.TickHistoryRaw);
          //var availableLL2Fields = ExtractionsContext.GetValidContentFieldTypes(ReportTemplateTypes.TickHistoryMarketDepth);
            var availableTnSFields = ExtractionsContext.GetValidContentFieldTypes(ReportTemplateTypes.TickHistoryTimeAndSales);


            ExtractionsContext.Options.AutomaticDecompression = true;

            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#ES:" },//{ "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("UROH1"));
                    //if (result != null)
                    {
                        var startDate = result.FirstDate;
                        var lastDate = result.LastDate;
                        Console.WriteLine("{0},\t {1},\t {2},\t {3},\t {4}", result.Identifier, result.IdentifierType, startDate, lastDate, result.DomainCode);
                        
                        var extractionResult = ExtractionsContext.ExtractRaw(
                           
                                //!!!--- Это должно соответствовать модели данных Real Time API MarketByPrice---!!!
                                new TickHistoryRawExtractionRequest
                                {
                                    Condition = new TickHistoryRawCondition
                                    {
                                        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,
                                        DomainCode = TickHistoryRawDomain.MarketByPrice,
                                        DisplaySourceRIC = true
                                    },
                                    IdentifierList = new InstrumentIdentifierList
                                    {
                                        InstrumentIdentifiers = new[]
                                        {
                                            InstrumentIdentifier.Create(result.IdentifierType, result.Identifier)
                                        }
                                    },
                       /* 
                        new TickHistoryMarketDepthExtractionRequest
                        {
                            Condition = new TickHistoryMarketDepthCondition
                            {
                                ReportDateRangeType = ReportDateRangeType.Range,
                                QueryStartDate = startDate,
                                QueryEndDate = lastDate,
                                NumberOfLevels = 10,
                                ExtractBy = TickHistoryExtractByMode.Ric,
                                MessageTimeStampIn = TickHistoryTimeOptions.GmtUtc,
                                SortBy = TickHistorySort.SingleByRic,
                                View = TickHistoryMarketDepthViewOptions.NormalizedLL2,
                                DisplaySourceRIC = true
                            },
                            ContentFieldNames = availableLL2Fields.Select(f => f.Name).ToArray(),
                            IdentifierList = new InstrumentIdentifierList
                            {
                                InstrumentIdentifiers = new[]
                                {
                                    InstrumentIdentifier.Create( result.IdentifierType, result.Identifier)
                                }
                            },*/
                        });

                        using (var response = ExtractionsContext.RawExtractionResultOperations.GetReadStream(extractionResult))
                        using (var reader = new StreamReader(response.Stream))
                        {
                            var fileName = out_dir + "_" + result.Identifier + "_" + startDate.DateTime.ToString("dd.MM.yyyy") + "_" + lastDate.DateTime.ToString("dd.MM.yyyy") + "_MarketByPrice.txt";
                            using (var fileStream = File.Create(fileName))
                                response.Stream.CopyTo(fileStream);
                        }
                        
                    }
                }
            }

            Console.WriteLine("Press Enter to exit");
            Console.ReadLine();
        }
    }

}


tick-history-rest-api
1uro-mbp.png (129.2 KiB)
es-mbp.png (140.3 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

1 Answer

Upvote
Accepted
38.1k 69 35 53

@s61670

You may need to set the AllowHistoricalInstruments to true in the ValidationOptions.

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


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

Click below to post an Idea Post Idea