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