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: - Подключение к стандартным стримам, данные которых будут перегоняться в стандартные объекты. Здесь используется метод с моей сигнатурой, чтобы контроллировать, какие потоки запрашиваются с сервера.
- Подключение к любым потокам с настраиваемым набором колонок. Здесь используется твоя сигнатура. Данные будут выдаваться клиенту в "сыром формате".
|
|
Спасибо:
|
|
|
|
|
Mikhail Sukhov
|
Дата: 14.03.2011
aspirant Утром вспомнил, почему решил подключаться к потокам через перечисление PlazaMarketData. Хочу предложить два варианта подключения через PlazaTrader: - Подключение к стандартным стримам, данные которых будут перегоняться в стандартные объекты. Здесь используется метод с моей сигнатурой, чтобы контроллировать, какие потоки запрашиваются с сервера.
- Подключение к любым потокам с настраиваемым набором колонок. Здесь используется твоя сигнатура. Данные будут выдаваться клиенту в "сыром формате".
Хм, а почему 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
|
Дата: 15.03.2011
aspirant Mikhail Sukhov А как же PlazaTable.Columns? Мне кажется правильнее или удобнее будет, если один класс (PlazaTable) отвечает за описание метаданных, а другой (PlazaColumnList) - за создание наборов колоннок/полей для получения данных из потоков. Для меня выделенное - синонимы. В чем разница?
|
|
Спасибо:
|
|
|
|
|
aspirant
|
Дата: 17.03.2011
Mikhail Sukhov Для меня выделенное - синонимы. В чем разница? Сегодня вечером постараюсь ответить. Пока другой вопрос: инструменты на примере опционов - это opt_vcb - Справочник торгуемых активов или opt_sess_contents - Cправочник торгуемых инструментов[confused]
|
|
Спасибо:
|
|
|
|