Как правильно получить среднюю цену открытия позиции?
21.07.2014
Есть такая функция MyTrades.GetAveragePrice(), которая выдает среднюю цену исполнения по всем сделкам,
но если позиция была открыта, потом закрыта, потом снова открыта, потом частично закрыта, то простое перемножение цен на объемы не будет иметь никакого смысла. Как же узнать среднюю цену, по которой удерживается позиция?
В старых исходниках нашел вот такое:
Код
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;
}
то есть простое перемножение. А есть ли функция, которая учитывает направление сделок?