Создаю несколько потоков тестирования, в каждом свой HistoryEmulationConnector со своими настройками (инструменты RIM2, RIM3, RIU2 и т.д., соответственно, разные временные интервалы). Один, иногда два - три, потока выполняются нормально, остальные выдают ошибку:
2013/09/16 00:00:00.000|Debug |HistoryEmulationConnector|BP:Error,T=2013.09.16 00:00:00.000,Error=Элемент с тем же ключом уже был добавлен.
2013/09/16 00:00:00.000|Error |HistoryEmulationConnector|System.ArgumentException: Элемент с тем же ключом уже был добавлен.
в System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
в System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
в System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
в Ecng.Common.MathHelper.GetCachedDecimals(Decimal value)
в StockSharp.Algo.Testing.MarketEmulator.#=qh1ZPidasARRg00NQf$sYjQX6A5pJSOEq4NH0ij$ONbs=.#=qnsQljlGqreo$Nyl8gora5Q==(Message #=q5iaVPc$F6hSLTNF1QH0JcA==, ICollection`1 #=qzIhA_j$b5yBI7rmxuSunwQ==)
в StockSharp.Algo.Testing.MarketEmulator.#=qh1ZPidasARRg00NQf$sYjQX6A5pJSOEq4NH0ij$ONbs=.#=q7c$sqXM9_4BnhBWBfQdQJPfqNrto39GyW7ZGSuU7dATJMptYfjghXHCHDGeYtAvYvbZdrmJ_PsTBmLzXx4bbDQ==(Message #=qZPTtD$kY54AFaC8HpusqHg==)
в StockSharp.Algo.Testing.MarketEmulator.#=qBRCpsJ52rTsW3$nd7Na$JNW9ns9arLvM6$wzd8S3ekSb0DK5Cja$PWbDeio8Z0Nhqh7xdvMGmwRbdUdevVqBOQ==(Message #=qvIToI5VzogMn$7w9dERplw==)
в StockSharp.Algo.Testing.EmulationMessageAdapter.OnSendInMessage(Message message)
в StockSharp.Messages.MessageAdapter`1.OnInMessageProcessor(Message message, IMessageAdapter adapter)
Не пойму, с чем может быть связана эта ошибка?
Kommentare (3)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Вот эту dll замените.
Спасибо за dll, помогло. Если не сложно, объясните в чем было дело.
Я хотел узнать как тестировать с помощью HistoryEmulationConnector , одну и ту же стратегию с одними и теми же историческими данными несколько раз , не читая заново с жесткого диска историю . При повторном старте один и тот HistoryEmulationConnector завершает работу без тестирования приходит в состояние EmulationStates.Stopped Версия используемой библиотеки : 4.2.2.15
Можно ли как то тестировать без повторных перезагрузок данных и с помощью разных потоков (при тестировании на разных потоках с перезагрузкой истории) и избежав ошибку описанную выше пользователем vladch8
// strategy.AddConnectorForTesting(securityForTest, onStorageRegistry, // new DateTime(2013, 1, 1), new DateTime(2014, 1, 1), new ProcessCount(), // conns, allStatisticks, stats);
// Security.Connector = Connector;
// iConnector.MarketDataAdapter.SessionHolder.MarketTimeChangedInterval = timeFrame; // iConnector.NewSecurities += securities => // { // }; iConnector.Connect(); iConnector.StartExport(); iConnector.StateChanged += (oldState, newState) => { if (iConnector.State == EmulationStates.Stopped) { if (iConnector.IsFinished) { // this.Start();
// ПОПЫТКА ПОВТОРНОГО Запуска новой стратегии но с загруженными ранее истрическими данными strategy = new Str_2222(); strategy.Security = iConnector.Securities.First(); strategy.Connector = iConnector; strategy.Portfolio = new Portfolio() { Name = "test account", BeginValue = 1000000, }; // iConnector.Portfolios = new[] ; iConnector.Start(new DateTime(2013, 1, 1), new DateTime(2014, 1, 1)); // strategy.Stop();