question

Upvotes
Accepted
89 13 21 24

speed download

RIC: ESH1m (Raw Legacy Market Depth)

QueryStartDate = new DateTimeOffset(2021, 03, 02, 00, 0, 0, TimeSpan.Zero),//startDate,
QueryEndDate = new DateTimeOffset(2021, 03, 03, 00, 0, 0, TimeSpan.Zero),//lastDate,

downloads 30 minutes for 1 day.

How can you increase the speed of downloading files?

Please look at the code.

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


            ExtractionsContext.Options.AutomaticDecompression = false;

            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("ESH1"));
                    if (result != null)
                    {
                        var startDate = result.FirstDate;//new DateTimeOffset(2021, 03, 09, 0, 0, 0, TimeSpan.Zero);//result.FirstDate;
                        var lastDate = result.LastDate;//new  DateTimeOffset(2021, 03, 09, 23, 59, 59, TimeSpan.Zero);//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(
                        new TickHistoryMarketDepthExtractionRequest
                        {
                            Condition = new TickHistoryMarketDepthCondition
                            {
                                ReportDateRangeType = ReportDateRangeType.Range,
                                QueryStartDate = new DateTimeOffset(2021, 03, 02, 00, 0, 0, TimeSpan.Zero),//startDate,
                                QueryEndDate = new DateTimeOffset(2021, 03, 03, 00, 0, 0, TimeSpan.Zero),//lastDate,
                                ExtractBy = TickHistoryExtractByMode.Ric,
                                MessageTimeStampIn = TickHistoryTimeOptions.GmtUtc,
                                SortBy = TickHistorySort.SingleByRic,
                                View = TickHistoryMarketDepthViewOptions.LegacyLevel2,
                                DisplaySourceRIC = true

                            },
                             //ContentFieldNames = availableLL2Fields.Select(f => f.Name).ToArray(),
                             IdentifierList = new InstrumentIdentifierList
                            {
                                InstrumentIdentifiers = new[]
                                {
                                     InstrumentIdentifier.Create( IdentifierType.Ric,"ESH1m")
                                },
                                ValidationOptions = new InstrumentValidationOptions
                                {
                                    AllowHistoricalInstruments = true
                                }
                            },
                       
                    });
     /*
                        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);
                        }
     */
                        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("Storage\\output.csv", 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();
                    }
                }
            }

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

}


tick-history-rest-api
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.

1 Answer

· Write an Answer
Upvote
Accepted
22.1k 59 14 21

Hello @s61670,

Please see these couple of articles on how to optimize the TRTH download/retrieval speed.

You should try the download from AWS option by setting the header:

X-Direct-Download: true

See these articles for more details:

Article 1

Article 2

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.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

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