← Zurück

Ошибка в матлабовском листнере на события NewTrades и SecuritiesChanged

используется связка quik <->S#.API 4.2.43<-> Matlab на базе представленного: http://stocksharp.com/doc/html/e3f889a5-ddcd-4c77-a174-2f24385386a0.htm

все события кроме 'NewTrades' и 'SecuritiesChanged' работают замечательно - заявки выставляются/исполняются из матлам, информация по позициям по текущему стакану обновляется и передается в матлаб. Собственно оба события 'NewTrades' и 'SecuritiesChanged' генерят <u>одну и ту же ошибку</u>:

Сообщение 'Execution,T(L)=2015/02/12 19:59:56.541,T(S)=2015/02/12 10:45:28.086,(Tick),Sec=S#:USD000UTSTOM@CETS, Native:,Type:Stock,Ord=0/0/0,Fail=,TId=93094026,Pf=,TPrice=66.528,UId=' привело к ошибке обработки. Сообщение 'Execution,T(L)=2015/02/12 19:59:56.544,T(S)=2015/02/12 10:45:47.937,(Tick),Sec=S#:USD000UTSTOM@CETS, Native:,Type:Stock,Ord=0/0/0,Fail=,TId=93094082,Pf=,TPrice=66.548,UId=' привело к ошибке обработки. Индекс находился вне границ массива. Сообщение 'Execution,T(L)=2015/02/12 19:59:56.547,T(S)=2015/02/12 10:45:52.453,(Tick),Sec=S#:USD000UTSTOM@CETS, Native:,Type:Stock,Ord=0/0/0,Fail=,TId=93094141,Pf=,TPrice=66.52,UId=' привело к ошибке обработки. Сообщение 'Execution,T(L)=2015/02/12 19:59:56.547,T(S)=2015/02/12 10:45:53.044,(Tick),Sec=S#:USD000UTSTOM@CETS, Native:,Type:Stock,Ord=0/0/0,Fail=,TId=93094145,Pf=,TPrice=66.526,UId=' привело к ошибке обработки. Индекс находился вне границ массива. Индекс находился вне границ массива. Индекс находился вне границ массива. Индекс находился вне границ массива.

Подскажите пожалуйста в какой класс смотреть чтобы понять откуда лезет ошибка, как ее отследить и какова примерная природа ошибки?

привожу используемый в матлабе код( необходимые библиотеки подключены):

...Начальный матлабовский код connector = StockSharp.MatLab.MatLabConnector(StockSharp.Quik.QuikTrader(connector_path));

addlistener(connector, 'Connected', @connectorConnected); addlistener(connector, 'NewTrades', @onalltrades); addlistener(connector, 'ProcessDataError', @processError); Connect(connector.RealConnector); ... конечный матлабовский код

-- Начало обработчика всех сделок function onalltrades(sender, args)

q=1; --// Конец обработчика всех сделок

Все! больше никаких действий не совершается( те код намеренно упрощен чтобы исключить др модули), и самое интересное что лиснер работает и сделки идут нормальным временем/объемом/ценой / направлением при этом между нормальными сделки лезет эта злополучная ошибка. как будто NewTrades генерит не только сделки, но еще и ошибки.

War dieses Thema hilfreich?

Thema teilen

Kommentare (4)

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

galeese
galeese Autor

получил колл-стек выдаваемой ошибки в System.Collections.Generic.Dictionary2.Insert(TKey key, TValue value, Boolean add) в dotnetcli.NETEventListener.EventListenerCallbackFcn(Object evtSrc, Object evtArgs) в Ecng.Common.DelegateHelper.SafeInvoke(EventHandler1 handler, Object sender, T args, Action1 action) в Ecng.Common.DelegateHelper.SafeInvoke(EventHandler1 handler, Object sender, T args) в StockSharp.Algo.Connector.#=qo7MxDeOfDh7ktfId1vUtS7jlWNZpibBa0kmNL5LQaok=(Security #=qelC0j0knw9lGV4fmO3HD7A==, ExecutionMessage #=qcdNHLcM0l5L$xGKCyvn$ZQ==) в StockSharp.Algo.Connector.#=qLFCL01w5eLFhCa1yjA1zuumXIVk4VbbtSF8uymWICLA=.#=qVEBfi_7THor7h1XZh7VVPNndNy1RHolo1ahXmPFEaCw=(Security #=qJT1LC_aF9yWUITLPp9Y6lA==) в StockSharp.Algo.Connector.#=qETOePoBid_elfAn2vzbvyHFcM$EyhSgJo3qoi$nxUQ=[TMessage](TMessage #=qE9HJVP_xcazKp6qoWNpmRw==, Func2 #=qcbjPid7EOf5Lfb7YPwJMEg==, Action2 #=qT5N5KfJWf6ctgLaDe55$Q==, Boolean #=qzZfvIKuG2TIlLWRPh16CnoiRaUaF2pSCya6cYr$VMis=, String #=qWmSGrZrY_ul3FuezMhdzOuQPeLLyVvnbZ8cWUAoC8Eo=) в StockSharp.Algo.Connector.#=qHmnRaS0meA3XCn$1C$83WKZqTrLA4Jpc9YeWMbSaJb0=(ExecutionMessage #=qhUq7Y1IZPTToLRidkqjQ_g==) в StockSharp.Algo.Connector.OnProcessMessage(Message message, MessageAdapterTypes adapterType, MessageDirections direction)

Видно что ошибка зиждется глубоко внутри ядра стокшарпа, в публичных исходниках этого нет. Подскажите, пожалуйста, что я делаю не так? Спасибо

Mikhail Sukhov
Mikhail Sukhov

galeese: в публичных исходниках этого нет.

Все там есть. Потратьте хотя бы неделю на освоение. Вы сыкономите себе кучу времени.

Mikhail Sukhov
Mikhail Sukhov

Хотя падает то вообще внутрях МатЛаб. Подозреваю, что вы с событиями неправильно в самом мат лабе работаете. Идет изменение подписчиков во время вызова.