v4.0.20 Trader.ProcessDataError: System.ArgumentOutOfRangeException

v4.0.20 Trader.ProcessDataError: System.ArgumentOutOfRangeException
Atom
15.03.2012
sda


Добрый день!

Не знаю, куда правильно постить информацию о багах, опубликую здесь.

Подключаюсь к торговой системе посредством SmartTrader'а.

Сегодня на вечернем клиринге с моего счета списали мартовские опционы вне денег. Эти операции отдаются со стороны торговой системы как сделки с нулевым orderTransactionId. В результате при получении сделок возникает exception:


15.03.2012 21:21:32 err Trader.ProcessDataError: System.ArgumentOutOfRangeException: Номер транзакции должен быть отличен от нуля.
Parameter name: orderTransactionId
Actual value was 0.
at StockSharp.Algo.BaseTrader.AddMyTrade(Security security, Int64 orderId, Int64 orderTransactionId, Int64 tradeId, Func`2 createTrade, Action`1 initMyTrade)
at StockSharp.Smart.SmartTrader.#=qfzSH89$Mv8Ofzu2y$3js_kysbq$NiANKIBBTSpnvTGs=.#=q4mbFJ60V1bPbFeGAvyC1ibxEquGFFRHMAVcij6R3Spg=(Security #=qxrfNJbw0xpwzUWGXMStJHw==)
at StockSharp.Algo.BaseTrader.GetSecurity(String id, Func`2 createSecurity, Action`1 changeSecurity, String nativeSecurityId)
at StockSharp.Algo.BaseTrader.GetSecurity(String id, Action`1 changeSecurity, String nativeSecurityId)
at StockSharp.Smart.SmartTrader.#=qwRaN51iZmc1S0J9GUiteXg==(Int32 #=qcKJ3I5IWFH9VGLCcFIxLWQ==, Int32 #=qd_HFLT8KhQdYPYrriX3Z0w==, String #=qA26HfIyr1Hp1awyY$ScCNw==, String #=q4kT6hRtHz0cB30gzvW2Uow==, String #=qxsnZ7xnxtOVt_x2Uv9kPPQ==, String #=q7F54ujMZTFZrOrnYJVfk4g==, Int32 #=qtR35YFeUwJZKl7$1hymQrw==, Int32 #=qLReP$4l4o5IgcNxSE8j0Vw==, Decimal #=qrciuxaDj5NbwitmG7x6PgQ==, Decimal #=qf54825kg7L9SdT_qlB4SKg==, String #=qtQxI15g5cUMatZ_YBKWP9w==, String #=q4MEPte6Q5ZnUsivjDz2KOQ==, Nullable`1 #=qekZ0Fn305HW0Pt3gP6Gk0Q==, Decimal #=qrrUBO3JMgQ6dy_R0YmVzQuFxkjDU6Vy_S_1hGd0cj2w=, Decimal #=qdaiuwzZ5XwfDPHIrdJ59ew==)
at Ecng.Common.DelegateHelper.SafeInvoke[T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15](Action`15 handler, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14, T15 arg15)
at StockSharp.Smart.SmartComWrapper.#=qfzSH89$Mv8Ofzu2y$3js_qgdS7SCdhEpMj2tiPnQ2bQ=.#=qD19bRnre6gLZZNWHAbtsdbqqmA2tHEYXwNn2tuxYMQk=()
at StockSharp.Algo.BaseTrader.ProcessEvents(Action handler)


Upd. По этой ненорме создал тикет на codeplex:

http://stocksharp.codeplex.com/workitem/952
trades.jpg 101 KB (196)

Теги:


Спасибо:


1 2  >
Mikhail Sukhov

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


sda

Сегодня на вечернем клиринге с моего счета списали мартовские опционы вне денег. Эти операции отдаются со стороны торговой системы как сделки с нулевым orderTransactionId. В результате при получении сделок возникает exception:


Можно попробовать добавить поддержку. Кроме этого есть еще какие особенности в транслировании данных? Если поставочный фьючерс, то так же делают исполнение через сделки?
Спасибо:

sda

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


Опыта работы с поставочными инструментами у меня нет. Но в случае с экспирацией опционов вне денег ситуация, на мой взгляд, ясная. Сделка по списанию опциона регистрируется в торговой системе, но не регистрируется на сервере котировок. Полагаю так будет для всех опционов вне денег на все базовые активы.

По-поводу особенностей трансляции данных. По событию NewSecurities данные со стороны торговой системы загружаются заметно долго даже на железной машине, на витруалке должно быть еще дольше. Причем большая часть загружаемой информации - это данные по экспирированным инстументам и они, как правило, не нужны. Думаю, имело бы смысл реализовать в SmartTrader'е загрузку справочника инстументов из файла + добавлять туда новые инструменты. Могу сделать сам, но нужен доступ к исходнику коннектора.
Спасибо:

Mikhail Sukhov

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


sda

По-поводу особенностей трансляции данных. По событию NewSecurities данные со стороны торговой системы загружаются заметно долго даже на железной машине, на витруалке должно быть еще дольше. Причем большая часть загружаемой информации - это данные по экспирированным инстументам и они, как правило, не нужны. Думаю, имело бы смысл реализовать в SmartTrader'е загрузку справочника инстументов из файла + добавлять туда новые инструменты. Могу сделать сам, но нужен доступ к исходнику коннектора.


Протухшие инструменты выкидываются через терминал.
Спасибо:

sda

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


Терминал - это SmartTrade или SmartX? Но они не используют SmartCOM. Как они могут фильтровать вывод AddSymbol? Уверен, что никак не могут.
Спасибо:

Mikhail Sukhov

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


sda
Терминал - это SmartTrade или SmartX? Но они не используют SmartCOM. Как они могут фильтровать вывод AddSymbol? Уверен, что никак не могут.


А вы спросите у тех поддержки АйТи по поводу протухших инструментов.
Спасибо:

sda

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


Михаил, я использую SmartCOM API довольно интенсивно для программирования собственной оснастки для торговли опционами, поэтому разбираюсь в этом софте хорошо. Сейчас потихоньку осваиваю StockSharp.

Так вот, ни в SmartCOM API, ни в торговых терминалах IT Invest нет возможности формировать вывод AddSymbol. Это событие всегда передает информацию по всем инструментам, какие есть на торговой площадке. Далее приходится забирать нужные инструменты из того, что получено посредством этого события, после этого подписывать эти инструменты на событие UpdateQuote. В-принципе AddSymbol можно и не использовать- для того чтобы подписать инструмент на UpdateQuote нужны только название инструмента в торговой системе и название портфеля.

В StockSharp объект Security аккумулирует всю информацию, получаемую от двух событий - AddSymbol и UpdateQuote. Поэтому я не уверен, что здесь вообще можно обойтись без использования AddSymbol, и, на мой взгляд, скорость загрузки справочника целесообразно оптимизировать указанным выше способом.
Спасибо:

Mikhail Sukhov

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


sda
Михаил, я использую SmartCOM API довольно интенсивно для программирования собственной оснастки для торговли опционами, поэтому разбираюсь в этом софте хорошо.


Тем не менее, я рекомендую этот вопрос уточнить у тех поддержки. Если я ошибаюсь, то посыплю голову пеплом (хотя будет странно, так как ранее я это проделывал не раз). Если вы ошибаетесь, то вы получите информацию, как уйти от этой проблемы стандартными средствами брокера. В любом случае мы получим информацию, бесплатно и существенно полезную.
Спасибо:

sda

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


Лог переписки с поддержкой.


К сожалению, на данный момент никак.

-----Original Message-----
From: Дмитрий Седов [mailto:XXX@XXX]
Sent: Monday, March 19, 2012 3:18 PM
To: SmartCOM
Subject: Re[4]: Прошу разъяснить некоторые особенности работы SmartCOM API.

То, что список инструментов закачивается не мгновенно, это, в-общем, не страшно. Неприятно, что в момент его получения замирает программа - даже несмотря на событийную модель и многоядерность. Не подскажите, как можно избежать этого "замирания"?


Mon, 19 Mar 2012 15:10:37 +0700 от "SmartCOM" <smartcom@iqi.ru>:
> Полный список инструментов приходит от 3 до 15 секунд.
>
> -----Original Message-----
> From: Дмитрий Седов [mailto:XXX@XXX]
> Sent: Monday, March 19, 2012 3:03 PM
> To: SmartCOM
> Subject: Re[2]: Прошу разъяснить некоторые особенности работы SmartCOM API.
>
> На форуме S# обсуждаем особенности получения справочников инструментов посредством SmartCOM. Вот линк на тему, если интересно. Дискуссия возникла ближе к концу темы:
>
> http://stocksharp.com/fo...entOutOfRangeException/
>
> Mon, 19 Mar 2012 14:59:50 +0700 от "SmartCOM" <smartcom@iqi.ru>:
> > Добрый день.
> > К сожалению никак.
> > А в чём проблема отфильтровать при получении и лишнее не брать.
> >
> > -----Original Message-----
> > From: Дмитрий Седов [mailto:XXX@XXX]
> > Sent: Monday, March 19, 2012 2:48 PM
> > To: smartcom
> > Subject: Прошу разъяснить некоторые особенности работы SmartCOM API.
> >
> > Добрый день!
> >
> > Подскажите, пожалуйста, существует ли возможность по событию StClientLib.StServer.AddSymbol получить не все множество инструментов, какие есть в системе, а только часть их. Например только те, у которых еще не наступил срок экспирации. Возможно это можно как-то сделать посредством других событий или задать для этого какие-то настройки в торговых терминалах IT Invest?
> >
> > Дмитрий Седов.
> >
>
Спасибо:

Mikhail Sukhov

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


sda
Лог переписки с поддержкой.


К сожалению, на данный момент никак.


Попробуйте сделать вот так http://www.itinvest.ru/f...ndex.php?showtopic=63472
Спасибо:

sda

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


Михаил, у меня сложилось впечатление, что Вы неверно представляете себе процесс обновления инструментов в торговых терминалах IT Invest. Он происходит так:

- на момент инсталляции у терминала есть локальная копия справочника инструментов.
- эта локальная копия справочника никогда не обновляется автоматически.
- обновить справочник инстументов можно вручную, выбрав пункт меню "Обновить справочники" или нажав на соответствующую кнопочку на панели инструментов. Это аналог GetSymbols/AddSymbol.
- когда Вы добавляете или удаляете инстументы в "избранном" или в таблице кодировок, справочник не обновляется. Это аналог ListenQuotes/UpdateQuote.
Спасибо:
1 2  >

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

loading
clippy