Список задач
Atom
29.12.2010
Mikhail Sukhov


И так, предлагаю подытожить то, что нужно сделать и в каком порядке.

Задачи сгруппировал по группам (копировал из соседней ветки http://stocksharp.com/forum/1275/&p=2). Первая группа - самая приоритетная. Без нее делать задачи из следующей бессмысленно. Сами задачи внутри этой группы так же выстроены по очередности.

Базовая группа:

  1. Описать основные метаданные, как это сделано для Квика (DdeSecurityColumns, DdeTradeColumns и т.д.). Я это уже показал на примере класса PlazaFutureColumns, но там колонки не реальные. Предлагаю прямо разобрать по названию таблиц потоков, кто за какие будет отвечать (описывать в коде). Таблицы только основные: инструменты, заявки, сделки и т.д.
  2. Подписываться на произвольные потоки + отписываться.
  3. Получать стаканы. Производная от предыдущей задача. Выделил ее отдельно.
  4. Заявки (регистрация, снятие и перемещение). Я уже сделал через класс Message заполнение полей для отправки транзакций. Это дело надо доделать.
  5. Парсинг ответа от транзакций (внимание! всех транзакций, а не только, что в предыдущем пункте). Я не знаю, в каком виде они приходят, но могу сказать, какой результат должен быть. Это должно быть PlazaException с кодом ошибки (чтобы не мучится сравнение строчек в коде). И код не ввиде числа (что не так уж лучше строчки), а нормального перечисления (enum).


Первую задачу предлагаю сделать сообща. Остальные - разбираем по тем признакам, кто какие таблицы описывал (например, кто описал стакан, тот занимается задачей 3, кто инструменты - задачей 2, кто заявки - задачей 4).

Второстепенная группа:

  1. Дописать все остальные метаданные (позиции, счета, волатильность, маржа, клиринг, доп информация о деривативах, индексы).
  2. Фильтрация потоков. Так как Плаза не дает фильтр (камрад skuvv написал об этом), но в клиентском коде прописывать фильтры дело не благодарное, предлагаю это симулировать через RegisterXXX + UnRegisterXXX.
  3. Возможность задавать глубину стакана (как я понял, это влияет на то, к какому потоку необходимо цепляться).
  4. Поддержка агрегированного стакана и обычного. Для этого можно использовать GroupedQuote (внутри себя он будет содержать не агрегированные котировки).


Третьестепенная группа:

  1. С помощью метаданных научиться строить конфиги ini. Как вариант, через PlazaTable (куда собственно и будут добавляться колонки из пункта 1 пред группы). Сейчас ini файлы программно редактировать нельзя. И если роботу нужны спец колонки нужно менять формат ini схем. Я предлагаю до загрузки этих схем давать возможность менять из программно (парсить и менять ini файлы на лету). + как фича автоматически сканировать директорию при старте и создавать с правильным набором колонок сами PlazaTable. Возможно, здесь поможет TableSet.
  2. Время биржи.
  3. Все остальные транзакции (FutChangeClientMoney, OptChangeExpiration и т.д.).
  4. Составные инструменты.
  5. На форуме доступна x64 версия. Нужна прозрачная поддержка (без перекомпиляции) x86 и x64.
  6. Обертка над роутером (чтобы так же, не ручками править конфиги, а программно).
  7. Документация (как xml, так и обычная). Если нужно сделать как у S#, то необходимо использовать Sandcastle.


Особенности в работе.

Старайтесь писать так, как это принято в .NET и в частности C# коде.
Публичные методы классы и т.д. описывайте xml комментариями (лучше не сочинять, а копировать из документации Плазы, чтобы быть не с планеты Юпитер, а ближе к тем, кто будет это использовать и вторым глазом подглядывать в документацию).
Предлагаю использовать R# как средство для контроля качества кода.
Пишите юнит тесты (заведите отдельный проект в sln).

Теги:


Спасибо:


< 1 2 3 4 5  > >>
Mikhail Sukhov

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


skuvv
добавил таблицу Common для FORTS_FUTCOMMON_REPL
ps таблица совпадает с таблицей их потока FORTS_OPTCOMMON_REPL
+ беру FORTS_POS_REPL,FORTS_PART_REPL,RTS_INDEX_REPL,FORTS_VM_REPL


Ок. Такие же просьбы как и к аспиранту. Плюс, посмотрите как я переделал PlazaPosColumns (вынес общие поля в базовый класс + сделал поля не статичными).
Спасибо:

aspirant

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


Понял, приму к сведению.
Спасибо:

lkor

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


добавил таблицу orders_log из FORTS_FUTTRADE_REPL. наследовал от PlazaColumns

PS Таблица совпадает с orders_log из FORTS_OPTTRADE_REPL (отличие в том что для опционов поле status может принимать ещё 2 дополнительных значения)

PPS Первый опыт работы в команде и с TFS - ногами не бить.[rolleyes]

PPPS как изменить платформу с 4.0 на 3.5? Найти в VS2010 у меня не получилось. [confused]
Спасибо:

aspirant

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


lkor
PPPS как изменить платформу с 4.0 на 3.5? Найти в VS2010 у меня не получилось. [confused]


В свойствах проекта на закладе Приложение / Application
Спасибо:

lkor

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


aspirant
lkor
PPPS как изменить платформу с 4.0 на 3.5? Найти в VS2010 у меня не получилось. [confused]


В свойствах проекта на закладе Приложение / Application


Спасибо!
Спасибо:

aspirant

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


Описал метаданные по опционам. Вопрос к знающим: нужно описывать таблицу
opt_rejected_orders - Отвергнутые в клиринг заявки?
Спасибо:

lkor

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


добавил таблицу deal из FORTS_FUTTRADE_REPL

PS Таблица совпадает с deal из FORTS_OPTTRADE_REPL (опять отличие в разных вариантах значений поля status)
Спасибо:

lkor

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


таблица heartbeat из FORTS_FUTTRADE_REPL уже существует в виде PlazaHeartBeatColumns, собственно её не описываю.

добавил таблицы multileg_deal и multileg_orders_log из FORTS_FUTTRADE_REPL
Спасибо:

Mikhail Sukhov

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


Надо бы произвести уже сейчас чистку некоторых вещей. Отпишу здесь по названию классов, кто за них ответственен - разбирайте. Но прочитайте все пункты, так как может быть и у вас так же.

PlazaFutCommonColumns:

  1. Наследования от базового класса PlazaColumns отсутствует.
  2. Cо статических полей переделать на обычные (иначе наследование работать не будет), и записать свою таблицу в PlazaColumns как статическое поле.
  3. Придерживаться .NET стиля. Тоесть, не Sess_id, а SessId, не status а Status.
  4. Если таблица одинаковая для опцов и фьючей, то и называть класс нужно Derivative, а не Futute. Как плюс, задел на будущее, что РТС расширит поля в одной из таблиц, и тогда они перестанут быть эквивалентными. Тогда можно будет сделать Derivative абстрактным и сделать два специфичных наследника.
  5. Таблицы FORTS_FUTCOMMON_REPL и FORTS_OPTCOMMON_REPL не одинаковы. Это значит что уже сейчас надо выносить в базовый класс общие поля и производить наследование. Особенно, обратить внимание на передачу типа таблицы в базовый класс. Как пример, PlazaDerivativeColumns и PlazaOptionColumns.


PlazaFutTradeDealColumns, PlazaFutTradeMultilegDealColumns, PlazaFutTradeMultiLegOrdersLogColumns, PlazaFutTradeOrdersLogColumns:

  1. Тоже самое, что и PlazaFutCommonColumns, кроме наследования от PlazaColumns.
  2. Везде указывается тип таблицы Trade. Так ли это?


PlazaHeartBeatColumns

  1. Неправильный тип таблицы у ServerTime.
  2. Это единственная таблица с системными данными? Если нет, то название System не подходит.
  3. Конструкторы у классов с метаданными лучше делать internal.


Насчет общего стиля именования. Предлагаю, писать полностью имена, тоесть:

OrdId -> OrderId
SessId -> SessionId
Dir -> Direction

Название ISIN можно писать как ISIN, Isin, но никак не IsIn. Аббревиатуры (в данном случае International Securities Identification Number) так не пишутся.

Предлагаю не писать тип данных в комментариях к поля (i) (t) и т.д.. Добавляет лишнюю смысловую нагрузку, которая по сути вряд ли будет использоваться из вне.
Спасибо:

skuvv

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


Mikhail Sukhov

Насчет общего стиля именования. Предлагаю, писать полностью имена, тоесть:

OrdId -> OrderId
SessId -> SessionId
Dir -> Direction

Название ISIN можно писать как ISIN, Isin, но никак не IsIn. Аббревиатуры (в данном случае International Securities Identification Number) так не пишутся.

Предлагаю не писать тип данных в комментариях к поля (i) (t) и т.д.. Добавляет лишнюю смысловую нагрузку, которая по сути вряд ли будет использоваться из вне.

А есть ли смысл менять названия полей? Поидее по документам plaza будет легче сопостовлять поля если они будут с оригинальными совпадать...
Спасибо:
< 1 2 3 4 5  > >>

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

loading
clippy