Skip to content

VladimirTalyzin/NeuroInvest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 

Repository files navigation

NeuroInvest

Торговый бот для участия в конкурсе Tinkoff Invest Robot Contest

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

  1. Серверная часть.

Сканируются данные свечей. Бот в основном настроен на работу с Tinkoff API, но может подхватывать и API других систем. В качестве примера, помимо Tinkoff, подключён также API SouthXChange для прогнозирования пар криптовалют.

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

Полученная модель даёт прогноз значения торгуемой пары через заданные промежутки времени (по-умолчанию, через 1 час, 2 часа, 4 часа и 8 часов, но можно настроить любые иные интервалы). Чем плавнее график пары, тем лучше прогнозы. В будущем результаты предсказания можно улучшить.

Модели уже созданы, но их можно пересоздать, чтобы обновить.

Все данные кэшируются, чтобы минимизировать обращения к API. Обученные модели сохраняются после обучения и заново загружаются при формировании прогноза.


Зависимости:

pip install tinkoff-api

pip install scikit-learn

pip install pykalman

pip install numpy

pip install scipy

pip install pandas

pip install requests

pip install matplotlib (только если планируется выводить графики вне Android-приложения)


Настройка

Основные параметры: config.py

tinkoffAPIToken - токен для доступа к API (тип: SANDBOX !). scanInterval - указано 5 минут. Интервал изменения данных свечей. Меньшие периоды не ботом не рассматриваются. tinkoffScanInterval - scanInterval персонально для Tinkoff API, так как интервал указывается не числом, а значением enum. Указано CandleResolution.MIN_5.

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

predictPeriod - период поведения пары, на основе которого модель даст предсказание о будущих значениях. По-умолчанию - 1 сутки.

trainingPeriod - период данных для обучения. По-умолчанию - 100 суток. Период разбивается на сегменты с длительностью predictPeriod, для получения данных для обучения модели.

predictionIntervals - список интервалов прогноза. По-умолчанию - 1 час, 2 часа, 4 часа и 8 часов. При изменении, необходимо будет вызвать переобучение моделей.

TinkoffTrade - названия поддерживаемых торговых пар Тинькова и идентификаторы "figi".

Список торговых пар: trade_tuples.py

tradesTuple - набор объектов с даннымы торговых пар. Вся работа осуществляется только с этим набором. Можно добавить любые свои пары.


Просмотр графиков прогнозов: test_all.py Переобучение всех моделей: training_all.py

По оси Y - значение пары, по оси X - timestamp.

Gazprom

Apple

Dogecoin

Поведение при отсутствии данных на выходных:

Apple holiday

Gazprom holiday

Длинная полоса - это как раз показывает предсказываемое значение после прошествия выходных и открытия торгов.

Папки models и data должны иметь права 777


API бота для использования в мобильном приложении:

Получить список торговых пар: get_pairs.py

Получить данные прогнозов: get_pairs_data.py

Папка api-cache должна иметь права 777


Пример данных:

(Сделать веб-сервер на python уже не успеваю, поэтому используется простая заплатка из PHP)

Список пар: http://0v.ru/NeuroInvest/get_pairs.php

["APPLE INC/USD", "GAZPROM NEFT PJSC/RUR", "DOGE/BTC"]

Данные пары:

http://0v.ru/NeuroInvest/get_pairs_data.php?pair=APPLE%20INC/USD {"tradeX":[1653046200,1653046500,1653046800,16530471....


  1. Мобильное приложение для просмотра данных

С помощью API серверной части, работает простое Android-приложение

APK-файл: http://0v.ru/NeuroInvest.1.001.apk

Скриншоты:

Welcome page

Apple

Apple horizontal

Dogecoin

Gazprom

Gazprom horizontal


О конкурсе узнал в рассылке только 10 мая, доступ к API получил только 17 мая (были технические проблемы), так что были только одни свободные выходные :) Что успел, то успел. Надеюсь, вам понравится :)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published