Skip to content

About

Telegram bot and CLI for stylish animated market videos from stock, futures, FX, metals and crypto data.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Stock Prices

CI Docs License

Stock Prices генерирует MP4-видео с анимированными рыночными графиками. Один и тот же pipeline работает из CLI, Python API и Telegram-бота.

Единый вход

Основная русская документация живет на сайте MkDocs: karnaksp.github.io/stock-prices. Исходники документации лежат в docs/index.md.

Локально сайт открывается так:

python -m mkdocs serve

После запуска откройте http://127.0.0.1:8000.

Разработка ведется в develop, стабильная версия и GitHub Pages публикуются из main. CI запускается для main, develop и pull request в эти ветки.

Быстрый старт

Docker-бот

copy .env.example .env
# Заполните TELEGRAM_BOT_TOKEN в .env
docker compose up -d --build
docker compose ps

Логи:

docker compose logs -f stock-prices-bot

CLI

python -m pip install -e .
python -m stock_prices --tickers "SBER|stock|shares" "LKOH|stock|shares" --start_date 2020-01-01 --end_date 2024-12-31 --currency RUB --duration 20 --fps 20

Формат тикера:

TICKER
TICKER|ENGINE|MARKET

Если указан только TICKER, используется рынок по умолчанию: stock|shares.

Telegram

Telegram-бот делает market-motion videos из Mini App или обычного сообщения: принимает тикеры, категорию или сценарий, ставит задачу в очередь, рендерит MP4 и присылает ролик обратно в чат. Главная ценность - не каталог пресетов, а универсальный конструктор красивых рыночных видео под любые тикеры, периоды и инвестиционные истории. Готовые примеры остаются ориентирами.

Короткие входы:

Задача Что отправить
Открыть Mini App /app, затем кнопка Открыть Mini App
Открыть меню /start или /menu
Посмотреть справку /help
Посмотреть параметры /params
Снять свой ролик /shorts SBER LKOH за год
Случайный ролик random mixed 2
Ролик по категории random metals 1
Собрать план plan drama 5 days 2 tickers
Поставить серию shorts в очередь plan shorts metals count=1 days=5
Смотреть очередь /queue

Обычный текстовый запрос тоже работает:

LKOH
SBER LKOH 2020 2024
gold silver palladium 2018-2026 RUB capital invest initial=0 monthly=30000 gradient

Подробный синтаксис: docs/telegram.md.

Исторические данные не сохраняются в parquet: pipeline скачивает их для конкретного запроса и передает дальше в памяти. Для Docker-бота production-значение STOCK_PRICES_RETENTION_DAYS=0: MP4 удаляется сразу после успешной отправки и не копится на диске.

Как устроено

flowchart LR
    CLI["CLI / Python API"] --> Request["VideoRequest"]
    Telegram["Telegram bot / Mini App"] --> Request
    Request --> MarketData["MOEX / Yahoo market data"]
    MarketData --> Transform["Normalize prices, currency and dates"]
    Transform --> Render["Matplotlib animation renderer"]
    Render --> Artifact["MP4 / GIF preview"]
    Artifact --> Delivery["Local file or Telegram delivery"]
Loading

Код использует один и тот же request/render pipeline для CLI, Python API и Telegram. Это снижает расхождения между локальной проверкой, Docker-ботом и пользовательским сценарием: меняется только вход и доставка результата.

Чтобы расширить random-подборки всеми доступными MOEX-акциями, соберите metadata-файл и укажите его в .env:

python scripts/collect_moex_universe.py --output config/moex_universe.json
STOCK_PRICES_UNIVERSE_FILE=config/moex_universe.json

Файл содержит только тикеры, даты истории и классификации, без ценовых рядов.

Python API

from datetime import date

from stock_prices import RenderSettings, TickerSpec, VideoRequest, generate_video

path = generate_video(
    VideoRequest(
        ticker_specs=[TickerSpec("LKOH")],
        render=RenderSettings(
            start_date=date(2015, 1, 1),
            end_date=date(2026, 5, 26),
            duration=20,
            fps=20,
        ),
    )
)
print(path)

Проверки

$env:PYTHONPATH = "src"
python -m pytest -q
python -m mkdocs build --strict
python -m compileall -q src tests scripts

Разделы документации

About

Telegram bot and CLI for stylish animated market videos from stock, futures, FX, metals and crypto data.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages