Coder Social home page Coder Social logo

anomaly-check-bot's Introduction

Руководство разработчика по боту Telegram для отслеживания цен на акции

Описание: Этот бот Telegram предназначен для отслеживания изменений цен на акции на бирже Тинькофф. Он использует API Tinkoff Invest для получения данных о ценах и API Telegram для отправки уведомлений пользователям.

Необходимые компоненты:

  • Аккаунт Tinkoff Invest: Для доступа к API Tinkoff Invest.
  • Токен API Tinkoff Invest: Получите токен в настройках вашего аккаунта Tinkoff Invest.
  • Аккаунт Telegram: Для создания бота и получения токена бота.
  • Токен API Telegram: Получите токен бота в @BotFather в Telegram.
  • CSV-файл с FIGI-кодами акций: CSV-файл с колонками "figi" и "Company", содержащий FIGI-коды акций, которые нужно отслеживать, и их названия.
  • База данных: База данных для хранения идентификаторов пользователей, которые подписались на уведомления.

Установка:

  1. Установка Python: Убедитесь, что на вашем компьютере установлен Python 3.
  2. Установка библиотек: Установите необходимые библиотеки из папки requirements.txt:
  3. Создание базы данных: Создайте файл usersid.db для хранения идентификаторов пользователей.

Настройка:

  1. Замена токенов:
    • Замените TOKEN в коде на ваш токен API Tinkoff Invest.
    • Замените settings.bots.bot_token на токен вашего бота Telegram.
    • Замените settings.bots.admin_id на ваш идентификатор пользователя в Telegram.
  2. Настройка CSV-файла:
    • Создайте CSV-файл с колонками "figi" и "Company", содержащий FIGI-коды акций, которые нужно отслеживать, и их названия.
    • Сохраните файл в папке с кодом.
  3. Настройка базы данных:
    • Настройте BotDB в файле core/db.py для использования созданного файла usersid.db.
    • Убедитесь, что BotDB корректно работает и сохраняет идентификаторы пользователей.

Запуск бота:

  1. Запустите код: Запустите файл с кодом, например, с помощью команды: python3 main.py
  2. Добавьте бота в чат: Добавьте бота в свой чат в Telegram.
  3. Используйте команды: Используйте команды бота:
    • /start: Запустить бота.
    • /help: Показать справку по командам.
    • /subscribe: Подписаться на уведомления о изменении цен.
    • /report: Получить отчет о текущих ценах акций (не реализовано).
    • /unsubscribe: Отписаться от уведомлений.

Обработка ошибок:

  • Логирование: Добавьте в код логирование ошибок, чтобы легче выявлять и устранять проблемы.
  • Обработка исключений: Используйте обработку исключений для предотвращения неожиданных завершений программы.

Важно:

  • API Tinkoff Invest: Убедитесь, что вы ознакомились с документацией API Tinkoff Invest, чтобы правильно использовать его функции.
  • API Telegram: Убедитесь, что вы ознакомились с документацией API Telegram, чтобы правильно использовать функции ботов.
  • Безопасность: Храните токен API Tinkoff Invest и токен API Telegram в безопасном месте, чтобы избежать несанкционированного доступа.

Этот бот является основой для отслеживания цен на акции. Разработайте и расширьте его функциональность в соответствии со своими потребностями.

Обзор кода:

Разбивка кода:

  1. send_message(user_id, message):
  • Это асинхронная функция, которая отправляет сообщение в Telegram пользователю с указанным user_id.
  • Использует await bot.send_message(), чтобы отправить сообщение с помощью экземпляра бота bot.
  • Выводит сообщение в консоль.
  1. main():
  • Основная асинхронная функция, которая запускает все остальные задачи.
  • Инициализирует dp, экземпляр бота bot, и базу данных bot_db_instance.
  • Загружает список figi_to_name, который содержит список, содержащий уникальный индетификационный номер компании и ее название.
  • Использует Client для подключения к потоку рыночных данных.
  • В цикле обрабатывает данные marketdata из потока:
  • Если данные содержат candle (свечу), то вызывается функция process_candle_data().
  • В противном случае выводит сообщение о полученных данных без свечи.
  • В блоке finally закрывает сессию бота и базу данных.
  1. process_candle_data(candle, figi_to_name):

Функция process_candle_data() обрабатывает данные свечи, полученные от Tinkoff Invest API. Она выполняет следующие действия:

  • Извлекает данные: Извлекает FIGI, название компании, цену открытия и цену закрытия свечи.
  • Рассчитывает изменение цены: Рассчитывает процентное изменение цены между ценой открытия и ценой закрытия свечи.
  • Проверяет порог изменения: Проверяет, превышает ли процентное изменение цены заданный порог (0.1% по умолчанию).
  • Отправляет уведомления: Если процентное изменение цены превышает порог, то функция отправляет уведомления всем пользователям, которые подписались на эту акцию.
  1. asyncio.run(main()):
  • Запускает асинхронную функцию main(), которая запускает цикл обработки данных.
  1. База данных пользователей
  • Бот использует базу данных bot_db_instance для хранения и получения ID пользователей, которые подписались на уведомления.

    Добавление пользователя:

  • Когда пользователь отправляет команду /subscribe, бот добавляет его ID в базу данных.

  • Удаление пользователя: Когда пользователь отправляет команду /unsubscribe, бот удаляет его ID из базы данных.

    Получение списка пользователей:

    Функция bot_db_instance.id_for_print() возвращает список ID всех пользователей, которые подписались на уведомления.

Пример использования:

  • Пользователь добавляет бота в свой Telegram-чат.
  • Бот следит за данными финансового инструмента, например, акцией Apple.
  • Если цена акции Apple увеличивается на 5%, то бот отправляет уведомление в Telegram-чат пользователю.

anomaly-check-bot's People

Contributors

c1kvoy avatar envvyy avatar sofyakvastsova avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.