← Zurück

4.2.2 Ошибка тестера

Скачал 4.2.2 в SampleHistoryTesting, хотел потестировать как теперь тестер работает со стаканами,

поменял : var timeFrame = TimeSpan.FromMilliseconds(10);

трейдер вылетает , вот что пишет в лог :

0001/01/01 00:00:00.000| |HistoryEmulationTrader|Connect 0001/01/01 00:00:00.000| |HistoryEmulationTrader|RCM: Connecting PrevState = -1 CurrState = -1. 0001/01/01 00:00:00.000| |HistoryEmulationTrader|StartExport 0001/01/01 00:00:00.000|Debug |HistoryEmulationTrader|BP:Connect,T=0001/01/01 00:00:00.000 0001/01/01 00:00:00.000|Debug |HistoryEmulationTrader|BP:Portfolio,T=2014/01/10 19:19:48.441,Name=test account 2014/01/10 19:19:48.441|Debug |HistoryEmulationTrader|BP:Time,T=2013.10.01 00:00:00.000,ID= 2013/10/01 00:00:00.000| |HistoryEmulationTrader|RCM: Trader ConnectionState = Connected CurrState = Connected PrevState = -1 2013/10/01 00:00:00.000| |HistoryEmulationTrader|Создан новый портфель test account. 2014/01/10 19:19:48.538|Debug |#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=| --> Security,T=2014/01/10 19:19:48.452,SecId=S#:RIZ3@FORTS, Native: 2013/10/01 00:00:00.000|Debug |HistoryEmulationTrader|BP:Security,T=2014/01/10 19:19:48.452,SecId=S#:RIZ3@FORTS, Native: 2014/01/10 19:19:48.452|Debug |HistoryEmulationTrader|BP:SecurityLookupResult,T=0001/01/01 00:00:00.000 0001/01/01 00:00:00.000| |HistoryEmulationTrader|Изменение состояния эмуляции Stopped -> Starting 0001/01/01 00:00:00.000|Debug |HistoryEmulationTrader|BP:Level1,T=2014/01/10 19:19:48.468,Sec=S#:RIZ3@FORTS, Native:,Changes=StepPrice=2,MinPrice=10,MaxPrice=1000000,MarginBuy=10000,MarginSell=10000 2014/01/10 19:19:48.468|Debug |HistoryEmulationTrader|BP:MarketData,T=0001/01/01 00:00:00.000,Sec=S#:RIZ3@FORTS, Native:,Types=MarketDepth 0001/01/01 00:00:00.000| |HistoryEmulationTrader|Инструмент RIZ3@FORTS зарегистрирован на получение рыночных данных для MarketDepth. 2014/01/10 19:19:48.693|Debug |#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=| --> Security,T=2014/01/10 19:19:48.658,SecId=S#:RIZ3@FORTS, Native: 0001/01/01 00:00:00.000| |HistoryEmulationTrader|Изменение состояния эмуляции Starting -> Started 0001/01/01 02:00:00.000|Debug |SS_RIZ3@FORTS_test account|Переход из состояния Stopped в Started. 0001/01/01 02:00:00.000| |SS_RIZ3@FORTS_test account|Стратегия запущена. [0,-1]. Позиция при старте 0. 0001/01/01 00:00:00.000|Debug |HistoryEmulationTrader|BP:SecurityLookupResult,T=0001/01/01 00:00:00.000 0001/01/01 00:00:00.000|Debug |HistoryEmulationTrader|BP:Portfolio,T=2014/01/10 19:19:48.658,Name=test account 2014/01/10 19:19:48.658|Debug |HistoryEmulationTrader|BP:Security,T=2014/01/10 19:19:48.658,SecId=S#:RIZ3@FORTS, Native: 2014/01/10 19:19:48.658|Debug |HistoryEmulationTrader|BP:Level1,T=2014/01/10 19:19:48.658,Sec=S#:RIZ3@FORTS, Native:,Changes=StepPrice=2,MinPrice=10,MaxPrice=1000000,MarginBuy=10000,MarginSell=10000 2014/01/10 19:19:48.658|Debug |HistoryEmulationTrader|BP:MarketData,T=0001/01/01 00:00:00.000,Sec=S#:RIZ3@FORTS, Native:,Types=Trades 0001/01/01 00:00:00.000| |HistoryEmulationTrader|Инструмент RIZ3@FORTS зарегистрирован на получение рыночных данных для Trades. 0001/01/01 00:00:00.000|Debug |HistoryEmulationTrader|BP:Connect,T=0001/01/01 00:00:00.000 2014/01/10 19:19:48.905| |HistoryMessageAdapter|Loading 01.10.2013 0:00:00 Events: 0 0001/01/01 00:00:00.000|Debug |HistoryEmulationTrader|BP:MarketDataError,T=0001/01/01 00:00:00.000,Error=Exception of type 'System.OutOfMemoryException' was thrown. 0001/01/01 00:00:00.000|Error |HistoryEmulationTrader|System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown. at System.Collections.Generic.List1.set_Capacity(Int32 value) at System.Collections.Generic.List1.Add(T item) at StockSharp.Algo.Testing.HistoryMessageAdapter.#=qrW$Q8LXYr0BMhWw22gu$8w==(DateTime #=qlDFDc7x9gBhsjDL_CPSTpw==) at StockSharp.Algo.Storages.InMemoryMarketDataStorage1.Load(DateTime date) at StockSharp.Algo.Storages.InMemoryMarketDataStorage1.#=qB4Y8x19uag8nNfdDhgwKkSBNgtQiXVNRdUhC6dBcmfLoxNuU1cZXavJ2_EH97BGwsUKNovDbqLY4coR$JXAHDg==(DateTime #=qLFAs8ib8LZXZprQU5_t6eg==) at StockSharp.Algo.Storages.BasketMarketDataStorage.Load(DateTime date) at StockSharp.Algo.Testing.HistoryMessageAdapter.#=qC0_SrmH7qtAHMJZD2oNPFg==() 0001/01/01 00:00:00.000| |HistoryEmulationTrader|Изменение состояния эмуляции Stopped -> Stopping 0001/01/01 00:00:00.000|Debug |HistoryEmulationTrader|BP:Disconnect,T=0001/01/01 00:00:00.000 0001/01/01 00:00:00.000|Error |HistoryEmulationTrader|System.InvalidOperationException: Подключение в состоянии Connected получило неожиданное сообщение типа 'DisconnectMessage'. 0001/01/01 00:00:00.000| |HistoryEmulationTrader|Изменение состояния эмуляции Stopping -> Stopped

