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


Добрый день,

При выставлении заявки через 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 столкнулся с тем, что стратегия набирает лишнюю позицию. Причем набранный объем стратегия видит. Логи я к сожалению не сохранил...



Спасибо:



Скидка 15% на все продукты до 5 апреля (осталось 3 дней).

5 Ответов
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 18.08.2012
Ответить


А где в стектрейсе котирование?
Спасибо:

Marco

Фотография
Программист
Дата: 18.08.2012
Ответить


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

Код

ChildStrategies.Add(strategy);


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

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

xbg

Фотография
Дата: 20.08.2012
Ответить


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

esper

Фотография
Программист
Дата: 20.08.2012
Ответить


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

Marco

Фотография
Программист
Дата: 20.08.2012
Ответить


Спасибо. :)

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


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy