При запуске 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)
登录 或 创建账户, 登录或注册以发表评论
Версия? Протестировать на этом коде как есть, без каких либо стратегий?
Тестер кушает памяти очень много. Со стаканами еще больше.
Да, для работы с тиками хотя бы за год мне пришлось воткнуть 16гб. И все же, я думаю, для тех кто тестирует страты в S# пригодилась бы команда эмулятору dispose'ить трейды, из которых уже сформированы свечки.
Тики сейчас (в 4.0) даже нигде не сохраняются, кроме Candle Container, из которого тики периодически удаляются. В самом EmulationTrader кэшируется разве что заявки и сделки, но это суммарно копейки.