← Назад

Позиции по деривативам

Здравствуйте!

Тестирую стратегию на Украинской бирже и столкнулся с проблемой получения позиций по деривативам из таблицы "Позиции по деривативам". Версия S# 4.0.1, Quik 5.23, 5.24.

Verifier говорит что все настроено правильно, но при старте экспорта ProcessDataError отлавливает:

System.InvalidOperationException: Инструмент с кодом UX1100BL1 для деривативной позиции не найден.
   at StockSharp.Quik.QuikTrader.#=q83RC8QjwGE06bYxuClwq92LhVOvhOqg1Ibb6sc3fM$w=
.#=qyv7cgDXipIbE4H64zoSQuQ==(IList`1 #=qnPrMXzejlhZGIiblHaU0yw==, Func`2 #=qoCz5
3tE0sp4RQUb3Ds8GsA==)
   at #=qp_fbLTJnFE2othouXvioeCpaCgoD026MlkJsD2ZqOQGLb6nfpDLyRuo5lZzqRlei.#=qAUA
7Once2I3cbE7dXu$MZg==(DdeTable #=qSWwYAwvcL$D4KIHt_5bG3w==, IList`1 #=q6IUmIWmvv
dbuHixc5eXkyQ==, Action`2 #=qTX0q2c4E$ISj79rZpKw6vA==, Action`1 #=qs7PROwMpZp9zz
gPyrFElhg==, Boolean #=qTJVmId$bLpcrK$siTqKJ3A==).
...
И так для всех позиций из таблицы "Позиции по деривативам".

Все эти инструменты в таблице "Инструменты" есть.

Самое удивительное, что через некоторое время позиции таки появляются, но ошибки продолжают сыпаться в ProcessDataError. Сейчас приходится просто убирать из StartExport-а DerivativePositionsTable и работать только с позициями стратегий.

verifier DerivativePosition DDE error positions DerivativePosition error

Комментарии (14)

Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий

Mikhail Sukhov
Mikhail Sukhov

aleksej: Все эти инструменты в таблице "Инструменты" есть.

Вы лучше скрин этой таблицы приведите.

aleksej
aleksej Автор

Извините, забыл сразу прикрепить.

instruments DerivativePositions error

Mikhail Sukhov
Mikhail Sukhov

aleksej: Извините, забыл сразу прикрепить.

Добавьте соответствующие классы в QuikTrader.SecurityClassInfo

aleksej
aleksej Автор

Большое спасибо, заработало :)

Готовое решение для Украинской биржи, если кто-то еще будет с такой проблемой:


QuikTrader.SecurityClassInfo.Add("OPTUX", new RefPair<SecurityTypes, Exchange>(SecurityTypes.Option, Exchange.Ux));
QuikTrader.SecurityClassInfo.Add("FUTUX", new RefPair<SecurityTypes, Exchange>(SecurityTypes.Future, Exchange.Ux));

Alexander
Alexander

aleksej: Большое спасибо, заработало :)

Готовое решение для Украинской биржи, если кто-то еще будет с такой проблемой:

QuikTrader.SecurityClassInfo.Add("OPTUX", new RefPair<SecurityTypes, Exchange>(SecurityTypes.Option, Exchange.Ux)); QuikTrader.SecurityClassInfo.Add("FUTUX", new RefPair<SecurityTypes, Exchange>(SecurityTypes.Future, Exchange.Ux));


Совершенно верно. :)

Добавим в S# 4.0.2 которая будет на codelpex. Спасибо за фидбек.
aleksej
aleksej Автор

Попрошу для полноты добавить сразу так :)


