← Back

Совместная разработка PlazaTrader

Всех приветствую!

Думаю, уже не секрет, что прямое соединения в биржей начинает занимать серьезную долю рынка в робототорговле. И последний ЛЧИ 2010 эти утверждения только подтверждает. Конечно же, S# не может пропустить такое грандиозное наступление сил Плаза2, но нужно нечто большее, чем просто наблюдение за развитием событий.

Предлагаю всем заинтересованным, кто в ближайшей и не только перспективе, видит себя в качестве разработчика роботов под Плазу, объединиться в едином совместном проекте. Этот проект будет включать в себя реализацию ITrader под шлюз РТС. Название, собственно, предрешено - PlazaTrader.

Что могу предоставить лично я:

  • Совместное рабочее пространство ввиде репозитария на TFS.
  • Первичный каркас.
  • Совместное кодирование и отладка кода.
  • Частичное улучшение знаний C# (буду исправлять код и комментировать свои исправления).

Логин-пароль к исходникам предоставляется всем желающим (по личке). Количество логинов неограниченно, но "мертвых" пользователей буду удалять. Будут ли доступны исходники всем остальным (например, тем, кто не принимал участие в разработке) и под какой лицензией выпускать продукт - решается коллективно. Я принимаю соглашательскую позицию, с единственным НО - чтобы конечный продукт был бесплатен как для платного ПО, так и для бесплатного (как сейчас распространяется S#).

Из бенефитов в участии в вижу следующее:

  • Получить работающее решение быстрее, чем разрабатывать самому.
  • Разработанное совместно решение будет содержать меньше ошибок (за счет ревью другими участниками, большим количеством тестеров).
  • Влиять на развитие функциональности.
  • Проще разрабатывать свое ПО (+ на продажу), обладая совместным экспертным знанием (со стороны такие знания получить практически невозможно, говорю по собственному опыту).
  • Звание Клевый Чувак на многих форумах Рунета по трейдингу.😀

Comments (59)

Login or Create account, Log in or register to leave a comment

anothar
anothar

Михаил, а есть ли документация на Плазу-мне интересно прикинуть объем работы...

Mikhail Sukhov
Mikhail Sukhov Author

Андрей Ефимов: Михаил, а есть ли документация на Плазу-мне интересно прикинуть объем работы...

http://forum.rts.ru/viewtopic.asp?t=18946 Но мне видится для реально удобной работы более, чем простая обертка над Плаза. Уж больно АПИ топорно сделан.

anothar
anothar

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

Mikhail Sukhov
Mikhail Sukhov Author

Андрей Ефимов: Ндамс, бросил беглый взгляд-написано много. Написано много страшного. Они видать как и транзаковцы легких путей не ищут и другим не советуют.

У них цели другие - перевести на новую платформу. Так как у них в руках рубильник, искать легкие пути предполагается клиентам. Это рынок, что поделать.

anothar
anothar

В том то и противоречие, что если цель-перевести на новую платформу, то проще всего этого добиться дав людям в руки готовый инструмент и чем он проще тем лучше. Но это так - о наболевшем))) На следующей неделе появится время-оценю объем работ, а там напишу приму ли участие. Мне еще транзак надо когда-то доделывать)))

MCTuTeJ|19951995
MCTuTeJ|19951995

Хотелось бы конечно чем-нибудь помочь ( Звание Клевый Чувак на многих форумах Рунета по трейдингу - моя мечта ❤️ ), но я не чувствую себя достаточно компетентным . . . 😭

Mikhail Sukhov
Mikhail Sukhov Author

MCTuTeJ|19951995: Хотелось бы конечно чем-нибудь помочь ( Звание Клевый Чувак на многих форумах Рунета по трейдингу - моя мечта ❤️ ), но я не чувствую себя достаточно компетентным . . . 😭

Моя инициатива сделать совместно обертку над Plaza является неких экспериментом и ответом тем, кто неустанно говорит об открытости исходниках, общей разработки и т.д. Вот оно, все открыто, все с нуля, без дураков. Посмотрим на реакцию пользователей стокпортала и паука, которые пяткой в грудь били и мамой клянулись, что будущее за опен сорсом.😀

anothar
anothar

😂 Конечно за опен-сурсом, нахаляву то код (только зачем он им нужен🤔 ?)))

Иванов Андрей
Иванов Андрей

Что такое "шлюз РТС"? Это торговля на площадке РТС или что-то другое? У меня в договоре фигурировала строка "RTS Standard", но торговать я мог только на ММВБ, разбираться в терминах было лень =) Торговать можно только на РТС через Плазу или и на ММВБ тоже?

Mikhail Sukhov
Mikhail Sukhov Author

Иванов Андрей: Что такое "шлюз РТС"? Это торговля на площадке РТС или что-то другое? У меня в договоре фигурировала строка "RTS Standard", но торговать я мог только на ММВБ, разбираться в терминах было лень =) Торговать можно только на РТС через Плазу или и на ММВБ тоже?

