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
Список «пока нереализованного», конечно, больше.

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

Демо-версия находится здесь.
★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

теги блога pmus

....все тэги



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