← 返回

Нужен совет по RealTimeEmulationTrader<QuikTrader>

Подскажите плиз от чего могут возникать ошибки при тестировании: 1ая: :::spoiler 14:13:22.515 | | SS | Новая Buy сделка 1 по цене 135180 на 1 заявки 51189688. 14:13:22.578 | Error | QuikTrader | System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта. в StockSharp.Algo.PnL.StrategyPnLManager.GetCurencyMultiplier(Security security) в StockSharp.Algo.PnL.BasketSecurityPnLManager.#=q6HiCAL0wXXwdvRY7uE$AM8NN9tKbrs$02s9ko$8PuSg=.#=qcKCI67EDKenpnXbbwgQzyVk_tVjwVg5bqB_VEhdFLM4=.#=q_7aAU8b_zEypCQ8s7GI9rlmVYn479GdZoRtI$xC5APU=.#=qbX2NMw97YN647uARUP4kiOrEzSgns_NeDhIPE6$rb8o=(MyTrade #=q4VARR7mxDe7ScscA9aQQgw==) в System.Linq.Enumerable.WhereSelectEnumerableIterator2.MoveNext() в System.Linq.Enumerable.Sum(IEnumerable1 source) в System.Linq.Enumerable.Sum[TSource](IEnumerable1 source, Func2 selector) в StockSharp.Algo.PnL.BasketSecurityPnLManager.#=q6HiCAL0wXXwdvRY7uE$AM8NN9tKbrs$02s9ko$8PuSg=.#=qcKCI67EDKenpnXbbwgQzyVk_tVjwVg5bqB_VEhdFLM4=.#=qZatH$9FLmNwfKCCRIM6YDxuN4WwKbLbdoLvVsD5BAuk=(IGrouping2 #=q$4G2npAC2gseF74RW$6_xg==) в System.Linq.Enumerable.WhereSelectEnumerableIterator2.MoveNext() в System.Linq.Enumerable.Sum(IEnumerable1 source) в System.Linq.Enumerable.Sum[TSource](IEnumerable1 source, Func2 selector) в StockSharp.Algo.PnL.BasketSecurityPnLManager.#=q6HiCAL0wXXwdvRY7uE$AM8NN9tKbrs$02s9ko$8PuSg=.#=qQqgnjBTTRmSjC3HMTr1s0ymGFsxoL7K0cd9g4Xsn_zU=(SynchronizedDictionary2 #=qcu9T_f8BYsAA4Gj0glG5_w==) в Ecng.Collections.CollectionHelper.SyncGet[TCollection,TResult](TCollection collection, Func2 func) в StockSharp.Algo.PnL.BasketSecurityPnLManager.OnNewMyTrades(IEnumerable1 trades) в System.Action1.Invoke(T obj) в Ecng.Common.DelegateHelper.SafeInvoke(Action1 handler, T arg) в StockSharp.Algo.Strategies.Strategy.OnNewMyTrades(IEnumerable1 trades) в StockSharp.Algo.Strategies.Strategy.#=qjjCXVa_GkSf19tV164IPg$B_BuyYNpEwvJpaRsaBYZI=.#=q60fTWYHn96Qa$uznqgIKIdnOtsOoL0SL9e7y$KI_674=() в StockSharp.Algo.Strategies.Strategy.#=qMfrcg9BqoX_SrZ_PniRSkLS_JuuciwSwF87AWA6lJIg=.#=q11nNvW_LDjU59uRCN9Amg3LTB0xZWdIMnxhQTLxuzAY=() в StockSharp.Algo.Strategies.Strategy.#=qAgonEJk0t22bTsrfK6SLoMr5BgqmFwSLQQpYD$xcaXs=.#=qdtQ3dCu7HaE3WJNsuA3bxg==(Action #=q7jtjfDpSoxBzSHUHwNz7Fg==) в StockSharp.Algo.Strategies.Strategy.#=qGIX_yMJhdV6DUS_vV$qTBA==(Action #=q50Oy$J7iOXqEyIlapwlEpA==) в StockSharp.Algo.Strategies.Strategy.#=qLYbcqZqRAt1$bI37jUJqSg==(IEnumerable1 #=qPNgWxpQ5W3V9vJE73JFWaA==) в StockSharp.Algo.Strategies.Strategy.#=qVZa9bG8nZP4eO47Hby9llv33WO7k4iWmOSFbutpvqYg=(IEnumerable1 #=q32T_VyX_KbypOvRURsTLEQ==) в System.Action1.Invoke(T obj) в Ecng.Common.DelegateHelper.SafeInvoke(Action1 handler, T arg) в StockSharp.Algo.Testing.RealTimeEmulationTrader1.#=qumfF10tDQXmC5j3tQRXgIfaJqaeMWNqH_CZTIENv1Ck=(IEnumerable1 #=qH3UKDf2$6uHRGF78v65UOQ==) в Ecng.Common.DelegateHelper.SafeInvoke(Action1 handler, T arg) в StockSharp.Algo.Testing.MarketEmulator.RaiseNewMyTrades(IEnumerable1 trades) в StockSharp.Algo.Testing.MarketEmulator.#=q8tBHVFJqB$doPBoQ__G$Eg==(Order #=qNmIAA7smnU$VqJSm38vFdQ==, Decimal #=qXnkhs$UHfBoHHLtRCo8Tzg==, Decimal #=qwiKCKWtgj5uhtzQ2jdOFHw==) в StockSharp.Algo.Testing.MarketEmulator.#=qKnsW2oTjuzsJtGYKFUJmT9zvfEhF_ZzINvWpTLEATXA=(MarketDepth #=qdMYj$LVC2zDIvBciB_VCsw==, Order #=qGXVvWslUzjYnlybOtY9UUg==, Quote #=q410lzqkc587s2hjn49EQPQ==) в StockSharp.Algo.Testing.MarketEmulator.#=qH0Jhi92Iqm6wUzAAH8tmy5VL6E9oAL41t5wKKVhcSRM=(Order #=qS7eX6V48kbp7_LDzAXFqBA==, MarketDepth #=qlspWVsbJgXWw1ZX08NK8PQ==) в StockSharp.Algo.Testing.MarketEmulator.#=qUj_MKo_5xFu57$BdmAtvdp$dsDVU0GRscQ2wPozrHrc=.#=qDh4rLm2MeH9JI_PMbgc4mg==(SynchronizedDictionary2 #=qnvDoR0SOYQ3nEDywMrBJZg==) в Ecng.Collections.CollectionHelper.SyncDo[TCollection](TCollection collection, Action1 action) в StockSharp.Algo.Testing.MarketEmulator.#=qbcQv4DURsovmF2_6KulaXQ==(Security #=qoSuBdev71Xj6QhcRd7$wHw==, IEnumerable1 #=qaUqXfHo54t0PzgplHgDiag==) в StockSharp.Algo.Testing.MarketEmulator.UpdateQuotes(IEnumerable1 marketDepths) в StockSharp.Algo.Testing.RealTimeEmulationTrader1.#=qp71gckUC4MvXdWMR2qIKmrIltzQA9rF63y5KR4$npu8=(IEnumerable1 #=qOZt87BPgdAr3Z3tLLHoC$A==) в System.Action1.Invoke(T obj) в Ecng.Common.DelegateHelper.SafeInvoke(Action1 handler, T arg) в StockSharp.Algo.BaseTrader.#=qM_7o6DN8OdobL_XpXsi_9AM_QuiUMhf$FWqj39$RUtE=.#=qvmABIQDcLFlpivEX446O7w==(IEnumerable1 #=qzHTMqWxpXDUsygAUAMg3Dg==)

2ая: :::spoiler 14:13:23.109 | Error | QuikTrader | System.ArgumentOutOfRangeException: Объем заявки не правильный. Имя параметра: volume Фактическое значение было 0. в StockSharp.Algo.Testing.MarketEmulator.#=q8tBHVFJqB$doPBoQ__G$Eg==(Order #=qNmIAA7smnU$VqJSm38vFdQ==, Decimal #=qXnkhs$UHfBoHHLtRCo8Tzg==, Decimal #=qwiKCKWtgj5uhtzQ2jdOFHw==) в StockSharp.Algo.Testing.MarketEmulator.#=qKnsW2oTjuzsJtGYKFUJmT9zvfEhF_ZzINvWpTLEATXA=(MarketDepth #=qdMYj$LVC2zDIvBciB_VCsw==, Order #=qGXVvWslUzjYnlybOtY9UUg==, Quote #=q410lzqkc587s2hjn49EQPQ==) в StockSharp.Algo.Testing.MarketEmulator.#=qH0Jhi92Iqm6wUzAAH8tmy5VL6E9oAL41t5wKKVhcSRM=(Order #=qS7eX6V48kbp7_LDzAXFqBA==, MarketDepth #=qlspWVsbJgXWw1ZX08NK8PQ==) в StockSharp.Algo.Testing.MarketEmulator.#=qUj_MKo_5xFu57$BdmAtvdp$dsDVU0GRscQ2wPozrHrc=.#=qDh4rLm2MeH9JI_PMbgc4mg==(SynchronizedDictionary2 #=qnvDoR0SOYQ3nEDywMrBJZg==) в Ecng.Collections.CollectionHelper.SyncDo[TCollection](TCollection collection, Action1 action) в StockSharp.Algo.Testing.MarketEmulator.#=qbcQv4DURsovmF2_6KulaXQ==(Security #=qoSuBdev71Xj6QhcRd7$wHw==, IEnumerable1 #=qaUqXfHo54t0PzgplHgDiag==) в StockSharp.Algo.Testing.MarketEmulator.UpdateQuotes(IEnumerable1 marketDepths) в StockSharp.Algo.Testing.RealTimeEmulationTrader1.#=qp71gckUC4MvXdWMR2qIKmrIltzQA9rF63y5KR4$npu8=(IEnumerable1 #=qOZt87BPgdAr3Z3tLLHoC$A==) в System.Action1.Invoke(T obj) в Ecng.Common.DelegateHelper.SafeInvoke(Action1 handler, T arg) в StockSharp.Algo.BaseTrader.#=qM_7o6DN8OdobL_XpXsi_9AM_QuiUMhf$FWqj39$RUtE=.#=qvmABIQDcLFlpivEX446O7w==(IEnumerable`1 #=qzHTMqWxpXDUsygAUAMg3Dg==)

