public HistoricalPriceData GetLastestHistoricalPriceFetchIfNotAvailable(string stockCode) { var historicalData = GetLatestHistoricalPrice(stockCode); var dataExistsInDatabase = historicalData != null && DateTime.Today.AddDays(-1) > historicalData.Date; if (dataExistsInDatabase) { return historicalData; } var yahooFinanceApi = new YahooFinanceClient(); List<YahooHistoricalPriceData> yahooData; if (GetHistoricalPriceAny(stockCode)) { yahooData = yahooFinanceApi.GetDailyHistoricalPriceData(stockCode, DateTime.Today, DateTime.Today.AddMonths(-1)); } else { yahooData = yahooFinanceApi.GetDailyHistoricalPriceData(stockCode); } var historicalPriceData = new List<HistoricalPriceData>(); foreach (var priceData in yahooData) { var data = new HistoricalPriceData() { Symbol = stockCode, DataSource = "YAHOO", Date = priceData.Date, Open = priceData.Open, High = priceData.High, Low = priceData.Low, Close = priceData.Close, Volume = priceData.Volume, AdjClose = priceData.AdjClose, }; historicalPriceData.Add(data); if (!GetHistoricalPriceExists(data)) { AddHistoricalPrice(data); } } SaveAll(); return GetLatestHistoricalPrice(stockCode); }
public void AddHistoricalPrice(HistoricalPriceData historicalPriceData) { _context.HistoricalPrices.Add(historicalPriceData); }
public bool GetHistoricalPriceExists(HistoricalPriceData stock) { return _context.HistoricalPrices.Any(price => price.Symbol == stock.Symbol && price.Date == stock.Date && price.DataSource == stock.DataSource); }