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 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% правильно узнать текущую позицию остается открытым
Спасибо:

Alexander

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


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 года меня не подводил пока. :)
Спасибо:

President

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


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

Спасибо:
< 1 2 3 

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

loading
clippy