Плаза - это новая технология для доступа к РТС (FORTS, Стандарт и Классика) и только, так как является их собственной разработкой. До этого подключение было через Sql gate (текущее на COM, что на мой взгляд является сменой шила на мыло😀). У Мамбы свое решение, но я не знаю в каком оно состоянии, особенно для частника. Другими словами, какое-то время, даже если переползти на Плазу, придется использовать для Мамбы тот же Квик (или Смарт). И да, для доступа к шлюзу напрямую через Плазу придется платить абонентку.

Иванов Андрей
Иванов Андрей

И много таких среди пользователей S#, кто на РТС скальпит? Может быть, на главной странице сайта повесить опрос "что вы делаете?" с несколькими вариантами ответов (и не забыть про "Другое")?

Мне кажется, что скальпинг это слишком просто, там и существующими пользователями, судя по форуму, уже забиты все мощности. С другой стороны, успех клона Фейсбука привёл к тому, что канал между Питером и Москвой сильно расширили =)

Я бы занимался тем, что работало на ММВБ и позволило отказаться от Quik. РТС -- унылый динозавр из 20-го века.

Mikhail Sukhov
Mikhail Sukhov Author

Иванов Андрей: И много таких среди пользователей S#, кто на РТС скальпит? Может быть, на главной странице сайта повесить опрос "что вы делаете?" с несколькими вариантами ответов (и не забыть про "Другое")?

Практически на всех популярных (и не очень) сайтах дал ссылку на этот топик. Так что я думаю аудиторию охватил даже больше, чем пользователи S#.

Иванов Андрей: Мне кажется, что скальпинг это слишком просто, там и существующими пользователями, судя по форуму, уже забиты все мощности.

А вот я как раз скальпингом не занимаюсь. Но занимаюсь сейчас роботом HTF, и мне бы Плаза помогла. По крайней мере уменьшило проскальзывание. Потому как на Купели HFT делать можно, но не так эффективно.

Иванов Андрей: С другой стороны, успех клона Фейсбука привёл к тому, что канал между Питером и Москвой сильно расширили =)

В соц сетях не сильно разбираюсь. Это что за история?

Иванов Андрей: Я бы занимался тем, что работало на ММВБ и позволило отказаться от Quik. РТС -- унылый динозавр из 20-го века.

Я думаю, через год Мамба уже даст подобное, что дал их конкурент. Они конечно дуют ноздри насчет роботов, но рынок порождает спрос, а не предложение. Так что, будет и MicexTrader. Очень даже действенный способ отказаться от Квика.

anothar
anothar

Я бы занимался тем, что работало на ММВБ и позволило отказаться от Quik. РТС -- унылый динозавр из 20-го века. Ну так-то фучи на РТС появились раньше чем на мамбе и сейчас развиты лучше. Дак тут проблема с брокерами-у каждого свое ПО или вообше нет возможности работать без квика. Свое открытое АПи есть есть у Финама(точнее там транзак-коннектор), АйТиИнвест, вроде у Алора, ну и у каких-то брокеров поменьше(У БКС-только квик). Так что по сути тут все упирается именно в брокера. Плаза недешева и если не скальпируешь, то смысла нет.

Иванов Андрей
Иванов Андрей

Я бы занимался тем, что работало на ММВБ и позволило отказаться от Quik. РТС -- унылый динозавр из 20-го века. Ну так-то фучи на РТС появились раньше чем на мамбе и сейчас развиты лучше. Дак тут проблема с брокерами-у каждого свое ПО или вообше нет возможности работать без квика. Свое открытое АПи есть есть у Финама(точнее там транзак-коннектор), АйТиИнвест, вроде у Алора, ну и у каких-то брокеров поменьше(У БКС-только квик). Так что по сути тут все упирается именно в брокера. Плаза недешева и если не скальпируешь, то смысла нет. Фичи, реализованные неидеально, мягко говоря =) На сайте micex.ru, например, смотришь график по инструменту, видно сразу и цену, и объём. Интервал вывода можно выбрать любой, хоть от начала торгов по инструменту, у РТС максимум год. micex.ru современно выглядит, rts.ru, наверное, с начала своего рождения такой ужас-ужас вместо сайта людям показывает.

У меня был выбор между Тройкой и Финамом -- они примерно равноудалены от работы =) Победила Тройка, потому что график Финама в его рекламе рисовал не человек =) Хотя сайт у Финама самый лучший из брокеров.

Mikhail Sukhov:

Иванов Андрей: С другой стороны, успех клона Фейсбука привёл к тому, что канал между Питером и Москвой сильно расширили =)

В соц сетях не сильно разбираюсь. Это что за история?

Это была вся история =) В контакте по мере роста начал тормозить в Москве сам и тормозить всё остальное из Питера. Из-за этого магистральные провайдеры увеличили ширину канала между Питером и Москвой.

skuvv
skuvv

Готов поучаствовать в проекте. У меня есть опыт и рабочий самописный шлюз с роботом. Цель - получение experience -)

makaka
makaka

опыта мало. прогаю плохо :) возьмите меня, если кикните то не обижусь :))

Disperados
Disperados

Готов помочь в бета-тестировании, в плане программирования на меня особо расчитывать не стоит - самоучка, ломать не строить...

