Bond 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 22.02.2014
					
					
			
					 
					 
					
	
			Доброго времени суток! Цитата:Здесь, соответственно, всё почти что стандартно, как в примерах. Но память течёт, и течёт неслабо так - за 30-40 прогонов забирает почти 16 гигов оперативы (тестирую на 4-х днях по RiH4, данные тащу из базы Гидры). Использую эмулятор торгов.  Хардкор. На тиках тестируете? Можно еще strategy = null, trader = null обнулять, но выше указанных операций должно хватить с головой. Вряд ли поможет. Цитата:Оффтоп вопрос - имеет ли смысл не пересоздавать каждый раз CandleManager и Series?  Если многопоточное тестирование, то имеет. А так вроде не принципиально. Мне кажется, что у вас с кодом что-то не так. Даже на S# тестере у меня не было таких утечек. Хотя, если тики, то может быть... Потому что, на сколько я помню, когда тестируешь на свечках после использования свечка уничтожается, чтобы не есть память.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					devruss 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 23.02.2014
					
					
			
					 
					 
					
	
			Я заметил, что несмотря на то, что я ставлю UseCandlesTimeFrame = timeFrame, S# все равно тянет из базы тики и налету формирует свечки. При этом память жрется дико, так что если прогонять несколько стратегий последовательно - может память и утекает на копии одного дня тиков на разные стратегии
  Как заставить S# смотреть сразу свечки я не нашел, это вообще можно сделать?
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Rebelion 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 23.02.2014
					
					
			
					 
					 
					
	
			devruss Я заметил, что несмотря на то, что я ставлю UseCandlesTimeFrame = timeFrame, S# все равно тянет из базы тики и налету формирует свечки. При этом память жрется дико, так что если прогонять несколько стратегий последовательно - может память и утекает на копии одного дня тиков на разные стратегии
  Как заставить S# смотреть сразу свечки я не нашел, это вообще можно сделать?  Насчёт этого не знаю, если честно, - тут нужно на курсы идти.  Насчёт отжирания оперативы - я просто после каждого прогона чищу за собой, но постепенно память утекает. Т.е. первые 10 нитей отрабатыают на 6-8 гб, потом постепенно на 20-30 нитях дорастает до 11-12 гб, дальше уже начинается тупняк. Я просто пулами по 10-15 нитей запускаю, каждая нить у меня к моему планировщику вызовов к R коннектится (точнее, каждый индикатор независимо это делает по tcp/ip). А может кто бесплатный профайлер указать, который бы мог мну помочь?
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Rebelion 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 23.02.2014
					
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
								 
							 | 
						 
					 
			
					 
					 
					
	
			Bond Доброго времени суток! Цитата:Здесь, соответственно, всё почти что стандартно, как в примерах. Но память течёт, и течёт неслабо так - за 30-40 прогонов забирает почти 16 гигов оперативы (тестирую на 4-х днях по RiH4, данные тащу из базы Гидры). Использую эмулятор торгов.  Хардкор. На тиках тестируете? Можно еще strategy = null, trader = null обнулять, но выше указанных операций должно хватить с головой. Вряд ли поможет. Цитата:Оффтоп вопрос - имеет ли смысл не пересоздавать каждый раз CandleManager и Series?  Если многопоточное тестирование, то имеет. А так вроде не принципиально. Мне кажется, что у вас с кодом что-то не так. Даже на S# тестере у меня не было таких утечек. Хотя, если тики, то может быть... Потому что, на сколько я помню, когда тестируешь на свечках после использования свечка уничтожается, чтобы не есть память.  Не совсем. Тесты идут на RenkoCandle, которые из тихов формируются. В стаканогенераторе квант обновления - 15 миллисекунд. Да, тестирование именно многопоточное (Монте-Карло гоняю) с синхронизацией через SemaphoreSlim. strategy = null, trader = null - эффекта ноль. Т.е. память всё же где-то накапливается, что странно, конечно, т.к. нигде навроде привязок внешних объектов ни к стратегии, ни к трейдеру навроде не идёт, чтобы они могли зависнуть на неопределённо долгий срок и не мочь быть собранными сборщиком мусора. Сейчас попробую 4.2.2.15, до этого тесты были на 4.2.2.6 Собственно, и хочу разобраться, что к чему - хочу понять стратегию удаления объектов, связанных со стратегией и трейдером. Потому как скорее всего проблемы именно у меня. Опять же, оффтоп, - порекомендуйте нормальный халявный профайлер для .NET, чтобы не шаровварный был. Да, и ещё вопрос - как убрать в CandleManager'е временные отрезки, в которых не нужно генерировать ничего? Т.е. чтобы у меня CandleManager шпарил данные только с 10:00 до 18:50? Можно кусочек кода маленький? Плз!
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Andrii 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 23.02.2014
					
					
			
					 
					 
					
	
			Rebelion  Да, и ещё вопрос - как убрать в CandleManager'е временные отрезки, в которых не нужно генерировать ничего? Т.е. чтобы у меня CandleManager шпарил данные только с 10:00 до 18:50? Можно кусочек кода маленький? Плз!
  думаю где-то здесь собака зарыта, CandleSeries.WorkingTime но не проверял, догадка
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					AntonySS 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 23.02.2014
					
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
								 
							 | 
						 
					 
			
					 
					 
					
	
			Rebelion Ночи доброй всем. Собственно, интересует вопрос относительно memory leak'ов и корректного удаления объектов. Версия 4.2.2.6 (забыл указать сразу вначале). Сейчас имею следующий код: Код
                                            strategy.CancelActiveOrders();
                                            strategy.ChildStrategies.DisposeAll();
                                            strategy.DoDispose();
                                            trader.Disconnect();
                                            candleManager.Series.DoDispose();
                                            candleManager.DoDispose();
                                            series.DoDispose();
                                            basketTrader.InnerConnectors.Remove(trader);
                                            trader.DoDispose();
 Здесь, соответственно, всё почти что стандартно, как в примерах. Но память течёт, и течёт неслабо так - за 30-40 прогонов забирает почти 16 гигов оперативы (тестирую на 4-х днях по RiH4, данные тащу из базы Гидры). Использую эмулятор торгов. За сим, собственно, вопрос - какая стратегия очистки данных должна быть реализована? Помню, вопрос про утечки памяти поднимался ранее, но вроде же всё пофиксили? Оффтоп вопрос - имеет ли смысл не пересоздавать каждый раз CandleManager и Series? P.S. Подскажите, плз, какой-нибудь адекватный бесплатный профайлер для .NET.  Добрый день! Некоторое время назад столкнулся с аналогичной проблемой  http://stocksharp.com/forum/430...kak-unichtozhit--obiekt/Метод Dispose не помогал, поэтому я подумал и решил что раз избавиться от объемного объекта не получается, то нужно создать вместо него новый, но пустой и соответственно маленький Сделал я следующее Код
									strategy.Stop();
									candleManager.Stop(candleSeries);
									if (strategy.Connector != null) strategy.Connector.Dispose();
									strategy.Dispose();
									strategy.Connector = null;
									strategy = null;
									candleSeries = null;
									candleManager.Container = new CandleManagerContainer();
									if (candleManager != null) candleManager.Dispose();
									if (connector.MarketEmulator != null) connector.MarketEmulator.Dispose();
									if (connector != null) connector.Dispose();
									if (StorageRegistry != null) StorageRegistry.DoDispose();
									if (LogManager != null) LogManager.Dispose();
									if (security != null) security.DoDispose();
									candleManager = null;
									connector = null;
									StorageRegistry = null;
									LogManager = null;
									basketConnector = null;
									security = null;
 
 Ключевой элемент: Код
candleManager.Container = new CandleManagerContainer(); 
 Не буду утверждать что я смог таким образом устранить утечку, но память начала освобождаться.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Rebelion 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 25.02.2014
					
					
			
					 
					 
					
	
			Да, ещё такой вопросинг - а сколько жрёт график PnL'я? Просто я отрисовываю для каждого прогона PnL, чтобы посмотреть распределение относительно 0 профита/лосса. Может, из-за этого память забивается? Сегодня попробую налабать тестер без визуализации - посмотрим на скорость и мемори лики, о результатах сообщу.
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					casper-ss 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 26.02.2014
					
					
			
					 
					 
					
	
			Rebelion,сними снимок памяти и посмотри...но по моим наблюдениям не много она жрет, по крайнее мере терпимо, а вот что действительно разростается, так это всевозможные коллекции с обьектом trade...они и жрут память...у самого такая же фигня как у вас, правда до 16 гигов не доходило никогда, максимум 1-1,5 при торговле...на втором месте transaction и на третьем orders...остальное все не существенно...
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 |