public MarketStats(DataDetails stats, string name = "Unnamed Data") { DataStartDate = $"{stats.StartDate:d/M/yy}"; DataEndDate = $"{stats.EndDate:d/M/yy}"; DataHigh = $"{stats.High:N1}"; HighDate = $"{stats.HighDate:d/M/yy}"; DataLow = $"{stats.Low:N1}"; LowDate = $"{stats.LowDate:d/M/yy}"; AverageGapSize = $"{stats.AverageGapSize:N1}"; Name = name; }
private void GenerateDetails() { var startDate = DateTime.MinValue; var endDate = DateTime.MaxValue; foreach (var dailyCandle in DailyCandles.Where(dailyCandle => MinuteData.ContainsKey(dailyCandle.Date.Date))) { startDate = dailyCandle.Date; break; } for (var i = DailyCandles.Count - 1; i > 0; i--) { if (MinuteData.ContainsKey(DailyCandles[i].Date.Date)) { endDate = DailyCandles[i].Date; break; } } var high = double.MinValue; var low = double.MaxValue; var date = startDate; var highTime = DateTime.MinValue; var lowTime = DateTime.MinValue; while (date <= endDate) { if (MinuteData.TryGetValue(date.Date, out var minuteCandles)) { foreach (var candle in minuteCandles.Where(candle => candle.IsCash)) { if (candle.AskHigh > high) { high = candle.AskHigh; highTime = candle.DateTime; } if (candle.BidLow < low) { low = candle.BidLow; lowTime = candle.DateTime; } } } date = date.AddDays(1); } var openTime = new TimeSpan(14, 30, 00); var closeTime = new TimeSpan(21, 00, 00); if (IsUkData) { openTime = new TimeSpan(8, 00, 00); closeTime = new TimeSpan(16, 30, 00); } DataDetails = new DataDetails(startDate, endDate, high, highTime, low, lowTime, _averageGapSize, openTime, closeTime); }