Beispiel #1
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);
        }