AndreyS
AndreyS

Готов участвовать. Отличный проект! В одиночку объем работ удручает, а в компании намного веселей) Есть опыт написания роботов. На C# программирую вполне сносно.

Mikhail Sukhov
Mikhail Sukhov Author

К концу рабочей недели выложу свой список задач. Это то, что на мой взгляд можно сделать в рамках проекта. Постараюсь задач выделить независимыми друг от друга (но не уверен, что получится).

Пока всем тем, кто уже присоединился (все успешно зашли?) предлагаю прочитать документацию по шлюзу. Вот дока по самой Plaza ftp://ftp.rts.ru/pub/FORTS/test/Plaza2/P2ClientGate.doc , а вот по метаданным ftp://ftp.rts.ru/pub/FORTS/test/Plaza2/p2gate_ru.pdf (схема таблиц с колонками, названия функций для регистрации заявок, снятие и т.д.).

У кого нибудь уже назрело предложение по тому, какие фичи стоит сделать для PlazaTrader?

dard
dard

а какие фичи могут быть? мы вроде собираемся реализовать интерфейс ITrader, вот все его фичи и реализуем

Mikhail Sukhov
Mikhail Sukhov Author

dard: а какие фичи могут быть? мы вроде собираемся реализовать интерфейс ITrader, вот все его фичи и реализуем

ITrader - это красивый фантик, удобный для держания в руке. А я говорю о самой конфете, которую еще изготовить нужно. В плане Плазы тут довольно много дел. Вот мое видение того, что нужно сделать:

  1. Описать метаданные, как это сделано для Квика (DdeSecurityColumns, DdeTradeColumns и т.д.). Я это уже показал на примере класса PlazaFutureColumns, но там колонки не реальные.
  2. С помощью этих метаданных научиться строить конфиги ini. Как вариант, через PlazaTable (куда собственно и будут добавляться колонки из пункта 1). Сейчас их программно делать нельзя. И если роботу нужны спец колонки нужно менять формат ini схем. Я предлагаю до загрузки этих схем давать возможность менять из программно (парсить и менять ini файлы на лету). + как фича автоматически сканировать директорию при старте и создавать с правильным набором колонок сами PlazaTable. Возможно, здесь поможет TableSet.
  3. Подписываться на потоки + задавать в них фильтры. Подписывать на тики, обновление инструментов.
  4. Cтаканы. Производная от предыдущей задача.
  5. Обработка заявок. Я уже сделал через класс Message заполнение полей для отправки транзакций. Это дело надо доделать. Плюс я думаю надо ввести поддержку экзотики (адресные, внесистемные заявки), чтобы можно было использовать брокерским компаниям, если они захотят.
  6. Парсинг ответа. Я не знаю, в каком виде они приходят, но могу сказать, какой результат должен быть. Это должно быть PlazaException с кодом ошибки (чтобы не мучится сравнение строчек в коде). И код не ввиде числа (что не так уж лучше строчки), а нормального перечисления (enum).
  7. Позиции, счета, волатильность, маржа. Это все нужно так же сделать (на основе пункта 1 и 2).
  8. Работы с БД. У плазу клиента два режима. Первый пишет в БД, второй не пишет. Приоритетным мне кажется тот, который не пишет. Но вдруг кому то потребуется, чтобы писались данные (как я понял, это дело устроено с помощью SQLite). Так что нужно опция.
  9. На форуме доступна x64 версия. Нужна прозрачная поддержка (без перекомпиляции) x86 и x64.
  10. Обертка над роутером (чтобы так же, не ручками править конфиги, а программно).
  11. Юнит тесты.
  12. Документация (как xml, так и обычная). Если нужно сделать как у S#, то необходимо использовать Sandcastle.

Как то так. Если есть еще что, пишите. На след. неделе надо уже разбирать задачи.

aspirant
aspirant

Сегодня получил тестовый доступ к Плазе. В принципе, как вы, Михаил, и писали, это было несложно: нужно было написать заявку в их службу поддержку. Они задали пару общих вопросов, после чего выдали логин и пароль. Завтра приступаю к изучению документации.

Bell
Bell

Желательно сначала реализовать простейший интерфейс: получение стаканов, отправка ордеров. Лучше threadsafe, если это не скажется на производительности.

aspirant
aspirant

Предлагаю взять пункт 10: программная обертка конфигов роутера. Я так понимаю, что править нужно будет следующие конфиги: client_router.ini P2ClientGate.ini Остальные, судя по всему, к настройке роутера отношения не имеют.

Mikhail Sukhov
Mikhail Sukhov Author

aspirant: Предлагаю взять пункт 10: программная обертка конфигов роутера. Я так понимаю, что править нужно будет следующие конфиги: client_router.ini P2ClientGate.ini Остальные, судя по всему, к настройке роутера отношения не имеют.

Насчет разделения труда. Некоторые задачи друг от друга зависят. Например, 10-ая зависит от 1 и 2 (общий механизм правки ИНИ файлов). Так что мне все больше видеться, что разделение будет горизонтальным, а не вертикальным. Как вариант, можно совместно взять и быстро реализовать задачи номер 1 и 2 (там так же будет список задач, только уже свой). И уже дальше разделится, имея общие классы и типы данных.

