4.2.2 Ошибка тестера
Atom Ответить
10.01.2014


Скачал 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.List`1.set_Capacity(Int32 value)
at System.Collections.Generic.List`1.Add(T item)
at StockSharp.Algo.Testing.HistoryMessageAdapter.#=qrW$Q8LXYr0BMhWw22gu$8w==(DateTime #=qlDFDc7x9gBhsjDL_CPSTpw==)
at StockSharp.Algo.Storages.InMemoryMarketDataStorage`1.Load(DateTime date)
at StockSharp.Algo.Storages.InMemoryMarketDataStorage`1.#=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



Спасибо:




13 Ответов
longtrades

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


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

0001/01/01 00:00:00.000| |QuikTrader|Инструмент RIH4@FORTS зарегистрирован на получение рыночных данных для MarketDepth.
0001/01/01 00:00:00.000| |RealTimeEmulationTrader`1|Инструмент RIH4@FORTS зарегистрирован на получение рыночных данных для MarketDepth.
2014/01/10 19:52:55.973| |RealTimeEmulationTrader`1|RegisterOrder: 0/0 Покупка Цена=140150 Объем=1 Сост=None Бал=0
2014/01/10 19:52:55.973| |RealTimeEmulationTrader`1|New order: 71537518/0 Покупка Цена=140150 Объем=1 Сост=Pending Бал=1
2014/01/10 19:52:55.973| |RealTimeEmulationTrader`1|RegisterOrder: 0/0 Покупка Цена=140140 Объем=1 Сост=None Бал=0
2014/01/10 19:52:55.973| |RealTimeEmulationTrader`1|New order: 71537519/0 Покупка Цена=140140 Объем=1 Сост=Pending Бал=1
2014/01/10 19:52:55.973| |RealTimeEmulationTrader`1|RegisterOrder: 0/0 Продажа Цена=140170 Объем=1 Сост=None Бал=0
2014/01/10 19:52:55.973| |RealTimeEmulationTrader`1|New order: 71537520/0 Продажа Цена=140170 Объем=1 Сост=Pending Бал=1
2014/01/10 19:52:55.973| |RealTimeEmulationTrader`1|RegisterOrder: 0/0 Продажа Цена=140180 Объем=1 Сост=None Бал=0
2014/01/10 19:52:55.973| |RealTimeEmulationTrader`1|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.Dictionary`2.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==, ICollection`1 #=qlxKCK_V9ybYgmLriuMZALg==)
at StockSharp.Algo.Testing.MarketEmulator.#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=.#=qtzMNRXSTtnxuxnJu5Ku4FA==(Message #=q84rQ$Cju8GDFCmreZlR8dw==, ICollection`1 #=qdZMEF1gFCcqFN3c4qLCDaA==)
at StockSharp.Algo.Testing.MarketEmulator.#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=.#=qtzMNRXSTtnxuxnJu5Ku4FA==(Message #=q84rQ$Cju8GDFCmreZlR8dw==, ICollection`1 #=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.Action`2.Invoke(T1 arg1, T2 arg2)
at Ecng.Common.DelegateHelper.SafeInvoke[T1,T2](Action`2 handler, T1 arg1, T2 arg2)
at StockSharp.Algo.MessageProcessorPool.#=qyfz22CYUbaeLe8bgCpkivrLJFdeklqcmRdRkCvdQ_Vo=(Message #=q06qBIB5TLqxt1iPpTMDxMg==, IMessageAdapter #=q_TZzvCMw7IMBZ$vcIA4ooA==)
at Ecng.Common.DelegateHelper.SafeInvoke[T1,T2](Action`2 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.Dictionary`2.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==, ICollection`1 #=qlxKCK_V9ybYgmLriuMZALg==)
at StockSharp.Algo.Testing.MarketEmulator.#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=.#=qtzMNRXSTtnxuxnJu5Ku4FA==(Message #=q84rQ$Cju8GDFCmreZlR8dw==, ICollection`1 #=qdZMEF1gFCcqFN3c4qLCDaA==)
at StockSharp.Algo.Testing.MarketEmulator.#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=.#=qtzMNRXSTtnxuxnJu5Ku4FA==(Message #=q84rQ$Cju8GDFCmreZlR8dw==, ICollection`1 #=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.Action`2.Invoke(T1 arg1, T2 arg2)
at Ecng.Common.DelegateHelper.SafeInvoke[T1,T2](Action`2 handler, T1 arg1, T2 arg2)
at StockSharp.Algo.MessageProcessorPool.#=qyfz22CYUbaeLe8bgCpkivrLJFdeklqcmRdRkCvdQ_Vo=(Message #=q06qBIB5TLqxt1iPpTMDxMg==, IMessageAdapter #=q_TZzvCMw7IMBZ$vcIA4ooA==)
at Ecng.Common.DelegateHelper.SafeInvoke[T1,T2](Action`2 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.Dictionary`2.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==, ICollection`1 #=qlxKCK_V9ybYgmLriuMZALg==)
at StockSharp.Algo.Testing.MarketEmulator.#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=.#=qtzMNRXSTtnxuxnJu5Ku4FA==(Message #=q84rQ$Cju8GDFCmreZlR8dw==, ICollection`1 #=qdZMEF1gFCcqFN3c4qLCDaA==)
at StockSharp.Algo.Testing.MarketEmulator.#=qc_tQ9SI0DvMToFj2FKGvwm2v$yDNbhn_NJy85cgjG6s=.#=qtzMNRXSTtnxuxnJu5Ku4FA==(Message #=q84rQ$Cju8GDFCmreZlR8dw==, ICollection`1 #=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.Action`2.Invoke(T1 arg1, T2 arg2)
at Ecng.Common.DelegateHelper.SafeInvoke[T1,T2](Action`2 handler, T1 arg1, T2 arg2)
at StockSharp.Algo.MessageProcessorPool.#=qyfz22CYUbaeLe8bgCpkivrLJFdeklqcmRdRkCvdQ_Vo=(Message #=q06qBIB5TLqxt1iPpTMDxMg==, IMessageAdapter #=q_TZzvCMw7IMBZ$vcIA4ooA==)
at Ecng.Common.DelegateHelper.SafeInvoke[T1,T2](Action`2 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

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


Чем дальше в лес тем больше дров :)
Автор топика
Спасибо:

longtrades

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


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

longtrades

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


4.2.2.1 событие trader.MarketTimeChanged не срабатывает вообще.
Автор топика
Спасибо:

longtrades

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


4.2.2.1

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



2014/01/13 08:45:50.375| |RealTimeEmulationTrader`1|New order: 31534160/0 Продажа Цена=140000 Объем=1 Сост=Pending Бал=1
2014/01/13 08:45:50.375| |RealTimeEmulationTrader`1|RegisterOrder: 0/0 Продажа Цена=140010 Объем=1 Сост=None Бал=0
2014/01/13 08:45:50.375| |RealTimeEmulationTrader`1|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| |RealTimeEmulationTrader`1|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.Dictionary`2.FindEntry(TKey key)
at System.Collections.Generic.Dictionary`2.TryGetValue(TKey key, TValue& value)
at Ecng.Collections.SynchronizedDictionary`2.TryGetValue(TKey key, TValue& value)
at Ecng.Collections.CollectionHelper.TryGetValue[TKey,TValue](IDictionary`2 dict, TKey key)
at StockSharp.Algo.Strategies.Strategy.#=qFwMpPEM_tvVvSi6iRBFiRLW4meyknOrzbiImDJzq5lM=(IEnumerable`1 #=q9kzhMOAvxzlHae5WavmcZQ==, Action`1 #=q9kq2CjeNIxO8CzJcQfTx7g==)
at StockSharp.Algo.Strategies.Strategy.#=qUZT91F2tl$G4sTpYKq2YYkOKsMPcRdlJc5UOCpvJLRQ=(IEnumerable`1 #=qmw5lRH02Z2zV4XYzlaYIFA==)
at System.Action`1.Invoke(T obj)
at Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
at StockSharp.Algo.Connector.#=q9kiYa3YOJvJHpOf4_CZ$7ODQZ4FWJiGrnYzDu_M3JJU=(IEnumerable`1 #=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==, Func`2 #=qQPk9XQN$kb6k$sCks6O$uw==, Action`2 #=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[T](Action`1 handler, T arg)
at StockSharp.Algo.MessageAdapter.#=qTo0eyOkx9Pr2Nck3bsLNnGB_TksY96Gob1eC86EH0F8=(Message #=qUg7wnwmxpZJGIbBwYxTqwg==, IMessageAdapter #=qHzcBMoAe_C0g0L$_BZGW$A==)
at System.Action`2.Invoke(T1 arg1, T2 arg2)
at Ecng.Common.DelegateHelper.SafeInvoke[T1,T2](Action`2 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](Action`2 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

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


longtrades Перейти

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


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

longtrades

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


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

 _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

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


После сегодняшнего обновления 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

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


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

longtrades

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


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

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

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


но портфель 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

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


Не получается воспроизвести. Беру стандартный пример 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

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


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

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

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


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

loading
clippy