| Alexander 
 
   
 
						
						
					 | Date: 7/13/2011 
 
 
	
			В 3.2.5 ошибка остаётся?
 Попробуйте перегрузить стратегию и создавать свой StrategyPositionManager, формируя его не по Order, а по Trades (там флаг есть для конструктора).
 | 
			
				|  | 
	
		| Thanks: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| hobo 
 
   
 
						
						
					 | Date: 7/13/2011 
 
 
	
			Я 3.2.1 использую, пересадить робота сегодня же не готов, надо потестироваться будет. Я как перейду на старшую версию, понаблюдаю и сообщу. Но подобный сбой - событие редкое, сказать что-то определенное смогу не скоро.
 | 
			
				|  | 
	
		| Thanks: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| hobo 
 
   
 
						
						
					 | Date: 7/17/2011 
 
 
	
			Тестирую 3.2.5. - вообще что-то неведомое происходит и не только с менеджером позиций. Вот такую штуку я вижу в NewMyTrades и позднее, повторялось сие неоднократно.  Один ордер (Done, Accepted) есть в ордерах, сделка тоже случилась, PositionManager показывает 0.
			
			
			
			
		
 | 
			
				|  | 
	
		| Thanks: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| Alexander 
 
   
 
						
						
					 | Date: 7/17/2011 
 
 
	
			hobo Тестирую 3.2.5. - вообще что-то неведомое происходит и не только с менеджером позиций.Вот такую штуку я вижу в NewMyTrades и позднее, повторялось сие неоднократно.
 
 А что не так с MyTrade? Куда смотреть? Время? Да, сегодня торгов нет. Может у вас какая-нибудь демка?
			
			
			
			
		
 | 
			
				|  | 
	
		| Thanks: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| hobo 
 
   
 
						
						
					 | Date: 7/18/2011 
 
 
	
			Если сказать просто, то проблема осталась в 3.2.5, вернее даже усилилась. Если подробнее, то с MyTrade все так. А как сочетается исполненный ордер и наличие сделки в PositionManager(зеленым выделил) с отсутствием позиции в Position (красным)?  PS: да, это демка
			
			
			
			
		
 | 
			
				|  | 
	
		| Thanks: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| Alexander 
 
   
 
						
						
					 | Date: 7/18/2011 
 
 
	
			Ну хорошо что неведомое происходит только с менеджером позиций и ничем более :)
 Где брэйкпоинт стоит?
 | 
			
				|  | 
	
		| Thanks: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| hobo 
 
   
 
						
						
					 | Date: 7/18/2011 
 
 
	
			Неведомое - что такая штука происходит почти при каждом запуске стратегии. И еще RegisterQuotes то ли ждать приходится долго, то ли он вообще не каждый раз запускается - не разобрался еще, я даже QuotesChanged теперь жду (раньше такой необходимости не было никогда). Ну это так, отступление "о неведомом".Конкретно этот в NewMyTrades, через несколько интервалов стратегии в OnProcess было тоже самое.
 | 
			
				|  | 
	
		| Thanks: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| Alexander 
 
   
 
						
						
					 | Date: 7/18/2011 
 
 
	
			hobo И еще RegisterQuotes то ли ждать приходится долго, то ли он вообще не каждый раз запускается - не разобрался еще, я даже QuotesChanged теперь жду (раньше такой необходимости не было никогда). Ну это так, отступление "о неведомом". Подтвердится - создайте новую тему и подробно опишите.
			
			
			
			
		
 | 
			
				|  | 
	
		| Thanks: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| Alex Ander 
 
   
 
						
						
					 | Date: 7/18/2011 
 
 
	
			Часто происходит ошибка с расчетом позиции и профита Например, сделка совершается, а позиция остается нулевой Я добавил в стратегию свой расчет позиции и профита: Обработчик события NewMyTrades: Code
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-менеджер периодически ошибаются.
			
			
			
			
		
 | 
			
				|  | 
	
		| Thanks: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| Alexander 
 
   
 
						
						
					 | Date: 7/18/2011 
						
							|  |  |  |   |  
 
 
	
			Alex Ander Часто происходит ошибка с расчетом позиции и профита Например, сделка совершается, а позиция остается нулевой Я добавил в стратегию свой расчет позиции и профита: Обработчик события NewMyTrades: Code
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-менеджер периодически ошибаются. Если переопределить дефолтный PositionManager в стратегии, использовать StrategyPositionManager(strategy, false ) а не true, как по умолчанию, то позиция будет считаться именно так - по моим сделкам, а не по сделкам. И именно так, как написано у вас в обработчике.
			
			
			
			
		
 | 
			
				|  |  | 
			
				|  |