/// <summary>
        /// довольно медленно
        /// может _ratesAsDictionary позволит ускорить?
        /// </summary>
        /// <param name="frequency"></param>
        /// <returns></returns>
        public List <DiagramPoint> GetBalances(Every frequency)
        {
            var root            = _db.SeekAccount("Мои");
            var result          = new List <DiagramPoint>();
            var currentDate     = new DateTime(2001, 12, 31); // считать надо всегда с самого начала, иначе остаток неправильный будет
            var currentMoneyBag = new MoneyBag();

            foreach (var tran in _db.TransWithTags)
            {
                while (currentDate < tran.Timestamp.Date)
                {
                    if (FunctionsWithEvery.IsLastDayOf(currentDate, frequency))
                    {
                        var sum = _rateExtractor.GetUsdEquivalent(currentMoneyBag, tran.Timestamp.Date);
                        if (sum != 0) // если вернулся 0 - это гэпы без курсов в начале времен
                        {
                            result.Add(new DiagramPoint(currentDate, (double)sum));
                        }
                        else
                        {
                            var lastSum = result.Last().CoorYdouble;
                            result.Add(new DiagramPoint(currentDate, lastSum));
                        }
                    }
                    currentDate = currentDate.AddDays(1);
                }
                currentMoneyBag = currentMoneyBag + tran.MoneyBagForAccount(root);
            }
            result.Add(new DiagramPoint(currentDate, (double)_rateExtractor.GetUsdEquivalent(currentMoneyBag, currentDate)));
            return(result);
        }
        private void GroupAllData(Every period)
        {
            var groupedData = new SortedList <DateTime, List <double> >();
            var onePair     = DiagramData.ElementAt(0);

            for (var p = 1; p < DiagramData.Count; p++)
            {
                var pair = DiagramData.ElementAt(p);
                if (FunctionsWithEvery.IsTheSamePeriod(onePair.Key, pair.Key, period))
                {
                    for (var i = 0; i < onePair.Value.Count; i++)
                    {
                        onePair.Value[i] += pair.Value[i];
                    }
                }
                else
                {
                    groupedData.Add(onePair.Key, onePair.Value);
                    onePair = pair;
                }
            }
            groupedData.Add(onePair.Key, onePair.Value);
            DiagramData = new SortedList <DateTime, List <double> >(groupedData);
        }