romany4 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 19.02.2014
					
					
			
					 
					 
					
	
			В общем, может кому пригодится - надо подключить библиотеку MoreLinq
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					romany4 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 19.02.2014
					
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
								 
							 | 
						 
					 
			
					 
					 
					
	
			Появился новый вопрос) при попытке эмуляции (HistoryEmulationConnector) в лог получаю следующее сообщение Код 2013/09/01 10:00:00.000|Error  |HistoryEmulationConnector|System.ArgumentOutOfRangeException: Текущее время должно быть в интервале от 09/01/2013 10:00:00 до 02/28/2014 18:00:00. Parameter name: currentTime    at StockSharp.Algo.Testing.HistorySessionHolder.UpdateCurrentTime(DateTime currentTime)    at StockSharp.Algo.Testing.EmulationMessageAdapter.#=qLQaA57Ra4dqrkkYWb9B60NhvHtkRrXpLgVICuOEhvss=.#=qHTlfjg0Z5e8_hDvXk7IGli_zq2qdrN2Zdl$pKpAbVMw=(HistorySessionHolder #=qtdZDQUFGvWgNAVsZ$b61NQ==)    at Ecng.Common.TypeHelper.DoIf[TSource,TDestination](TSource source, Action`1 handler)    at StockSharp.Algo.Testing.EmulationMessageAdapter.OnSendInMessage(Message message)    at StockSharp.Messages.MessageAdapter`1.OnInMessageProcessor(Message message, IMessageAdapter adapter)
 
  Если посмотреть через дебаг то conectior.currentTime - Date = {01.01.0001 0:00:00} и вся проблема во внутреннем методе UpdateCurrentTime, который при проверке бросает этот эксепшн. Кто-нибудь с таким сталкивался? зы в 4.2.1.7 - проблемы такой не было, эмулирование проходило нормально. свой код для этой версии библиотеки правил с учетом примера SampleHistoryTesting 4.2.2.6
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					romany4 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 19.02.2014
					
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
								 
							 | 
						 
					 
			
					 
					 
					
	
			В общем эту проблему обошел следующим путем - просто стал передавать только дату (при этом часы = 00). Т.е. раньше я передавал что-то типа этого в connector.Start(new DateTime(2013, 9, 1, 10, 0, 0), new DateTime(2014, 2, 1, 18, 0, 0) - теперь же просто   connector.Start(new DateTime(2013, 9, 1, 0, 0, 0), new DateTime(2014, 2, 1, 0, 0, 0). НО теперь в логе вот что Код 2013/09/02 00:00:00.000|       |HistoryEmulationConnector|Изменение состояния эмуляции Stopped -> Starting 2013/09/02 00:00:00.000|       |HistoryEmulationConnector|Создан новый портфель test account. 2013/09/02 00:00:00.000|       |HistoryEmulationConnector|Изменение состояния эмуляции Starting -> Started 2013/09/01 20:00:00.000|Debug  |SS_SBER@QJSIM_test account|Переход из состояния Stopped в Started. 2013/09/01 20:00:00.000|       |SS_SBER@QJSIM_test account|Стратегия запущена. [0,-1]. Позиция при старте 0. 2013/09/02 00:00:00.000|       |HistoryEmulationConnector|Инструмент SBER@QJSIM зарегистрирован на получение рыночных данных для MarketDepth. 2013/09/02 00:00:00.000|       |HistoryEmulationConnector|Инструмент SBER@QJSIM зарегистрирован на получение рыночных данных для Trades. 2014/02/19 22:38:40.342|       |HistoryMessageAdapter|Loading 02.09.2013 0:00:00 Events: 0 2014/02/19 22:38:40.631|       |HistoryMessageAdapter|Loading 03.09.2013 0:00:00 Events: 8640
  ...........
  2014/02/19 22:39:11.106|       |HistoryMessageAdapter|Loading 25.02.2014 0:00:00 Events: 1520640 2014/02/19 22:39:11.211|       |HistoryMessageAdapter|Loading 26.02.2014 0:00:00 Events: 1529280 2014/02/26 23:59:59.999|       |HistoryEmulationConnector|Изменение состояния эмуляции Started -> Stopping 2014/02/26 23:59:59.999|Error  |HistoryEmulationConnector|System.InvalidOperationException: Подключение в состоянии Connected получило неожиданное сообщение типа 'DisconnectMessage'. 2014/02/26 23:59:59.999|       |HistoryEmulationConnector|Изменение состояния эмуляции Stopping -> Stopped
 
 
  Не могу понять принцип выставления времени. Кто-нибудь может объяснить? А также натолкнуть на мысль причины ошибки "Подключение в состоянии Connected получило неожиданное сообщение типа 'DisconnectMessage'."
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Bond 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 20.02.2014
					
					
			
					 
					 
					
	
			Добрый день! Похоже вы торгуете акции в нерабочее время биржи. Демо-Квик работает по своему расписанию) Отсюда похоже и ошибки. Покажите ваши настройки времени работы робота.
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					romany4 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 21.02.2014
					
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
								 
							 | 
						 
					 
			
					 
					 
					
	
			Добрый вечер! Цитата:Похоже вы торгуете акции в нерабочее время биржи. Демо-Квик работает по своему расписанию) Отсюда похоже и ошибки.  Да. Эмулятор тестирую по вечерам. Демо-квик сейчас не использую. Все данные (свечи, инструменты) беру из бд вот так Код
