← Zurück

MarketQuotingStrategy - Элемент с тем же ключом уже был добавлен.

Добрый день,

При выставлении заявки через MarketQuotingStrategy получаю исключение "Элемент с тем же ключом уже был добавлен". Использовал StockSharp 4.1.3. Журнал:


2009.06.01 11:00:04.260|       |MQS_RIU9@RTS_test account|Стратегия запущена.
2009.06.01 11:00:04.260|       |MQS_RIU9@RTS_test account|Котирование на Buy объема 1.
2009.06.01 11:00:04.260|       |MQS_RIU9@RTS_test account|Приостановка правил. _rulesSuspendCount 1.
2009.06.01 11:00:04.260|       |MQS_RIU9@RTS_test account|Возобновление правил. _rulesSuspendCount 0.
2009.06.01 11:00:04.260|       |MQS_RIU9@RTS_test account|Цена текущей NULL и лучшей 114810.
2009.06.01 11:00:04.260|       |MQS_RIU9@RTS_test account|Лучший бид 114810 и лучший аск 115000.
2009.06.01 11:00:04.260|       |MQS_RIU9@RTS_test account|Регистрация новой заявки на Buy с ценой 114810 и объемом 1.
2009.06.01 11:00:04.260|       |MQS_RIU9@RTS_test account|Правило 'Регистрация заявки 0 (56730816)' активировано.
2009.06.01 11:00:04.260|       |MQS_RIU9@RTS_test account|Заявка 43469495 принята биржей.
2009.06.01 11:00:04.260|       |MQS_RIU9@RTS_test account|Сброс счетчика ошибок регистрации с 0 до нуля.
2009.06.01 11:00:04.260|       |MQS_RIU9@RTS_test account|Правило 'Ошибка регистрации заявки 0 (46318910)' удалено.
2009.06.01 11:00:04.260|       |MQS_RIU9@RTS_test account|Правило 'Регистрация заявки 0 (56730816)' удалено.
2009.06.01 11:00:04.260|       |MQS_RIU9@RTS_test account|Правило 'Ошибка регистрации заявки 0 (46318910)' удалено.
2009.06.01 11:00:04.260|       |MQS_RIU9@RTS_test account|Заявка 43469495 на Buy отправлена с ценой 114810 объемом 1.
2009.06.01 11:00:04.260|Error  |HASS_RIU9@RTS_test account|System.ArgumentException: Элемент с тем же ключом уже был добавлен.
   в System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
   в Ecng.Collections.SynchronizedDictionary`2.Add(TKey key, TValue value)
   в Ecng.Collections.CachedSynchronizedDictionary`2.Add(TKey key, TValue value)
   в StockSharp.Algo.Slippage.SlippageManager.Register(Order order, Decimal estimatedPrice)
   в StockSharp.Algo.Slippage.SlippageManager.Register(Order order)
   в StockSharp.Algo.Strategies.Strategy.#=qAF$cAaWD8w6Sf0n2jICfhn3SnIpbRRHW0JdqTYJw4BU=.#=q6LA44T$FSqxi6oZ3W2ppWZVAK415i9fMe2wqeMO4F28=()
   в StockSharp.Algo.Strategies.Strategy.#=qfgs3t3F0QJo2uAeiNU2Ttpv2pumAF4y2coQRpub6uDk=.#=qg_9r_6HVmeb3crTgbQEYyZG1aCymBtmmqXvLAMXxG1s=()
   в StockSharp.Algo.Strategies.Strategy.#=qDi$TOxQqFULo7BC_ufyNgU4LgLgC6leIVgzHqovrf2Y=.#=qGOiRqrNYsm05dsneYckP8g==(Action #=qZ1RO65PUdyczAFAlB5vbMg==)
   в StockSharp.Algo.Strategies.Strategy.#=qE_CXVx3b6gFmJBM42_6QlA==(Action #=qWIPEEA7aG$_X1GVNHJoYng==)
   в StockSharp.Algo.Strategies.Strategy.AddOrder(Order order)
   в Ecng.Collections.CollectionHelper.ForEach[T](IEnumerable`1 source, Action`1 action)
   в StockSharp.Algo.Strategies.Strategy.#=qItQ_g_CJFenTf_DUQIRiSZ75O5671OlCK3jDT_6AHjs=.OnAdded(Strategy #=qLIZqpJfr9DarPEyQ3YDiyg==)
   в Ecng.Collections.BaseCollection`2.Add(TItem item)
   в Ecng.Collections.SynchronizedCollection`2.Add(TItem item)
   в HAScalping.HAScalpingStrategy.PlaceOrderMarket(OrderDirections direction) в C:\Users\Oleg\Documents\Trading\Robots\HAS\Test\HAScalpingStrategy.cs:строка 255
   в HAScalping.HAScalpingStrategy.PositionOpen(OrderDirections direction) в C:\Users\Oleg\Documents\Trading\Robots\HAS\Test\HAScalpingStrategy.cs:строка 191
   в HAScalping.HAScalpingStrategy.ProcessCandle(Candle candle) в C:\Users\Oleg\Documents\Trading\Robots\HAS\Test\HAScalpingStrategy.cs:строка 165
   в StockSharp.Algo.MarketRule`2.#=qNvRzgzB6em7JDGjsbTFqXxbqeYm4_dxOCnhENHYLkDY=()
   в StockSharp.Algo.MarketRuleHelper.#=qT2TJX7Q4a_7MzEJwb4JZVA==(IMarketRuleContainer #=q3Bx0jRHnSGWyW2NARSa2bQ==, IMarketRule #=qNwrOeGKzx4dDfI1P0G1FlA==, Func`1 #=qcQGieqgBTngV7lIdWpneZQ==)
   в StockSharp.Algo.Strategies.Strategy.#=qZN_cuD5wldlf$19zm9HEHOu53gC9q$o3p0BaigJO5Uifnf5Ca1F2zuE82jYB0neTnptvAtr2nPz5H5J$XHX2Ug==(IMarketRule #=qAhGKN8uVo_OSrIVPofUuRg==, Func`1 #=qUBOGk205A97cP6cLpZ0cpA==)

Стратегия запускается самым обычным образом:


            var strategy = new MarketQuotingStrategy(direction, Volume);
            ChildStrategies.Add(strategy);

С чем это может быть связано?

P.S.: При использовании MarketQuotingStrategy с QuikTrader столкнулся с тем, что стратегия набирает лишнюю позицию. Причем набранный объем стратегия видит. Логи я к сожалению не сохранил...

War dieses Thema hilfreich?

Thema teilen

Kommentare (5)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Mikhail Sukhov
Mikhail Sukhov

А где в стектрейсе котирование?

Marco
Marco Autor

Oops, да, действительно. Исключение вызывается при выполнении строки


ChildStrategies.Add(strategy);

Пробовал добавлять в ChildStrategies другую стратегию - все работает. И при работе через SmartTrader и QuikTrader ошибки не возникает. Проблема проявляется только при тестировании.

P.S.: На входе количество элементов в ChildStrategies равно 0.

xbg
xbg

У меня аналогичная проблема. Не работает даже пример из документации.

esper
esper

В ближайших версиях будет небольшой фикс.

Marco
Marco Autor

Спасибо. :)

P.S.: Что касается перебора позиции - была моя ошибка.