aspirant
|
Date: 3/13/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();
}
|
|
|
|
Thanks:
|
|
|
|
|
|
Mikhail Sukhov
|
Date: 3/13/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();
}
|
|
|
|
Thanks:
|
|
|
|
|
|
aspirant
|
Date: 3/13/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();
}
Да, так будет удобнее
|
|
|
|
Thanks:
|
|
|
|
|
|
aspirant
|
Date: 3/14/2011
Утром вспомнил, почему решил подключаться к потокам через перечисление PlazaMarketData. Хочу предложить два варианта подключения через PlazaTrader:
- Подключение к стандартным стримам, данные которых будут перегоняться в стандартные объекты. Здесь используется метод с моей сигнатурой, чтобы контроллировать, какие потоки запрашиваются с сервера.
- Подключение к любым потокам с настраиваемым набором колонок. Здесь используется твоя сигнатура. Данные будут выдаваться клиенту в "сыром формате".
|
|
|
|
Thanks:
|
|
|
|
|
|
Mikhail Sukhov
|
Date: 3/14/2011
aspirant:
Утром вспомнил, почему решил подключаться к потокам через перечисление PlazaMarketData. Хочу предложить два варианта подключения через PlazaTrader:
- Подключение к стандартным стримам, данные которых будут перегоняться в стандартные объекты. Здесь используется метод с моей сигнатурой, чтобы контроллировать, какие потоки запрашиваются с сервера.
- Подключение к любым потокам с настраиваемым набором колонок. Здесь используется твоя сигнатура. Данные будут выдаваться клиенту в "сыром формате".
Хм, а почему PlazaTable не использовать и для того, и для другого?
|
|
|
|
Thanks:
|
|
|
|
|
|
aspirant
|
Date: 3/14/2011
Mikhail Sukhov:
Хм, а почему PlazaTable не использовать и для того, и для другого?
С помощью PlazaTable я собираюсь описать все таблицы в потоках плазы папки (см. содержимое C:\Program Files (x86)\P2FORTSGate\Scheme ). Мы ведь не собираемся перегонять в стандартные объекты все таблицы? А если использовать только твою сигнатуру, клиент сможет запрашивать данные не только из основных таблиц (opt_vcb и т.д.), но и всякую эзотерику. Кроме того таблицы стаканов - тоже будут описаны при помощи PlazaTable.
Кстати, твой метод правильнее будет объявляться вот так:
public void StartListeners(params PlazaColumnList[] tables)
PlazaTable знает только название таблицы в потоке, название схемы и название самого потока. С помощью PlazaColumnList я буду создавать схемы (ini-файлы). Вчера я хотел это делать с помощью PlazaColumnSet.
|
|
|
|
Thanks:
|
|
|
|
|
|
Mikhail Sukhov
|
Date: 3/14/2011
aspirant:
Кстати, твой метод правильнее будет объявляться вот так:
public void StartListeners(params PlazaColumnList[] tables)
А как же PlazaTable.Columns?
|
|
|
|
Thanks:
|
|
|
|
|
|
aspirant
|
Date: 3/14/2011
Mikhail Sukhov:
А как же PlazaTable.Columns?
Мне кажется правильнее или удобнее будет, если один класс (PlazaTable) отвечает за описание метаданных, а другой (PlazaColumnList) - за создание наборов колоннок/полей для получения данных из потоков. Посмотри: я только что залил обновленный PlazaTableRegistry, а также всех наследников PlazaColumns, отвечающих за опционы.
|
|
|
|
Thanks:
|
|
|
|
|
|
Mikhail Sukhov
|
Date: 3/15/2011
aspirant:
Mikhail Sukhov:
А как же PlazaTable.Columns?
Мне кажется правильнее или удобнее будет, если один класс (PlazaTable) отвечает за описание метаданных, а другой (PlazaColumnList) - за создание наборов колоннок/полей для получения данных из потоков.
Для меня выделенное - синонимы. В чем разница?
|
|
|
|
Thanks:
|
|
|
|
|
|
aspirant
|
Date: 3/17/2011
Mikhail Sukhov:
Для меня выделенное - синонимы. В чем разница?
Сегодня вечером постараюсь ответить. Пока другой вопрос: инструменты на примере опционов - это
opt_vcb - Справочник торгуемых активов
или
opt_sess_contents - Cправочник торгуемых инструментов[confused]
|
|
|
|
Thanks:
|
|
|
|
|