Я так понимаю, высказался только nlrf со своими задачами. Еще дополнять будем?

nlrf
nlrf

Попытаюсь одолеть стаканы (п.4) после новогодней проруби. Или - ещё лучше - совместно с кем-либо 3 и 4. У меня 4 вопроса:

  1. получение не(редко)меняющихся данных (базовое ГО, зафиксированный в 16-30 курс $, размер комиссии биржи, расчётная цена, лимит изменения цены, последний торговый день, и т.д.) уже сделано или отнесено к потокам (п.3)?
  2. будет ли в потоках ежесекундный курс $, теоретическая цена, индекс волатильности и т.п. дополнительные данные?
  3. стоит ли (для будущих брокеров - нынешние уже так или иначе подключены к Плазе2, или алгохеджеров) обеспечивать универсальность по инструментам (1005 фьючерсов и 3590 опционов), или ограничется теми, которые нужны хотя бы внутридневным спекулянтам и арбитражёрам (на мой вкус - 18 фьючерсов и опционы на фьючерс РТС по 3 страйка коллов и путов)?
  4. не следует ли ограничить глубину стаканов, кроме РТС, скажем - остальные 8 со спекулятивной ликвидностью до 20, а другие (включая опционы), т.е. с маркетмейкерской ликвидностью - до 5?
Mikhail Sukhov
Mikhail Sukhov Author

nlrf: Попытаюсь одолеть стаканы (п.4) после новогодней проруби. Или - ещё лучше - совместно с кем-либо 3 и 4. У меня 4 вопроса:

  1. получение не(редко)меняющихся данных (базовое ГО, зафиксированный в 16-30 курс $, размер комиссии биржи, расчётная цена, лимит изменения цены, последний торговый день, и т.д.) уже сделано или отнесено к потокам (п.3)?
  2. будет ли в потоках ежесекундный курс $, теоретическая цена, индекс волатильности и т.п. дополнительные данные?
  3. стоит ли (для будущих брокеров - нынешние уже так или иначе подключены к Плазе2, или алгохеджеров) обеспечивать универсальность по инструментам (1005 фьючерсов и 3590 опционов), или ограничется теми, которые нужны хотя бы внутридневным спекулянтам и арбитражёрам (на мой вкус - 18 фьючерсов и опционы на фьючерс РТС по 3 страйка коллов и путов)?
  4. не следует ли ограничить глубину стаканов, кроме РТС, скажем - остальные 8 со спекулятивной ликвидностью до 20, а другие (включая опционы), т.е. с маркетмейкерской ликвидностью - до 5?
  1. Я думаю это размазано по нескольким пунктам. расчётная цена, лимит изменения цены, последний торговый день - это относиться к инструменту. базовое ГО, зафиксированный в 16-30 курс $, размер комиссии биржи - это наверное мой пункт 7.
  2. Это все относиться к инструментам. Предлагаю выделить это в отдельный пункт - экспорт дополнительный параметров.
  3. Экспортировать надо все. Плюс кстати хорошее замечание, надо подумать в сторону кэширования данных.
  4. Супер, забыл об этой фиче. 4.1 Думаю нужен переключатель, какой именно стакан требуется, агрегированный или позаявочный.
  1. Кстати, а биржа транслирует свое время? Если нет, то предлагаю это добавить в качестве нового пункта.
nlrf
nlrf
  1. Я думаю это размазано по нескольким пунктам. расчётная цена, лимит изменения цены, последний торговый день - это относиться к инструменту. базовое ГО, зафиксированный в 16-30 курс $, размер комиссии биржи - это наверное мой пункт 7.
  2. Это все относиться к инструментам. Предлагаю выделить это в отдельный пункт - экспорт дополнительный параметров.
  3. Экспортировать надо все. Плюс кстати хорошее замечание, надо подумать в сторону кэширования данных.
  4. Супер, забыл об этой фиче. 4.1 Думаю нужен переключатель, какой именно стакан требуется, агрегированный или позаявочный.
  1. Кстати, а биржа транслирует свое время? Если нет, то предлагаю это добавить в качестве нового пункта.

...

  1. А инструмент - это п.2 (я ещё ничего не получил, и квик в глаза не видел)?
  2. А всё-таки зачем всё? Не слишком ли это усложнит работу? 4.1. Что такое агрегированный стакан - его общий объём при глубине 5, 20 , или 50, или просуммированы только заявки разных инвесторов с одной ценой?
  3. Транслирует, например вместе со сделками (тиками), однако в сек., а не мс, поэтому для наших целей толку не много.
  4. Предполагается ли запись всего подписанного с мс.(!) на жёсткий диск? Такие исторические данные у биржи даже купить нельзя. Кстати, может у кого-нибудь есть, хотя бы по РТС за разумный период подряд?
  5. А воможна ли разработка последующих п. до завершения п.1-2?
Mikhail Sukhov
Mikhail Sukhov Author

