Skip to content
This repository has been archived by the owner on Apr 26, 2023. It is now read-only.
/ trading_bot Public archive

Telegram bot for automatic trading on the Tinkoff stock market

Notifications You must be signed in to change notification settings

mordvintsevmv/trading_bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

83 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚠Проект больше не поддерживается!⚠

⚠The project is no longer supported!⚠

Торговый робот для Тинькофф Инвестиции


⚠ ВНИМАНИЕ ⚠

Данный бот рекомендуется использовать только в ознакомительных целях.

Торговый робот не гарантирует получение прибыли.

Перед использованием торгового бота необходимо тщательно изучить рынок, а также акции, которые Вы планируете использовать для торговли.

Для наилучшей торговли различные акции требуют индивидуальной настройки торговой стратегии.

⚠ ВНИМАНИЕ ⚠


  1. Описание
    1. Обычный режим
    2. Песочница
  2. Запуск
  3. Requirements
  4. Интерфейс
  5. Торговая стратегия
  6. Тестирование эффективности
  7. Структура проекта
  8. Контакты
  9. Планы

Данный торговый робот представляет собой телеграм-бот, который позволяет:

  • Просматривать доступную валюту на счёте
  • Просматривать доступные бумаги на счёте
  • Просматривать открытые ордера и закрывать их по требованию
  • Покупать ценные бумаги в чате
  • Продавать ценные бумаги в чате
  • Просматривать статистику по торговым стратегиям
  • Выводить часовые и 15-минутные графики с торговыми индикаторами
  • Указывать направление и силу тренда акций
  • Запускать или останавливать торговые стратегии из чата

Главное особенностью данного торгового бота является его понятность и простота в использовании. Любой пользователь может без предварительного изучения списка команд или теории по трейдингу воспользоваться данным проектом.

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

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

Пользователь может выбрать свой основной аккаунт Тинькофф Инвестиции для работы с торговым роботом.

В таком случае все операции будут проходить на реальном счёте:

  • На покупку акций тратятся настоящие деньги с брокерского счёта;
  • Покупаются/продаются настоящие акции, находящиеся в Вашем портфеле;
  • Покупки/продажи осуществляются только во время работы биржи.

Для тестирования работы торгового робота пользователь может создать аккаунт-песочницу. Данное действие можно осущетсвить непосредственно в торговом боте.

Аккаунт-песочница позволяет:

  • Добавлять неограниченное количество валюты на счёт;
  • Покупать/продавать акции в неограниченном количестве;
  • Покупать/продавать акции в любое время суток.

Песочница позволяет протестировать возможности торгового робота без рисков, так как все действия происходят на специальном счёте.

🔝 Оглавление


Для запуска торгового бота необходимо:

  1. Создать файл .env (по примеру .env.example) с указанием токена Телеграм-бота.

BOT_TOKEN - токен бота телеграм

Как создать телеграм бота

  1. Установить необходимые библиотеки из requirements.txt.

🔝 Оглавление


Для запуска торгового бота требуются следующий библиотеки, описанные в requirements.txt:

aiogram~=2.20
tinkoff-investments
ta~=0.10.1
pandas~=1.4.2
matplotlib~=3.5.2
python-dotenv~=0.20.0
aioschedule~=0.5.2
dataframe_image
bcrypt~=3.2.2
tinkoff~=0.1.1
pytz~=2022.1
python-Levenshtein
Crypto
pycryptodome
pycbrf~=1.1.0
rsa~=4.8

🔝 Оглавление


Начало работы: Alt-текст

Покупка акции: Alt-текст

Добавление акции в торговую стратегию: Alt-текст

Настройка торговой стратегии: Alt-текст

Поиск бумаги: Alt-текст

Анализ бумаги: Alt-текст

Добавление денег: Alt-текст

Закрытие песочницы: Alt-текст

🔝 Оглавление


При разработке данной стратегии было решено выбрать наиболее популярные и зарекомендовавшие себя индикаторы и составить набор правил, по которым будут совершаться покупки и продажи. В данной стратегии используется 4 индикатора:

  • EMA с периодом 7 дней и EMA с периодом 21 день для определения точек входа и выхода из сделки;
  • MACD для определения направления тренда;
  • ADX для определения силы тренда.

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

Покупка будет осуществляться при выполнении всех условий сразу:

  1. Линия быстрой скользящей средней (EMA 7) пересечёт снизу медленную скользящую среднюю (EMA 21) и будет находиться сверху – возрастающий тренд;
  2. Уровень MACD будет находиться выше нуля – возрастающий тренд;
  3. Уровень ADX будет больше 20 – цена не будет стоять на месте.

