Skip to content

DevVladikNT/ProfiTrade

Repository files navigation

ProfiTrade

В какой-то момент я переведу текст ниже на английский язык и он будет в этом месте.

О проекте

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

И вот, наконец, я готов представить свой PET-project, который планирую в дальнешем дорабатывать по мере возможностей. Как только бот будет готов, его можно будет найти в Telegram.

Как работает

Скоро здесь появится краткое описание алгоритма.

С подробной информацией можете ознакомиться в файле /model/tinkoff-prediction.ipynb.

Программная реализация

Проект разделен на 4 логических части:

  • /model - Описание модели, сама модель, скрипт для ее обучения, датасет и сервер на FastAPI, который позволяет обращаться к модели.
  • /server - Сервер на базе фреймворка FastAPI main.py, к которому подключена база данных SQLite. Планировщик scheduler.py периодически обновляет текущую стоимость акций и позволяет получать их другим компонентам системы. Также, в дальнейшем планируется запускать раз в день get_figi.py, который будет получать актуальные значения figi, являющиеся уникальными идентификаторами ценных бумаг и валют на бирже Tinkoff, которые, по словам компании, могут периодически меняться.
  • /telegram_bot - Асинхронный Telegram бот, созданный на основе фреймворка aiogram. Общается с сервером по протоколу http.
  • /web_app - Frontend для системы, созданный на основе фреймворка React. С использованием библиотеки Tremor.

Для запуска, остановки системы и создания виртуального окружения я создал соответствующие bash скрипты: start.sh, stop.sh и setup.sh. Также для успешного запуска необходимо получить и настроить токены Telegram бота и доступа к бирже в соответствующих местах кода.

Все python зависимости лежат в файле requirements.txt.

Контакты

Вы можете найти меня здесь:

Также можете ознакомиться с моим резюме.