Как правильно получить среднюю цену открытия позиции?
Есть такая функция MyTrades.GetAveragePrice(), которая выдает среднюю цену исполнения по всем сделкам,
но если позиция была открыта, потом закрыта, потом снова открыта, потом частично закрыта, то простое перемножение цен на объемы не будет иметь никакого смысла. Как же узнать среднюю цену, по которой удерживается позиция?
В старых исходниках нашел вот такое:
Code
public static decimal GetAveragePrice(this IEnumerable<Trade> trades)
{
if (trades == null)
throw new ArgumentNullException("trades");
var nominator = 0m;
var denominator = 0m;
foreach (var trade in trades)
{
nominator += trade.Price * trade.Volume;
denominator += trade.Volume;
}
if (denominator == 0)
return 0;
return nominator / denominator;
}
то есть простое перемножение. А есть ли функция, которая учитывает направление сделок?