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 (191)

Теги:


Спасибо:


< 1 2 
Mikhail Sukhov

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


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


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

sda

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


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

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

Mikhail Sukhov

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


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

sda

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


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

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

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

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


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


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

Mikhail Sukhov

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


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

sda

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


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

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

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

Alexander

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


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


Готовы взяться?
Спасибо:

sda

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


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

Alexander

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


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

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

loading
clippy