コード例 #1
0
        private Task OnNewTrade(TradeDto[] arg)
        {
            if (arg == null || !arg.Any())
            {
                return(Task.CompletedTask);
            }

            var last = arg.Last();

            var timePeriods = Enum.GetValues(typeof(TimePeriod)).Cast <TimePeriod>().ToArray();

            foreach (var period in timePeriods)
            {
                var key = ExchangeUtils.GetCandleDataKey(last.ExchangeName, last.Instrument, period);

                if (!_exchangeCandles.ContainsKey(key))
                {
                    continue;
                }

                _exchangeCandles[key].UpdateCurrentCandle(last.Price, arg.Length, arg.Sum(x => x.Size));
            }

            return(Task.CompletedTask);
        }
コード例 #2
0
        private ExchangeCandles GetData(string exchangeName, Instrument instrument, TimePeriod period)
        {
            var key = ExchangeUtils.GetCandleDataKey(exchangeName, instrument, period);

            return(_exchangeCandles.ContainsKey(key)
                ? _exchangeCandles[key]
                : null);
        }
コード例 #3
0
        private async Task OnNewCandle(CandleDto[] arg)
        {
            if (arg == null || !arg.Any())
            {
                return;
            }

            var last = arg.Last();

            var key = ExchangeUtils.GetCandleDataKey(last.ExchangeName, last.Instrument, last.Period);

            if (!_exchangeCandles.ContainsKey(key))
            {
                return;
            }

            await _exchangeCandles[key].InsertCandlesAsync(arg);
        }