Гуи клиент на WPF. Для тех, кто не занят.
Atom Ответить
30.01.2011


Предлагаю написать что-то типа Sample или SampleSmart, чтобы можно было визуально тыкать и смотреть результаты. + отправлять заявки и ждать по ним сделки. Видеть стаканы. Кто займется?

Теги:


Спасибо:




43 Ответов
< 1 2 
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 10.03.2011
Ответить


aspirant Перейти
Mikhail Sukhov Перейти
Я так и не понял, на каком этапе закончилось с конфигами и схемами? Они создаются на лету?

Схемы (ini файлы для подключения к потокам репликации) да, конфиги (ini файлы настроек роутера) нет.


Последнее я сделал. Насчет создания схем. А что нужно сделать с PlazaTrader, чтобы ini со схемами создались в рабочей директории?

aspirant Перейти

Mikhail Sukhov Перейти
Можно сейчас получить через NewSecurities новые инструменты?

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


Таблицы инструментов - это что?
Автор топика
Спасибо:

aspirant

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


Mikhail Sukhov Перейти
А что нужно сделать с PlazaTrader, чтобы ini со схемами создались в рабочей директории?


Через Reflection перебрать всех наследников PlazaColumns (наши метаданные) и для каждого вызвать по образцу:
Код
var plazaTable1 = new PlazaTable(PlazaTableTypes.Option, PlazaColumns.Options);
new PlazaTableSerializer().Serialize(plazaTable, _configFileName);

Вопрос: только зачем это? PlazaTrader'у это не нужно: он будет это делать на лету (см. для примера код метода PlazaStreamManager.AddStream). Мы же для этого описывали все метаданные. А пользователя я бы не стал подпускать к ini файлам.



Mikhail Sukhov Перейти
Таблицы инструментов - это что?

opt_vcb для опционов, fut_vcb - для фьючерсов. Это то, что мы на днях обсуждали.
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 10.03.2011
Ответить


aspirant Перейти
Вопрос: только зачем это? PlazaTrader'у это не нужно: он будет это делать на лету (см. для примера код метода PlazaStreamManager.AddStream). Мы же для этого описывали все метаданные. А пользователя я бы не стал подпускать к ini файлам.


Ок, неправильно выразился. У меня пока ini файлы не создаются. В какой момент они начинают создаваться? В момент соединение, старта экспорта или еще когда?
Автор топика
Спасибо:

aspirant

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


Mikhail Sukhov Перейти
У меня пока ini файлы не создаются. В какой момент они начинают создаваться? В момент соединение, старта экспорта или еще когда?

Посмотри мой последний коммит: я добавил подключение к opt_vcb в конструктор PlazaTrader. Данные идут: только что проверял.

private void OnNewDataFromOptVcb(PlazaRecord[] data) - пока только заглушка. Завтра доделаю.

Какие потоки/таблицы/информацию добавить еще в PlazaTrader из стримов?
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 10.03.2011
Ответить


aspirant Перейти

Какие потоки/таблицы/информацию добавить еще в PlazaTrader из стримов?


Все: инструменты, заявки, сделки, тики, поза. Кастомные потоки пока не так интересны. Нужен минимум, чтобы с заявками протестить и убедиться насчет минимального функционала.
Автор топика
Спасибо:

aspirant

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


Mikhail Sukhov Перейти
Все: инструменты, заявки, сделки, тики, поза. Кастомные потоки пока не так интересны. Нужен минимум, чтобы с заявками протестить и убедиться насчет минимального функционала.

Я сейчас вынес это в отдельный метод:
Код
public void StartListeners()
{
    // вот здесь как раз и заполняются метаданные для всех потоков плазы
    // opt_vcb - Справочник торгуемых активов (опционов)
    _plazaStreamManager.AddStream(new PlazaColumnSet(PlazaTableRegistry.OptVcb), TRequestType.RT_COMBINED_DYNAMIC);
            
    // Запускаем _plazaStreamManager, данные из потоков приходят в plazaStreamManager_NewData
    _plazaStreamManager.Start();
}


Вопрос: подключаться ко всем потокам или дать возможность клиенту выбирать, что ему нужно. Для этого я создал перечисление PlazaMarketData. Тогда метод будет выглядеть вот так:
Код
public void StartListeners(PlazaMarketData marketData)
{
    // вот здесь как раз и заполняются метаданные для всех потоков плазы

    if ((marketData & PlazaMarketData.Options) > 0)
    {
        // opt_vcb - Справочник торгуемых активов (опционов)
        _plazaStreamManager.AddStream(new PlazaColumnSet(PlazaTableRegistry.OptVcb), TRequestType.RT_COMBINED_DYNAMIC);
    }
            
    // Запускаем _plazaStreamManager, данные из потоков приходят в plazaStreamManager_NewData
    _plazaStreamManager.Start();
}


Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 13.03.2011
Ответить


