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

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


На примере: 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.

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


Теги:


Спасибо:


Mikhail Sukhov

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


Спасибо:

niko

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


Спасибо за совет. Настроил через 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

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


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

Спасибо:

esper

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


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

Спасибо:

niko

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


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

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

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

Спасибо:

esper

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


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

Спасибо:

niko

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


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

Но события все равное не срабатывают. [mad]

Спасибо:


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

loading
clippy