pmus
pmus личный блог
06 января 2018, 05:07

Выложил исходники торгового терминала RTS-Robot в открытый доступ.

Выложил исходники торгового терминала RTS-Robot в открытый доступ.

Итак, как я и обещал, исходники торгового терминала RTS-Robot версии 1.0 выложены на GitHub!

Напоминаю, что язык программирования — Python 2.7, брокер — Финам, коннектор — Transaq XML Connector. (в том числе и Transaq HFT)

Что умеет:


  • Возможность 10-мс подключения.
  • Встроенный Python
  • Использование сколь угодно большого количества памяти системы в скриптах
  • Многопоточность и утилизация всех ядер процессора
  • API для создания сколь угодно сложных систем и их связок
  • Создание по двойному щелчку «снимков» любых таблиц в формате Excel (на память)
  • Индикатор баланса стакана
  • Экономный жор памяти (получилось порядка 150 мегабайт)
  • Нормальная работа под Linux


Выложенное решение имеет некоторые ограничения, а именно:

— Упрощенный код, многое из «планов на будущее» отключено и/или убрано.
— Торговые алгоритмы работают только с одной бумагой. (несложно доделывается.)
— Коннектор только один
— Бесплатной поддержки нет и не будет (мне работать надо!)
— Короткий документ о том, «как это всё собрать и заставить работать» если напишу, то позже
— Сайт проекта обновлю позже, сейчас нет времени заниматься.

В остальном же — это работающий торговый терминал, запускаемый как под Windows, так и под Wine.

Будьте осторожны. Нужны специальные знания и навыки профессионального программиста.

При неправильном или неквалифицированном использовании вы можете легко совершить нежелательные действия, т.к. «защита от дурака» отключена. Описание функций здесь и далее по всему моему блогу.


Отказ от ответственности за использование Вами бесплатных продуктов

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

Загружая и/или используя настоящий продукт, Вы принимаете условия индивидуального лицензионного соглашения, поставляемого в комплекте с продуктом. Как правило, это означает, что Вы используете их на свой страх и риск и разработчик не несет никакой ответственности ни за какие последствия, которые могут наступить в результате использования Вами продукта, получаемого с данной страницы, или невозможности его использования.

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


Ссылка на репозиторий GitHub. (исходники).

Уже собранная версия  (zip-архив).

Поздравляю всех православных с Рождеством.

