← Zurück

Exception in GetTheoreticalTrades

Уважаемые разработчики!

столкнулся с проблемой. При вызове


            MarketDepth md = Trader.GetMarketDepth(RI);
            md.GetTheoreticalTrades(OrderDirections.Buy, 5);

вылетает исключение:


System.ArgumentException was unhandled
  Message=Портфель не был найден.
Parameter name: order
  Source=StockSharp.Algo
  ParamName=order
  StackTrace:
       at StockSharp.Algo.TraderHelper.#=q0Nqd_EYKUm_qSUT3KX_XPe01U$tp1RZ3oGIfSQxpens=(Order #=qob1Cy8VdI6c2Xz9lAJh2_Q==)
       at StockSharp.Algo.Testing.MarketEmulator.#=qWdg4lAUxdmq5XUmbYi0Zrw==(Order #=qgtz9uuueTianlRNGoA_UHg==)
       at StockSharp.Algo.Testing.MarketEmulator.RegisterOrder(Order order)
       at StockSharp.Algo.TraderHelper.GetTheoreticalTrades(MarketDepth depth, Order order)
       at StockSharp.Algo.TraderHelper.GetTheoreticalTrades(MarketDepth depth, OrderDirections orderDirection, Int32 volume, Decimal price)
       at StockSharp.Algo.TraderHelper.GetTheoreticalTrades(MarketDepth depth, OrderDirections orderDirection, Int32 volume)

Буду благодарен за фикс!

War dieses Thema hilfreich?

Thema teilen

Kommentare (8)

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

Den
Den Autor

А если этот же метод вызывать с ордером, то ругается на нулевой размер volume, хотя он явно не нулевой!

Alexander
Alexander

а md какой? 0 объём приходит у вас из стакана. чтобы убедиться - можете скинуть стэктрэйс.

первое с Portfolio исправил

Den
Den
Den Autor

Alexander Mukhanchikov: а md какой? 0 объём приходит у вас из стакана. чтобы убедиться - можете скинуть стэктрэйс.

первое с Portfolio исправил

ask: Оффер 148945 4 bid: Бид 148940 2 sec: RTS-12.11@RTS count: 100 У стратегии секурити задано в конструкторе равное RI.

Alexander
Alexander

Den:

Alexander Mukhanchikov: а md какой? 0 объём приходит у вас из стакана. чтобы убедиться - можете скинуть стэктрэйс.

первое с Portfolio исправил

ask: Оффер 148945 4 bid: Бид 148940 2 sec: RTS-12.11@RTS count: 100 У стратегии секурити задано в конструктори равное RI.

стэк трэйс тогда киньте

Den
Den Autor

Alexander Mukhanchikov: стэк трэйс тогда киньте

System.ArgumentOutOfRangeException was unhandled Message=Объем заявки не правильный. Parameter name: volume Actual value was 0. Source=StockSharp.Algo ParamName=volume StackTrace: at StockSharp.Algo.Testing.MarketEmulator.#=qcrPHtE$YdeNEHdB1EUG5yw==(Order #=qPqfVRnec6ayfNzK08nWyTg==, Int32 #=q4F10lmZ6q7IhD0bqYdV1_A==, Decimal #=q23Tme2q2X$DkZF62hMCOsA==) at StockSharp.Algo.Testing.MarketEmulator.#=q44PEbtva2A7Q5Dj9i1vClgxJ1f_uQ0IgHenWFrPT8D0=(MarketDepth #=qCydwZ2s4jl4x7xjYQnmAqw==, Order #=qBLU3cKyzzand1rLsftF9ow==, Quote #=qY4en6thpoQC8ILZ8A6VZTA==, Boolean #=q8tuVZpzVVQ5$8Bkke0kEsl8_O06H0dtnIq$RH6JVbOk=) at StockSharp.Algo.Testing.MarketEmulator.#=qCnNUlJlhqiejt_l1Na0tfxN55VpcwEuhIHbBmoYGUDI=(Order #=qdPBWyUclbn55fbHJ5ZM5lg==, MarketDepth #=q9JHe2VxG43_oJ1jRvqfuyw==) at StockSharp.Algo.Testing.MarketEmulator.#=qJlRCk4$RbdJMITLwh3ijcQ==(SynchronizedDictionary2 #=qFEjqwWf__1uxLhF9cwZVBQ==) at Ecng.Collections.CollectionHelper.SyncDo[TCollection](TCollection collection, Action1 action) at StockSharp.Algo.Testing.MarketEmulator.#=qlKjbfjEAeAUGcPu0nXkl6w==() at StockSharp.Algo.Testing.MarketEmulator.UpdateQuotes(IEnumerable`1 marketDepths) at StockSharp.Algo.TraderHelper.GetTheoreticalTrades(MarketDepth depth, Order order)