new Security()
                    {
                        Id = security.Code + "@" + security.ExchangeBoardT.Code,
                        Code = security.Code,
                        Name = security.Name,
                        Decimals = security.Decimals,
                        Class = security.Class,
                        LastChangeTime = DateTime.Now,
                        MinLotSize = security.MinLotSize,
                        MinPrice = security.MinPrice,
                        MinStepPrice = security.MinStepPrice,
                        MinStepSize = security.MinStepSize,
                        Currency = (CurrencyTypes)security.IdsCurrencyTypes,
                        ExtensionInfo = new Dictionary<object, object> { { "DBIds", security.Id } },
                        //ExchangeBoard = new ExchangeBoard()
                        //{
                        //    Code = security.ExchangeBoardT.Code,
                        //    Exchange = new Exchange()
                        //    {
                        //        Name = security.ExchangeBoardT.ExchangeT.Code,
                        //        EngName = security.ExchangeBoardT.ExchangeT.EngName,
                        //        RusName = security.ExchangeBoardT.ExchangeT.RusName,
                        //        TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time")
                        //    },
                        //    ExpiryTime = new TimeSpan(),
                        //    IsSupportAtomicReRegister = security.ExchangeBoardT.IsSupportAtomicReRegister,
                        //    IsSupportMarketOrders = security.ExchangeBoardT.IsSupportMarketOrders,
                        //    WorkingTime = new WorkingTime()
                        //},
                        ExchangeBoard = ExchangeBoard.MicexJunior
                    };
 На данный момент решил пока использовать ExchangeBoard.MicexJunior. Свечи так Код
new TimeFrameCandle()
                            {
                                OpenPrice = candle.Open,
                                HighPrice = candle.High,
                                LowPrice = candle.Low,
                                ClosePrice = candle.Close,
                                TimeFrame = timeFrameCandle,
                                OpenTime = time,
                                CloseTime = time + timeFrameCandle,
                                TotalVolume = candle.Volume,
                                Security = security,
                                State = CandleStates.Finished
                            };
 Данные из бд корректны (основываюсь на том что  в предыдущих версиях проблем не было и график худо-бедно строился) Если принять, что проблема во времени выполнения, когда биржа закрыта, то предположу, что текущее время берется из системного, однако, перевод часов в нужный период не дал результата) или я что-то не так делаю?)
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 |