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) |
|
|
Алор |
|
|
Финам |
Выбор субъективный и для себя выбрал Тинькофф Инвестиции.
Как воспользоваться скриптом
1. Проверка и установка Python
🖥️ Windows:
-
Скачайте установщик с официального сайта
-
При установке обязательно отметьте:
-
☑
Add Python to PATH -
☑
Install pip
-
-
После установки проверьте в командной строке:
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. Отображает всю информацию о запуске.
🐧 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
Как проверить, что всё работает
-
Запустите сервер (BAT или командой uvicorn).
-
Откройте браузер и введите:
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 года
ссылка на оригинал статьи https://habr.com/ru/articles/927238/
Добавить комментарий