War dieses Thema hilfreich?

Thema teilen

Kommentare (13)

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

longtrades
longtrades Autor

А это уже RealTimeEmulationTrader<QuikTrader>:

0001/01/01 00:00:00.000| |QuikTrader|Инструмент RIH4@FORTS зарегистрирован на получение рыночных данных для MarketDepth. 0001/01/01 00:00:00.000| |RealTimeEmulationTrader1|Инструмент RIH4@FORTS зарегистрирован на получение рыночных данных для MarketDepth. 2014/01/10 19:52:55.973| |RealTimeEmulationTrader1|RegisterOrder: 0/0 Покупка Цена=140150 Объем=1 Сост=None Бал=0 2014/01/10 19:52:55.973| |RealTimeEmulationTrader1|New order: 71537518/0 Покупка Цена=140150 Объем=1 Сост=Pending Бал=1 2014/01/10 19:52:55.973| |RealTimeEmulationTrader1|RegisterOrder: 0/0 Покупка Цена=140140 Объем=1 Сост=None Бал=0 2014/01/10 19:52:55.973| |RealTimeEmulationTrader1|New order: 71537519/0 Покупка Цена=140140 Объем=1 Сост=Pending Бал=1 2014/01/10 19:52:55.973| |RealTimeEmulationTrader1|RegisterOrder: 0/0 Продажа Цена=140170 Объем=1 Сост=None Бал=0 2014/01/10 19:52:55.973| |RealTimeEmulationTrader1|New order: 71537520/0 Продажа Цена=140170 Объем=1 Сост=Pending Бал=1 2014/01/10 19:52:55.973| |RealTimeEmulationTrader1|RegisterOrder: 0/0 Продажа Цена=140180 Объем=1 Сост=None Бал=0 2014/01/10 19:52:55.973| |RealTimeEmulationTrader1|New order: 71537521/0 Продажа Цена=140180 Объем=1 Сост=Pending Бал=1 2014/01/10 19:52:56.053| |#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=|Заявка 71537518 зарегистрирована. 2014/01/10 19:52:56.073|Error |EmulationMessageAdapter|System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. at System.Collections.Generic.Dictionary2.get_Item(TKey key) at StockSharp.Algo.Testing.MarketEmulator.#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=.#=qfULSaBv6xGAEMSeQLF1RsoJ_Bu0plhNwyM1eF1PTshw=(String #=qLNUrNeh5qDjQ3uzrCchZKw==, DateTime #=qXbMtPuFezoo2rfAgGFXwsg==, Decimal #=qYTJg$XdViyo1g0qELZwsHw==) at StockSharp.Algo.Testing.MarketEmulator.#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=.#=q6eCvMHmkPgU8SdF2kcGdEVZ7aUtzxTgA0r_$SBAE$nQ=(DateTime #=qZVt6XjvL5w1gX$wgIIg3SQ==, ExecutionMessage #=qlnTHSvso9B2gI3CR7u26rg==, ICollection1 #=qlxKCK_V9ybYgmLriuMZALg==) at StockSharp.Algo.Testing.MarketEmulator.#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=.#=qtzMNRXSTtnxuxnJu5Ku4FA==(Message #=q84rQ$Cju8GDFCmreZlR8dw==, ICollection1 #=qdZMEF1gFCcqFN3c4qLCDaA==) at StockSharp.Algo.Testing.MarketEmulator.#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=.#=qtzMNRXSTtnxuxnJu5Ku4FA==(Message #=q84rQ$Cju8GDFCmreZlR8dw==, ICollection1 #=qdZMEF1gFCcqFN3c4qLCDaA==) at StockSharp.Algo.Testing.MarketEmulator.#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=.#=qTbUFoDA2rXZyjzCCG_XPftOHaeC5WZuAvpuk7mJO1PdII0DMmcqvSWyGFRXx1NHLFC5Jc_O5j3jtgCtrnPQKMA==(Message #=qBqz1_q7PkwLyYOQh3Fxxsw==) at StockSharp.Algo.Testing.MarketEmulator.#=qdWC8DOndbS63yr7$WS97Gjc4rMUK7JDw4iLp4x6wYJmI59mapOn9YtiPDt2OQ3zfp8tjkezBELIzSjO6042ITQ==(Message #=qrGT6rGq6ZVRX6N6PcepLyg==) at StockSharp.Algo.Testing.EmulationMessageAdapter.OnSendMessage(Message message) at StockSharp.Algo.BaseMessageAdapter.#=qkT6mi4rHndV8VCRB6R893BjaiHGPj2H1PXgqcSIt2F0=(Message #=qLG_kLMTrWaCIpM031QnUSg==, IMessageAdapter #=qUZz7_lx8QB3uTpZDJPHWpw==) at System.Action2.Invoke(T1 arg1, T2 arg2) at Ecng.Common.DelegateHelper.SafeInvoke[T1,T2](Action2 handler, T1 arg1, T2 arg2) at StockSharp.Algo.MessageProcessorPool.#=qyfz22CYUbaeLe8bgCpkivrLJFdeklqcmRdRkCvdQ_Vo=(Message #=q06qBIB5TLqxt1iPpTMDxMg==, IMessageAdapter #=q_TZzvCMw7IMBZ$vcIA4ooA==) at Ecng.Common.DelegateHelper.SafeInvoke[T1,T2](Action2 handler, T1 arg1, T2 arg2) at StockSharp.Algo.MessageProcessor.#=qr7TIQ28qaoSsJfZVdq5WgQ==() 2014/01/10 19:52:56.075| |#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=|Заявка 71537519 зарегистрирована. 2014/01/10 19:52:56.085|Error |EmulationMessageAdapter|System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. at System.Collections.Generic.Dictionary2.get_Item(TKey key) at StockSharp.Algo.Testing.MarketEmulator.#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=.#=qfULSaBv6xGAEMSeQLF1RsoJ_Bu0plhNwyM1eF1PTshw=(String #=qLNUrNeh5qDjQ3uzrCchZKw==, DateTime #=qXbMtPuFezoo2rfAgGFXwsg==, Decimal #=qYTJg$XdViyo1g0qELZwsHw==) at StockSharp.Algo.Testing.MarketEmulator.#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=.#=q6eCvMHmkPgU8SdF2kcGdEVZ7aUtzxTgA0r_$SBAE$nQ=(DateTime #=qZVt6XjvL5w1gX$wgIIg3SQ==, ExecutionMessage #=qlnTHSvso9B2gI3CR7u26rg==, ICollection1 #=qlxKCK_V9ybYgmLriuMZALg==) at StockSharp.Algo.Testing.MarketEmulator.#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=.#=qtzMNRXSTtnxuxnJu5Ku4FA==(Message #=q84rQ$Cju8GDFCmreZlR8dw==, ICollection1 #=qdZMEF1gFCcqFN3c4qLCDaA==) at StockSharp.Algo.Testing.MarketEmulator.#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=.#=qtzMNRXSTtnxuxnJu5Ku4FA==(Message #=q84rQ$Cju8GDFCmreZlR8dw==, ICollection1 #=qdZMEF1gFCcqFN3c4qLCDaA==) at StockSharp.Algo.Testing.MarketEmulator.#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=.#=qTbUFoDA2rXZyjzCCG_XPftOHaeC5WZuAvpuk7mJO1PdII0DMmcqvSWyGFRXx1NHLFC5Jc_O5j3jtgCtrnPQKMA==(Message #=qBqz1_q7PkwLyYOQh3Fxxsw==) at StockSharp.Algo.Testing.MarketEmulator.#=qdWC8DOndbS63yr7$WS97Gjc4rMUK7JDw4iLp4x6wYJmI59mapOn9YtiPDt2OQ3zfp8tjkezBELIzSjO6042ITQ==(Message #=qrGT6rGq6ZVRX6N6PcepLyg==) at StockSharp.Algo.Testing.EmulationMessageAdapter.OnSendMessage(Message message) at StockSharp.Algo.BaseMessageAdapter.#=qkT6mi4rHndV8VCRB6R893BjaiHGPj2H1PXgqcSIt2F0=(Message #=qLG_kLMTrWaCIpM031QnUSg==, IMessageAdapter #=qUZz7_lx8QB3uTpZDJPHWpw==) at System.Action2.Invoke(T1 arg1, T2 arg2) at Ecng.Common.DelegateHelper.SafeInvoke[T1,T2](Action2 handler, T1 arg1, T2 arg2) at StockSharp.Algo.MessageProcessorPool.#=qyfz22CYUbaeLe8bgCpkivrLJFdeklqcmRdRkCvdQ_Vo=(Message #=q06qBIB5TLqxt1iPpTMDxMg==, IMessageAdapter #=q_TZzvCMw7IMBZ$vcIA4ooA==) at Ecng.Common.DelegateHelper.SafeInvoke[T1,T2](Action2 handler, T1 arg1, T2 arg2) at StockSharp.Algo.MessageProcessor.#=qr7TIQ28qaoSsJfZVdq5WgQ==() 2014/01/10 19:52:56.085| |#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=|Заявка 71537520 зарегистрирована. 2014/01/10 19:52:56.095|Error |EmulationMessageAdapter|System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. at System.Collections.Generic.Dictionary2.get_Item(TKey key) at StockSharp.Algo.Testing.MarketEmulator.#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=.#=qfULSaBv6xGAEMSeQLF1RsoJ_Bu0plhNwyM1eF1PTshw=(String #=qLNUrNeh5qDjQ3uzrCchZKw==, DateTime #=qXbMtPuFezoo2rfAgGFXwsg==, Decimal #=qYTJg$XdViyo1g0qELZwsHw==) at StockSharp.Algo.Testing.MarketEmulator.#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=.#=q6eCvMHmkPgU8SdF2kcGdEVZ7aUtzxTgA0r_$SBAE$nQ=(DateTime #=qZVt6XjvL5w1gX$wgIIg3SQ==, ExecutionMessage #=qlnTHSvso9B2gI3CR7u26rg==, ICollection1 #=qlxKCK_V9ybYgmLriuMZALg==) at StockSharp.Algo.Testing.MarketEmulator.#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=.#=qtzMNRXSTtnxuxnJu5Ku4FA==(Message #=q84rQ$Cju8GDFCmreZlR8dw==, ICollection1 #=qdZMEF1gFCcqFN3c4qLCDaA==) at StockSharp.Algo.Testing.MarketEmulator.#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=.#=qtzMNRXSTtnxuxnJu5Ku4FA==(Message #=q84rQ$Cju8GDFCmreZlR8dw==, ICollection1 #=qdZMEF1gFCcqFN3c4qLCDaA==) at StockSharp.Algo.Testing.MarketEmulator.#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=.#=qTbUFoDA2rXZyjzCCG_XPftOHaeC5WZuAvpuk7mJO1PdII0DMmcqvSWyGFRXx1NHLFC5Jc_O5j3jtgCtrnPQKMA==(Message #=qBqz1_q7PkwLyYOQh3Fxxsw==) at StockSharp.Algo.Testing.MarketEmulator.#=qdWC8DOndbS63yr7$WS97Gjc4rMUK7JDw4iLp4x6wYJmI59mapOn9YtiPDt2OQ3zfp8tjkezBELIzSjO6042ITQ==(Message #=qrGT6rGq6ZVRX6N6PcepLyg==) at StockSharp.Algo.Testing.EmulationMessageAdapter.OnSendMessage(Message message) at StockSharp.Algo.BaseMessageAdapter.#=qkT6mi4rHndV8VCRB6R893BjaiHGPj2H1PXgqcSIt2F0=(Message #=qLG_kLMTrWaCIpM031QnUSg==, IMessageAdapter #=qUZz7_lx8QB3uTpZDJPHWpw==) at System.Action2.Invoke(T1 arg1, T2 arg2) at Ecng.Common.DelegateHelper.SafeInvoke[T1,T2](Action2 handler, T1 arg1, T2 arg2) at StockSharp.Algo.MessageProcessorPool.#=qyfz22CYUbaeLe8bgCpkivrLJFdeklqcmRdRkCvdQ_Vo=(Message #=q06qBIB5TLqxt1iPpTMDxMg==, IMessageAdapter #=q_TZzvCMw7IMBZ$vcIA4ooA==) at Ecng.Common.DelegateHelper.SafeInvoke[T1,T2](Action2 handler, T1 arg1, T2 arg2) at StockSharp.Algo.MessageProcessor.#=qr7TIQ28qaoSsJfZVdq5WgQ==() 2014/01/10 19:52:56.095| |#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=|Заявка 71537521 зарегистрирована. 2014/01/10 19:52:56.105|Error |EmulationMessageAdapter|System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. at System.Collections.Generic.Dictionary`2.get_Item(TKey key)