nlrf:

  1. Я думаю это размазано по нескольким пунктам. расчётная цена, лимит изменения цены, последний торговый день - это относиться к инструменту. базовое ГО, зафиксированный в 16-30 курс $, размер комиссии биржи - это наверное мой пункт 7.
  2. Это все относиться к инструментам. Предлагаю выделить это в отдельный пункт - экспорт дополнительный параметров.
  3. Экспортировать надо все. Плюс кстати хорошее замечание, надо подумать в сторону кэширования данных.
  4. Супер, забыл об этой фиче. 4.1 Думаю нужен переключатель, какой именно стакан требуется, агрегированный или позаявочный.
  1. Кстати, а биржа транслирует свое время? Если нет, то предлагаю это добавить в качестве нового пункта.

...

  1. А инструмент - это п.2 (я ещё ничего не получил, и квик в глаза не видел)?

  2. А всё-таки зачем всё? Не слишком ли это усложнит работу? 4.1. Что такое агрегированный стакан - его общий объём при глубине 5, 20 , или 50, или просуммированы только заявки разных инвесторов с одной ценой?

  3. Транслирует, например вместе со сделками (тиками), однако в сек., а не мс, поэтому для наших целей толку не много.

  4. Предполагается ли запись всего подписанного с мс.(!) на жёсткий диск? Такие исторические данные у биржи даже купить нельзя. Кстати, может у кого-нибудь есть, хотя бы по РТС за разумный период подряд?

  5. А воможна ли разработка последующих п. до завершения п.1-2?

  6. Если речь про мой первый список - это пункт 3.

  7. Работу как раз упростит (если кэширование не делать). А как Вы предлагаете? Скажем, как трейдеру получить весь список инструментов, чтобы найти нужный?

  8. Второе. Чтобы видеть, с каким реально объемом стоят заявки.

  9. Если про тики - то они вообще бесплатно раздаются. Если стаканы - то уже сложнее. И мне кажется, что это уже производная задача.

  10. Сложно сказать.

skuvv
skuvv

nlrf: Попытаюсь одолеть стаканы (п.4) после новогодней проруби. Или - ещё лучше - совместно с кем-либо 3 и 4. У меня 4 вопроса:

  1. получение не(редко)меняющихся данных (базовое ГО, зафиксированный в 16-30 курс $, размер комиссии биржи, расчётная цена, лимит изменения цены, последний торговый день, и т.д.) уже сделано или отнесено к потокам (п.3)?
  2. будет ли в потоках ежесекундный курс $, теоретическая цена, индекс волатильности и т.п. дополнительные данные?
  3. стоит ли (для будущих брокеров - нынешние уже так или иначе подключены к Плазе2, или алгохеджеров) обеспечивать универсальность по инструментам (1005 фьючерсов и 3590 опционов), или ограничется теми, которые нужны хотя бы внутридневным спекулянтам и арбитражёрам (на мой вкус - 18 фьючерсов и опционы на фьючерс РТС по 3 страйка коллов и путов)?
  4. не следует ли ограничить глубину стаканов, кроме РТС, скажем - остальные 8 со спекулятивной ликвидностью до 20, а другие (включая опционы), т.е. с маркетмейкерской ликвидностью - до 5?
  1. в плазе нет возможности фильтрации по инструментам, получать придется все, но можно сделать простенькую проверку на имя/код инструмента. Я организовал у себя файлик с названием интересующих меня инструментов: RTS-3.11 RTSS-3.11 SBRF-3.11 .... потом получаю поток со списком инструментом и задаю соответсвие имен иснтрументов с их кодами(isin_id) на бирже

и потом в коллбеке


int isin_id = rec.GetValAsLong("isin_id");
if (InstrumentList.Contain(isin_id)) ...

4)тоже самое что и 3, стаканы пойдут по всем инструментам!! можно только выбрать общий поток с глубиной на 5, 20 или 50

nlrf
nlrf

skuvv: 3) в плазе нет возможности фильтрации по инструментам, получать придется все, но можно сделать простенькую проверку на имя/код инструмента. Я организовал у себя файлик с названием интересующих меня инструментов: RTS-3.11 RTSS-3.11 SBRF-3.11 .... 4)тоже самое что и 3, стаканы пойдут по всем инструментам!! можно только выбрать общий поток с глубиной на 5, 20 или 50

Придётся получать весь список самих инструментов, или подписанные данные по ним всем? Стаканы пойдут по выбранным инструментам, или по всем > 4500?

skuvv
skuvv

nlrf:

skuvv: 3) в плазе нет возможности фильтрации по инструментам, получать придется все, но можно сделать простенькую проверку на имя/код инструмента. Я организовал у себя файлик с названием интересующих меня инструментов: RTS-3.11 RTSS-3.11 SBRF-3.11 .... 4)тоже самое что и 3, стаканы пойдут по всем инструментам!! можно только выбрать общий поток с глубиной на 5, 20 или 50

Придётся получать весь список самих инструментов, или подписанные данные по ним всем? Стаканы пойдут по выбранным инструментам, или по всем > 4500? В плазе поток передает все что в нем есть, единственное что можно отфильтровать на текущий момент - кол-во необходимых полей в потоке в инишнике. ps то что стаканы пойду по всем инструментам не особая проблема, тк основную нагрузку делают основные инструменты и стаканы траснлируются методом обновления записей. Хотя возможно и срезами через другой поток - но там интервал обновление 1мин.

