Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 24.10.2010
					
					
			
					 
					 
					
	
			У меня код: Кодtrader.NewSecurities += securities => {     foreach (var security in securities)     {         if (security.Code == "RIZ0")         {             _riz0 = security;             trader.RegisterSecurity(_rim0);         }     } };  и на демо и на реале стабильно находил фьюч. Но я не проверял порядок прихода инструментов. Может быть там не всегда одна и так же сортировка?
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					eaa 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 24.10.2010
					
					
			
					 
					 
					
	
			у меня то же самое, разве что в цикле печатает все, что приходит. стабильно работает, работает, а потом так же стабильно эта бумага не появляется. Потом опять начинает появляться... это и смущает. сначала думал что может оно где-то лочится в коде, но вроде нет - остальное-то приходит стабильно. 
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					eaa 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 26.10.2010
					
					
			
					 
					 
					
	
			Вот еще заметил такую вещь... Код trader.NewSecurities += securities => {     foreach (var security in securities)     {         if (security.Code == "RIZ0")         {             _riz0 = security;             trader.RegisterSecurity(_rim0);             waitHandle.Set();         }     } };
  waitHandle.WaitOne();
 
  Если ставлю точку останова на waitHandle.WaitOne() и потом продолжаю выполнение - приходят все коды, если убираю - некоторые теряются, в т.ч. тот, который мне нужен, хотя не только он... Пробовал перед ним ставить sleep() - толку нет. Может есть мысль, как победить?
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 26.10.2010
					
					
			
					 
					 
					
	
			eaaВот еще заметил такую вещь...
  Если ставлю точку останова на waitHandle.WaitOne() и потом продолжаю выполнение - приходят все коды, если убираю - некоторые теряются, в т.ч. тот, который мне нужен, хотя не только он... Пробовал перед ним ставить sleep() - толку нет.
  Может есть мысль, как победить?
   Я весь код не вижу, но думаю это то, о чем я писал выше. Инструменты приходят не всегда в одном и том же порядке. А Вы в коде ожидаете, что RIZ придется одним из первых. В качестве проверки сделайте простое приложение, которое выводит в консоль момент прихода RIZ0: Кодtrader.NewSecurities += securities => {     foreach (var security in securities)     {         if (security.Code == "RIZ0")         {             Console.WriteLine("Пришло!!!");         }     } };
  Console.ReadLine();  Уверен, что надпись Пришло будет появляться всегда, хоть и с небольшими задержками.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					eaa 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 27.10.2010
					
					
			
					 
					 
					
	
			Нашел как обойти, но так и не понял причину.
  Собственно, когда я ставлю точку останова, то приходит событие NewSecurities, если я ее не ставлю, то приходит SecuritiesChanged, и ловить эту бумагу надо в другом обработчике... Странно, но факт.
  Если кто знает почему так - отпишите плз. 
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 28.10.2010
					
					
			
					 
					 
					
	
			eaa Если кто знает почему так - отпишите плз.
 
  А мой ответ чем не подошел?
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					eaa 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 28.10.2010
					
					
			
					 
					 
					
	
			Он не объясняет, почему в одном случае приходит NewSecurity, а в другом - SecurityChanged. 
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 28.10.2010
					
					
			
					 
					 
					
	
			eaaОн не объясняет, почему в одном случае приходит NewSecurity, а в другом - SecurityChanged.
   Я думаю проблема в синхронизации данных. Вы пробовали создать простой приложение с кодом, которое я написал? Всегда ли приходит фьюч на РТС?
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Alex2 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 29.10.2010
					
					
			
					 
					 
					
	
			Mikhail SukhoveaaОн не объясняет, почему в одном случае приходит NewSecurity, а в другом - SecurityChanged.
   Я думаю проблема в синхронизации данных. Вы пробовали создать простой приложение с кодом, которое я написал? Всегда ли приходит фьюч на РТС?  Подтверждаю, такая же проблема с RIZ0 Пробовал приведенный вами код для NewSecurities  не срабатывает: 			trader.NewSecurities += securities =>                         {                             foreach (var security in securities)                             {                                 if (security.Code == "RIZ0")                                 {                                     Console.WriteLine(security.Code);                                 }                             }                             Бумага не находится. А вот если поместить этот же код в  trader.SecuritiesChanged RIZ0 находится. ps: если бы не инфа в предыдущих постах о SecuritiesChanged - до сих пор ломал бы голову, почему не приходит RIZ0
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 29.10.2010
					
					
			
					 
					 
					
	
			Alex2 Подтверждаю, такая же проблема с RIZ0 Пробовал приведенный вами код для NewSecurities  не срабатывает:
 
  Ок, понятно. Проблема в том, что инструмент инициализируется позднее. Из-за того, что сделки (или заявки) по инструменту приходят раньше, чем сама информация по инструменту. Из-за этого в NewSecurities посылается не полностью инициализированный объект Security. Как вариант - смотрите на Security.Id, а не на Code. Он не изменяется в процессе работы.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 |