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); }
/// <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()); }