Mikhail Sukhov
Mikhail Sukhov Author

skuvv: В плазе поток передает все что в нем есть, единственное что можно отфильтровать на текущий момент - кол-во необходимых полей в потоке в инишнике. ps то что стаканы пойду по всем инструментам не особая проблема, тк основную нагрузку делают основные инструменты и стаканы траснлируются методом обновления записей. Хотя возможно и срезами через другой поток - но там интервал обновление 1мин.

Значит фильтр работает только по колонкам, но не по строчкам. Что с Плазой вполне логично, так как это делалось в первую очередь для брокеров, а им нужны все стаканы. А делали замер, как быстро работает это при обычном подключении (1-10 мбит)?

skuvv
skuvv

Mikhail Sukhov:

skuvv: В плазе поток передает все что в нем есть, единственное что можно отфильтровать на текущий момент - кол-во необходимых полей в потоке в инишнике. ps то что стаканы пойду по всем инструментам не особая проблема, тк основную нагрузку делают основные инструменты и стаканы траснлируются методом обновления записей. Хотя возможно и срезами через другой поток - но там интервал обновление 1мин.

Значит фильтр работает только по колонкам, но не по строчкам. Что с Плазой вполне логично, так как это делалось в первую очередь для брокеров, а им нужны все стаканы. А делали замер, как быстро работает это при обычном подключении (1-10 мбит)? Нормально работает. Если не ошибаюсь все данные плаза передает не конкретными переменными, а в байтах, поэтому трафик не большой, а парсинг уже идет на клиентской стороне.

nlrf
nlrf

skuvv:

nlrf:

skuvv: 3) в плазе нет возможности фильтрации по инструментам, получать придется все, но можно сделать простенькую проверку на имя/код инструмента. Я организовал у себя файлик с названием интересующих меня инструментов: RTS-3.11 RTSS-3.11 SBRF-3.11 .... 4)тоже самое что и 3, стаканы пойдут по всем инструментам!! можно только выбрать общий поток с глубиной на 5, 20 или 50

Придётся получать весь список самих инструментов, или подписанные данные по ним всем? Стаканы пойдут по выбранным инструментам, или по всем > 4500?

В плазе поток передает все что в нем есть, единственное что можно отфильтровать на текущий момент - кол-во необходимых полей в потоке в инишнике. ps то что стаканы пойду по всем инструментам не особая проблема, тк основную нагрузку делают основные инструменты и стаканы траснлируются методом обновления записей. Хотя возможно и срезами через другой поток - но там интервал обновление 1мин.

А что значит на текущий момент?

abb269
abb269

Дата и время сервера: поток FORTS_FUTTRADE_REPL, таблица heartbeat, server_time

Mikhail Sukhov
Mikhail Sukhov Author

abb269: Дата и время сервера: поток FORTS_FUTTRADE_REPL, таблица heartbeat, server_time

Хм, я как-то упустил момент, что поток может содержать несколько таблиц. Кажется, я не правильно понял модель потоков. Для чего это сделано?

anebotov
anebotov

Mikhail Sukhov: Хм, я как-то упустил момент, что поток может содержать несколько таблиц. Кажется, я не правильно понял модель потоков. Для чего это сделано? Не знаю как в плазе, но в fix/fast разные потоки могут идти на разные сервера (в разных сегментах инета), т.е. повышается надежность. Ну и управлять потоком легче чем всем раздельно.

Как насчет лицензии? Если что-то типа Apache, то я участвую.

skuvv
skuvv

anebotov:

Mikhail Sukhov: Хм, я как-то упустил момент, что поток может содержать несколько таблиц. Кажется, я не правильно понял модель потоков. Для чего это сделано? Не знаю как в плазе, но в fix/fast разные потоки могут идти на разные сервера (в разных сегментах инета), т.е. повышается надежность. Ну и управлять потоком легче чем всем раздельно.

Как насчет лицензии? Если что-то типа Apache, то я участвую. Можно задать обработку реплик в одном win thread и проверять CP2DataStream + tableName либо подключать необходимые потоки реплик в своих win thread Тяжелые потоки, типа стаканов или FORTS_FUTCOMMON_REPL лучше отдельно обособить

Mikhail Sukhov
Mikhail Sukhov Author

anebotov: Как насчет лицензии? Если что-то типа Apache, то я участвую.

Как написал в первом сообщении, вопрос решается коллективно. Раз никто до этого не высказался, говори ты.

anebotov
anebotov

Mikhail Sukhov:

anebotov: Как насчет лицензии? Как написал в первом сообщении, вопрос решается коллективно. Раз никто до этого не высказался, говори ты.

Лицензия Apache отличается от GPL тем, что позволяет делать на основании полученных исходников, в том числе и закрытые разработки, при условии указания того, что используются коды такой то разработки. GPL не позволяет менять лицензию, и значит закрывать исходники последующих разработок. http://ru.wikipedia.org/wiki/Apache_License