esper
esper

А если этот же метод вызывать с ордером, то ругается на нулевой размер volume, хотя он явно не нулевой! Сталкивался с подобной проблемой, у меня дело было в том, что поле Security у стратегии не было задано и вываливался exception после совершения первой сделки при подсчете прибыли в PnlManager, и заявка при этом считалась неисполненной.

Alexander
Alexander

а order.balance чему равен? версия библиотеки у вас, вроде, не первой свежести :)

Den
Den Autor

Alexander Mukhanchikov: а order.balance чему равен? версия библиотеки у вас, вроде, не первой свежести :)

Order.Balance равен дефолтному (по факту нулю). В комменте #2 есть код. Попробовал явно присваивать ненулевое значение все равно такой же эксепшен летит.

StackTrace на 4.0.3:

System.ArgumentOutOfRangeException was unhandled Message=Объем заявки не правильный. Parameter name: volume Actual value was 0. Source=StockSharp.Algo ParamName=volume StackTrace: at StockSharp.Algo.Testing.MarketEmulator.#=qtI_i5H_te1gY_oyG4BvLrg==(Order #=qZn3kSxtavZ876oTZ3s7DtQ==, Decimal #=qglCHp42CbSGYnnyjGbIb3w==, Decimal #=q5hmYmudWyisVhj_9vVtcvw==) at StockSharp.Algo.Testing.MarketEmulator.#=qyaG1ACgQCfUuMfXwoTfryaWiHDNxwoPTAs3q4HwBPkg=(MarketDepth #=q616zzHJpau19a2f1AXEexQ==, Order #=qeMGgr0l8RSsSS3tNl6$b3w==, Quote #=qhN7NenHHFIfV49xPsfpLrA==) at StockSharp.Algo.Testing.MarketEmulator.#=qXWkpOcTodlWAHo1ZAgSlejf3ahnkMYLe0l95SfAQ_XM=(Order #=qbdHMMgG30uCrjAUx54yrzg==, MarketDepth #=qiaDjikrGpCxmhqeiJqC3JA==) at StockSharp.Algo.Testing.MarketEmulator.#=qJxC2bOGc2MwFseUOAG9wJ3rMCUB8oQ6Z38NyehbRCjQ=.#=qurM5e6S8h5eqOy_B1Ks1NQ==(SynchronizedDictionary2 #=qY0zXzTVLlks$L7O1c6JtaQ==) at Ecng.Collections.CollectionHelper.SyncDo[TCollection](TCollection collection, Action1 action) at StockSharp.Algo.Testing.MarketEmulator.#=qcn9deBXz5Gb49TtPGZKHGw==(Security #=qNu55WUxwTqnMXBQQfvjRAQ==, IEnumerable1 #=qbmwQlHClTveyW24JHCOLZg==) at StockSharp.Algo.Testing.MarketEmulator.UpdateQuotes(IEnumerable1 marketDepths) at StockSharp.Algo.TraderHelper.GetTheoreticalTrades(MarketDepth depth, Order order)