Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 2/11/2011
					
					
			
					 
					 
					
	
			Greene-nsk Mikhail Sukhov Greene-nsk Code                     StrategyAdapter sAdapter = new StrategyAdapter(strategy);                     ...                     Log.Out("Регистрируем стратегию: " + sAdapter.StrategyInstance.strategyID);                     StrategyManager.Register(sAdapter, portfolio, security);
 
   Я так понимаю, StrategyAdapter - это наследник от Strategy? А список заявок вы смотрите в sAdapter или в переданном strategy?  Все смотрю и заявки исполняю из StrategyAdapter sAdapter (производный от TimeFrameStrategy). Из WealthScript strategy берется только инфа о приказах на исполнение.  Багу(-и) подтверждаю. Фикс будет в 3.0.2.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 2/11/2011
					
					
			
					 
					 
					
	
			Mikhail Sukhov  Багу(-и) подтверждаю. Фикс будет в 3.0.2.
  Кстати, если есть соображения, то готов обсудить. Суть проблемы как раз та, которую Вы писали - UpdateOrder приходит раньше OrderSucceeded. Из-за этого создается новый объект Order, не тот, который был зарегистрирован в Strategy. Соответственно, событие ITrader вызывается, но сама заявку в стратегию не попадает. Все было бы ничего, но в UpdateOrder нет параметра, который передается пользователем при регистрации (он есть только у OrderSucceeded).
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Greene-nsk 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 2/11/2011
					
					
			
					 
					 
					
	
			Mikhail Sukhov Mikhail Sukhov  Багу(-и) подтверждаю. Фикс будет в 3.0.2.
  Кстати, если есть соображения, то готов обсудить. Суть проблемы как раз та, которую Вы писали - UpdateOrder приходит раньше OrderSucceeded. Из-за этого создается новый объект Order, не тот, который был зарегистрирован в Strategy. Соответственно, событие ITrader вызывается, но сама заявку в стратегию не попадает. Все было бы ничего, но в UpdateOrder нет параметра, который передается пользователем при регистрации (он есть только у OrderSucceeded).  Да, там коряво, конечно, получается. При UpdateOrder пусть создается новый объект с orderID, который приходит из SmartCOM, потом при OrderSucceeded можно проверить, есть уже такой orderID или нет. Если нет - значит Update еще не приходил. Если есть - скрещиваем ордер из стратегии с ордером из UpdateOrder. По-моему больше никак.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 2/11/2011
					
					
			
					 
					 
					
	
			Greene-nsk  Да, там коряво, конечно, получается. При UpdateOrder пусть создается новый объект с orderID, который приходит из SmartCOM, потом при OrderSucceeded можно проверить, есть уже такой orderID или нет. Если нет - значит Update еще не приходил. Если есть - скрещиваем ордер из стратегии с ордером из UpdateOrder. По-моему больше никак.
  Вот это в C# работать не будет. У вас ссылка в коде на один объект, а реально будет создан другой.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Greene-nsk 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 2/11/2011
					
					
			
					 
					 
					
	
			Mikhail Sukhov Greene-nsk  Да, там коряво, конечно, получается. При UpdateOrder пусть создается новый объект с orderID, который приходит из SmartCOM, потом при OrderSucceeded можно проверить, есть уже такой orderID или нет. Если нет - значит Update еще не приходил. Если есть - скрещиваем ордер из стратегии с ордером из UpdateOrder. По-моему больше никак.
  Вот это в C# работать не будет. У вас ссылка в коде на один объект, а реально будет создан другой.  Ну я же условно говоря.. В SmartServer_OrderSucceeded приходят cookie (т.е. вы знаете из какой этот ордер стратегии) и system_order_id (по нему вы знаете, приходил ли UpdateOrder, и если приходил, то какой). Т.е. вся нужная информация есть. В один из ордеров сливаем всю инфу, другой удаляем.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Greene-nsk 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 2/28/2011
					
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
								 
							 | 
						 
					 
			
					 
					 
					
	
			Михаил, использую 3.0.3, где эта проблема должна быть исправлена. Но трейды до сих пор не всегда регистрируеются. Вот сегодня. Strategy.NewMyTrades НЕ пришел. Code 28.02.2011 14:34:49 [OpenWealth.StockSharp.SmartCOM.<Init>b__1] Wrapper order changed: BPxxx-RF-01 RTS-3.11_FT StOrder_State_Pending StOrder_Action_Sell StOrder_Type_Market True 0 1 0 1 28.02.2011 10:34:46 562337947 0 1534632 28.02.2011 14:34:49 [OpenWealth.StockSharp.SmartCOM.<Init>b__0] Wrapper new order: 49696158 562337947 28.02.2011 14:34:50 [OpenWealth.StockSharp.SmartCOM.<Init>b__1] Wrapper order changed: BPxxx-RF-01 RTS-3.11_FT StOrder_State_Pending StOrder_Action_Sell StOrder_Type_Market True 0 1 0 1 28.02.2011 10:34:46 562337947 0 1534632 28.02.2011 14:34:50 [OpenWealth.StockSharp.SmartCOM.<Init>b__1] Wrapper order changed: BPxxx-RF-01 RTS-3.11_FT StOrder_State_Open StOrder_Action_Sell StOrder_Type_Market True 0 1 0 1 28.02.2011 10:34:46 562337947 3266781688 1534632 28.02.2011 14:34:50 [OpenWealth.StockSharp.SmartCOM.<Smart_NewOrders>b__21] RTS-3.11 -1*0 Market 28.02.2011 14:34:50 [OpenWealth.StockSharp.SmartCOM.<Init>b__1] Wrapper order changed: BPxxx-RF-01 RTS-3.11_FT StOrder_State_Filled StOrder_Action_Sell StOrder_Type_Market True 185605 1 0 0 28.02.2011 10:34:46 562337947 3266781688 1534632 28.02.2011 14:34:50 [OpenWealth.StockSharp.SmartCOM.<Smart_OrdersChanged>b__25] RTS-3.11 -1*0 Market BP5758-RF-01 Done Done отстаток: 0 время снятия: 28.02.2011 10:34:46 28.02.2011 14:34:50 [OpenWealth.StockSharp.SmartCOM.<Smart_NewMyTrades>b__1f] 277321446 RTS-3.11 -1*193275 28.02.2011 14:34:50 [OpenWealth.StockSharp.SmartCOM.<Init>b__1] Wrapper order changed: BPxxx-RF-01 RTS-3.11_FT StOrder_State_Open StOrder_Action_Sell StOrder_Type_Market True 0 1 0 1 28.02.2011 10:34:46 562337947 3266781688 1534632 28.02.2011 14:34:51 [OpenWealth.StockSharp.SmartCOM.<Smart_OrdersChanged>b__25] RTS-3.11 -1*0 Market BP5758-RF-01 Active Done отстаток: 1 время снятия: 28.02.2011 10:34:46 28.02.2011 14:34:51 [OpenWealth.StockSharp.SmartCOM.<Init>b__1] Wrapper order changed: BPxxx-RF-01 RTS-3.11_FT StOrder_State_Filled StOrder_Action_Sell StOrder_Type_Market True 185605 1 0 0 28.02.2011 10:34:46 562337947 3266781688 1534632 28.02.2011 14:34:51 [OpenWealth.StockSharp.SmartCOM.<Smart_OrdersChanged>b__25] RTS-3.11 -1*0 Market BPxxx-RF-01 Done Done отстаток: 0 время снятия: 28.02.2011 10:34:46
 
  
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 2/28/2011
					
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
								 
							 | 
						 
					 
			
					 
					 
					
	
			Greene-nsk Михаил, использую 3.0.3, где эта проблема должна быть исправлена. Но трейды до сих пор не всегда регистрируеются. Вот сегодня. Strategy.NewMyTrades НЕ пришел. Code 28.02.2011 14:34:49 [OpenWealth.StockSharp.SmartCOM.<Init>b__1] Wrapper order changed: BPxxx-RF-01 RTS-3.11_FT StOrder_State_Pending StOrder_Action_Sell StOrder_Type_Market True 0 1 0 1 28.02.2011 10:34:46 562337947 0 1534632 28.02.2011 14:34:49 [OpenWealth.StockSharp.SmartCOM.<Init>b__0] Wrapper new order: 49696158 562337947 28.02.2011 14:34:50 [OpenWealth.StockSharp.SmartCOM.<Init>b__1] Wrapper order changed: BPxxx-RF-01 RTS-3.11_FT StOrder_State_Pending StOrder_Action_Sell StOrder_Type_Market True 0 1 0 1 28.02.2011 10:34:46 562337947 0 1534632 28.02.2011 14:34:50 [OpenWealth.StockSharp.SmartCOM.<Init>b__1] Wrapper order changed: BPxxx-RF-01 RTS-3.11_FT StOrder_State_Open StOrder_Action_Sell StOrder_Type_Market True 0 1 0 1 28.02.2011 10:34:46 562337947 3266781688 1534632 28.02.2011 14:34:50 [OpenWealth.StockSharp.SmartCOM.<Smart_NewOrders>b__21] RTS-3.11 -1*0 Market 28.02.2011 14:34:50 [OpenWealth.StockSharp.SmartCOM.<Init>b__1] Wrapper order changed: BPxxx-RF-01 RTS-3.11_FT StOrder_State_Filled StOrder_Action_Sell StOrder_Type_Market True 185605 1 0 0 28.02.2011 10:34:46 562337947 3266781688 1534632 28.02.2011 14:34:50 [OpenWealth.StockSharp.SmartCOM.<Smart_OrdersChanged>b__25] RTS-3.11 -1*0 Market BP5758-RF-01 Done Done отстаток: 0 время снятия: 28.02.2011 10:34:46 28.02.2011 14:34:50 [OpenWealth.StockSharp.SmartCOM.<Smart_NewMyTrades>b__1f] 277321446 RTS-3.11 -1*193275 28.02.2011 14:34:50 [OpenWealth.StockSharp.SmartCOM.<Init>b__1] Wrapper order changed: BPxxx-RF-01 RTS-3.11_FT StOrder_State_Open StOrder_Action_Sell StOrder_Type_Market True 0 1 0 1 28.02.2011 10:34:46 562337947 3266781688 1534632 28.02.2011 14:34:51 [OpenWealth.StockSharp.SmartCOM.<Smart_OrdersChanged>b__25] RTS-3.11 -1*0 Market BP5758-RF-01 Active Done отстаток: 1 время снятия: 28.02.2011 10:34:46 28.02.2011 14:34:51 [OpenWealth.StockSharp.SmartCOM.<Init>b__1] Wrapper order changed: BPxxx-RF-01 RTS-3.11_FT StOrder_State_Filled StOrder_Action_Sell StOrder_Type_Market True 185605 1 0 0 28.02.2011 10:34:46 562337947 3266781688 1534632 28.02.2011 14:34:51 [OpenWealth.StockSharp.SmartCOM.<Smart_OrdersChanged>b__25] RTS-3.11 -1*0 Market BPxxx-RF-01 Done Done отстаток: 0 время снятия: 28.02.2011 10:34:46
 
   Я глаза сломал, пока пытался понять, что к чему.[smile] А можно чуть нагляднее лог сделать? Что нужно. Номер заявки, номер транзакции, номер смарта у заявки (+ объяснить, что в каком порядке выводиться).
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Greene-nsk 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 3/1/2011
					
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
								 
							 | 
						 
					 
			
					 
					 
					
	
			Mikhail Sukhov  Я глаза сломал, пока пытался понять, что к чему.[smile] А можно чуть нагляднее лог сделать? Что нужно. Номер заявки, номер транзакции, номер смарта у заявки (+ объяснить, что в каком порядке выводиться).
  Вывод был с помощью этих функций, т.е. все по порядку как приходит, так и выводится: Code  (this.Trader as SmartTrader).Wrapper.NewOrder += ((i, s) =>  {      Log.Out("Wrapper new order: " + i + " " + s);  });
   (this.Trader as SmartTrader).Wrapper.OrderChanged += ((s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14) =>  {      Log.Out("Wrapper order changed: " + s1 + " " + s2 + " " + s3 + " " + s4 + " " + s5 + " " + s6 + " " + s7 + " " + s8 + " " + s9 + " " + s10 + " " + s11 + " " + s12 + " " + s13 + " " + s14);  });
 
  SmartCOM_2_0_manual: void UpdateOrder(string portfolio, string symbol, StClientLib.StOrder_State state, StClientLib.StOrder_Action action, StClientLib.StOrder_Type type, StClientLib.StOrder_Validity validity, double price, double amount, double stop, double filled, System.DateTime datetime, string orderid, string orderno, int status_mask)
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 3/1/2011
					
					
			
					 
					 
					
	
			По логу увидел следующее. Почему то Смарт сначала присылает что заявка matched, а затем что она опять открыта. Видимо надо сделать проверку. Можете сказать, как часто так делает Смарт?
  Еще, не понял, что такое <Smart_NewOrders>b__21. Это ITrader.NewOrders? А Вы делаете лог из Strategy событий? Плюс не плохо было бы в этих событиях так же выводить Order.Id
  Не понятно, почему время снятие инициализировано. Вы его из Order.CancelTime берете?
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Greene-nsk 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 3/2/2011
					
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
								 
							 | 
						 
					 
			
					 
					 
					
	
			Mikhail Sukhov По логу увидел следующее. Почему то Смарт сначала присылает что заявка matched, а затем что она опять открыта. Видимо надо сделать проверку. Можете сказать, как часто так делает Смарт?
   Не могу сказать. Mikhail Sukhov  Еще, не понял, что такое <Smart_NewOrders>b__21. Это ITrader.NewOrders? 
 
  Да. Это оно. Mikhail Sukhov  А Вы делаете лог из Strategy событий? Плюс не плохо было бы в этих событиях так же выводить Order.Id
  Да, вывожу (уверен процентов на 80% - тот кусок кода уже переделал, лог удален). Лог стратегии в этом куске "не задет". Order.Id добавил. В следующий раз будет. Mikhail Sukhov  Не понятно, почему время снятие инициализировано. Вы его из Order.CancelTime берете?
  Да, это CancelTime. Тоже непонятно. Вывод ITrader.OrdersChanged: Code orders.ForEach(o => Log.Out(o.ToStringLong()));
          static public string ToStringLong(this Order o)         {             string sign = (o.Direction == OrderDirections.Buy) ? "+" : "-";             return o.Security.Name + " " + sign + o.Volume + "*" + o.Price + " " + o.Type + " " +                 o.Portfolio.Name + " " + o.State + " " + o.Status + " остаток: " + o.Balance + " время снятия: " + o.CancelTime;         }
 
  
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 |