** Getting started:**
Как сгенерировать токен?
-
Открыть счет в Тинькофф Инвестиции.
-
Сгенерировать токен доступа Тинькофф (Токен доступа - Т-Инвест API (russianinvestments.github.io))
-
Поместите этот токен в файл my_token.py.
Подбор гиперпараметров В нашем проекте мы использовали метод GridSearchCV из библиотеки sklearn.model_selection. Чтобы успешно реализовать этот метод в вашем алгоритме, вам необходимо создать модель, совместимую со sklearn, или использовать один из алгоритмов sklearn для анализа. В нашем проекте мы создали несколько моделей, совместимых со sklearn, например (для скользящей средней (MA) и индекса относительной силы (RSI)). Модель, совместимая со Sklearn, должна иметь следующие методы:
- __init__ mинициализация модели, например, задание размера окна для модели RSI
- fit - использовать данные для тренировки модели. В случае с RSI и MA это технический шаг, необходимый только для корректной работы остальных функций.
- predict - этот метод выводит прогноз модели для введённых данных
- score - этот метод оценивает производительность модели. В нашем случае этими параметрами выступают сочетание максимальных потерь и итоговой прибыли
- get_params - этот метод возвращает параметры модели
- set_params - этот метод устанавливает параметры такие же, как указано во входных данных
Вы можете увидеть примеры таких моделей в relative_strength_index.py (класс relative_strength_index) и moving_average.py (класс moving_average).
База данных Файл с созданием и заплонением базы данных называется db.py. При его запуске он создает или находит уже существующий файл invest.db, в котором хранится сама база данных. Она состоит из двух таблиц - hourly_prices и daily_prices, которые содержат чаовые и дневные котировки соответственно. Массив codes содержит figi-коды компаний, для которых осуществляется сбор данных. При запуске файла для компаний, указанных в списке, собираются все исторические данные. Для того, чтобы поддерживать актуальность базы данных, созданы функции fill_table_with_latest_values_hourly() и fill_table_with_latest_values_daily(), которые для каждой компании в таблице загружают все новые данные. Эти функции рекомендуется вызывать перед использованием самих алгоритмов, чтобы использовать максимально свежие данные.
Алгоритмы У нас в роботе реализовано два различных алгоритма - RSI, или Индекс Относительной Силы, и Moving Average, или Скользящая Средняя. Они реализованы в файлах RSI.py и MA.py соответственно. RSI измеряет скорость и изменение ценовых движений, показывая перекупленность или перепроданность актива на основе его недавних ценовых изменений. Он колеблется между 0 и 100, где значения выше 70 указывают на перекупленность, а ниже 30 — на перепроданность. MA - скользящий средний, который вычисляется путем усреднения цен актива за заданный период времени. Он сглаживает колебания цен, помогая выявить общие направления тренда, и используется для определения уровней поддержки и сопротивления. Для того, чтобы подобрать оптимальные параметры окон для обоих алгоритмов, был реализован алгоритм Grid_Search.
Визуализация и взаимодействие Реализовано взаимодействие клиента и робота в интерактивном окне. Пользователь имеет возможность выбрать акцию для трейдинга, желаемый алгоритм (RSI/MA) и временной промежуток исторических данных, на которых будет обучаться робот. После завершения трейдинга пользователь получает фидбэк от робота в виде решения по трейдингу (покупка/продажа), итоговой прибыли и графика торгов, с динамичным обновлением через определенный промежуток времени. Интерфейс направлен на упрощение работы с роботом клиентов, не имеющих опыт в трейдинге, а его простота несомненно улучшает пользовательский experience.