Доброго дня суток. Для реализации риск менеджмента потребовалось написать простую функцию которая возвращала бы максимальное значение зафиксированного П/У за какой либо период истории. Но вот не пойму почему значения различаются? На графике максимально высокая точка выдает одно значение, а функция совсем другое.
Функция:
Code:
        public static double MaxProfit(this IPositionsList positionsList, int bar)
        {
            var positions = positionsList.GetClosedForBar(bar);// Берем все закрытые позиции



            var maxProfit = 0.0; // начальное значение профита
            
            foreach (var p in positions) //Переберакм все позиции
            {
                //если профит с учетом предыдущего профита больше то записываем его в переменную maxProfit
                //если меньше то возвращаем в переменную то же значение 
                maxProfit = maxProfit > maxProfit + p.Profit() ? maxProfit : maxProfit + p.Profit();
            }
            
            return maxProfit;
        }


Результат:

Скриншот в полную величину:
https://dl.dropboxusercontent.com/u/34862336/img-2017-01-21-15-14-55.png