Mikhail Sukhov
Mikhail Sukhov Author

anebotov:

Mikhail Sukhov:

anebotov: Как насчет лицензии? Как написал в первом сообщении, вопрос решается коллективно. Раз никто до этого не высказался, говори ты.

Лицензия Apache отличается от GPL тем, что позволяет делать на основании полученных исходников, в том числе и закрытые разработки, при условии указания того, что используются коды такой то разработки. GPL не позволяет менять лицензию, и значит закрывать исходники последующих разработок. http://ru.wikipedia.org/wiki/Apache_License

Я не против, даже за. Прочитаю на досуге о деталях. Кто еще выскажется?

sfighrath
sfighrath

По поводу базы данных. Намного логичнее БД прикручивать не индивидуально к plaza2, а ко всему S#. У меня в боте, например, есть базовый класс для работы с БД. От него уже наследуется класс с конкретной реализацией связи под определенную СУБД (у меня PostgreSQL использована). Можно сделать реализации под MySQL, MS SQL, Oracle, локальный Paradox. Но если человек не захочет использовать БД, то и не привязываться к ней.

У меня базовый класс реализует следующие вещи:


public class BaseDB
    {
        protected int user_id; //ID пользователя в БД

        public virtual bool TestConnect() { return true; } //Тест на связь с БД
        public virtual bool TestUserConnect(string user_name, string passw) { return true; } //Проверка на успешное соединение пользователя
        public virtual DataTable GetDataForLearn(string Ticker, DateTime begin_date, DateTime end_date) { return null; } //Получение исторических данных
        public virtual void AddUserTicker(string ticker_name) { } //Добаление ЦБ к списку выбранных пользователем
        public virtual void DeleteUserTicker(string ticker_name) { } //Удалить ЦБ из списка выбранных пользователем
        public virtual DataTable GetUserTickers() { return null; } //Получение списка ЦБ выбранных пользователем
        
        protected string sql_str_bar_save;
        public virtual void AddBarForSaveToDB(SmartBar Bar) { } //Создание списка для сохранения
        public virtual void SaveMinuteBarToDB() { } //Сохранение нехватающих в нашей БД баров

        public virtual void AddLogMessage(string message) { } //Ведение лога

        public virtual void AddUserBot(Bots.BaseBot BB) { } //Добавление бота к списку созданных пользователем
        public virtual DataTable GetUserBots() { return null; } //Получение списка ботов пользователя
        public virtual void UpdateBot(Bots.BaseBot BB, string last_ticker_name) { } //Обновление информации о боте в БД

        public virtual int AddNewOrder(Bots.BaseBot BB, SmartOrder iSO) { return -1; } //Создание новой сделки
        public virtual void UpdateOrderId(SmartOrder SO) { } //Обновление Id приказа
        public virtual void UpdateOrder(SmartOrder SO) { } //Обновление состояния приказа
        public virtual void UpdateFailedOrder(SmartOrder SO) { } //Обновление ошибки в приказе
        public virtual void OrderDone(SmartOrder SO) { } //Успешное завершение приказа
        public virtual void AddTrade(SmartOrder SO, DateTime datetime, double price, double volume, string tradeno, double profit) { } //Совершение сделки по приказу

        public virtual DataTable GetUserBotOrders(Bots.BaseBot BB, DateTime begin_date, DateTime end_date) { return null; } //Получение списка приказов бота
        public virtual DataTable GetUserBotHistoryOrder(int database_id) { return null; } //Получения списка совершенных сделок по приказу
        public virtual DataTable GetUserBotTrades(Bots.BaseBot BB) { return null; } //Получение всех совершенных сделок по данному боту
    }

Сугобо мои внутренние ограничения: в базу пишется не тиковая, а только минутная информация. Можно писать и тики, но это приведет к неимоверному разрастанию самой базы. В базе хранятся настройки для ботов, списки Ценных Бцмаг (ЦБ) - общие и те, что выбраны конкретным пользователем для прослушки; история приказов и совершенных пользователем сделок.

Mikhail Sukhov
Mikhail Sukhov Author

sfighrath: По поводу базы данных. Намного логичнее БД прикручивать не индивидуально к plaza2, а ко всему S#. У меня в боте, например, есть базовый класс для работы с БД. От него уже наследуется класс с конкретной реализацией связи под определенную СУБД (у меня PostgreSQL использована). Можно сделать реализации под MySQL, MS SQL, Oracle, локальный Paradox. Но если человек не захочет использовать БД, то и не привязываться к ней.

У меня базовый класс реализует следующие вещи:

Дельная мысль (я так и хотел предложить, но хотел, чтобы кто-то другой высказался и подтвердил мои догадки). Тогда предлагаю так. Откладываем задачу до реализации минимального набора, и смотрим, как можно привинтить для всех шлюзов.

skuvv
skuvv

Возможно в будущем добавятся новые возможности

rumba
rumba

Всем привет. Немного знаю C#, сейчас активно доучиваю. С радостю приму участие в написании, бета тестировании на алгоритмах в боевом режиме

Alexander
Alexander