QuikTrader.SecurityClassInfo.Add("OPTUX", new RefPair<SecurityTypes, Exchange>(SecurityTypes.Option, Exchange.Ux));
QuikTrader.SecurityClassInfo.Add("FUTUX", new RefPair<SecurityTypes, Exchange>(SecurityTypes.Future, Exchange.Ux));
QuikTrader.SecurityClassInfo.Add("GTS", new RefPair<SecurityTypes, Exchange>(SecurityTypes.Equity, Exchange.Ux));
QuikTrader.SecurityClassInfo.Add("RTSIND", new RefPair<SecurityTypes, Exchange>(SecurityTypes.Index, Exchange.Ux));

Alexander
Alexander

aleksej: Попрошу для полноты добавить сразу так :)

QuikTrader.SecurityClassInfo.Add("OPTUX", new RefPair<SecurityTypes, Exchange>(SecurityTypes.Option, Exchange.Ux)); QuikTrader.SecurityClassInfo.Add("FUTUX", new RefPair<SecurityTypes, Exchange>(SecurityTypes.Future, Exchange.Ux)); QuikTrader.SecurityClassInfo.Add("GTS", new RefPair<SecurityTypes, Exchange>(SecurityTypes.Equity, Exchange.Ux)); QuikTrader.SecurityClassInfo.Add("RTSIND", new RefPair<SecurityTypes, Exchange>(SecurityTypes.Index, Exchange.Ux));


Индекс автоматом проставляется
Про GTS можно поподробнее - что это? В инете пусто.
Mikhail Sukhov
Mikhail Sukhov

aleksej: Попрошу для полноты добавить сразу так :)

QuikTrader.SecurityClassInfo.Add("OPTUX", new RefPair<SecurityTypes, Exchange>(SecurityTypes.Option, Exchange.Ux)); QuikTrader.SecurityClassInfo.Add("FUTUX", new RefPair<SecurityTypes, Exchange>(SecurityTypes.Future, Exchange.Ux)); QuikTrader.SecurityClassInfo.Add("GTS", new RefPair<SecurityTypes, Exchange>(SecurityTypes.Equity, Exchange.Ux)); QuikTrader.SecurityClassInfo.Add("RTSIND", new RefPair<SecurityTypes, Exchange>(SecurityTypes.Index, Exchange.Ux));


Последние два кода будет добавить проблематично. Они могут использоваться и для наших бирж.
aleksej
aleksej Автор

С RTSIND согласен, будут пересекаться, логично только OPTUX и FUTUX использовать.

А GTS - это класс обычных Equity на Украинской Бирже (не знаю, есть ли он на РТС):

lesser
lesser

Подскажите , плиз куда нужно дописать :

QuikTrader.SecurityClassInfo.Add("OPTUX", new RefPair<SecurityTypes, Exchange>(SecurityTypes.Option, Exchange.Ux)); QuikTrader.SecurityClassInfo.Add("FUTUX", new RefPair<SecurityTypes, Exchange>(SecurityTypes.Future, Exchange.Ux));

В примере Sample.

Хотя наверно проблемма не в этом , потому что инструменты у меня есть , портфель есть, а вот позиций не видно. :(

Спасибо.

Alexander
Alexander

lesser: Подскажите , плиз куда нужно дописать :

QuikTrader.SecurityClassInfo.Add("OPTUX", new RefPair<SecurityTypes, Exchange>(SecurityTypes.Option, Exchange.Ux)); QuikTrader.SecurityClassInfo.Add("FUTUX", new RefPair<SecurityTypes, Exchange>(SecurityTypes.Future, Exchange.Ux));

В примере Sample.

Спасибо.

Возьмите последнюю версию, там уже это есть

lesser
lesser

У меня это наверно уже включено.

Инструменты есть , портфель есть, заявки мои видно а вот позиций не видно. :(

в чем может быть проблема ?

lesser
lesser

Спасибо , вопрос снимаю , добавил в таблицу инструменты инструмент по которому есть откритая позиция и увидел эту позицию в Sample.

Alexander
Alexander

lesser: Должны быть видны все позиции или только позиции по инструментам с таблицы Секюритис ?

Запустите Verifier + посмотрите на событие ProcessDataError