По второй: все регистрируемые заявки имеют объем отличный от 0.

Версия 4.0.2

本主题对您有帮助吗?

分享主题

评论 (13)

登录创建账户, 登录或注册以发表评论

Serg
Serg 作者

Может кто подскажет, он с квиком работает?

Mikhail Sukhov
Mikhail Sukhov

Serg: Может кто подскажет, он с квиком работает?

По первой ошибке. Она когда появляется (ее периодичность)?

Serg
Serg 作者

Mikhail Sukhov: По первой ошибке. Она когда появляется (ее периодичность)?

Регистрирую три заявки и после того как родительская выводит в лог

23:49:58.305 |            | SS              | Новая Sell сделка 3 по цене 510 на 1 заявки 85788346.

по каждой сделке получаю этот exception

Mikhail Sukhov
Mikhail Sukhov

Serg:

Mikhail Sukhov: По первой ошибке. Она когда появляется (ее периодичность)?

Регистрирую три заявки и после того как родительская выводит в лог

23:49:58.305 | | SS | Новая Sell сделка 3 по цене 510 на 1 заявки 85788346.

> по каждой сделке получаю этот exception

Это по первое, где NRE? А заявки из дочерних стратегий выстреливают?
Serg
Serg 作者

да это по первой где NRE

По заявкам они выставляются из дочерней стратегии дочерней стратегии, то есть внучки если так можно выразиться)

Вкратце: создается стратегия которая по событию создает дочернюю. Та(которая дочерняя) в свою очередь при повторении события создает еще одну дочку которая и пуляет заявки.

Mikhail Sukhov
Mikhail Sukhov

Serg: да это по первой где NRE

По заявкам они выставляются из дочерней стратегии дочерней стратегии, то есть внучки если так можно выразиться)

Вкратце: создается стратегия которая по событию создает дочернюю. Та(которая дочерняя) в свою очередь при повторении события создает еще одну дочку которая и пуляет заявки.

Ошибка может быть только в одном случае - если Strategy.Security == null. Родительская стратегия полностью инициализирована?

Serg
Serg 作者

ммм... Вот как раз Security == null Спасибо за ответ.

Подскажите а как можно тестировать стратегию которая работала бы с разными security?

Или может я вообще строю неправильную структуру при работе с несколькими инструментами? Просто ранее никогда не инициализировал Security если делаю арбитражную стратегию.

Mikhail Sukhov
Mikhail Sukhov

BasketSecurity

Serg
Serg 作者

Mikhail Sukhov: BasketSecurity Да я изначально ее и взял но что-то не пошло) попробую опять разобраться. Подскажите как используется Weights? И есть ли припер для BasketSecurity?

Alexander
Alexander

По второму - печатайте стакан и order.Balance по событию QuotesChanged после регистрации заявки до тех пор, пока не упадёт. Приложите лог сюда на форум. По коду всё ок, не нашли.

Serg
Serg 作者

Alexander Mukhanchikov: По второму - печатайте стакан и order.Balance по событию QuotesChanged после регистрации заявки до тех пор, пока не упадёт. Приложите лог сюда на форум. По коду всё ок, не нашли. Кажется вся причина была в ошибке на которую указал Михаил. Даже не кажется а точно. После того как инициализировал Strategy.Security все заработало. Вот разбираюсь с BasketSecurity. Спасибо. Тестирую дальше.

Serg
Serg 作者

RealTimeEmulationTrader<QuikTrader> модифицирует стакан при исполнение своих заявок? если да, то можно ли както отключить этот функционал?

Mikhail Sukhov
Mikhail Sukhov

Serg: RealTimeEmulationTrader модифицирует стакан при исполнение своих заявок? если да, то можно ли както отключить этот функционал?

Еще вчера по вашей проблеме начали смотреть код и увидели, что работа идет над оригинальным стаканом. Клонирование уже сделали. Выложим на КП asap.