aspirant Перейти

Вопрос: подключаться ко всем потокам или дать возможность клиенту выбирать, что ему нужно. Для этого я создал перечисление PlazaMarketData. Тогда метод будет выглядеть вот так:
Код
public void StartListeners(PlazaMarketData marketData)
{
    // вот здесь как раз и заполняются метаданные для всех потоков плазы

    if ((marketData & PlazaMarketData.Options) > 0)
    {
        // opt_vcb - Справочник торгуемых активов (опционов)
        _plazaStreamManager.AddStream(new PlazaColumnSet(PlazaTableRegistry.OptVcb), TRequestType.RT_COMBINED_DYNAMIC);
    }
            
    // Запускаем _plazaStreamManager, данные из потоков приходят в plazaStreamManager_NewData
    _plazaStreamManager.Start();
}



Я бы сделал так:
Код
public void StartListeners(params PlazaTable[] tables)
{
    foreach (var table in tables)
_plazaStreamManager.Add(table, TRequestType.RT_COMBINED_DYNAMIC);
            
    // Запускаем _plazaStreamManager, данные из потоков приходят в plazaStreamManager_NewData
    _plazaStreamManager.Start();
}
Автор топика
Спасибо:

aspirant

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


Mikhail Sukhov Перейти
Я бы сделал так:
Код
public void StartListeners(params PlazaTable[] tables)
{
    foreach (var table in tables)
_plazaStreamManager.Add(table, TRequestType.RT_COMBINED_DYNAMIC);
            
    // Запускаем _plazaStreamManager, данные из потоков приходят в plazaStreamManager_NewData
    _plazaStreamManager.Start();
}


Да, так будет удобнее
Спасибо:

aspirant

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


Утром вспомнил, почему решил подключаться к потокам через перечисление PlazaMarketData. Хочу предложить два варианта подключения через PlazaTrader:
  1. Подключение к стандартным стримам, данные которых будут перегоняться в стандартные объекты. Здесь используется метод с моей сигнатурой, чтобы контроллировать, какие потоки запрашиваются с сервера.
  2. Подключение к любым потокам с настраиваемым набором колонок. Здесь используется твоя сигнатура. Данные будут выдаваться клиенту в "сыром формате".
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 14.03.2011
Ответить


aspirant Перейти
Утром вспомнил, почему решил подключаться к потокам через перечисление PlazaMarketData. Хочу предложить два варианта подключения через PlazaTrader:
  1. Подключение к стандартным стримам, данные которых будут перегоняться в стандартные объекты. Здесь используется метод с моей сигнатурой, чтобы контроллировать, какие потоки запрашиваются с сервера.
  2. Подключение к любым потокам с настраиваемым набором колонок. Здесь используется твоя сигнатура. Данные будут выдаваться клиенту в "сыром формате".


Хм, а почему PlazaTable не использовать и для того, и для другого?
Автор топика
Спасибо:

aspirant

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


Mikhail Sukhov Перейти
Хм, а почему PlazaTable не использовать и для того, и для другого?


С помощью PlazaTable я собираюсь описать все таблицы в потоках плазы папки (см. содержимое C:\Program Files (x86)\P2FORTSGate\Scheme ). Мы ведь не собираемся перегонять в стандартные объекты все таблицы? А если использовать только твою сигнатуру, клиент сможет запрашивать данные не только из основных таблиц (opt_vcb и т.д.), но и всякую эзотерику. Кроме того таблицы стаканов - тоже будут описаны при помощи PlazaTable.

Кстати, твой метод правильнее будет объявляться вот так:
Код
public void StartListeners(params PlazaColumnList[] tables)


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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 14.03.2011
Ответить


aspirant Перейти
Кстати, твой метод правильнее будет объявляться вот так:
Код
public void StartListeners(params PlazaColumnList[] tables)



А как же PlazaTable.Columns?
Автор топика
Спасибо:

aspirant

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


Mikhail Sukhov Перейти
А как же PlazaTable.Columns?

Мне кажется правильнее или удобнее будет, если один класс (PlazaTable) отвечает за описание метаданных, а другой (PlazaColumnList) - за создание наборов колоннок/полей для получения данных из потоков. Посмотри: я только что залил обновленный PlazaTableRegistry, а также всех наследников PlazaColumns, отвечающих за опционы.
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 14.03.2011
Ответить


