Несколько вопросов по счетчику прибыль/убыток по 1 инструменту
Здравствуйте Михаил.
1)Есть необходимость считать прибыль|убыток без учета позиции, т.е.
сколько наторговали за день в независимости от того какая позиция
сейчас( если позиция открыта, то для подсчета она виртуально должна
закрываться по рынку, я так думаю). Из методов я нашел
_strategy.PnLManager.RelatedValue. Он так действует как я описал или
иначе?
2) Еще желательно посчитать в таком же виде прибыль|убыток, но только
например за последнюю минуту. Получается уж больно громоздко и
приблизительно из-за того что в перечислении сделок за последнюю
минуту может находиться разное кол-во сделок(точнее я считаю объем
контрактов в этих сделках) на покупку и продажу даже при нулевой
позиции по инструменту(например попадает сделка на продажу, которая
закрывала позицию для сделки на покупку совершенной более чем минуту
назад)
// сделки на покупку за прошедшую минуту
var _1minBuyTrades = _strategy1.Trades.Where(t => (t.Trade.Time >
(_trader.MarketTime - TimeSpan.FromMinutes(1)) &
t.Trade.OrderDirection == OrderDirections.Buy));
// сделки на продажу за последнюю минуту
var _1minSellTrades = _strategy1.Trades.Where(t => (t.Trade.Time >
(_trader.MarketTime - TimeSpan.FromMinutes(1)) &
t.Trade.OrderDirection == OrderDirections.Sell));
// Прибыль|убыток за последнюю минуту = (объем контрактов Buy в каждой
сделке*цена сделки минус
// (объем контрактов Buy - объем контрактов Sell + объем контрактов в
позиции)*цену середины спреда
// минус объем контрактов Sell в каждой сделке*цена сделки)
_1minuteProfit = _1minBuyTrades.Sum(rr =>
(rr.Trade.Volume*rr.Trade.Price)) - (_1minBuyTrades.Sum(tr =>
tr.Trade.Volume) - (_1minSellTrades.Sum(tr => tr.Trade.Volume) +
MainStrategyPositionCounter))*_strategy1.Security.GetMarketPrice(OrderDiretions.Sell,
MarketPriceTypes.Middle) - _1minSellTrades.Sum(rr =>
(rr.Trade.Volume*rr.Trade.Price));
Мне не обязательно высчитывая прибыльность торговли по времени, можно
и по кол-ву последних сделок в обе стороны, но прикидывая такой
вариант у меня вышло еще сложнее.
Если вы делали что-то подобное, подскажите как это упростить?