Что-то никак не могу разобраться как правильно считать PnL в S#.
Обычно, PnL = size * (buy price - sell price) * direction sign , где direction sign = 1 if long, = -1 if short.
Теперь как считает S#:
Code
NEW long: price: 141010, position: 0, totalvolume: 247, PnL: 0
Actual execution: 140940
TP: price: 140700, position: 1, PnL: 70.000000000
Actual execution: 140790
Где price - это цена заявки, actual execution - то как заявка исполнилась в реальности, TP - означает, что робот решил взять прибыль, ПОТОМУ ЧТО он посчитал, что PnL > 0.
PnL посчитан из стратегии методом MyTrades.Last().GetPnL()
Я всегда считал, что если купил по 140940, а рынок на 140750, то я в минусе, а именно -190.
Далее, в чем считается PnL? В рублях или пунктах индекса?
Если в рублях, то должно быть (-141010+140790) * 7 рублей MinStepPrice / 10 MinStepSize = -154 рубля (без учета комиссии)
Инструмент настроен так:
Code
security = new Security
{
Id = "RIH4@FORTS", // по идентификатору инструмента будет искаться папка с историческими маркет данными
Code = "RIH4",
Name = "RTS-3.14",
MinStepSize = 10,
MinStepPrice = 7,
//MinPrice = 10,
//MaxPrice = 1000000,
MarginBuy = 10000, // задаем ГО
MarginSell = 10000,
ExchangeBoard = ExchangeBoard.Forts,
};