← Zurück

Не срабатывают события Trader.NewMyTrades и Trader.NewOrders

На примере: StockSharp_4.2.14_Sources\Samples\Quik\Sample
Подключаюсь через DDE QUIK 6.14.0.12.

Все события работаю, кроме:

Trader.NewMyTrades += trades => _myTradesWindow.TradeGrid.Trades.AddRange(trades);
и
Trader.NewOrders += orders => _ordersWindow.OrderGrid.Orders.AddRange(orders);

Ставлю брекпоинт на эти строки, но при совершении сделки или регистрации заявки ничего не происходит. В окнах данные не отображаются. Та же проблема в 4.2.10.

Если у кого работает, дайте пример кода.

War dieses Thema hilfreich?

Thema teilen

Kommentare (7)

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

niko
niko Autor

Спасибо за совет. Настроил через Lua. Событие NewOrders - заработало, NewMyTrades - нет. Все делаю на примере Sample.

Во вложении скрин 2х выполненных заявок, Статус заявки в программе = Регистрация. Подскажите, что еще можно сделать для решения проблемы?

Скрин программы

Прикрепляю кусок лога от начала соединения, потом получения Level1, затем покупка и продажа Роснефти.

2014/08/14 18:30:09.436|       |FixServer |Клиент quik (127.0.0.1:9242) авторизован.
2014/08/14 18:30:11.048|       |FixServer |Отправка Logon клиенту.
2014/08/14 18:30:11.048|       |FixServer |Сессия запущена.
2014/08/14 18:30:11.061|       |FixServer |From client quik: SecurityListRequest
2014/08/14 18:30:11.066|       |None      |Lookup (SecurityLookup, 66552702, , )
2014/08/14 18:30:11.077|       |None      |GetSecurities
2014/08/14 18:30:11.306|Error  |None      |Пустой код инструмента для класса EQOB.
2014/08/14 18:30:11.307|Error  |None      |Пустой код инструмента для класса EQDB.
2014/08/14 18:30:11.312|Error  |None      |Пустой код инструмента для класса INDX.
2014/08/14 18:30:11.312|Error  |None      |Пустой код инструмента для класса AUCT.
2014/08/14 18:30:11.312|Error  |None      |Пустой код инструмента для класса AUCT_BND.
2014/08/14 18:30:11.449|Error  |None      |Пустой код инструмента для класса TQBR.
2014/08/14 18:30:11.454|Error  |None      |Пустой код инструмента для класса TQOB.
2014/08/14 18:30:11.475|Error  |None      |Пустой код инструмента для класса RTSIDX.
2014/08/14 18:30:11.819|Error  |None      |Пустой код инструмента для класса EQRP_INFO.
2014/08/14 18:30:12.033|Error  |None      |Пустой код инструмента для класса BQUOTE.
2014/08/14 18:30:12.033|Error  |None      |Пустой код класса для getClassesList.
2014/08/14 18:30:12.189|       |None      |GetSecurities done
2014/08/14 18:30:30.221|       |FixServer |From client quik: MarketDataRequest
2014/08/14 18:30:30.430|       |FixServer |From client quik: MarketDataRequest
2014/08/14 18:30:30.443|       |None      |Lookup (Level1Change, 0, ROSN, TQBR)
2014/08/14 18:30:30.448|       |None      |Lookup (Execution, 0, ROSN, TQBR)
2014/08/14 18:30:30.454|       |None      |GetAllTrades
2014/08/14 18:30:30.457|       |None      |All trades count: 53409
2014/08/14 18:30:39.206|       |None      |GetAllTrades done
2014/08/14 18:31:06.413|       |FixServer |From client quik: NewOrderSingle
2014/08/14 18:31:06.517|       |None      |SendTransaction: t = {}
t["ACCOUNT"] = "L01+00000F00"
t["CLASSCODE"] = "TQBR"
t["SECCODE"] = "ROSN"
t["QUANTITY"] = "10"
t["CLIENT_CODE"] = "22685"
t["EXPIRY_DATE"] = "GTC"
t["OPERATION"] = "B"
t["TYPE"] = "M"
t["ACTION"] = "NEW_ORDER"
t["PRICE"] = "0"
t["EXECUTION_CONDITION"] = "PUT_IN_QUEUE"
t["TRANS_ID"] = "66552709"
sendTransaction(t)

2014/08/14 18:31:07.657|       |FixServer |From client quik: TestRequest
2014/08/14 18:31:11.075|       |FixServer |From client quik: TestRequest
2014/08/14 18:32:07.361|       |FixServer |From client quik: NewOrderSingle
2014/08/14 18:32:07.368|       |None      |SendTransaction: t = {}
t["ACCOUNT"] = "L01+00000F00"
t["CLASSCODE"] = "TQBR"
t["SECCODE"] = "ROSN"
t["QUANTITY"] = "10"
t["CLIENT_CODE"] = "22685"
t["EXPIRY_DATE"] = "GTC"
t["OPERATION"] = "S"
t["TYPE"] = "M"
t["ACTION"] = "NEW_ORDER"
t["PRICE"] = "0"
t["EXECUTION_CONDITION"] = "PUT_IN_QUEUE"
t["TRANS_ID"] = "66552712"
sendTransaction(t)

