Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
        }