public List <StockIntervalData> ParseStockData(byte[] data) { List <StockIntervalData> result = new List <StockIntervalData>(); StreamReader reader = new StreamReader(new MemoryStream(data), Encoding.ASCII); reader.ReadLine(); string line; while ((line = reader.ReadLine()) != null) { try { StockIntervalData d = new StockIntervalData(); CultureInfo provider = CultureInfo.InvariantCulture; string[] tokens = line.Split(new char[] { ',' }); d.date = DateTime.ParseExact(tokens[0], "yyyy-MM-dd", provider); d.open = System.Decimal.Parse(tokens[1], provider); d.high = System.Convert.ToDecimal(tokens[2], provider); d.low = System.Convert.ToDecimal(tokens[3], provider); d.close = System.Convert.ToDecimal(tokens[4], provider); d.volume = System.Convert.ToDecimal(tokens[5], provider); result.Insert(0, d); } catch (FormatException fex) { Console.WriteLine(fex.Message); } } return(result); }
public List <StockIntervalData> ConvertTimeFrame(List <StockIntervalData> intervals, TimeFrame timeFrame) { if (timeFrame == TimeFrame.Day) { return(intervals); } else if (timeFrame == TimeFrame.Week) { bool first = true; StockIntervalData weekData = new StockIntervalData(); List <StockIntervalData> weeksIntervals = new List <StockIntervalData>(); foreach (StockIntervalData dayData in intervals) { if (first || (dayData.date - weekData.date).Days >= 7) { if (!first) { weeksIntervals.Add(weekData); } weekData = dayData; weekData.date.AddDays(-(int)(weekData.date.DayOfWeek)); /// откат даты на воскресенье first = false; } else { weekData.close = dayData.close; if (dayData.low < weekData.low) { weekData.low = dayData.low; } if (dayData.high > weekData.high) { weekData.high = dayData.high; } weekData.volume += dayData.volume; } } if (!first) { weeksIntervals.Add(weekData); } return(weeksIntervals); } else if (timeFrame == TimeFrame.Month) { bool first = true; StockIntervalData monthData = new StockIntervalData(); List <StockIntervalData> monthsIntervals = new List <StockIntervalData>(); foreach (StockIntervalData dayData in intervals) { if (first || monthData.date.Month != dayData.date.Month || monthData.date.Year != dayData.date.Year) { if (!first) { monthsIntervals.Add(monthData); } monthData = dayData; monthData.date = new DateTime(dayData.date.Year, dayData.date.Month, 1); first = false; } else { monthData.close = dayData.close; if (dayData.low < monthData.low) { monthData.low = dayData.low; } if (dayData.high > monthData.high) { monthData.high = dayData.high; } monthData.volume += dayData.volume; } } if (!first) { monthsIntervals.Add(monthData); } return(monthsIntervals); } else { return(intervals); } }
public List<StockIntervalData> ConvertTimeFrame(List<StockIntervalData> intervals ,TimeFrame timeFrame ) { if (timeFrame == TimeFrame.Day) { return intervals; } else if (timeFrame == TimeFrame.Week) { bool first = true; StockIntervalData weekData = new StockIntervalData(); List<StockIntervalData> weeksIntervals = new List<StockIntervalData>(); foreach (StockIntervalData dayData in intervals) { if(first || (dayData.date - weekData.date).Days>=7 ) { if (!first) weeksIntervals.Add(weekData); weekData = dayData; weekData.date.AddDays(-(int)(weekData.date.DayOfWeek)); /// откат даты на воскресенье first = false; } else { weekData.close = dayData.close; if (dayData.low < weekData.low) weekData.low = dayData.low; if (dayData.high > weekData.high) weekData.high = dayData.high; weekData.volume += dayData.volume; } } if (!first) { weeksIntervals.Add(weekData); } return weeksIntervals; } else if (timeFrame == TimeFrame.Month) { bool first = true; StockIntervalData monthData = new StockIntervalData(); List<StockIntervalData> monthsIntervals = new List<StockIntervalData>(); foreach (StockIntervalData dayData in intervals) { if (first || monthData.date.Month != dayData.date.Month || monthData.date.Year != dayData.date.Year) { if (!first) monthsIntervals.Add(monthData); monthData = dayData; monthData.date = new DateTime(dayData.date.Year, dayData.date.Month, 1); first = false; } else { monthData.close = dayData.close; if (dayData.low < monthData.low) monthData.low = dayData.low; if (dayData.high > monthData.high) monthData.high = dayData.high; monthData.volume += dayData.volume; } } if (!first) { monthsIntervals.Add(monthData); } return monthsIntervals; } else { return intervals; } }
public List<StockIntervalData> ParseStockData(byte[] data) { List<StockIntervalData> result = new List<StockIntervalData>(); StreamReader reader = new StreamReader(new MemoryStream(data), Encoding.ASCII); reader.ReadLine(); string line; while ((line = reader.ReadLine()) != null) { try { StockIntervalData d = new StockIntervalData(); CultureInfo provider = CultureInfo.InvariantCulture; string[] tokens = line.Split(new char[] { ',' }); d.date = DateTime.ParseExact(tokens[0], "yyyy-MM-dd", provider); d.open = System.Decimal.Parse(tokens[1], provider); d.high = System.Convert.ToDecimal(tokens[2], provider); d.low = System.Convert.ToDecimal(tokens[3], provider); d.close = System.Convert.ToDecimal(tokens[4], provider); d.volume = System.Convert.ToDecimal(tokens[5], provider); result.Insert(0, d); } catch (FormatException fex) { Console.WriteLine(fex.Message); } } return result; }