public Share GetShareData(InstrumentDataRequest request) { return _memoryCache.GetOrAdd(request, () => { var eodFilePath = GetEodFilePath(); var fullPath = Path.Combine(eodFilePath, Path.ChangeExtension(request.InstrumentCode, "eod")); var parser = new EodParser(); var share = parser.ParseFile(fullPath); share.Aggregate(request.AggregateType, request.AggregateSize, request.IsRelative, DateTime.Now); return share; }); }
private void CheckFile(string csvPath, string eodPath, string instrumentCode) { var eod = new EodParser(); var csv = new CsvParser(); var eodFile = Path.ChangeExtension(Path.Combine(eodPath, instrumentCode), ".eod"); var csvFile = Path.ChangeExtension(Path.Combine(csvPath, instrumentCode), ".csv"); var eodShare = eod.ParseFile(eodFile); var csvShare = csv.ParseFile(csvFile); var output = new StringBuilder(); output.AppendLine(FormatAsHex(eodShare.HeaderBytes)); output.AppendLine(); output.AppendLine(eodShare.MarketCode); output.AppendLine(eodShare.InstrumentCode); output.AppendLine(eodShare.CompanyName); output.AppendLine(eodShare.Unknown1.ToString("000000")); output.AppendLine(eodShare.StartDate.ToString("yyyyMMdd")); output.AppendLine(eodShare.EndDate.ToString("yyyyMMdd")); output.AppendLine(eodShare.RowCount.ToString("D")); output.AppendLine(eodShare.Info1.ToString("000000")); output.AppendLine(eodShare.StrikePrice.ToString()); output.AppendLine(FormatAsHex(eodShare.InfoRemaining)); output.AppendLine(FormatAs(eodShare.InfoRemaining, "int32", "int32", "int32", "int32", "int32", "int32", "int32")); output.AppendLine(eodShare.Details); output.AppendLine(); foreach (var pair in eodShare.Days.Zip(csvShare.Days, (day, dayCsv) => new { Day = day, DayCsv = dayCsv })) { var day = pair.Day; var csvDay = pair.DayCsv; Assert(day.Date == csvDay.Date); Assert(day.Open == csvDay.Open); Assert(day.High == csvDay.High); Assert(day.Low == csvDay.Low); Assert(day.Close == csvDay.Close); Assert(day.Volume == csvDay.Volume); Assert(day.OpenInt == csvDay.OpenInt); output.Append(day.Row.ToString("0000")); output.Append(" | "); output.Append(day.ToString()); output.Append(" | "); output.Append(csvDay.ToString()); output.AppendLine(); } InstrumentCode = eodShare.InstrumentCode; Text = output.ToString(); }