pmus

РТС Робот: скальпинговая платформа на Python

    • 10 января 2017, 04:43
    • |
    • pmus
  • Еще

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

Вдохновила меня прекрасная программа Николая Морошкина Qscalp и захотелось иметь похожую, но с блекджеком Python внутри. С большим уклоном в автоматический скальпинг, и с меньшим — в ручной.

Я хотел писать торговые стратегии для скальпингового привода на Питоне, имея возможность творить с рыночными данными все, что угодно. Например, экспортировать тики в базу данных или скармливать их нейросетям в реальном времени. Ну и заодно проверить, действительно ли Python, как уверяли некоторые, слишком медленный для реализации подобных задач. Создавал программу в свободное время.

Итак, у нас был Transaq XML Connector, QT, Python и целое множество библиотек всех сортов и расцветок, а также Windows, Linux, wine и VirtualBox. Не то чтобы это был необходимый запас для разработки. Но если начал писать проект, становится трудно остановиться. Единственное, что вызывало у меня опасение — это pyinstaller. Нет ничего более беспомощного, безответственного и испорченного, чем ошибки при сборке. Я знал, что рано или поздно мы перейдем и на эту дрянь.

Я проверял работу программы на 10-миллисекундном Transaq HFT подключении от Финам, на обычном Transaq Connector и демо-сервере. Сейчас занимаюсь устранением мелких ошибок и построением красивого API для торговых систем. Повторюсь, я не ставил задачу создания полноценного торгового терминала — нужна была только основная платформа для создания быстрых торговых роботов.

РТС Робот: скальпинговая платформа на Python
Интерфейс программы я старался сделать разумно-минималистичным.

Реализованные «хотелки»:

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

Если тема заинтересует, продолжу понемногу выкладывать материал о программе.

Демо-версия находится здесь.
Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
4.4К | ★16
16 комментариев
буду читать
avatar
Новые тарифы биржы прилично обесценивают такую хорошую работу, к сожалению…
avatar
труд хороший для стартового опыта.
avatar
Я сейчас качаю вашу программу, присмотрюсь, но идея моя вот в чем: индикаторы бы мои перенести на вашу платформу. Присмотритесь, это возможно? http://trendphil.blogspot.ru/
avatar
Доброго дня!
Хочу попробовать использовать вашу программу, для этого создал демо-счет тут: www.finam.ru/demos/choose/, скачал .zip-архив с уже собранной программой. Вношу в настройки полученные логин и пароль, получаю следующее:
Connector: simple 64-bit mode.
Using old 64-bit version for demo
serverConnector: Connecting to server...
DataParser: Connection error: Unknown connection problem: {'connected': 'error'}

В логе нашел такие строки:
162206.540951 [2752] [main] <info> Initializing dsp...
162206.540951 [2752] [main] <info> Preparing for login...
162206.540951 [2752] [main] <info> Packet size:65520
162206.540951 [2752] [main] <info> Logging in...
162227.599220 [2752] [main] <warning> Failed to login
При этом через обычное приложение финам-демо с теми же учетными данными логинится без проблем.

Пробовал ip-адрес, забитый в программе по умолчанию для демо-режима, ip-адрес, взятый из настроек подключения программы финам...

Больше всего напрягает то, что в программе на вкладке «статус» при этом отображаются следующие запросы и ответы:
<command id='connect'><request_timeout>5</request_timeout><host>78.41.194.46</host><session_timeout>10</session_timeout><rqdelay>100</rqdelay><autopos>True</autopos><login>ХХХХХ</login><password>1234</password><port>3950</port></command><result success=«true»/>
 
 

То есть как будто в ответе приходит xml, что все хорошо, но соединения не происходит...

Подскажите, пожалуйста, в какую сторону стоит копать? Очень интересен этот проект, т.к. также предпочитаю питон шарпам.

Заранее большое спасибо!
avatar
Дмитрий, вот как бы есть ненулевая вероятность, что Финам наконец проапгрейдил свои демо-сервера и теперь не нужна древняя как останки мамонта, библиотека для демо-доступа. Там dll-ки очень старые в сравнении с боевыми. Попробуйте подменить их новыми. Сам раньше выходных не освобожусь, чтобы разобраться — дел выше крыши.
avatar
Дмитрий, порверил на реале — всё работает. Видимо, проблема с настройками демо-серверов, что-то у них поменялось.
avatar
pmus, теперь пробую на обычном (не демо) аккаунте, ничего не поменялось. Сборку взял с гитхаба уже готовую.

Также пробовал указывать другой ip-адрес (обычный и резервный), подменять dll-ки в win32\dll\finam-demo на новые. Ничего не помогает.

В логе *_ts.log нашел такие строки:
Start logging
18/01/2018 19:27:36 Transaq TXmlConnector, ver.5-T59-37-5.41.2.20.13
19:27:36.681 Connecting to 78.41.197.18:3900 buf=65512...
19:27:36.681 WSA started up19:27:36.803  Connected.
19:27:41.961 RQ_PWD recv #2:0 (-8recv) timeout
19:27:41.961 RQ_PWD snd/rcv error19:27:41.961 RQ: 46SG: 1WR: B128: (длинный хеш);Z16:PRIME;Z32:User;Z80:Windows 8  (Bld 9200) ;G:61762886434779;L:20490432;L:738306240;L:0;B:0; 
19:27:41.961 WSA cleanup succeeded
19:27:41.961 Trade Stream Closed. Reason: 'Connect/Login failed'. S:216/2, R:138/1, E:0, Rl:0

«Длинный хеш» из лога не привожу, т.к. не знаю что там зашито :)

Может быть вам, как автору, этот лог скажет больше, чем мне? Пока у меня в качестве вариантов остается только глубокий реверс инжиниринг по сурцам, но на это, к сожалению пока недостаточно времени.

И да, клиент transaq с теми же логином и паролем, конечно же, работает.
avatar
Дмитрий,  я проверял на двух боевых логинах, на обоих работает.  Попробуйте зайти в личный кабинет Финама и убедиться, что у вас заказан именно логин для Transaq XML Connector, а не просто Transaq.
avatar
pmus, да, все оказалось гораздо проще и глупее -на боевом аккаунте заработало, оказалось — мне  просто дали не те учетные данные для авторизации. С демо проблема остается, но пока на нее решил забить. Спасибо за уделенное время и извиняюсь за глупые вопросы :)
avatar
Дмитрий, я рад, что проблема решилась.  Пользуйтесь на здоровье.
avatar
Подписка
avatar

Автор,

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

avatar

Нашел в другом посте.

Спасибо.

avatar

Читайте на SMART-LAB:
Фото
EUR/USD: продавцы накопили силы для очередного рывка
Евро продолжает консолидироваться, разнонаправленно колеблясь вблизи своих локальных минимумов на фоне противоречивых факторов, связанных с...
Фото
Как заработать при любом рынке
Парные идеи помогают инвесторам в периоды неопределенности. Стратегия может приносить прибыль независимо от движения рынка. 💬 Подробнее...
🔝SOFL поднялся вверх в рейтинге крупнейших ИТ-компаний России
Софтлайн усилил свои позиции в рейтинге TAdviser крупнейших российских ИТ-компаний по выручке, заняв 6-е место из 500. При этом за год SOFL...
Фото
Модельный портфель рублевых облигаций: итоги, состав, планы
В условиях повышенной волатильности долгового публичного российского рынка в этом году, модельный портфель рублевых облигаций в целом показывает...

теги блога pmus

....все тэги



UPDONW
Новый дизайн