PositionManager стратегии

PositionManager стратегии
Atom
6/30/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.


Tags:


Thanks:


< 1 2 3 
President

Avatar
Date: 7/25/2011
Reply


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

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

protected void MyStrategy_NewMyTrades(IEnumerable 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/forum/1764/Zhiest--s-NewMyTrades------nie-vyzvalos--sobytiie-NewMyTrades/
данный код может иногда подвести - у меня тоже месяц не было проблем а потом - бац и "выстрелило"
т.о. вопрос как 100% правильно узнать текущую позицию остается открытым
Thanks:

Alexander

Avatar
Date: 7/25/2011
Reply


President:

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

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

protected void MyStrategy_NewMyTrades(IEnumerable 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/forum/1764/Zhiest--s-NewMyTrades------nie-vyzvalos--sobytiie-NewMyTrades/
> данный код может иногда подвести - у меня тоже месяц не было проблем а потом - бац и "выстрелило"
> т.о. вопрос как 100% правильно узнать текущую позицию остается открытым


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

President

Avatar
Date: 7/25/2011
Reply


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

Thanks:
< 1 2 3 

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy