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 года
shaman4d
Могу предположить что если делать через Google Sheets то автоматизация будет еще проще.
empenoso Автор
Там прямо на Google Apps Script можно сразу без прокладок сделать