Example #1
0
        private IList <MinuteBarRequestKeyDto> Project(IList <MarketDataRequest> bmllRequests)
        {
            var keys = new List <MinuteBarRequestKeyDto>();

            foreach (var req in bmllRequests)
            {
                if (req == null || string.IsNullOrWhiteSpace(req.Identifiers.Figi) || req.UniverseEventTimeTo == null ||
                    req.UniverseEventTimeFrom == null)
                {
                    continue;
                }

                var toTarget   = req.UniverseEventTimeTo.Value;
                var fromTarget = req.UniverseEventTimeFrom.Value;

                var timeSpan  = toTarget.Subtract(fromTarget);
                var totalDays = timeSpan.TotalDays + 1;
                var iter      = 0;

                while (iter <= totalDays)
                {
                    var date = fromTarget.AddDays(iter);

                    var barRequest = new MinuteBarRequestKeyDto(req.Identifiers.Figi, "1min", date);
                    keys.Add(barRequest);

                    iter += 1;
                }
            }

            return(keys);
        }
        private GetMinuteBarsRequest GetMinuteBarsRequest(MinuteBarRequestKeyDto request)
        {
            if (request == null || string.IsNullOrWhiteSpace(request.Figi))
            {
                this._logger.LogError(
                    $"{nameof(BmllDataRequestsGetTimeBars)} had a null request or a request that did not pass data request validation for {request?.Figi}");

                return(null);
            }

            if (string.IsNullOrWhiteSpace(request.Figi))
            {
                this._logger.LogError(
                    $"{nameof(BmllDataRequestsGetTimeBars)} asked to process a security without a figi");

                return(null);
            }

            return(new GetMinuteBarsRequest
            {
                Figi = request.Figi,
                From = request.Date.Date,
                To = request.Date.Date.AddDays(1).AddMilliseconds(-1),
                Interval = "1min"
            });
        }