コード例 #1
0
        private async Task <StockPerformanceData> TryGetData(string symbol)
        {
            var stockData = await _stockDataService.GetLastWeekDailyStockData(symbol);

            var spyData = await _stockDataService.GetLastWeekDailyStockData(SpySymbol);

            if (!stockData.Any() || !spyData.Any())
            {
                return(StockPerformanceData.Invalid("No data."));
            }

            var orderedStockData = stockData.OrderBy(d => d.Date);

            var data = new StockPerformanceData();

            foreach (var stockDay in orderedStockData)
            {
                if (!spyData.Any(d => d.Date == stockDay.Date))
                {
                    return(StockPerformanceData.Invalid($"Inconsistent {symbol} / SPY data."));
                }

                var spyDay = spyData.First(d => d.Date == stockDay.Date);

                data.AddDay(stockDay, spyDay);
            }

            data.Calculate();

            return(data);
        }
コード例 #2
0
 public async Task <StockPerformanceData> GetData(string symbol)
 {
     try
     {
         return(await TryGetData(symbol));
     }
     catch (Exception ex)
     {
         return(StockPerformanceData.Invalid(ex.Message));
     }
 }