Skip to content

AltSpaceTG/TickerHive

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TickerHive

TickerHive – это демонстрационный проект, который состоит из набора микросервисов для получения финансовых данных по тикерам акций, расчёта различных метрик (скользящие средние, медианные фильтры, полосы Боллинджера, историческая волатильность и точки экстремума), а также предоставления результатов пользователям через Telegram-бот.

Проект демонстрирует архитектуру на основе нескольких модулей, каждый из которых развёрнут в виде отдельного Docker-контейнера и общается через брокер сообщений (RabbitMQ):

  • UI (Telegram Bot): Интерфейс для пользователей. Позволяет через команды в Telegram получать отчёты и запускать периодические обновления.
  • Coordinator: Координирует взаимодействие между UI, Core и Storage. Обрабатывает запросы, запрашивает данные у Core, сохраняет результаты в Storage и возвращает их обратно UI.
  • Core: Обрабатывает запросы, связанные с получением и анализом данных. Загружает котировки через yfinance и вычисляет метрики.
  • Storage: Хранит данные о котировках, метриках и настройках пользователей в MongoDB.

Требования

  • Docker и docker-compose
  • Токен Telegram-бота (можно получить у BotFather)

Запуск

  1. Клонируйте репозиторий:

    git clone https://your-repository-url/TickerHive.git
    cd TickerHive
  2. Добавьте токен Telegram-бота в docker-compose.yml для сервиса ui (переменная окружения TELEGRAM_TOKEN).

  3. Запустите сборку и запуск контейнеров:

    docker-compose up --build
  4. Если вам необходимо сбросить кеш, воспользуйтесь командой:

    docker-compose build --no-cache

    Данный шаг поднимет следующие сервисы:

    • rabbitmq – брокер сообщений (порты: 5672, 15672)
    • mongodb – база данных MongoDB (порт 27017)
    • ui – Telegram-бот
    • coordinator – координатор
    • core – сервис обработки данных
    • storage – сервис хранения данных
  5. Найдите ваш Telegram-бот (по токену, который вы указали, вы получите username у BotFather) и начните с ним общаться:

    • Введите /start для приветствия.
    • Команда /get_report <TICKER> <START_DATE> <END_DATE> для единоразового получения отчёта. Пример: /get_report AAPL 2024-10-10 2024-11-11
    • Команда /start_updates <TICKER> <INTERVAL> для запуска периодического обновления данных по тикеру каждые INTERVAL секунд. Пример: /start_updates AAPL 30
    • Команда /stop_updates <TICKER> для остановки периодического обновления. Пример: /stop_updates AAPL
  6. Логи каждого сервиса доступны в консоли, где запущен docker-compose. Для остановки нажмите Ctrl+C.

Структура проекта

project/
  docker-compose.yml
  requirements.txt

  common/
    config.py
    logging_config.py
    messages.py
    utils.py

  ui/
    handlers.py
    service.py
    main.py
    Dockerfile

  coordinator/
    scheduler.py
    coordinator_service.py
    main.py
    Dockerfile

  core/
    core_service.py
    data_fetcher.py
    metrics.py
    Dockerfile

  storage/
    storage_service.py
    Dockerfile

Дополнительная информация

  • RabbitMQ панель управления: http://localhost:15672 (логин/пароль: guest/guest)
  • MongoDB доступна по адресу mongodb://localhost:27017 на хост-машине (можно использовать инструменты вроде mongosh для просмотра данных).

Развитие проекта

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

Поддержка

Если у вас возникли вопросы или предложения по улучшению проекта, вы можете создавать Issues в репозитории проекта или прислать Pull Request.

About

Lightweight app for real-time stock ticker tracking.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •