Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 1/21/2011
					
					
			
					 
					 
					
	
			Alter Вызываю метод, он выдает все минутные свечки за день, и среди них попадаются пары с одинаковым временем (формат time O H L C V): 12:57:00 187035 187035 187035 187035 1 12:57:00 187025 187125 187020 187125 744
   Приведите код, как именно выводите.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Alter 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 1/21/2011
					
					
			
					 
					 
					
	
			Code private void CandleManager_NewCandles(CandleToken token, IEnumerable<Candle> candles)         {             if (candles.Last().Time >= WorkingSecurity.LastTrade.Time.TruncateSeconds())             {                 DateTime start = WorkingQuote.Count > 0 ? WorkingQuote[0].DateAndTime : DateTime.Today;                 DateTime end = candles.Last().Time;                 var newCandles = CandleManager.GetTimeFrameCandles(WorkingSecurity, Timeframe, new Range<DateTime>(start, end));             ...         }         ...     }
  
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 1/21/2011
					
					
			
					 
					 
					
	
			Alter Code private void CandleManager_NewCandles(CandleToken token, IEnumerable<Candle> candles)         {             if (candles.Last().Time >= WorkingSecurity.LastTrade.Time.TruncateSeconds())             {                 DateTime start = WorkingQuote.Count > 0 ? WorkingQuote[0].DateAndTime : DateTime.Today;                 DateTime end = candles.Last().Time;                 var newCandles = CandleManager.GetTimeFrameCandles(WorkingSecurity, Timeframe, new Range<DateTime>(start, end));             ...         }         ...     }
   Вывода так и не увидел. Но по коду кое что понятно. Вы в событии новых свечек вызываете CandleManager.GetTimeFrameCandles (получение диапазона). Вполне может быть так, что по Вашему диапазону будет получено более одной свечки.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Alter 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 1/21/2011
					
					
			
					 
					 
					
	
			Вывод - это  далее foreach (var candle in newCandles) {...}. Понятно, что по моему диапазону может быть более одной свечки =) Непонятно, почему у некоторых из них одинаковое значение candle.Time.
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 1/21/2011
					
					
			
					 
					 
					
	
			Alter Вывод - это  далее foreach (var candle in newCandles) {...}. Понятно, что по моему диапазону может быть более одной свечки =) Непонятно, почему у некоторых из них одинаковое значение candle.Time.  Да, слона я не увидел... Чтобы точно все определить, можете полностью привести код вывода в лог.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Alter 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 1/21/2011
					
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
								 
							 | 
						 
					 
			
					 
					 
					
	
			Code foreach (var candle in newCandles)                         {                             Logger.Log.Info("*** {0} {1} {2} {3} {4} {5}", candle.Time, candle.OpenPrice, candle.HighPrice, candle.LowPrice, candle.ClosePrice, candle.TotalVolume);                             WorkingQuote.Add(CandleToBar(candle));                         }
 
  Лог получается такой: Code 01/20/2011 23:19:21 [10] - *** 20.01.2011 12:46:00 187050 187070 186960 186970 3001 01/20/2011 23:19:21 [10] - *** 20.01.2011 12:47:00 186970 186970 186970 186970 1 01/20/2011 23:19:21 [10] - *** 20.01.2011 12:47:00 186970 187105 186965 187050 1510 01/20/2011 23:19:21 [10] - *** 20.01.2011 12:48:00 187050 187110 187015 187070 703 01/20/2011 23:19:21 [10] - *** 20.01.2011 12:49:00 187080 187225 187075 187190 2387 01/20/2011 23:19:21 [10] - *** 20.01.2011 12:50:00 187185 187200 187100 187115 1204 01/20/2011 23:19:21 [10] - *** 20.01.2011 12:51:00 187130 187155 187095 187135 973 01/20/2011 23:19:21 [10] - *** 20.01.2011 12:52:00 187135 187175 187120 187145 355 01/20/2011 23:19:21 [10] - *** 20.01.2011 12:53:00 187140 187165 187110 187110 262 01/20/2011 23:19:21 [10] - *** 20.01.2011 12:54:00 187110 187185 187085 187175 1376 01/20/2011 23:19:21 [10] - *** 20.01.2011 12:55:00 187180 187185 187120 187120 444 01/20/2011 23:19:21 [10] - *** 20.01.2011 12:56:00 187120 187135 187005 187020 2016 01/20/2011 23:19:21 [10] - *** 20.01.2011 12:57:00 187035 187035 187035 187035 1 01/20/2011 23:19:21 [10] - *** 20.01.2011 12:57:00 187025 187125 187020 187125 744 01/20/2011 23:19:21 [10] - *** 20.01.2011 12:58:00 187105 187195 187080 187190 1234 01/20/2011 23:19:21 [10] - *** 20.01.2011 12:59:00 187190 187190 187190 187190 1 01/20/2011 23:19:21 [10] - *** 20.01.2011 12:59:00 187190 187200 187100 187135 671 01/20/2011 23:19:21 [10] - *** 20.01.2011 13:00:00 187135 187165 187095 187155 810 01/20/2011 23:19:21 [10] - *** 20.01.2011 13:01:00 187165 187195 187095 187150 1016
  
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 1/27/2011
					
					
			
					 
					 
					
	
			Alter Code private void CandleManager_NewCandles(CandleToken token, IEnumerable<Candle> candles)         {             if (candles.Last().Time >= WorkingSecurity.LastTrade.Time.TruncateSeconds())             {                 DateTime start = WorkingQuote.Count > 0 ? WorkingQuote[0].DateAndTime : DateTime.Today;                 DateTime end = candles.Last().Time;                 var newCandles = CandleManager.GetTimeFrameCandles(WorkingSecurity, Timeframe, new Range<DateTime>(start, end));             ...         }         ...     }
   Запустил тест (переделав его, так как махинации со временем мне остались не понятны) и увидел следующее. Действительно, в логе свечки двоятся. Но они двоятся не из-за того, что метод GetTimeFrameCandles возвращает два раза одну и ту же свечку, а из-за передаваемого диапазона. Последняя запрашиваемая свечка из предыдущего диапазона была равна первой из следующего. Если у Вас так же, то в этом и причина.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Alter 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 1/27/2011
					
					
			
					 
					 
					
	
			Нет, у меня диапазон запрашивается один раз при запуске робота, свечки двоятся внутри одного диапазона.
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Alter 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 1/27/2011
					
					
			
					 
					 
					
	
			Еще одно наблюдение. Сравниваю свечки, полученные через S# c загруженными с финама. Иногда попадается следующее: CodeФинам: 20110127,155600,190065,190110,190015,190015,509 20110127,155700,190020,190030,189900,189955,2031
  S#: 20110127,155600,190065,190110,190015,190020,511 20110127,155700,190025,190030,189900,189955,2029  То есть 2 сделки из свечки 15:57 записались в свечку 15:56, как видно по объему и ценам. У вас такое не воспроизводится?
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 1/28/2011
					
					
			
					 
					 
					
	
			Alter Нет, у меня диапазон запрашивается один раз при запуске робота, свечки двоятся внутри одного диапазона.  Насколько я вижу по приведенному коду, диапазон конструируется не при запуске, а внутри события. Может выводить диапазон так же в лог?
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 |