longtrades
longtrades Autor

Чем дальше в лес тем больше дров :)

longtrades
longtrades Autor

Вот это новеведение : ((BaseMessageAdapter)_trader.UnderlyingTrader.MarketDataAdapter).MarketTimeChangedInterval = Кажется в РеалТаймЕмулейшнТрейдере неработает , событие _trader.MarketTimeChanged выскакивает намного чаще чем заданный интервал .

longtrades
longtrades Autor

4.2.2.1 событие trader.MarketTimeChanged не срабатывает вообще.

longtrades
longtrades Autor

4.2.2.1

                        account = new Portfolio
                        {
                            Name = "test account",
                            BeginValue = 1000000,
                            CurrentValue = 1000000,
                        };

2014/01/13 08:45:50.375| |RealTimeEmulationTrader1|New order: 31534160/0 Продажа Цена=140000 Объем=1 Сост=Pending Бал=1 2014/01/13 08:45:50.375| |RealTimeEmulationTrader1|RegisterOrder: 0/0 Продажа Цена=140010 Объем=1 Сост=None Бал=0 2014/01/13 08:45:50.375| |RealTimeEmulationTrader1|New order: 31534161/0 Продажа Цена=140010 Объем=1 Сост=Pending Бал=1 2014/01/13 08:45:50.537| |#=q$YcRd3nYZ$JfXzxRIGqQ6rDZuPnpQEtKaMS6lbi787Y=|Заявка 31534158 невозможно зарегистрировать. Причина 'На счету test account недостаточно денег для регистрации заявки 31534158. Необходимо 139970, имеется 0, заблокировано 0.'. 2014/01/13 08:45:50.537| |#=q$YcRd3nYZ$JfXzxRIGqQ6rDZuPnpQEtKaMS6lbi787Y=|Заявка 31534159 невозможно зарегистрировать. Причина 'На счету test account недостаточно денег для регистрации заявки 31534159. Необходимо 139960, имеется 0, заблокировано 0.'. 2014/01/13 08:45:50.537| |#=q$YcRd3nYZ$JfXzxRIGqQ6rDZuPnpQEtKaMS6lbi787Y=|Заявка 31534160 невозможно зарегистрировать. Причина 'На счету test account недостаточно денег для регистрации заявки 31534160. Необходимо 140000, имеется 0, заблокировано 0.'. 2014/01/13 08:45:50.537| |#=q$YcRd3nYZ$JfXzxRIGqQ6rDZuPnpQEtKaMS6lbi787Y=|Заявка 31534161 невозможно зарегистрировать. Причина 'На счету test account недостаточно денег для регистрации заявки 31534161. Необходимо 140010, имеется 0, заблокировано 0.'. 2014/01/13 08:45:50.375| |RealTimeEmulationTrader1|OrderFailed: 31534158/0 Покупка Цена=139970 Объем=1 Сост=Failed Бал=1 System.InvalidOperationException: На счету test account недостаточно денег для регистрации заявки 31534158. Необходимо 139970, имеется 0, заблокировано 0. 2014/01/13 08:45:50.583|Error |EmulationMessageAdapter|System.ArgumentNullException: Value cannot be null. Parameter name: key at System.Collections.Generic.Dictionary2.FindEntry(TKey key) at System.Collections.Generic.Dictionary2.TryGetValue(TKey key, TValue& value) at Ecng.Collections.SynchronizedDictionary2.TryGetValue(TKey key, TValue& value) at Ecng.Collections.CollectionHelper.TryGetValue[TKey,TValue](IDictionary2 dict, TKey key) at StockSharp.Algo.Strategies.Strategy.#=qFwMpPEM_tvVvSi6iRBFiRLW4meyknOrzbiImDJzq5lM=(IEnumerable1 #=q9kzhMOAvxzlHae5WavmcZQ==, Action1 #=q9kq2CjeNIxO8CzJcQfTx7g==) at StockSharp.Algo.Strategies.Strategy.#=qUZT91F2tl$G4sTpYKq2YYkOKsMPcRdlJc5UOCpvJLRQ=(IEnumerable1 #=qmw5lRH02Z2zV4XYzlaYIFA==) at System.Action1.Invoke(T obj) at Ecng.Common.DelegateHelper.SafeInvoke(Action1 handler, T arg) at StockSharp.Algo.Connector.#=q9kiYa3YOJvJHpOf4_CZ$7ODQZ4FWJiGrnYzDu_M3JJU=(IEnumerable1 #=qft6IJbFjXqw7Qb6ooJDbiw==) at StockSharp.Algo.Connector.RaiseOrderFailed(OrderFail fail) at StockSharp.Algo.Connector.#=qGNeR93tAi$8qZpzXWnNIz1s_lBf9UxC9kGfGrQdQJ_U=.#=qcnhXXB5RpZN7MBxDgZpAtX0bF_H_Nqt6EaAvvVTbIdk=(Security #=qP2pRT8vMlPqtYpdNPSkxaw==) at StockSharp.Algo.Connector.#=qGNeR93tAi$8qZpzXWnNIz1s_lBf9UxC9kGfGrQdQJ_U=.#=q5DJsWZWBjWedAkimytg3tyLFh5CVLt3rrw8oHd5mHtg=(Security #=qKYHOoaHWC5Wia9ByxpUGkg==, ExecutionMessage #=qVvSl7QyfCi41P2ziSiZ6IA==) at StockSharp.Algo.Connector.#=qLJsgM3GzJ7tqK2BVLDTbhlzW01a7Uy73FCDLqd$dyWw=[TMessage](TMessage #=qr0OndF_zvwuIbh0E_U4tYA==, Func2 #=qQPk9XQN$kb6k$sCks6O$uw==, Action2 #=q0_wkuQiKvSaBKMVSKjoABw==, Boolean #=qvnEKBETV3HTQh$tE8ixeNNN_OtQm7GmML4Q_L0CSzm8=) at StockSharp.Algo.Connector.#=qK$pbez39fpAhD3GbRjdikApVSuADxte$5iEktYfiKcY=(ExecutionMessage #=q3CafiSHjgZJx2nzhS0vzxg==) at StockSharp.Algo.Connector.OnProcessMessage(Message message, MessageAdapterTypes adapterType, MessageDirections direction) at StockSharp.Algo.Testing.BaseEmulationTrader.OnProcessMessage(Message message, MessageAdapterTypes adapterType, MessageDirections direction) at StockSharp.Algo.Connector.#=q3C7W7Dd8ugK0CA29IgeTXicsFLJPGjeol9IHkUD8pJvZlE74LsV$_IQajDvzgwV9(Message #=qA$82WHALr6hnrG$136xAyw==) at Ecng.Common.DelegateHelper.SafeInvoke(Action1 handler, T arg) at StockSharp.Algo.MessageAdapter.#=qTo0eyOkx9Pr2Nck3bsLNnGB_TksY96Gob1eC86EH0F8=(Message #=qUg7wnwmxpZJGIbBwYxTqwg==, IMessageAdapter #=qHzcBMoAe_C0g0L$_BZGW$A==) at System.Action2.Invoke(T1 arg1, T2 arg2) at Ecng.Common.DelegateHelper.SafeInvoke[T1,T2](Action2 handler, T1 arg1, T2 arg2) at StockSharp.Algo.MessageProcessorPool.#=qAgVt02jAwjeK7jPrV71_o_QA0MDHRMZa5FK_8Zfn55A=(Message #=qf9hxNwutSsyVfG1iH0NhHQ==, IMessageAdapter #=qeqLNnvG$fc0bakU1cnbE2w==) at Ecng.Common.DelegateHelper.SafeInvoke[T1,T2](Action2 handler, T1 arg1, T2 arg2) at StockSharp.Algo.MessageProcessor.#=qjFfnpPu83B4VeiI5KQZNYQ==() 2014/01/13 08:45:50.375| |RealTimeEmulationTrader`1|OrderFailed: 31534159/0 Покупка Цена=139960 Объем=1 Сост=Failed Бал=1 System.InvalidOperationException: На счету test account недостаточно денег для регистрации заявки 31534159. Необходимо 139960, имеется 0, заблокировано 0.

