Экспорт стакана произвольного инструмента
Atom
20.07.2011


Ситуация следующая:

Делаю дельта-хеджер. В главном окне предлагается выбрать счет , торгуемые опционы и фьючи. Список опционов и фьючей выводится на основе данных, получаемых из 2 произвольных таблиц: таблица со списком опционов(через табл. "текущая таблица"), где располагаются только опционы и есть поле "Код бумаги" и таблица с параметрами опционов (через табл. "информация по опционам"). Первая нужна мне для списка опционов, а вторая для их параметров (греки, волатильность).

Далее переход к самому хеджеру: в нем 2 стакана (ст. опциона и ст. фьюча) , список параметров для хеджирования и проч. мелочи. Столкнулся с проблемой вывода этих самых стаканов:
Для вывода стакана через RegisterQuotes(), на вход надо дать тип Security. У меня же имеется только Код инструмента.

Вопросы:

1. Как осуществить вывод стакана , имея только код инструмента?
2. Как в дальнейшем получать информацию лишь по одному инструменту, а не искать по ID инструмента в таблице и считывать их. А то слишком много неиспользуемых данных грузится и процесс поиска параметров по инструменту усложняется использованием таблиц.

Теги:


Спасибо:


1 2  >
Alexander

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


1) Находите среди всех Seciruty которые вам пришли с нужным вам кодом инструмента
2) Отфильтруйте таблицы, не запускайте экспорт по ненужным таблицам.
Спасибо:

Dottz

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


Alexander Перейти
1) Находите среди всех Seciruty которые вам пришли с нужным вам кодом инструмента
2) Отфильтруйте таблицы, не запускайте экспорт по ненужным таблицам.


1. Так я не экспортирую стандартную таблицу SecuritiesTable, т.к. в ней у меня только акции добавлены. А в той, которой располагаются опционы, там данные представлены не типом Security, а пользовательским типом и в нем вот есть код бумаги.
2. Я имел ввиду, можно ли получать данные , минуя экспорт в таблицы. Т.к. мне вся таблица не нужна, нужна информация только по одному инструменту, но этот инструмент всегда разный. В самой таблице в квике нельзя только один инструмент оставить.
Спасибо:

Alexander

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


Dottz Перейти
Alexander Перейти
1) Находите среди всех Seciruty которые вам пришли с нужным вам кодом инструмента
2) Отфильтруйте таблицы, не запускайте экспорт по ненужным таблицам.


1. Так я не экспортирую стандартную таблицу SecuritiesTable, т.к. в ней у меня только акции добавлены. А в той, которой располагаются опционы, там данные представлены не типом Security, а пользовательским типом и в нем вот есть код бумаги.
2. Я имел ввиду, можно ли получать данные , минуя экспорт в таблицы. Т.к. мне вся таблица не нужна, нужна информация только по одному инструменту, но этот инструмент всегда разный. В самой таблице в квике нельзя только один инструмент оставить.


1) Security будет создан в любом случае - ищите в нём
2) Фильтруйте данные которые приходят и сохраняйте только то что надо. Там все методы виртуальные - можно переписать как душе угодно :)
Спасибо:

Dottz

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


Дык в Trader.SecuritiesTable нет метода, позволяющего извлечь по коду элемент с типом Security, как например, если подписаться на событие появления новых инструментов
Код

MainWindow.Instance.Trader.NewSecurities += securities =>
                {
                    if (this.S_Future == null && this.S_Option == null)
                    {
                        // находим инструменты
                        this.S_Future = securities.FirstOrDefault(sec => sec.Code == OptionCode);
                        this.S_Option = securities.FirstOrDefault(sec => sec.Code == FutureCode);

                        if ((this.S_Future != null) && (this.S_Option!= null))
                        {
                            // запускаем экспорт стаканов фьюча и опциона
                            MainWindow.Instance.Trader.RegisterQuotes(S_Future);
                            MainWindow.Instance.Trader.RegisterQuotes(S_Option);
                        }
                    }
                };

Только этот код не работает, ибо я не экспортирую стандартную таблицу... Где еще можно выцепить тип Security я не знаю, подскажите пожалуйста.
Спасибо:

Alexander

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


Распечатайте все инструменты, которые появляются в NewSecurities.
Спасибо:

Dottz

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


Код

MainWindow.Instance.Trader.NewSecurities += securities =>
                {
                    foreach (var s in securities)
                    {
                        TestBox.AppendText(String.Format("Инструмент: {1} | {2} \n", s.Code,s.Class));
                    }
                    
                    if (this.S_Future == null && this.S_Option == null)
                    {
                        // находим инструменты
                        this.S_Future = securities.FirstOrDefault(sec => sec.Code == OptionCode);
                        this.S_Option = securities.FirstOrDefault(sec => sec.Code == FutureCode);

                        if ((this.S_Future != null) && (this.S_Option!= null))
                        {
                            // запускаем экспорт стаканов фьюча и опциона
                            MainWindow.Instance.Trader.RegisterQuotes(S_Future);
                            MainWindow.Instance.Trader.RegisterQuotes(S_Option);
                        }
                    }
                };

Добавил вывод в текстовое поле - пусто. У меня просто напросто это событие не происходит, поэтому и пусто...
Спасибо:

Alexander

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


А сделки по инструментам есть?
Таблица всех сделок экспортируется?

Если ничего этого нет, таблица инструментов не экспортируется - тогда конечно не будет новых инструментов.


Возвращаясь к вопросам -
1) у какого конкретно инструмента вы хотите осуществить вывод стакана?
2) думаю, решён.
Спасибо:

Dottz

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


В настройках экспорта у меня следующее:
Код

this.Trader.StartExport();
//Кастомная таблица по опционам
this.Trader.Terminal.StartDde(_OptionTable);

До сделок по инструментам я еще не дошел , т.к. стакан еще не получается вывести, соответственно и сделок не с чем пока совершать.

1) у меня 2 инструмента : фьюч и опцион , коды которых выбираются на форме. На форму они выводятся из кастомной таблицы опционов. По обоим мне надо вывести стакан. Как я понял, осуществить это возможно, нужно лишь Security.
2) Здесь как я понял, если у меня будет Security , то и экспорт можно ограничить одной этой бумагой и данные по ней получать через ее свойства, наподобие Security.BestBid, Security.Volatility и проч. Я верно понял?
Спасибо:

Alexander

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


Dottz Перейти
В настройках экспорта у меня следующее:
Код

this.Trader.StartExport();
//Кастомная таблица по опционам
this.Trader.Terminal.StartDde(_OptionTable);

До сделок по инструментам я еще не дошел , т.к. стакан еще не получается вывести, соответственно и сделок не с чем пока совершать.

1) у меня 2 инструмента : фьюч и опцион , коды которых выбираются на форме. На форму они выводятся из кастомной таблицы опционов. По обоим мне надо вывести стакан. Как я понял, осуществить это возможно, нужно лишь Security.
2) Здесь как я понял, если у меня будет Security , то и экспорт можно ограничить одной этой бумагой и данные по ней получать через ее свойства, наподобие Security.BestBid, Security.Volatility и проч. Я верно понял?



1) это реально существующие инструменты? почему вы не хотите просто вывести таблицу инструментов с нужными инструментами?
2) проще фильтр в самом квике настроить.
Спасибо:

Dottz

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


Инструменты реально существующие, выводятся из таблицы с квиком. Таблица создается на основе таблицы текущих значений. Да мне просто хочется узнать сам принцип , как имея один код инструмента выделить Security, ибо в дальнейшем много где будет это нужно.
Спасибо:
1 2  >

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

loading
clippy