2014/08/14 18:32:07.668|       |FixServer |From client quik: TestRequest
2014/08/14 18:32:11.090|       |FixServer |From client quik: TestRequest
2014/08/14 18:32:14.114|       |FixServer |From client quik: Logout
2014/08/14 18:32:14.118|Error  |FixServer |System.ObjectDisposedException: Доступ к ликвидированному объекту невозможен.
Имя объекта: "System.Net.Sockets.NetworkStream".
   в System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
   в #=ql9_au8kab0rmcAoNTRhOSs7YscS5M3$MI$1wnLxJoUI=.#=qfscWplxk7YA56pRqa19eyI$VxtUmCl8c2nlCUiNmnP0=.#=qCHvnvj0Xrst8Y1YXfHghyg==(IAsyncResult #=q2qtot$Osf0PIOum42vSQDw==)
2014/08/14 18:32:16.112|       |FixServer |From client quik: MarketDataRequest
2014/08/14 18:32:16.113|       |FixServer |From client quik: MarketDataRequest
2014/08/14 18:32:16.122|       |None      |Lookup (Level1Change, 0, ROSN, TQBR)
2014/08/14 18:32:16.126|       |None      |Lookup (Execution, 0, ROSN, TQBR)
2014/08/14 18:32:16.126|       |None      |GetAllTrades
2014/08/14 18:32:16.126|       |None      |All trades count: 53519
2014/08/14 18:32:16.189|       |FixServer |From client quik: Logout
2014/08/14 18:32:16.190|Error  |FixServer |System.ObjectDisposedException: Доступ к ликвидированному объекту невозможен.
Имя объекта: "System.Net.Sockets.NetworkStream".
   в System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
   в #=ql9_au8kab0rmcAoNTRhOSs7YscS5M3$MI$1wnLxJoUI=.#=qfscWplxk7YA56pRqa19eyI$VxtUmCl8c2nlCUiNmnP0=.#=qCHvnvj0Xrst8Y1YXfHghyg==(IAsyncResult #=q2qtot$Osf0PIOum42vSQDw==)
2014/08/14 18:32:21.209|       |None      |GetAllTrades done

И еще один лог из файла StockSharp.QuikLua.FatalError.log:

