← 返回

Утечка памяти

При запуске EmulationTrader на сохраненных из квика тиках приложение потребляет очень много памяти, даже без генерации свечек и тестирования стратегии. Следующий код потребляет на пике более 800 мб, при этом после его завершения объем выделенной памяти остается на уровне около 500 мб. Если подключить генерацию свечек, то памяти моего ПК не хватает на тестирование. Подскажите, где копать?


var storage = new TradingStorage(new InMemoryStorage())
			{
				BasePath = @"K:\ТРЭЙДИНГ\Данные из квика",
			};

			var startTime = ((DateTime)this.datePicker1.SelectedDate).Date;
			var stopTime = ((DateTime)this.datePicker2.SelectedDate).Date + new TimeSpan(18, 55, 0);
			
			var securitybase = (Security)this.cb_sec.SelectedItem;

			var security = new Security
			{
				Id = securitybase.Id,
				Class = securitybase.Class,
				Code = securitybase.Code,
				MinStepSize = securitybase.MinStepSize,
				Decimals = securitybase.Decimals,
				Exchange = securitybase.Exchange,
			};

			// тестовый портфель
			var portfolio = new Portfolio { Name = "test account" };

			var trader = new EmulationTrader(
					new[] { security },
					new[] { portfolio },
					storage)
			{
				// параметр влияет на занимаемую память.
				// в случае достаточно количества памяти на компьютере рекомендуется его увеличить
				DaysInMemory = 1,
				MarketTimeChangedInterval = TimeSpan.FromHours(1),
				Storage = storage,
				WorkingTime = Exchange.Rts.WorkingTime
			};


			trader.Connect();
			trader.StartExport();
			trader.Start(startTime, stopTime);

本主题对您有帮助吗?

分享主题

评论 (3)

登录创建账户, 登录或注册以发表评论

Mikhail Sukhov
Mikhail Sukhov

InsiderHSE: Следующий код потребляет на пике более 800 мб, при этом после его завершения объем выделенной памяти остается на уровне около 500 мб.

Версия? Протестировать на этом коде как есть, без каких либо стратегий?

Тестер кушает памяти очень много. Со стаканами еще больше.

Church
Church

Да, для работы с тиками хотя бы за год мне пришлось воткнуть 16гб. И все же, я думаю, для тех кто тестирует страты в S# пригодилась бы команда эмулятору dispose'ить трейды, из которых уже сформированы свечки.

Mikhail Sukhov
Mikhail Sukhov

Church: Да, для работы с тиками хотя бы за год мне пришлось воткнуть 16гб. И все же, я думаю, для тех кто тестирует страты в S# пригодилась бы команда эмулятору dispose'ить трейды, из которых уже сформированы свечки.

Тики сейчас (в 4.0) даже нигде не сохраняются, кроме Candle Container, из которого тики периодически удаляются. В самом EmulationTrader кэшируется разве что заявки и сделки, но это суммарно копейки.