Mikhail Sukhov
Mikhail Sukhov

longtrades: 2014/01/13 08:45:50.583|Error |EmulationMessageAdapter|System.ArgumentNullException: Value cannot be null. Parameter name: key at System.Collections.Generic.Dictionary2.FindEntry(TKey key) at System.Collections.Generic.Dictionary2.TryGetValue(TKey key, TValue& value)

В каком то из обработчиков вы обнуляете OrderFail.Order

longtrades
longtrades Autor

У меня эсть вот такое :


 _trader.OrdersCancelFailed += fails => this.GuiAsync(() =>
                        {
                            foreach (var fail in fails)
                            {
                                foreach (var ord in _trader.Orders.Where(x => x.Id == fail.Order.Id && x.State == OrderStates.Active))
                                {
                                    ord.State = OrderStates.Failed;
                                }

                                SaveLog(fail.Error.ToString() + fail.Order.Security.Id.ToString());

                            }
                        });

Может из-за этого, попробую забрать . Спасибо.

А как насчет нехватки денег на счете ?

longtrades
longtrades Autor

После сегодняшнего обновления 4.2.2.1 RealTimeEmulationTrader все также не хочет регистрировать заявку, пишет :

|#=q$YcRd3nYZ$JfXzxRIGqQ6rDZuPnpQEtKaMS6lbi787Y=|Заявка 31534158 невозможно зарегистрировать. Причина 'На счету test account недостаточно денег для регистрации заявки 31534158. Необходимо 139970, имеется 0, заблокировано 0.'.

