PositionManager стратегии
Atom
30.06.2011
hobo


Объясните, что изменяет число позиций в PositionManager стратегии?

Я использую стратегию на основе TimeFrameStrategy и столкнулся с такой ситуацией:

Изначально позиций не было, затем стратегия выставила заявку, она выполнилась. Однако, PositionManager.Position остался равным 0.
Объем сделок по TargetOrder
base.Trader.MyTrades.Where(mt => mt.Order == TargetOrder).Sum(tr => tr.Trade.Volume)
был равен не 0 (судя по логу из NewMyTrades).

Даже несколько минут спустя после сделки PositionManager.Position так и оставался равным 0.

S# 3.2.1.

Теги:


Спасибо:


< 1 2 3 
President

Фотография
Дата: 25.07.2011
Ответить


Alex Ander
Часто происходит ошибка с расчетом позиции и профита
Например, сделка совершается, а позиция остается нулевой
Я добавил в стратегию свой расчет позиции и профита:

Обработчик события NewMyTrades:

Код
protected void MyStrategy_NewMyTrades(IEnumerable<MyTrade> myTrades)
        {
            CashPayed += myTrades.Sum(t => t.Trade.Price * t.Trade.Volume * (t.Order.Direction == OrderDirections.Buy ? -1 : 1));
            MyPosition -= myTrades.Sum(t => t.Trade.Volume * (t.Order.Direction == OrderDirections.Buy ? -1 : 1));
        }

CashPayed - баланс денежных средств (при покупке вычитается, при продаже прибавляется)
MyPosition - текущая позиция по стратегии (при покупке прибавляется, при продаже вычитается)
Ну а профит|убыток в моменте = (CashPayed + Security.LastTrade.Price * MyPosition)
За время тестирования ошибок не было ни одной, а стандартный менеджер позиций и PnL-менеджер периодически ошибаются.


ввиду баги описанной мной тут
http://stocksharp.com/fo...--sobytiie-NewMyTrades/
данный код может иногда подвести - у меня тоже месяц не было проблем а потом - бац и "выстрелило"
т.о. вопрос как 100% правильно узнать текущую позицию остается открытым
Спасибо:

Alexander

Фотография
Дата: 25.07.2011
Ответить


President
Alex Ander
Часто происходит ошибка с расчетом позиции и профита
Например, сделка совершается, а позиция остается нулевой
Я добавил в стратегию свой расчет позиции и профита:

Обработчик события NewMyTrades:

Код
protected void MyStrategy_NewMyTrades(IEnumerable<MyTrade> myTrades)
        {
            CashPayed += myTrades.Sum(t => t.Trade.Price * t.Trade.Volume * (t.Order.Direction == OrderDirections.Buy ? -1 : 1));
            MyPosition -= myTrades.Sum(t => t.Trade.Volume * (t.Order.Direction == OrderDirections.Buy ? -1 : 1));
        }

CashPayed - баланс денежных средств (при покупке вычитается, при продаже прибавляется)
MyPosition - текущая позиция по стратегии (при покупке прибавляется, при продаже вычитается)
Ну а профит|убыток в моменте = (CashPayed + Security.LastTrade.Price * MyPosition)
За время тестирования ошибок не было ни одной, а стандартный менеджер позиций и PnL-менеджер периодически ошибаются.


ввиду баги описанной мной тут
http://stocksharp.com/fo...--sobytiie-NewMyTrades/
данный код может иногда подвести - у меня тоже месяц не было проблем а потом - бац и "выстрелило"
т.о. вопрос как 100% правильно узнать текущую позицию остается открытым



Все проблемы которые вы там описываете - это при тестировании.
В реальных торгах данный код за 1.5 года меня не подводил пока. :)
Спасибо:

President

Фотография
Дата: 25.07.2011
Ответить


Alexander

Все проблемы которые вы там описываете - это при тестировании.
В реальных торгах данный код за 1.5 года меня не подводил пока. :)

у меня на реальных торгах NewMyTrade не вызвался! (хотя до этого месяц все работало корректно)
Спасибо:
< 1 2 3 

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy