private async Task InitializeSeries(LiveOhlcSeries ohlcSeries, long tickTime) { OhlcSeries historicOhlc = null; try { // Determine time span to collect initial data var startTimeEpoch = tickTime - ohlcSeries.TimeSpanSeconds * ohlcSeries.MaxSeriesSize; var startTime = DateTimeHelper.ToDateTime(startTimeEpoch); var endTime = DateTimeHelper.ToDateTime(tickTime); // Read historic ohlc historicOhlc = await _marketApi.ReadOhlcSeries(CurrencyPair, startTime, endTime, ohlcSeries.TimeSpanSeconds); } catch (ExchangeApiException e) { Logger.Warn($"Error loading historic data for OhlcSeries {ohlcSeries.TimeSpanSeconds}.", e); } finally { var ohlcItems = historicOhlc != null ? historicOhlc.OhlcItems : ImmutableList <OhlcItem> .Empty; // Init live ohlc series with historic data or empty list so series is initialized ohlcSeries.Initialize(ohlcItems); } }
private async Task UpdateOhlcSeries(LiveOhlcSeries ohlcSeries, TickData tickData) { // When OhlcSeries doesn't contain any data yet, try to initialize if (!ohlcSeries.Initialized) { await InitializeSeries(ohlcSeries, tickData.TickTimeEpoch); } // Provide tick to series ohlcSeries.AddTick(tickData); }