Excel - главный рабочий инструмент многих частных инвесторов. Здесь ведут портфели, стратегии и мониторинг котировок. Но получить от Московской биржи лучшие цены на покупку (BID) и продажу (OFFER) из стакана прямо в таблицу - задача не из простых. Даже платная подписка на сайт биржи не даёт получать котировки в Excel напрямую.

Но слово «взлом» в названии статьи - это художественное преувеличение. Мы не будем нарушать никаких законов или пытаться обойти защиту биржи и вообще даже не дышим в сторону серверов Мосбиржи. Однако голь на выдумки хитра - построим элегантное решение с помощью официального API от любого брокера.

Идея проста: создать локальный сервер-прокладку, который Excel сможет опрашивать через веб-запросы. Сервер будет обращаться к API брокера, получать данные стакана и возвращать их в понятном для себя XML формате прямо в вашу таблицу, в ячейке которой будет отображена нужная цифра.

Фактически по такой схеме можно получать любые параметры с биржи и видеть их в своём локальном Microsoft Excel или его свободном аналоге LibreOffice Calc.

Как это будет работать: схема

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

Excel делает веб-запрос - например, на адрес http://127.0.0.1:8000/orderbook.xml?ticker=SiU5&class_code=SPBFUT. Этот запрос поступает на локальный сервер, работающий на FastAPI. Сервер, в свою очередь, обращается к официальному API -брокера (в моём случае это Тинькофф Инвестиции), получает данные стакана - лучшие BID и OFFER и возвращает их в виде XML-ответа.

Excel легко обрабатывает XML через встроенные функции (но только для Windows, под Mac работать не будет), и нужные значения попадают прямо в ячейки таблицы.

Пока скрипт активен, Excel получает свежие данные. Выключили сервер - то есть закрыли bat файл (для Windows) - поток информации прекращается. Это безопасно и локально.

В России есть несколько брокеров с открытыми API:

Брокер

Документация

Тинькофф (T-Invest)

https://developer.tbank.ru/invest/intro/intro

Алор

https://alor.dev/docs/

Финам

https://trade-api.finam.ru/swagger/index.html

Выбор субъективный и для себя выбрал Тинькофф Инвестиции.

Как воспользоваться скриптом

1. Проверка и установка Python

?️ Windows:

  1. Скачайте установщик с официального сайта

  2. При установке обязательно отметьте:

    • ☑ Add Python to PATH

    • ☑ Install pip

  3. После установки проверьте в командной строке:

    python --version
    pip --version

? Linux (Debian/Ubuntu):

sudo apt update && sudo apt install python3-venv python3-full -y

2. Настройка проекта

Скачайте проект с GitHub.

1. Впишите Ваш секретный токен в .env файл в корневой папке проекта:

TINKOFF_TOKEN="t.xxxxxxx_xxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxx_xxxxx-xxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"  # ← Ваше токен здесь

Где получить токен:

  • Зайдите на сайт брокера

  • Инвестиции → Настройки → Управление токенами

  • Создайте токен с ограниченными правами

Никогда не публикуйте и никому не передавайте этот токен!

Токен появится в списке как приложение:

2. Объяснение requirements.txt

tinkoff-investments  # Работа с API Тинькофф Инвестиций
fastapi              # Создание веб-сервера и маршрутов
uvicorn              # ASGI-сервер, запускает FastAPI
python-dotenv        # Загружает токен из .env файла

3. Запуск промежуточного сервера

?️ Windows: запуск через .bat файлы

Если у вас Windows, то:

1_install_requirements.bat - установка зависимостей

Запустите один раз для установки двойным кликом - установятся нужные библиотеки.

2_start_server.bat - запуск сервера

Основной запуск локального сервера на localhost:8000. Отображает всю информацию о запуске.

Под Windows всё работает
Под Windows всё работает

? Linux: команды для запуска

Установка зависимостей:

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip list
deactivate

Запуск сервера:

source .venv/bin/activate
uvicorn server:app --host 127.0.0.1 --port 8000
Через LibreOffice Calc в Ubuntu всё работает
Через LibreOffice Calc в Ubuntu всё работает

Как проверить, что всё работает

  1. Запустите сервер (BAT или командой uvicorn).

  2. Откройте браузер и введите:

http://127.0.0.1:8000/orderbook.xml?ticker=SBER&class_code=TQBR

Если картинка в браузере как на скриншоте - запускайте Эксель под Windows:

Комбинация Ctrl + Alt + F9 это полный пересчёт всех формул во всех листах:

Главный скрипт: server.py

Что он делает:

1. Загружает токен доступа

load_dotenv()
TOKEN = os.getenv("TINKOFF_TOKEN")

Скрипт берет API-токен из .env файла - это безопасный способ хранения.

2. Создает HTTP-сервер с одним маршрутом /orderbook.xml

@app.get("/orderbook.xml")

Когда пользователь обращается по этому адресу с параметрами ticker и class_code, скрипт делает следующее:

3. Находит инструмент по тикеру

instrument_response = client.instruments.get_instrument_by(...)

Он ищет инструмент (например, акцию или фьючерс), используя тикер и код класса (например, "TQBR" - основной рынок акций, "SPBFUT" - фьючерсы).

4. Получает лучшие BID и OFFER

orderbook = client.market_data.get_order_book(...)

Скрипт запрашивает "стакан" заявок (Order Book) и берет из него самую выгодную цену на покупку (bid) и продажу (offer) с глубиной 1 (то есть только первую строку).

5. Формирует XML

<orderbook>
<ticker>SBER</ticker>
<class_code>TQBR</class_code>
<name>Сбер Банк</name>
<bid>304,910</bid>
<offer>304,920</offer>
</orderbook>

Собирает результат в XML-документ, пригодный для Excel.

6. Обрабатывает ошибки

Если инструмент не найден (ошибка в тикере или class_code), возвращается XML с описанием ошибки:

<error>Инструмент не найден</error>

Заключение

Предлагаемый мной подход - не взлом, а умное использование открытых возможностей.

Благодаря официальному API брокера и простому серверу на Python, вы получаете инструмент для мониторинга лучших BID и OFFER в Excel - без подписок и ограничений.

Но на этом возможности не заканчиваются: проект открыт (open source), а значит, вы можете легко адаптировать его под любые нужды - получать не только стакан, но и любые другие рыночные данные.

Хотите больше - доработайте сами или закажите изменения. Всё локально, безопасно и полностью под вашим контролем.

Автор: Михаил Шардин
? Моя онлайн-визитка
? Telegram «Умный Дом Инвестора»

15 июля 2025 года

Комментарии (0)