public async Task LoadAsync()
        {
            var now = DateTime.UtcNow;

            var assetPairsTask = _candlesHistoryClient.GetAvailableAssetPairsAsync();
            var marketDataTask = GetMarketProfilesAsync();

            await Task.WhenAll(assetPairsTask, marketDataTask);

            var marketData = marketDataTask.Result;

            var todayCandlesTask = GetCandlesAsync(now - _marketDataInterval, now.AddMinutes(5),
                                                   assetPairsTask.Result, CandlePriceType.Trades, CandleTimeInterval.Min5);
            var lastMonthCandlesTask = GetCandlesAsync(now.AddYears(-1) - _marketDataInterval, now.AddMonths(1),
                                                       assetPairsTask.Result, CandlePriceType.Trades, CandleTimeInterval.Month);
            var clearDataTask = ClearDataAsync(marketData.Select(x => x.AssetPairId).ToList());

            await Task.WhenAll(todayCandlesTask, lastMonthCandlesTask, clearDataTask);


            var todayCandles     = todayCandlesTask.Result;
            var lastMonthCandles = lastMonthCandlesTask.Result;


            foreach (var todayCandle in todayCandles)
            {
                UpdateCandlesInfo(todayCandle.Key, todayCandle.Value, marketData);
            }

            foreach (var lastMonthCandle in lastMonthCandles)
            {
                UpdateLastPrice(lastMonthCandle.Key, lastMonthCandle.Value, marketData);
            }

            await SaveMarketDataAsync(marketData, todayCandles);
        }
예제 #2
0
 /// <summary>
 /// Pairs for which hisotry can be requested
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 public static IList <string> GetAvailableAssetPairs(this ICandleshistoryservice operations)
 {
     return(operations.GetAvailableAssetPairsAsync().GetAwaiter().GetResult());
 }