Многие файлы, которые входят в Plaza.csproj, отсутствуют в TFS.

К примеру, EcngTradingAssemblyInfo.cs ObfuscationSettings.cs, ....., библиотеки, ...

Соответственно при попытке скомпилировать вываливается множество ошибок.

И просьба ко всем, добавляющим файлы, также указывать и комментарий при добавлении, чтобы не смотреть постоянно лог. Чем лучше будем вести комментирование наших коммитов - тем лучше. =)

P.S. Я убрал файл Plaza.csproj.user из контроля версий - это пользовательский файл, у каждого свой может быть.

TFS кстати, довольно удобен. Можно и таски там вести. А то дома \ на работе лишь SVN пользуюсь.

Mikhail Sukhov
Mikhail Sukhov Author

Alexander: Многие файлы, которые входят в Plaza.csproj, отсутствуют в TFS.

К примеру, EcngTradingAssemblyInfo.cs ObfuscationSettings.cs, ....., библиотеки, ...

Соответственно при попытке скомпилировать вываливается множество ошибок.

Да, некоторые файлы надо выкинуть из проектного файла. + добавить сборки с S# файлами. Это своеобразный барьер для разработчиков.😀 Если с этим возникают трудности, то участие в совместной разработке можно закончить.

Alexander: И просьба ко всем, добавляющим файлы, также указывать и комментарий при добавлении, чтобы не смотреть постоянно лог. Чем лучше будем вести комментирование наших коммитов - тем лучше. =)

+1. Коментарии к коммитам пишите. Иначе будет сложно разобраться, кто что сделал.

Alexander: P.S. Я убрал файл Plaza.csproj.user из контроля версий - это пользовательский файл, у каждого свой может быть.

TFS кстати, довольно удобен. Можно и таски там вести. А то дома \ на работе лишь SVN пользуюсь.

Да, я уже сделал папку 1.0. Туда можно записывать таски.

Alexander
Alexander

Mikhail Sukhov:

Alexander: Многие файлы, которые входят в Plaza.csproj, отсутствуют в TFS.

К примеру, EcngTradingAssemblyInfo.cs ObfuscationSettings.cs, ....., библиотеки, ...

Соответственно при попытке скомпилировать вываливается множество ошибок.

Да, некоторые файлы надо выкинуть из проектного файла. + добавить сборки с S# файлами. Это своеобразный барьер для разработчиков.😀 Если с этим возникают трудности, то участие в совместной разработке можно закончить.

Залил чуть подправленную версию проектного файла. Надеюсь не против :)

Ещё вопрос организационный - мы разрабатываем под .Net 3.5, на 4.0 пока не перешли?

Mikhail Sukhov
Mikhail Sukhov Author

Alexander: Ещё вопрос организационный - мы разрабатываем под .Net 3.5, на 4.0 пока не перешли?

Предлагаю пока под 3.5. Во первых у Смарта проблемы с 4-ой версией (пока мамба не дала свой протокол это критично). Во-вторых, все ли ТА программы переведены под 4-ку?

Tauler
Tauler

давайте и я поучавствую :)

ustas
ustas

Ой, тут оказывается такой праздник жизни мимо проходит. Человек я бесполезный, но упёртый, может пригожусь. С уважением!

lkor
lkor

ustas: Ой, тут оказывается такой праздник жизни мимо проходит. Человек я бесполезный, но упёртый, может пригожусь. С уважением!

ага %)

давно смотрел на S# и раздумывал на тему - а не попробовать ли сделать самому реализацию под плазу, а оно вон как вышло. это ж прям праздник жизни какой-то.

как я понимаю net3.5 - это vs2008? или пойдёт vs2010? если да то какие настройки нада поменять?

Mikhail Sukhov
Mikhail Sukhov Author

lkor: как я понимаю net3.5 - это vs2008? или пойдёт vs2010? если да то какие настройки нада поменять?

Разработка на VS 2010 под .NET 3.5. Настройки подключения соответственно к VS 2010.

Пако
Пако

Может чем-то пригодиться проекту начинающий трейдер и программист с++?

Sashka
Sashka

Приветствую разработчиков 1 вопрос по объединению бирж, не накроется ли плаза после слияния с мамбой - есть ли какая либо инфа? 2 хотел бы поучаствовать в разработке, но на нете писал последний раз лет 5 назад когда он только появлялся 🙂 если остались задачи низшего уровня или доки какие нужно изобразить буду рад помочь

sotikov
sotikov

Sashka: Приветствую разработчиков 1 вопрос по объединению бирж, не накроется ли плаза после слияния с мамбой - есть ли какая либо инфа? Присоединяюсь к вопросу.

Alexander
Alexander

sotikov:

Sashka: Приветствую разработчиков 1 вопрос по объединению бирж, не накроется ли плаза после слияния с мамбой - есть ли какая либо инфа? Присоединяюсь к вопросу.

не накроется

Oleg
Oleg

Hi Xotelbi prisoedinitsia k razrabotke S#. Rabotayu .Net C# programistom uje 8 let. Mojet prigojus'?

Sorry, jivu zabugrom, netu russkoi klaviaturi