public static List <DailyData> ConvertDailyList(List <EntryData> entryList) { if (entryList.Count == 0) { return(null); } List <DailyData> list = new List <DailyData>(); for (DateTime dateTime = DateTime.Parse(StockUtil.FormatDate(entryList[0].time)); dateTime <= DateTime.Parse(StockUtil.FormatDate(entryList[entryList.Count - 1].time)); dateTime += TimeSpan.FromDays(1)) { IEnumerable <EntryData> querySet = from d in entryList where StockUtil.FormatDate(d.time) == StockUtil.FormatDate(dateTime) select d; if (querySet.Count <EntryData>() > 0) { DailyData dd = new DailyData() { Date = dateTime, entryList = querySet.ToList <EntryData>() }; dd.Init(); list.Add(dd); } } return(list); }
public static List<DailyData> ConvertDailyList(List<EntryData> entryList) { if (entryList.Count == 0) return null; List<DailyData> list = new List<DailyData>(); for (DateTime dateTime = DateTime.Parse(StockUtil.FormatDate(entryList[0].time)); dateTime <= DateTime.Parse(StockUtil.FormatDate(entryList[entryList.Count - 1].time)); dateTime += TimeSpan.FromDays(1)) { IEnumerable<EntryData> querySet = from d in entryList where StockUtil.FormatDate(d.time) == StockUtil.FormatDate(dateTime) select d; if (querySet.Count<EntryData>() > 0) { DailyData dd = new DailyData() { Date=dateTime, entryList = querySet.ToList<EntryData>() }; dd.Init(); list.Add(dd); } } return list; }
/// <summary> /// Filter is ">400" "<1000", "400-1000" /// </summary> /// <param name="set"></param> /// <param name="filter"></param> public BigDeal(DailyData set, string filter) { this.set = set; this.filter = filter; }
/// <summary> /// 分析某一天的数据 /// </summary> /// <param name="fileName"></param> /// <returns></returns> public static DailyData ReadCsv(string fileName,bool isDownload) { DailyData data = new DailyData(); data.entryList = new List<EntryData>(); FileInfo fi = new FileInfo(fileName); string fName = fi.Name; //data.stock = StockUtil.RetrieveStock(fName); string date = StockUtil.RetrieveDate(fName); data.Date = DateTime.Parse(date); // open the file "data.csv" which is a CSV file with headers using (CsvReader csv = new CsvReader( new StreamReader(fileName), true)) { int index = 0; int fieldCount = csv.FieldCount; string[] headers = csv.GetFieldHeaders(); decimal current; //颠倒记录 IEnumerable<string[]> hi= csv.Reverse<string[]>(); //foreach(String[] a in hi) //{ // Console.WriteLine(a[0]); //} //for(int i=0;i<hi.;i++) //{ // Console.WriteLine(csv[i,0]); //} //while (csv.ReadNextRecord()) //{ //Console.WriteLine(hi.Count<string[]>()); try { foreach (String[] record in hi) { EntryData dd = new EntryData(); current = Decimal.Parse(record[1].Replace("\0", "")); if (index == 0) { data.ClosePrice = current; data.HighestPrice = current; data.LowestPrice = current; } if (data.HighestPrice < current) { data.HighestPrice = current; data.TimeWhenHighest = DateTime.Parse(date + " " + record[0]); } if (data.LowestPrice > current) { data.LowestPrice = current; data.TimeWhenLowest = DateTime.Parse(date + " " + record[0]); } dd.time = DateTime.Parse(date + " " + record[0]); dd.price = current; dd.change = Decimal.Parse(record[2]); dd.share = decimal.Parse(record[3]); dd.money = decimal.Parse(record[4]); dd.type = record[5]; data.entryList.Add(dd); data.OpenPrice = current; index++; } } catch { ///TODO 吞掉异常 /// StockLog.Log.Info("Can't parse at line " + index + " " + fileName); } //} //LOG.Info(fileName+" "+fieldCount + " " + index); } return data; }
/// <summary> /// Filter is ">400" "<1000", "400-1000" /// </summary> /// <param name="set"></param> /// <param name="filter"></param> public MeanChange(DailyData set, string filter) { this.set = set; this.filter = filter; }