public List <StockTransaction> GetStockTransactionWithRedis(string code, DateTime start, DateTime end) { //logger.Info(string.Format("begin to fetch stock{0} minute data from {1} to {2}...", code, start, end)); var stocks = new List <StockTransaction>(); if (redis == false) { return(stocks); } var tradingDates = dateTimeRepo.GetStockTransactionDate(start.Date, end.Date == DateTime.Now.Date?end.Date.AddDays(-1):end.Date); var timeInterval = new StockMinuteInterval(start, end, tradingDates); while (timeInterval.MoveNext()) { var currentTime = timeInterval.Current; StockTransaction stock = FetchStockMinuteTransFromRedis(code, currentTime); if (stock == null) { //从万德客户端API获取分钟数据 BulkLoadStockMinuteToSqlFromSource(code, currentTime); BulkLoadStockMinuteToRedisFromSql(code, currentTime); stock = FetchStockMinuteTransFromRedis(code, currentTime); } stocks.Add(stock); } //logger.Info(string.Format("completed fetching stock{0} minute data from {1} to {2}...", code, start, end)); return(stocks); }
//获取分钟线数据,先从sql数据库拉取数据,如果没有数据,就从tick数据库拉取数据,并转换成分钟数据并存入sql数据库 public List <StockMinuteTransaction> GetStockTransaction(string code, DateTime start, DateTime end) { //logger.Info(string.Format("begin to fetch stock{0} minute data from {1} to {2}...", code, start, end)); var stocks = new List <StockMinuteTransaction>(); var stockLack = new List <StockMinuteTransaction>(); var tradingDates = dateTimeRepo.GetStockTransactionDate(start.Date, end.Date == DateTime.Now.Date ? end.Date.AddDays(-1) : end.Date); var timeInterval = new StockMinuteInterval(start, end, tradingDates); foreach (var currentDay in tradingDates) { var currentTime = currentDay.Date; //Console.WriteLine(currentTime); var stock = LoadStockMinuteFromSql(code, currentTime); if (stock.Count() == 0) { //BulkLoadStockMinuteToSqlFromSource(code, currentTime); try { stock = LoadStockMinuteToSqlFromSouceDaily(code, currentTime, false); stockLack.AddRange(stock); } catch (Exception e) { Console.WriteLine("exception!!! {0}", e.Message); } } stocks.AddRange(stock); } //logger.Info(string.Format("completed fetching stock{0} minute data from {1} to {2}...", code, start, end)); var dt = transactionListToDataTable(stockLack); WriteToSql(dt); return(stocks); }