aspirant Перейти
Mikhail Sukhov Перейти
А как же PlazaTable.Columns?

Мне кажется правильнее или удобнее будет, если один класс (PlazaTable) отвечает за описание метаданных, а другой (PlazaColumnList) - за создание наборов колоннок/полей для получения данных из потоков.


Для меня выделенное - синонимы. В чем разница?
Автор топика
Спасибо:

aspirant

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


Mikhail Sukhov Перейти
Для меня выделенное - синонимы. В чем разница?


Сегодня вечером постараюсь ответить. Пока другой вопрос: инструменты на примере опционов - это

opt_vcb - Справочник торгуемых активов

или

opt_sess_contents - Cправочник торгуемых инструментовConfused



Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 17.03.2011
Ответить


aspirant Перейти
Mikhail Sukhov Перейти
Для меня выделенное - синонимы. В чем разница?


Сегодня вечером постараюсь ответить. Пока другой вопрос: инструменты на примере опционов - это

opt_vcb - Справочник торгуемых активов

или

opt_sess_contents - Cправочник торгуемых инструментовConfused


Однозначно 2-ое. Но интересно, что такое первое.
Автор топика
Спасибо:

aspirant

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


Mikhail Sukhov Перейти
aspirant Перейти

opt_vcb - Справочник торгуемых активов

Однозначно 2-ое. Но интересно, что такое первое.


Таблица 39. Поля таблицы opt_vcb
Поле Тип Описание
replID i8 Служебное поле подсистемы репликации
replRev i8 Служебное поле подсистемы репликации
replAct i8 Служебное поле подсистемы репликации
code_vcb c25 Код базового актива
name c75 Наименование
exec_type c1 Тип исполнения
curr c3 Валюта платежа
exch_pay d16.2 Биржевой сбор за 1 контракт в рублях
exch_pay_scalped i1 Признак скальпирования биржевого сбора
clear_pay d16.2 Клиринговый сбор за 1 контракт в рублях
clear_pay_scalped i1 Признак скальпирования клирингового сбора
sell_fee d7.3 Комиссия с продавца. Не используется
buy_fee d7.3 Комиссия с покупателя. Не используется
trade_scheme c1 Форма торгов
coeff_out d7.3 Коэффициент приближенности 'внелимитных' опционов
is_spec i1 1-по этому контракту шлюз (и его фирма) является
специалистом по запросам на котировку
spec_spread d16.5 Спред специалиста
min_vol i4 Минимальный объем в котировках специалиста
client_code c7 Код клиента

Спасибо:

aspirant

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


Mikhail Sukhov Перейти
Но интересно, что такое первое.


Не то днем указал. Вот первое:

Таблица opt_sess_contents: Cправочник торгуемых инструментов
Таблица содержит справочник инструментов, назначенных к торгам в сессию.

replID i8 Служебное поле подсистемы репликации
replRev i8 Служебное поле подсистемы репликации
replAct i8 Служебное поле подсистемы репликации
sess_id i4 Идентификатор торговой сессии
isin_id i4 Уникальный числовой идентификатор инструмента
isin c25 Символьный код инструмента
short_isin c25 Описатель инструмента
name c75 Наименование инструмента
code_vcb c25 Код базового актива
fut_isin_id i4 Код фьючерсного инструмента
is_limited i1 Признак наличия лимитов в торгах
limit_up d16.5 Верхний лимит премии
limit_down d16.5 Нижний лимит премии
old_kotir d16.5 Котировка (Теоретическая цена опциона) предыдущей сессии
bgo_c d16.2 Базовое ГО под одну покрытую позицию подписчика (руб)
bgo_nc d16.2 Базовое ГО под одну непокрытую позицию подписчика(руб)
europe i1 Разновидность опциона. 0 - американский опцион, 1 - европейский опцион
put i1 Тип опциона. 0 - Call опцион,1 - Put опцион
strike d16.5 Цена страйк
roundto i4 Количество знаков после запятой в цене
min_step d16.5 Минимальный шаг премии
lot_volume i4 К-во единиц базового актива в инструменте
step_price d16.5 Стоимость шага премии
d_pg t Дата окончания обращения инструмента
d_exec_beg t Дата начала экспирации инструмента
d_exec_end t Дата окончания экспирации инструмента
signs i4 Поле признаков
last_cl_quote d16.5 Расчетная Цена (Теоретическая цена опциона) после последнего клиринга
bgo_buy d16.2 Базовое ГО под покупку маржируемого опциона
base_isin_id i4 Числовой идентификатор базового инструмента
Спасибо:
< 1 2 

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

loading
clippy