[14.08.2014 18:27:26] UnhandledException: System.IO.IOException: Процесс не может получить доступ к файлу "C:\Users\user\Desktop\Торговля\StockSharp_Sources\StockSharp.QuikLua.log", так как этот файл используется другим процессом.
   в System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   в System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   в System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   в System.IO.StreamWriter.CreateFile(String path, Boolean append, Boolean checkHost)
   в System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize, Boolean checkHost)
   в System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding)
   в StockSharp.Logging.FileLogListener.OnCreateWriter(String fileName)
   в StockSharp.Logging.FileLogListener.#=qmXaOWPnE2xLIaIBW2mSzr6fgqZLGrk17BH5SrlFrBdM=.#=q_byiiwUtM2cMAXp_nE3zyGVYTTDcJLO9pGtdTOzoMpY=.#=qLd07Kujuh2WC6GoxnSWDIkbC8v35Za63VzDn4YZDnw4=(Tuple`2 #=qF_p5QZx6ON$wPLKhtyhDbA==)
   в Ecng.Collections.CollectionHelper.SafeAdd[TKey,TValue](IDictionary`2 dictionary, TKey key, Func`2 handler, Boolean& isNew)
   в StockSharp.Logging.FileLogListener.#=qmXaOWPnE2xLIaIBW2mSzr6fgqZLGrk17BH5SrlFrBdM=.#=qPGEj0jKIR8fJ$_$P9x5Rei2TZh40psP05FUJQKFx41c=(LogMessage #=ql5e9TlyZDTdID1Vem2_y$w==)
   в System.Linq.Lookup`2.Create[TSource](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer)
   в System.Linq.GroupedEnumerable`3.GetEnumerator()
   в System.Linq.Parallel.ParallelEnumerableWrapper`1.GetEnumerator()
   в StockSharp.Logging.FileLogListener.OnWriteMessages(IEnumerable`1 messages)
   в StockSharp.Logging.LogListener.WriteMessages(IEnumerable`1 messages)
   в StockSharp.Logging.LogManager.#=qs7Jb8YGGj$nL5bU60TIUXKIm1JKxwQ93_f1L0XEuutA=.#=qrOg6OFX9V93RiOoLrhYIDA==(ILogListener #=qw3Vnjhv6Vq0CPnka$J2UaQ==)
   в MoreLinq.MoreEnumerable.ForEach[T](IEnumerable`1 source, Action`1 action)
   в StockSharp.Logging.LogManager.#=qfEavWAa7PiPrnn2E4n_bvA==()
   в Ecng.Common.ThreadingHelper.<>c__DisplayClass1.<Timer>b__0(Object s)
   в System.Threading.TimerQueueTimer.CallCallbackInContext(Object state)
   в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   в System.Threading.TimerQueueTimer.CallCallback()
   в System.Threading.TimerQueueTimer.Fire()
   в System.Threading.TimerQueue.FireNextTimers()
   в System.Threading.TimerQueue.AppDomainTimerCallback()
[14.08.2014 18:27:26] UnhandledException: System.IO.IOException: Процесс не может получить доступ к файлу "C:\Users\user\Desktop\Торговля\StockSharp_Sources\StockSharp.QuikLua.log", так как этот файл используется другим процессом.
   в System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   в System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   в System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   в System.IO.StreamWriter.CreateFile(String path, Boolean append, Boolean checkHost)
   в System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize, Boolean checkHost)
   в System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding)
   в StockSharp.Logging.FileLogListener.OnCreateWriter(String fileName)
   в StockSharp.Logging.FileLogListener.#=qmXaOWPnE2xLIaIBW2mSzr6fgqZLGrk17BH5SrlFrBdM=.#=q_byiiwUtM2cMAXp_nE3zyGVYTTDcJLO9pGtdTOzoMpY=.#=qLd07Kujuh2WC6GoxnSWDIkbC8v35Za63VzDn4YZDnw4=(Tuple`2 #=qF_p5QZx6ON$wPLKhtyhDbA==)
   в Ecng.Collections.CollectionHelper.SafeAdd[TKey,TValue](IDictionary`2 dictionary, TKey key, Func`2 handler, Boolean& isNew)
   в StockSharp.Logging.FileLogListener.#=qmXaOWPnE2xLIaIBW2mSzr6fgqZLGrk17BH5SrlFrBdM=.#=qPGEj0jKIR8fJ$_$P9x5Rei2TZh40psP05FUJQKFx41c=(LogMessage #=ql5e9TlyZDTdID1Vem2_y$w==)
   в System.Linq.Lookup`2.Create[TSource](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer)
   в System.Linq.GroupedEnumerable`3.GetEnumerator()
   в System.Linq.Parallel.ParallelEnumerableWrapper`1.GetEnumerator()
   в StockSharp.Logging.FileLogListener.OnWriteMessages(IEnumerable`1 messages)
   в StockSharp.Logging.LogListener.WriteMessages(IEnumerable`1 messages)
   в StockSharp.Logging.LogManager.#=qs7Jb8YGGj$nL5bU60TIUXKIm1JKxwQ93_f1L0XEuutA=.#=qrOg6OFX9V93RiOoLrhYIDA==(ILogListener #=qw3Vnjhv6Vq0CPnka$J2UaQ==)
   в MoreLinq.MoreEnumerable.ForEach[T](IEnumerable`1 source, Action`1 action)
   в StockSharp.Logging.LogManager.#=qfEavWAa7PiPrnn2E4n_bvA==()
   в Ecng.Common.ThreadingHelper.<>c__DisplayClass1.<Timer>b__0(Object s)
   в System.Threading.TimerQueueTimer.CallCallbackInContext(Object state)
   в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   в System.Threading.TimerQueueTimer.CallCallback()
   в System.Threading.TimerQueueTimer.Fire()
   в System.Threading.TimerQueue.FireNextTimers()
   в System.Threading.TimerQueue.AppDomainTimerCallback()
[14.08.2014 18:29:20] StockSharp.Fix.resources, Version=4.2.14.0, Culture=ru-RU, PublicKeyToken=null: System.IO.FileNotFoundException: Не удается найти указанный файл. (Исключение из HRESULT: 0x80070002)
   в System.Reflection.RuntimeAssembly.nLoadFile(String path, Evidence evidence)
   в System.Reflection.Assembly.LoadFile(String path)
   в CurrentDomain_AssemblyResolve(Object sender, ResolveEventArgs args)
[14.08.2014 18:29:20] StockSharp.Fix.resources, Version=4.2.14.0, Culture=ru, PublicKeyToken=null: System.IO.FileNotFoundException: Не удается найти указанный файл. (Исключение из HRESULT: 0x80070002)
   в System.Reflection.RuntimeAssembly.nLoadFile(String path, Evidence evidence)
   в System.Reflection.Assembly.LoadFile(String path)
   в CurrentDomain_AssemblyResolve(Object sender, ResolveEventArgs args)

niko
niko Autor

Кстати, почему-то в окне с заявками Sample не меняет статус выполненной заявки с Регистрация на Исполнен. Почему такое может быть?

esper
esper

Можете проверить поведение на последней версии (4.2.18)?

niko
niko Autor

Данные получаю после выполнения функций:

_trader.RegisterSecurity(security);
_trader.RegisterTrades(security);

Сегодня проверил на API 4.2.20 - проблема осталась

esper
esper

niko: ... Причем здесь это и заявки?

niko
niko Autor

Случайно продублировал ответ из другой темы http://stocksharp.com/posts/m/31540/.

Но события все равное не срабатывают. 😡