v4.0.20 Trader.ProcessDataError: System.ArgumentOutOfRangeException

v4.0.20 Trader.ProcessDataError: System.ArgumentOutOfRangeException
Atom
3/15/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 (191)

Tags:


Thanks:


< 1 2 
Mikhail Sukhov

Avatar
Date: 3/19/2012
Reply


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


Давайте пойдем по логическому пути. Я правильно понял, что тех поддержка гарантировала, что протухшие опционы будут всегда приходить, месячной давности, декадной, годовой, пяти летней? И избавиться от этого нельзя? Или все же какой-то способ существует?
Thanks:

sda

Avatar
Date: 3/19/2012
Reply


Ну, не совсем так. На клиента по GetSymbols/AddSymbol закачивается информация обо всех инструментах, какие есть в справочнике инструментов на стороне брокера (торговой системы?). Если в справочнике есть инструменты, проэкспирировавшиеся пять лет назад, то они закачаются на клиента. Если, допустим, эти инструменты на стороне брокера из справочника удалили, они на клиента не закачаются.

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

Mikhail Sukhov

Avatar
Date: 3/19/2012
Reply


Поговорил с тех поддержкой. Они чистят протухшие контакты. Как часто - не понятно.
Thanks:

sda

Avatar
Date: 3/19/2012
Reply


Поскольку от первоначальной темы треда мы все равно отклонились, а ветка форума называется "Фичи и пожелания", позволю себе пожелать еще три фичи. :)

1. Свойство SmartTrader'а, сигнализирующее об окончании передачи справочника по GetSymbols/AddSymbol.

Точное время окончания процесса получения инструментов справочника неизвестно, поэтому было бы неплохо однозначно идентифицировать состояние этого процесса: {получение инструментов идет, получение инструментов завершилось}.

Как сделать. В обработчик AddSymbol для каждого инструмента передают его номер в справочнике + количество инструментов в справочнике. Если номер инструмента равен количеству инструментов в справочнике, то процесс передачи справочника завершен.


2. В DerivativeHelper есть методы, которые по коду инструмента или объекту типа Security выдают другие объекты типа Security: GetDerivatives, GetSecurity и проч. Причем при вызове этих методов характерного для GetSymbols "замирания" программы не происходит. То есть, насколько я понимаю, SmartTrader создает внутри себя справочник инструментов, а потом либо предоставляет доступ к объектам справочника, или копирует их. Было бы неплохо получить доступ к этому справочнику - в какой-то форме помимо вызова NewSecurities.


3. Хотелось бы справку по функционалу Ecng.*, например такую же, как для Stocksharp.*
Thanks:

Mikhail Sukhov

Avatar
Date: 3/20/2012
Reply


1. Это вообще неправильный стиль. На это не нужно затачиваться.
2. см ITrader.
3. Можно, но нужно немногим, а делать некому.
Thanks: sda

sda

Avatar
Date: 3/20/2012
Reply


1. В-принципе, без этого свойства можно обойтись, например, отслеживая динамику изменения количества элементов в ITrader.Securities. Получаются приемлемые задержки по времени. Хотя если бы можно было однозначно идентифицировать окончание получения справочника, было бы проще.

2. Да, ITrader.Securities. Спасибо за подсказку!

3. Подозреваю, что просто немногие способны достаточно глубоко разобраться в этом инструментарии. Можно было бы создать что-то вроде user guide или how-to.
Thanks:

Alexander

Avatar
Date: 3/20/2012
Reply


sda
3. Подозреваю, что просто немногие способны достаточно глубоко разобраться в этом инструментарии. Можно было бы создать что-то вроде user guide или how-to.


Готовы взяться?
Thanks:

sda

Avatar
Date: 3/20/2012
Reply


ИМХО, это задача для разработчика или опытного пользователя. Я недостаточно хорошо знаю этот инструментарий, чтобы учить других, как его применять. Может быть попозже, если почувствую, что накопил достаточно опыта.
Thanks:

Alexander

Avatar
Date: 3/20/2012
Reply


у нас свободных рук не хватает )
Thanks:
< 1 2 

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy