Пример #1
0
        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);
        }
Пример #2
0
        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;
        }
Пример #3
0
 /// <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;
 }
Пример #4
0
        /// <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;
        }
Пример #5
0
 /// <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;
 }