Beispiel #1
0
        public AsyncUnaryCall <SecurityTimeBarQueryResponse> QuerySecurityTimeBarsAsync(SecurityTimeBarQueryRequest request)
        {
            var response = new SecurityTimeBarQueryResponse
            {
                Success = true
            };

            response.SubResponses.AddRange(_currentRunData.Where(w => (request.Subqueries.FirstOrDefault()?.Identifiers == null ||
                                                                       w.Identifiers.Ric == request.Subqueries.FirstOrDefault()?.Identifiers.Ric) &&
                                                                 w.Timebars.All(a =>
                                                                                a.EpochUtc.ToDateTime().Date >= request.Subqueries.First().StartUtc.ToDateTime().Date&&
                                                                                a.EpochUtc.ToDateTime().Date <= request.Subqueries.First().EndUtc.ToDateTime().Date)));

            return(new AsyncUnaryCall <SecurityTimeBarQueryResponse>(Task.FromResult(response), null, null, null, null));
        }
Beispiel #2
0
        public async Task <IList <EndOfDaySecurityTimeBar> > GetInterdayTimeBars(DateTime?startDay, DateTime?endDay, IList <string> rics = null)
        {
            var allDayPeriods = SplitDateRangeByDay(startDay.Value, endDay.Value);
            var result        = new List <EndOfDaySecurityTimeBar>();

            foreach (var period in allDayPeriods)
            {
                var request = new SecurityTimeBarQueryRequest()
                {
                };
                var requestByRics = rics?.Where(w => !string.IsNullOrEmpty(w)).ToList() ?? new List <string>();
                if (!requestByRics.Any())
                {
                    requestByRics.Add(null);
                }

                var       referenceId = Guid.NewGuid().ToString();
                Timestamp startUtc    = new Timestamp(Timestamp.FromDateTime(DateTime.SpecifyKind(period.Item1, DateTimeKind.Utc)));
                Timestamp endUtc      = new Timestamp(Timestamp.FromDateTime(DateTime.SpecifyKind(period.Item2, DateTimeKind.Utc)));

                foreach (var item in requestByRics)
                {
                    var subqueryRequest = new SecurityTimeBarSubqueryRequest()
                    {
                        StartUtc      = startUtc,
                        EndUtc        = endUtc,
                        ReferenceId   = referenceId,
                        PolicyOptions = TimeBarPolicyOptions.EndOfDay
                    };

                    if (item != null)
                    {
                        subqueryRequest.Identifiers = new SecurityIdentifiers
                        {
                            Ric = item
                        };
                    }

                    request.Subqueries.Add(subqueryRequest);
                }

                var tickPriceHistoryServiceClient = tickPriceHistoryServiceClientFactory.Create();
                var response = await tickPriceHistoryServiceClient
                               .QuerySecurityTimeBarsAsync(request).ResponseAsync;

                foreach (var subResponse in response.SubResponses)
                {
                    foreach (var timebar in subResponse.Timebars)
                    {
                        var endOfDaySecurityTimeBar = new EndOfDaySecurityTimeBar
                        {
                            SecurityIdentifiers = new SecurityIdentifier
                            {
                                Cusip      = subResponse.Identifiers?.Cusip,
                                ExternalId = subResponse.Identifiers.ExternalIdentifiers,
                                Isin       = subResponse.Identifiers.Isin,
                                Ric        = subResponse.Identifiers.Ric,
                                Sedol      = subResponse.Identifiers.Sedol
                            },

                            TimeBar = MapTimeBar(timebar)
                        };

                        result.Add(endOfDaySecurityTimeBar);
                    }
                }

                var success = response.Success;
            }

            return(result);
        }