public AggregatedData AgregateTrades(DateTime date, SessionInfo sessionInfo, IEnumerable <Trade> trades) { AggregatedData ad = new AggregatedData(); ad.TradingDate = date; ad.SessionStart = sessionInfo.SessionStart; foreach (var t in trades) { foreach (var p in t.Periods) { ad.AddVolumeToPaticularPeriod(p.Period, p.Volume); } } return(ad); }
public CsvData CreateCsvData(AggregatedData data) { CsvData report = new CsvData(new[] { "Local Time", "Volume" }); DateTime utcSessionStart = data.TradingDate.AddDays(-1).Add(data.SessionStart); for (int i = 0; i < data.Volumes.Length; i++) { DateTime localTime = utcSessionStart.Add(TimeSpan.FromHours(i)).ToLocalTime(); string time = localTime.TimeOfDay.ToString(@"hh\:mm"); string volume = data.Volumes[i].ToString(CultureInfo.InvariantCulture); report.AddRow(new[] { time, volume }); } return(report); }
/// <summary> /// Creates report and save it to file /// </summary> /// <param name="utcTime"></param> /// <returns>File name of report</returns> public string MakeReport(DateTime utcTime) { DataAcquisition da = new DataAcquisition(); DateTime tradingDate = da.GetTradingDay(utcTime, Config.SessionInfo); AggregatedData ad = da.GetAggregatedTrades(tradingDate, Config.SessionInfo); ReportBuilder rb = new ReportBuilder(); Directory.CreateDirectory(Config.ReportingDirrectory); string reportFileName = Path.Combine(Config.ReportingDirrectory, rb.GetCsvReportFileName(utcTime)); CsvData csvData = rb.CreateCsvData(ad); CsvWriter w = new CsvWriter(); w.Write(reportFileName, csvData); return(reportFileName); }