69 Комментариев
  • Дом Металла
    06 января 2018, 05:11
    Правильно сделал что выложил предупреждение. Я как пользователь и тестировщик всех подобных ноу-хау отмечу что это очень важно особенно если учесть что робот может лечь из-за обновлений (допустим) 
  • Дом Металла
    06 января 2018, 05:20
    Автору у меня был опыт работы с роботом BigTrend для российской биржи. У него было два 2 режима автоматической торговли, которые к сожалению, сейчас не помню. Его главная проблема в том, что он только для РФ, на рынках которых много непрозрачного. Но конечно скальпинг как у тебя это неплохая защита от всяких неприятностей. Спасибо за ссылку. 
    • Albert Rudolfovich
      06 января 2018, 21:08
      Дом Металла, чем робот нюхает ордерный стакан?
      если вся торговля через браузер интернета?
      • Дом Металла
        07 января 2018, 14:00
        Ramon Albert Rudolfovich, я хз) с Рождеством) 
  • Дом Металла
    06 января 2018, 05:23
    Также спасибо что выложил полностью. Так как если у вашего робота библиотеки не хватает с каким-нибудь индикатором или код не валидный он не будет работать. Я видел роботов которые можно было оптимизировать полночи, а он в итоге сделки просто не открывал. Это настолько бесило что готов был клавиатуру выкинуть. Некоторые горе создатели не создавали на UTF-8. Потому я вам советую брать телеграммных ботов так как: а) точно видно, что он работает так как он валит в рамках одной экосистемы б) можно забыть про баги. Вы не представляете, как это круто. Сам пользуюсь телеграммным советником @my_investing_bot (всем советую)
  • Дом Металла
    06 января 2018, 05:24
     Короче неистово плюсую и иду спать.
  • Евгений Гуревич
    06 января 2018, 10:01
    А нет чего-то подобного на С++?
    • Дом Металла
      06 января 2018, 12:34
      Евгений Гуревич, сложнее писать чем на Питоне или на TSLab (но то только мое предположение) 
    • Константин
      06 января 2018, 13:41
      Евгений Гуревич, что вы хотите реализовать на с++? вроде как автор пишет что работает и так ))
  • Stoic
    06 января 2018, 10:08
    а нафига?
    • Евгений
      06 января 2018, 12:18
      Stoic, он же написал. Ничего не заработал, ушёл на работу устраиваться, робот без надобности. Наверное нам такой робот сильно пригодится.
  • Alpinist573
    06 января 2018, 11:37
    pmus, давно хочу написать своего бота под Tranzaq HFT, библиотека от финама написана на си шарпе.

    Как вы считаете, на Питоне реально такое написать (так как изучения си шарпа идет туго, а порог входа в Питон пониже)? Есть же какие-то клоны питона под .net (в инете правда пишут что неподдерживаемые много лет) 
    • Дом Металла
      06 января 2018, 12:35
      Alpinist573, я не пмус но тебе сразу говорю что если что-то не подерживается значит робот ляжет в один прекрасный момент 
  • Boris Litvinov
    06 января 2018, 13:28
    этот робот в один прекрасный момент перельет ваш депо на другой.
    И автор чист, по скольку вы согласились с его условиями не за что не отвечать и использовать на свое усмотрение. Автор браво.
    Очень нужный продукт кстати, но подход бы изменить.
      • Boris Litvinov
        06 января 2018, 18:29
        pmus, ну тогда круто
  • Константин
    06 января 2018, 13:38
    по идее для Linux нужно написать враппер библиотеки Finam и скомпилировать его в winelib, тогда можно код терминала подправить под Linux и запускать все это используя прокладку только для враппера
    • Андрей К
      06 января 2018, 14:40
      Константин, 
      по идее для Linux нужно написать враппер библиотеки Finam и скомпилировать его в winelib, тогда можно код терминала подправить под Linux и запускать все это используя прокладку только для враппера
      я это в качестве эксперимента пускал тестово на .Net Core
  • Niktesla (бывш. Бабёр-Енот)
    06 января 2018, 13:43
    Автор, коллега, мне вот интересно… по поводу отказа от ответственности… ведь питон, робот, винда, интернет — всё будет глючить. И люди будут сливать. Да даже если и ничего глючить не будут — все равно большая часть сольет... 
    И виноватым окажется автор, поскольку раз роботов пишет, значит умный, а раз мы еще и слили, то «он наверняка всё так с самого начала и задумал и за нас счет там как-о обогатился»… а предупреждений я никаких не видывал.

    Как относитесь к возможности подобного развития событий?
    • Константин
      06 января 2018, 14:44
      Бабёр-Енот, любой нормальный человек пошлет в пеший эротический тур с такой предъявой и будет прав ))
      • Niktesla (бывш. Бабёр-Енот)
        06 января 2018, 14:57
        Константин, это да… меня, однако, больше волнует правовая сторона вопроса… хотя вроде прецендентов не было (или мне неизвестны)
        • Константин
          06 января 2018, 15:04
          Бабёр-Енот, ))) если ПО выложено с открытым исходным кодом, то есть вариант его изучить и потом запускать, тот же QUIK все запускают не стесняясь при этом сливают немало трейдеров, а исходный код там закрытый ))
  • Niktesla (бывш. Бабёр-Енот)
    06 января 2018, 13:48
    Ого… я сразу то не врубился, а тут у автора еще и Гуй на питоне… респект.
    тут действительно надо разбираться и чето ставить, чтоб это запустить))
    • старый трейдер
      06 января 2018, 14:05
      Бабёр-Енот, на питоне, с гуём и свечки рисует??
      • Niktesla (бывш. Бабёр-Енот)
        06 января 2018, 14:11
        старый трейдер, судя по описанию на гитхабе, там походу как-то к проекту Qt прикрутили… в нем видать и рисуют
    • Константин
      06 января 2018, 14:45
      Бабёр-Енот, GUI там на PyQt, это не совсем Python а лишь обертка над Qt ))
  • Niktesla (бывш. Бабёр-Енот)
    06 января 2018, 17:40
    Ув. Автор, а вы там пару роботов каких-нить не приложите к проекту? чтоб показать как там с апи вашим общаться
    • Константин
      06 января 2018, 18:03
      Бабёр-Енот, API придется самим вычислять, код пока не смотрел, но вижу там кучу .dll, а значит придется по сигнатурам функции изучать ))
      • Константин
        06 января 2018, 19:07
        pmus, нашел только схему построения терминала, но не нашел описание API, скинь, что бы не шариться по коду и смотреть что реализовано, а что нет по схеме и заодно описание API если есть

        ps. хочу посмотреть код в целом и возможность реализовать враппер для коннектора win <=> *nix

        кстати вопрос, почему не писал gui на C++ Qt, ведь так проще было бы, даже есть библиотеки реализующие чарты
          • Константин
            06 января 2018, 20:33
            pmus, c Nuitk не работал ни разу, это компилятор Python?
      • Константин
        06 января 2018, 19:15
        pmus, кстати не могу понять, что за артефакты в коде:

        def numeric_time(self):
           t = (datetime.datetime.now().strftime("%H%M%S"))
           d = (datetime.datetime.now().strftime("%d%m%Y"))
           return int(t)

        def numeric_date(self):
           t = (datetime.datetime.now().strftime("%H%M%S"))
           d = (datetime.datetime.now().strftime("%d%m%Y"))
           return int(d)

        это класс API, и подобное встречается не только тут
          • Константин
            06 января 2018, 19:57

            pmus, наверное не корректно задал вопрос ))

            зачем в методе numeric_time инициализировать переменную d, значением, если мы эту переменную в методе не используем, то же касается метода numeric_date где инициализируем переменную t значением, но не используем ее

              • Андрей К
                06 января 2018, 20:51
                pmus, 
                видимо просто забыл удалить.
                чтобы такого не было, принято прогонять статическим анализатором проект и зачищать все warning
                • Niktesla (бывш. Бабёр-Енот)
                  06 января 2018, 21:02
                  Андрей К, ну прогони)
                  • Андрей К
                    06 января 2018, 21:04
                    Бабёр-Енот, 
                    pmus пошел на повышение в своей карьере, я лишь поддержал советом, чтобы его проекты стали еще качественней 
                    • Niktesla (бывш. Бабёр-Енот)
                      06 января 2018, 23:13
                      Андрей К, просто делаешь бывает какую-нить вещь, переменные для нее завел, проинициализировал… но не доделал, занялся чем-то другим… А потом садишься доделывать, а там херак — оказывается что сидящий рядом перфекционист всё это уже давно похерил, потому что оно мол ничего не делало, только ворнинги генерило о неиспользуемых переменных и кусках кода…
                      • Андрей К
                        06 января 2018, 23:40
                        Бабёр-Енот, 
                         А потом садишься доделывать, а там херак — оказывается что сидящий рядом перфекционист всё это уже давно похерил
                        это конечно вопрос правильной организации коллективной разработки. Начиная от банальных комментариев и до системы контроля версий
                        потому что оно мол ничего не делало, только ворнинги генерило о неиспользуемых переменных и кусках кода…
                        конечно при современных компиляторах оно действительно ничего не делало, компилятор за вами подчистит и затрет эти инструкции. Ну а вообще, чем ниже программируешь тем больше нужно прогонять код на эти вещи. И стараться делать качественно изначально. Лишняя память, лишний кеш, лишний кеш инструкций и тд. — все это стабильности не придает, особенно когда бьешься за стабильность производительности
                        • Niktesla (бывш. Бабёр-Енот)
                          07 января 2018, 10:22
                          Андрей К, чтобы качественно делать изначально, нужно изначально ТЗ. А в большинстве случаев на практике разработка сводится к непрерывному прототипированию с показом начальству, получению устной обратной связи и т.д.

                          Ну, если вы конечно какое-нить медицинское или авиационное ПО не пишете…
  • Albert Rudolfovich
    06 января 2018, 21:06
    где сылка на скач и работает эта хрень на браузере криптобирж?
  • Евгений Гуревич
    06 января 2018, 21:15
    Исходный код компилируется в *.exe файл и запускается как любая другая программа.

    Есть возможность прикрутить функции из .dll, написанных на других ЯП?
  • Тимофей Чулков
    15 ноября 2018, 11:55
    Здравствуйте! 
    А время раздачи исходников, чудо робота, закончилась? :)
    Находил в кеше гугла GitHub репозиторию от 28 октября. 

    Интересует три момента. 
    1. Как вы сделали обёртку .dll библиотеки от Финама?
    2. После трансляции кода спомощью http://nuitka.net скорость выполнения, память, загруженность процесса ниже?
    3. Почему вы будете использовать pyside? Ведь они то не особо отличаются от pyqt? 
      • Тимофей Чулков
        15 ноября 2018, 20:54
        pmus, Буду вам признателен :) 
         
        Спасибо ;)
          • shprots
            22 ноября 2018, 20:37
            pmus, присоединяюсь к запросу. Могу получить ссылку? Буду признателен и благодарен.
            Не обращайте внимания на критику :)
              • shprots
                18 декабря 2018, 18:51
                pmus, Премного Вам благодарен! )
              • MyProfit
                12 декабря 2020, 20:23
                pmus, спасибо за эту статью. 
  • ValerySemjonov
    22 марта 2021, 19:05
    Добрый день, pmus! Случайно обнаружил вашу публикацию о выложенном на github исходном коде торгового терминала на python. Захотелось посмотреть на вариант реализации, но не тут-то было, репозитария больше нет. Если не затруднит отправьте мне, пожалуйста, ссылку на ваше проект. Знакомлюсь с алготрейдингом и хочу понять как реализуют подобный программный продукт. Заранее спасибо.

    Валерий

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн