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