Дак это для первой позиции за день профит. Нужно же суммарно за день. В общем я ошибку нашел, код работает, правда он считает сумму уже закрытых сделок, а хотелось бы, чтобы к уже закрытым плюсовался профит по еще незакрытой позиции. Как это можно сделать? И еще гляньте корректность кода, в плане правильности диапазонов, а то, например, в начале дня до первой позиции вообще на графике нет величины, даже нуля..
[HandlerName("Day Profit")]
[HandlerCategory("777")]
public class ProfitFromFirst : IOneSourceHandler, IDoubleReturns, IValuesHandler, ISecurityInputs
{
public double Execute(ISecurity source, int barNum)
{
// берем дату текущего бара
var curBarDate = source.Bars[barNum].Date;
// отбираем закрытые сделки с днем закрытия совпадающим с текущим, сортируем по дате закрытия
var list = source.Positions.Where(pos => !pos.IsActive && pos.EntryBarNum < barNum
&& pos.ExitBar.Date.DayOfYear == curBarDate.DayOfYear
&& pos.ExitBar.Date.Year == curBarDate.Year)
.OrderBy(pos => pos.ExitBar.Date).ToArray();
double sum=0;
if (list.Length >= 1)
{
for (int i = 0; i < list.Length; i++)
{
sum += list[i].Profit();
}
// возвращаем суммарный профит за день
return sum;
}
if (list.Length < 1)
{
return 0;
}
return 0;
}
}