Создаю несколько потоков тестирования, в каждом свой 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)
Не пойму, с чем может быть связана эта ошибка?
Comentários (3)
Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário
Вот эту 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();