Итак Выложили 4.2.3.0 , где появилось обновление API для работы с TransaqConnector версии 2.9.
Первые результаты тестирования:
- В режиме RealTimeEmulation:
- список бумаг приходит,
- портфели не приходят,
- стаканы не приходят,
- свечки не приходят. При этом никаких ошибок система не регистрирует. Вообще впечатление такое что режим полностью мертв, даже при включении параметра расширенного логирования MaxLogging, никакой информации в Окно интерпретации не поступает.
- В режиме живого подключения:
- список бумаг приходит,
- портфели приходят,
- стаканы приходят,
- свечки приходят.
Но есть два досадных глюка
- Сразу после подключения, до запуска каких-либо стратегий, система по всем инструментам, вписанным в созданные стратегии, выдает ошибку Error System.ArgumentException: Инструмент ХХХХ@НННН не имеет информации о подключении.
Стек-трейс ошибки:
TransaqTrader 05.05.2014 20:12:59 Error System.ArgumentException: Инструмент SRM4@FORTS не имеет информации о подключении.
Имя параметра: security
в #=qGkaWoNDIavvUdLr2DVmRQt3n5QGo8w1KTn2IKHZOGbQ=.#=qNa7Ej7$TGDLQQoLsRqp7NA==(Security #=qX3hKkeny6tCcaCiJMvXTdw==)
в StockSharp.Algo.TraderHelper.GetMarketTime(Security security)
в StockSharp.Algo.Strategies.StrategyHelper.GetMarketTime(Strategy strategy)
в StockSharp.Algo.Strategies.StrategyHelper.IsTradeTime(Strategy strategy)
в StockSharp.Algo.Strategies.Strategy.#=qoQVeRziv8qL78jMkBmvaz3NUKqmARWp0DHkkNfGM_Tg=(TimeSpan #=qfEVh9LW8LZzabPmc25$2EQ==)
в System.Action1.Invoke(T obj) в Ecng.Common.DelegateHelper.SafeInvoke(Action1 handler, T arg)
в StockSharp.Algo.Connector.#=qGlBOSm6XwE23tJ9Vj$Zw25y9X05v2hlLLEJNR5ZDGcg=(TimeSpan #=qfEVh9LW8LZzabPmc25$2EQ==)
в StockSharp.Algo.Connector.#=qOVJ7lNdqw0puzaU_icDI$Q0t_necMNBmIfAT3$d$c6I=()
в StockSharp.Algo.Connector.OnProcessMessage(Message message, MessageAdapterTypes adapterType, MessageDirections direction)
в StockSharp.Transaq.TransaqTrader.OnProcessMessage(Message message, MessageAdapterTypes adapterType, MessageDirections direction)
в StockSharp.Algo.Connector.#=qNSEHxtb7GzfF2fRppbMEreBLYGfPFEZzUlaHXkjQ_$6UEQOkAU3_PlL34KtxRvil(Message #=qfIRrKuNjZ85B6GcxUAdgJQ==)
в Ecng.Common.DelegateHelper.SafeInvoke(Action1 handler, T arg) в StockSharp.Messages.MessageAdapter1.OnOutMessageProcessor(Message message, IMessageAdapter adapter)
в System.Action2.Invoke(T1 arg1, T2 arg2) в Ecng.Common.DelegateHelper.SafeInvoke[T1,T2](Action2 handler, T1 arg1, T2 arg2)
в StockSharp.Messages.MessageProcessorPool.<StartProcessor>b__0(Message m, IMessageAdapter a)
в Ecng.Common.DelegateHelper.SafeInvoke[T1,T2](Action`2 handler, T1 arg1, T2 arg2)
в StockSharp.Messages.MessageProcessor.<StockSharp.Messages.IMessageProcessor.Start>b__0()
- При отключении от коннектора возникает ошибка "Ссылка на объект не указывает на экземпляр объекта.", которая валит процесс. Стек-трейс ошибки:
в StockSharp.Messages.MessageAdapter1.SendOutMessage(Message message) в StockSharp.Messages.MessageAdapter1.<StartMarketTimer>b__f()
в 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()
Comments (6)
Login or Create account, Log in or register to leave a comment
Пробовали запускать SampleTransaq?
Сегодня протестил SampleTransaq, там возникают еще две ощибки:
в Ecng.Common.Converter.To(Object value, Type destinationType) в Ecng.Common.Converter.To(Object value) в StockSharp.Transaq.TransaqMessageAdapter.#=qyWHJjx$V7JIMvyK3Kedv61HVyQEJh00u1_xSHXTNY34=(#=qYJCxzEVHmZXb4JTADsUwb9caYPEeZUwlq0hjzeVlYogGtLm9QI3T8FXGwow$MJOmptgL3xklbXLdZ3Ix$mHYHQ== #=qbItcKPpaBzotZMkrhhp_AQ==) в StockSharp.Transaq.TransaqSessionHolder.#=qxmX3xmOEoD8EGet_HlMNGxo7smw$1BEaNLDk1w7IDNM=.#=q8gnYxk2Jin9467GVBu4bwEPggmnUJl5vnDwAG1KSBdA=(#=qWWPYLUYc0j4UlGlfVKoW5TiZi20ZN3IrO$SR8lov5Xt_MM2UUdNCSrh4M7QK$_ZO #=qUFZ_brcNO$fTdTAPrBmwwA==) в StockSharp.Transaq.TransaqSessionHolder.#=qa_LbneijAnrUDXdz$8PrY_lohxVQVAp684Wn9ST$l28=(#=qWWPYLUYc0j4UlGlfVKoW5TiZi20ZN3IrO$SR8lov5Xt_MM2UUdNCSrh4M7QK$_ZO #=qaUOXEo$QDZUViwcnVHdwqg==) в StockSharp.Transaq.TransaqMessageAdapter.#=q_iM3iPNjBYaEglGHNAIgig==(String #=qk70wh4dyxiMQ4jjmNStu$Q==)
Выложили 4.2.3.4
Из 4х перечисленных выше багов 3 успешно закрыты.
Осталась только один "Error System.ArgumentException: Инструмент ХХХХ@НННН не имеет информации о подключении." Как я выяснил, возникает он при любом обращении в коде к параметрам стратегии (Robot.BaseShellStrategy.Params.get, Robot.BaseShellStrProp.SchedulerIsEnabled.get и пр.), после которого происходит вызов StockSharp.Messages.MessageProcessor который в конечном итоге приводит к вызову StockSharp.Algo.TraderHelper.GetMarketTime(Security security) и выбросу соответствующей ошибки.
Очевидно баг не связан с TransaqConnector как таковым, хотя и заявлен мной тут, так как получил я его при работе с TransaqConnector.
Но вопрос - зачем при обращении к параметрам тестовых и незапушенных стратегийвызывается StockSharp.Messages.MessageProcessor?
Версия коннектора, предоставленного Финамом, 2.9.1.0, а версия txmlconnector.dll, выгружаемого при запуске учебного примера на S# API 4.2.3.4, показывает 5.9.2.9. Где-то "косяк" ). Но где, пока не понял. Библиотека StockSharp.Transaq.dll защищена, как посмотреть какой коннектор зашит в ней ?
Ну может быть там версия зашифрована - не столь важно, так как хоть плохо, но работает. Так сегодня мне удалось нормально выставить заявку на покупку, которая успешно исполнилась на рынке.
Но при тестировании на живом подключении выявился еще один баг: приходит только одна первая свечка, затем полная тишина. Ни свечек, ни сообщений об ошибке. Скрин-шот: http://yadi.sk/d/06Jipx4YQkHPa
При этом проанализировав события MarketDepthsChanged я выяснил, что стаканы приходят. но в стаканах неверно указано время его формирования. Скрин-шот: http://yadi.sk/d/nicPRNMrQkJ4e
Может как раз это причина бага с отсутствием свечек?
Предлагаю как-то разделить то, что относится к Транзаку, и то, что относится к эмулятору. Сейчас пока вопросы не понятны.