Продажа будет осуществлять при выполнении одного из условий:

  1. Цена возросла достаточно (тейк-профит);
  2. Цена опустилась слишком низко (стоп-лосс);
  3. Линия быстрой скользящей средней (EMA 7) пересечёт сверху медленную скользящую среднюю (EMA 21) – начало убывающего тренда;
  4. Консолидация MACD – уровень MACD стоит на одном месте долгое время, что может говорить о возможном развороте;
  5. Резкое снижение уровня MACD – нисходящий тренд.

🔝 Оглавление


Для тестирования эффективности было решено запустить разработанный алгоритм на исторических данных за последние 3 недели.

Алгоритм совершает покупки и продажи аналогично с реальными условиями. Только вместо выставления ордеров алгоритм хранит данные о всех возможных операциях в памяти. Данные о теоретических покупках и продажах заносятся в таблицу для дальнейшего анализа.

Такой подход позволяет оперативно настраивать алгоритм, корректировать его параметры и исправлять ошибки.

Стоит отметить, что все вычисления производятся только на основе значений за прошедшие периоды времени, поэтому

Акции QIWI

Проведём тестовый запуск алгоритма для акций QIWI.

На графике зелёными полосками выделены "теоретические" покупки, а красными - "теоретические" продажи.

Также стрелками показывается направление тренда.

Alt-текст

В итоге мы также получаем таблицу со всеми операциями. Можно заметить, что большинство операций были успешными - алгоритм покупает по низкой цене и продаёт по высокой.

Также можно заметить, что не все операции были успешными, так как алгоритму приходилось продавать по цене ниже той, что была указан при покупке.

Тем не менее алгоритм показал положительный результат, и теоретически пользователь получил бы прибыль в 36₽ за 3 недели (около 12% от начальной стоимости акции).

Alt-текст

Акции СОЛЛЕРС

Аналогичный тестовый запуск алгоритма был проведён для акций СОЛЛЕРС.

Alt-текст

Заметим, что теоретически пользователь также получит прибыль в 30₽ (около 17%).

Alt-текст

Вывод

Алгоритм доказал свою эффективность при работе на исторических данных. Таким образом, данный алгоритм можно применять в реальных условиях.

Другие примеры выполнения тестового алгоритма с различными ценными бумагами можно изучить в папке с тестовыми результатами:

/img/test/total - таблицы с операциями
/img/test/graph - графики движения цены
/img/test/ind   - таблицы с индикаторами

🔝 Оглавление


  • bot/ - каталог с файлами телеграм-бота

    • handlers/ - обработчики сообщений
      • str1_handlers/ - обработчики, отвечающие за торговые стратегии
    • keyboards/ - клавиатуры для бота
  • config/ - файлы конфигураций

    • crypto_rsa.py - создание ключей шифрования
    • personal_data.txt - получение токена, id и других данных
  • img/ - каталог с изображениями

    • str1/ - стратегия 1
      • graph/ - графики
      • ind/ - таблицы с индикаторами
      • test/ - тестовые алгоритмы
    • operations/ - операции пользователей
  • pandas_style/ - стили для таблиц pandas

  • trading/ - функции трейдинга

    • candles/ - функции получения свечей
    • strategy/ - торговые стратегии
  • db/ - создание базы данных

  • main.py - запуск бота

🔝 Оглавление


Работа программы

  • Везде try except
  • Оптимизировать создание графика, если возможно
  • Уведомления об изменении цены?

Украшение

  • Украсить весь текст

  • Написать файл Readme до конца

  • Сделать пункт с помощью

  • Сделать приветственный экран со ссылками

  • Дополнить каждый пункт сопроводительным текстом


Будущее

  • Новая стратегия
  • Новые индикаторы

Готово

  • Запись всех сделок
  • Добавить "Лучшая цена"
  • Добавить удаление бумаги из стратегии
  • Добавить создание бумаги для стратегии
  • Вывод всех своих операций
  • Отредактировать покупку/продажу
  • Поиск бумаг
  • Добавить редактирование стратегии по каждой бумаге
  • Шифровка токена и аккаунта
  • Исключить время для песочницы
  • Проверка на правильность токена
  • Добавить проверку на начало торгов / продажа
  • Добавить проверку на начало торгов / покупка
  • Добавить проверку на доступность денег / стратегия
  • Добавить проверку на начало торгов / стратегия
  • Добавить поле currency в str1
  • Проверить весь код
  • Упростить код
  • Проверка на токен чтения
  • Добавить проверку на доступность денег / покупка
  • Удаление стратегий при изменении токена
  • Удаление всех стратегий по user_id
  • Проверка ввода всех данных

🔝 Оглавление

About

Telegram bot for automatic trading on the Tinkoff stock market

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages