/// <summary> /// 下载已经结束交易的品种数据 /// </summary> public static void DownFinishTrade() { CodeInfo[] codes; using (var db = new QuantDBContext()) { codes = db.CodeInfos.Where(o => o.LastTradeDate < DateTime.Now.Date).OrderByDescending(o => o.LastTradeDate).ToArray(); } // Parallel.ForEach(codes, (item, ParallelLoopState) => foreach (var item in codes) { using (var db = new QuantDBContext()) { try { // 先下载日K的看看效果 var dbItems = db.Bars.Where(o => o.WindCode == item.WindCode && o.BarType == BarType.Day).OrderBy(o => o.TradingDay).ToArray(); var startDate = item.IssueDate.ToString("yyyyMMdd"); var endDate = item.LastTradeDate.ToString("yyyyMMdd"); var firtItem = dbItems.FirstOrDefault(); var endItem = dbItems.LastOrDefault(); if (firtItem != null && firtItem.TradingDay.ToString() == startDate && endItem != null && endItem.TradingDay.ToString() == endDate) { Console.WriteLine($"Ignore {item.WindCode}"); } else { var bars = DumpBarByWind(item.WindCode, startDate, endDate, BarType.Day); Console.WriteLine($"{item.WindCode} {startDate} - {endDate} count:{bars.Length}"); var count = 0; foreach (var newItem in bars) { if (!dbItems.Any(o => o.TradingDay == newItem.TradingDay)) { db.Add(newItem); count++; } } if (count > 0) { Console.WriteLine($"add {item.WindCode} {count}"); db.SaveChanges(); } } } catch (Exception ex) { Console.WriteLine(item.WindCode); Console.WriteLine(ex); } } } // }); }
/// <summary> /// 下载到现在还在交易的数据 /// </summary> public static void DownTradeing() { using (var db = new QuantDBContext()) { var codes = db.CodeInfos.Where(o => o.LastTradeDate > DateTime.Now).ToArray(); foreach (var item in codes) { try { // 先下载日K的看看效果 var dbItems = db.Bars.Where(o => o.WindCode == item.WindCode && o.BarType == BarType.Day).ToArray(); var endDateItem = dbItems.OrderByDescending(o => o.TradingDay).FirstOrDefault(); var startDate = item.IssueDate.ToString("yyyyMMdd"); var endDate = DateTime.Now.ToString("yyyyMMdd"); if (endDateItem != null) { startDate = endDateItem.TradingDay.ToString(); if (startDate == endDate) { continue; } } var bars = DumpBarByWind(item.WindCode, startDate, endDate, BarType.Day); Console.WriteLine($"{item.WindCode} {startDate} - {endDate} count:{bars.Length}"); var count = 0; foreach (var newItem in bars) { if (!dbItems.Any(o => o.TradingDay == newItem.TradingDay)) { db.Add(newItem); count++; } } if (count > 0) { Console.WriteLine($"add {item.WindCode} {count}"); db.SaveChanges(); } } catch (Exception ex) { Console.WriteLine(item.WindCode); Console.WriteLine(ex); } } } }
/// <summary> /// 下载已经结束交易的品种数据 /// 这里只下载分钟数据 /// </summary> public static void DownFinishMinTrade(BarType barType) { if (barType == BarType.Day || barType == BarType.Week) { return; } CodeInfo[] codes; using (var db = new QuantDBContext()) { codes = db.CodeInfos.Where(o => o.LastTradeDate < DateTime.Now.Date).OrderByDescending(o => o.LastTradeDate).ToArray(); } foreach (var item in codes) { using (var db = new QuantDBContext()) { try { // 先下载日K的看看效果 var dbItems = db.Bars.Where(o => o.WindCode == item.WindCode && o.BarType == barType).OrderBy(o => o.D).ToArray(); var startDate = item.IssueDate.ToString("yyyyMMdd"); var endDate = item.LastTradeDate.ToString("yyyyMMdd"); var firtItem = dbItems.FirstOrDefault(); var endItem = dbItems.LastOrDefault(); if (firtItem != null && firtItem.TradingDay.ToString() == startDate && endItem != null && endItem.TradingDay.ToString() == endDate) { Console.WriteLine($"Ignore {item.WindCode}"); } else { var startDateTime = item.IssueDate; if (endItem != null) { startDateTime = endItem.D.AddMinutes(-1); } var bars = DumpBarByWind(item.WindCode, startDateTime.ToString("yyyy-MM-dd 21:00:00"), item.LastTradeDate.ToString("yyyy-MM-dd 13:00:00"), barType); Console.WriteLine($"{item.WindCode} {startDate} - {endDate} count:{bars.Length}"); var count = 0; foreach (var newItem in bars) { if (!dbItems.Any(o => o.D == newItem.D)) { db.Add(newItem); count++; } } if (count > 0) { Console.WriteLine($"add {item.WindCode} {count}"); db.SaveChanges(); } } } catch (Exception ex) { Console.WriteLine(item.WindCode); Console.WriteLine(ex); } } } }