сделал так :


 var portfolio = new Portfolio
                        {
                            Name = "test account",
                            BeginValue = 1000000,
                            CurrentValue = 1000000,
                        };

                        // передаем первоначальное значение размера портфеля в эмулятор
                        ((MessageAdapter)_trader.TransactionAdapter).SendInMessage(portfolio.ToMessage());
                        ((MessageAdapter)_trader.TransactionAdapter).SendInMessage(new PortfolioChangeMessage
                        {
                            PortfolioName = portfolio.Name

                        }.Add(PositionChangeTypes.BeginValue, portfolio.BeginValue));

Не помогло :(

esper
esper

В RealTimeEmulationTrader.Portfolios что-нибудь есть? Событие появления портфеля вызывается? Что в логе?

longtrades
longtrades Autor

Вот Лог , портфели XXXXXXXXXXX и YYYYYYYYYYY реальные

0001/01/01 00:00:00.000| |RealTimeEmulationTrader1|Connect 2014/01/13 16:17:37.874| |RealTimeEmulationTrader1|Создан новый портфель test account. 0001/01/01 00:00:00.000| |QuikTrader|Connect 2014/01/13 16:17:37.977| |RealTimeEmulationTrader1|StartExport 0001/01/01 00:00:00.000| |QuikTrader|StartExport 2014/01/13 16:17:42.903| |QuikTrader|Создан новый портфель XXXXXXXXXXX. 2014/01/13 16:17:42.949| |QuikTrader|Создан новый портфель YYYYYYYYYYY. 2014/01/13 16:17:42.903| |RealTimeEmulationTrader1|Создан новый портфель XXXXXXXXXXX. 2014/01/13 16:17:42.949| |RealTimeEmulationTrader1|Создан новый портфель YYYYYYYYYYY. 2014/01/13 16:17:43.160| |QuikTrader|Инструмент RIH4@FORTS зарегистрирован на получение рыночных данных для Trades. 2014/01/13 16:17:43.160| |RealTimeEmulationTrader1|Инструмент RIH4@FORTS зарегистрирован на получение рыночных данных для Trades. 2014/01/13 16:17:45.357| |QuikTrader|Инструмент RIH4@FORTS зарегистрирован на получение рыночных данных для MarketDepth. 2014/01/13 16:17:45.357| |RealTimeEmulationTrader1|Инструмент RIH4@FORTS зарегистрирован на получение рыночных данных для MarketDepth. 2014/01/13 16:18:09.455| |RealTimeEmulationTrader1|RegisterOrder: 0/0 Покупка Цена=140130 Объем=1 Сост=None Бал=0 2014/01/13 16:18:09.455| |RealTimeEmulationTrader1|New order: 58657563/0 Покупка Цена=140130 Объем=1 Сост=Pending Бал=1 2014/01/13 16:18:09.455| |RealTimeEmulationTrader1|RegisterOrder: 0/0 Покупка Цена=140120 Объем=1 Сост=None Бал=0 2014/01/13 16:18:09.455| |RealTimeEmulationTrader1|New order: 58657564/0 Покупка Цена=140120 Объем=1 Сост=Pending Бал=1 2014/01/13 16:18:09.455| |RealTimeEmulationTrader1|RegisterOrder: 0/0 Продажа Цена=140150 Объем=1 Сост=None Бал=0 2014/01/13 16:18:09.455| |RealTimeEmulationTrader1|New order: 58657565/0 Продажа Цена=140150 Объем=1 Сост=Pending Бал=1 2014/01/13 16:18:09.455| |RealTimeEmulationTrader1|RegisterOrder: 0/0 Продажа Цена=140160 Объем=1 Сост=None Бал=0 2014/01/13 16:18:09.455| |RealTimeEmulationTrader1|New order: 58657566/0 Продажа Цена=140160 Объем=1 Сост=Pending Бал=1 2014/01/13 16:18:09.618| |#=qLqSWluYq5eq8r5BAXH7bjVSftVQ7gprkXAHMBbHcoGs=|Заявка 58657563 невозможно зарегистрировать. Причина 'На счету test account недостаточно денег для регистрации заявки 58657563. Необходимо 140130, имеется 0, заблокировано 0.'. 2014/01/13 16:18:09.619| |#=qLqSWluYq5eq8r5BAXH7bjVSftVQ7gprkXAHMBbHcoGs=|Заявка 58657564 невозможно зарегистрировать. Причина 'На счету test account недостаточно денег для регистрации заявки 58657564. Необходимо 140120, имеется 0, заблокировано 0.'. 2014/01/13 16:18:09.619| |#=qLqSWluYq5eq8r5BAXH7bjVSftVQ7gprkXAHMBbHcoGs=|Заявка 58657565 невозможно зарегистрировать. Причина 'На счету test account недостаточно денег для регистрации заявки 58657565. Необходимо 140150, имеется 0, заблокировано 0.'. 2014/01/13 16:18:09.619| |#=qLqSWluYq5eq8r5BAXH7bjVSftVQ7gprkXAHMBbHcoGs=|Заявка 58657566 невозможно зарегистрировать. Причина 'На счету test account недостаточно денег для регистрации заявки 58657566. Необходимо 140160, имеется 0, заблокировано 0.'. 2014/01/13 16:18:09.589| |RealTimeEmulationTrader1|OrderFailed: 58657563/0 Покупка Цена=140130 Объем=1 Сост=Failed Бал=1 System.InvalidOperationException: На счету test account недостаточно денег для регистрации заявки 58657563. Необходимо 140130, имеется 0, заблокировано 0. 2014/01/13 16:18:09.591| |RealTimeEmulationTrader1|OrderFailed: 58657564/0 Покупка Цена=140120 Объем=1 Сост=Failed Бал=1 System.InvalidOperationException: На счету test account недостаточно денег для регистрации заявки 58657564. Необходимо 140120, имеется 0, заблокировано 0. 2014/01/13 16:18:09.592| |RealTimeEmulationTrader1|OrderFailed: 58657565/0 Продажа Цена=140150 Объем=1 Сост=Failed Бал=1 System.InvalidOperationException: На счету test account недостаточно денег для регистрации заявки 58657565. Необходимо 140150, имеется 0, заблокировано 0. 2014/01/13 16:18:09.593| |RealTimeEmulationTrader1|OrderFailed: 58657566/0 Продажа Цена=140160 Объем=1 Сост=Failed Бал=1 System.InvalidOperationException: На счету test account недостаточно денег для регистрации заявки 58657566. Необходимо 140160, имеется 0, заблокировано 0. 2014/01/13 16:18:09.681| |RealTimeEmulationTrader1|RegisterOrder: 0/0 Покупка Цена=140130 Объем=1 Сост=None Бал=0 2014/01/13 16:18:09.681| |RealTimeEmulationTrader1|New order: 58657567/0 Покупка Цена=140130 Объем=1 Сост=Pending Бал=1 2014/01/13 16:18:09.689| |#=qLqSWluYq5eq8r5BAXH7bjVSftVQ7gprkXAHMBbHcoGs=|Заявка 58657567 невозможно зарегистрировать. Причина 'На счету test account недостаточно денег для регистрации заявки 58657567. Необходимо 140130, имеется 0, заблокировано 0.'. 2014/01/13 16:18:09.681| |RealTimeEmulationTrader1|RegisterOrder: 0/0 Покупка Цена=140120 Объем=1 Сост=None Бал=0 2014/01/13 16:18:09.681| |RealTimeEmulationTrader1|New order: 58657568/0 Покупка Цена=140120 Объем=1 Сост=Pending Бал=1 2014/01/13 16:18:09.689| |#=qLqSWluYq5eq8r5BAXH7bjVSftVQ7gprkXAHMBbHcoGs=|Заявка 58657568 невозможно зарегистрировать. Причина 'На счету test account недостаточно денег для регистрации заявки 58657568. Необходимо 140120, имеется 0, заблокировано 0.'. 2014/01/13 16:18:09.681| |RealTimeEmulationTrader1|RegisterOrder: 0/0 Продажа Цена=140150 Объем=1 Сост=None Бал=0 2014/01/13 16:18:09.681| |RealTimeEmulationTrader`1|New order: 58657569/0 Продажа Цена=140150 Объем=1 Сост=Pending Бал=1

longtrades
longtrades Autor

но портфель test account есть в RealTimeEmulationTrader.Portfolios причем сделал даже так :


                        _trader.NewPortfolios += portfolios => this.GuiAsync(() =>
                        {
                            account = _accounts.Where(x => x.Name == "test account").FirstOrDefault();
                            if (account != null)
                                account.CurrentValue = 1000000;

                        });

B вижу что CurrentValue портфеля в ордере при его отправке равно 1000000

esper
esper

Не получается воспроизвести. Беру стандартный пример SampleRealTimeTesting, меняю только обработчик на одной кнопке, чтобы не ждать стратегию

private void StartClick(object sender, RoutedEventArgs e)
{
	var sec = _trader.Securities.First(s => s.Id == "RIH4@FORTS");
	var ord = new Order
	{
		Portfolio = _trader.Portfolios.First(),
		Security = sec,
		Volume = 1,
		Price = 130000,

	};

	_trader.RegisterOrder(ord);
}

Заявка выставляется нормально.

longtrades
longtrades Autor

Переделал SampleRealTimeTesting под квик , заявка тоже выставляется нормально .

Спасибо , буду искать проблему в своем коде .

Извиняюсь , за беспокойство.