Блог им. empenoso
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) |
|
Алор |
|
Финам |
Выбор субъективный и для себя выбрал Тинькофф Инвестиции.
Как воспользоваться скриптом🖥️ Windows:
Скачайте установщик с официального сайта
При установке обязательно отметьте:
☑ Add Python to PATH
☑ Install pip
После установки проверьте в командной строке:
<code class="bash">python --version pip --version</code>

🐧 Linux (Debian/Ubuntu):
<code class="bash">sudo apt update && sudo apt install python3-venv python3-full -y</code>
Скачайте проект с GitHub.
1. Впишите Ваш секретный токен в .env файл в корневой папке проекта:
<code>TINKOFF_TOKEN="t.xxxxxxx_xxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxx_xxxxx-xxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # ← Ваше токен здесь</code>
Где получить токен:

Зайдите на сайт брокера
Инвестиции → Настройки → Управление токенами
Создайте токен с ограниченными правами

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

2. Объяснение requirements.txt
<code>tinkoff-investments # Работа с API Тинькофф Инвестиций fastapi # Создание веб-сервера и маршрутов uvicorn # ASGI-сервер, запускает FastAPI python-dotenv # Загружает токен из .env файла</code>3. Запуск промежуточного сервера🖥️ Windows: запуск через .bat файлы
Если у вас Windows, то:
1_install_requirements.bat — установка зависимостей
Запустите один раз для установки двойным кликом — установятся нужные библиотеки.
2_start_server.bat — запуск сервера
Основной запуск локального сервера на localhost:8000. Отображает всю информацию о запуске.
Под Windows всё работаетУстановка зависимостей:
<code>python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt pip list deactivate</code>

Запуск сервера:
<code class="bash">source .venv/bin/activate uvicorn server:app --host 127.0.0.1 --port 8000</code>

Запустите сервер (BAT или командой uvicorn).
Откройте браузер и введите:
<code>http://127.0.0.1:8000/orderbook.xml?ticker=SBER&class_code=TQBR</code>

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

Комбинация Ctrl + Alt + F9 это полный пересчёт всех формул во всех листах:
Главный скрипт: server.pyЧто он делает:
<code class="python">load_dotenv()
TOKEN = os.getenv("TINKOFF_TOKEN")</code>Скрипт берет API-токен из .env файла — это безопасный способ хранения.
<code class="python">@app.get("/orderbook.xml")</code>Когда пользователь обращается по этому адресу с параметрами ticker и class_code, скрипт делает следующее:
<code class="python">instrument_response = client.instruments.get_instrument_by(...)</code>
Он ищет инструмент (например, акцию или фьючерс), используя тикер и код класса (например, "TQBR" — основной рынок акций, "SPBFUT" — фьючерсы).
<code class="python">orderbook = client.market_data.get_order_book(...)</code>
Скрипт запрашивает «стакан» заявок (Order Book) и берет из него самую выгодную цену на покупку (bid) и продажу (offer) с глубиной 1 (то есть только первую строку).
<code class="xml"><orderbook> <ticker>SBER</ticker> <class_code>TQBR</class_code> <name>Сбер Банк</name> <bid>304,910</bid> <offer>304,920</offer> </orderbook></code>
Собирает результат в XML-документ, пригодный для Excel.
Если инструмент не найден (ошибка в тикере или class_code), возвращается XML с описанием ошибки:
<code class="xml"><error>Инструмент не найден</error></code>Заключение
Предлагаемый мной подход — не взлом, а умное использование открытых возможностей.
Благодаря официальному API брокера и простому серверу на Python, вы получаете инструмент для мониторинга лучших BID и OFFER в Excel — без подписок и ограничений.
Но на этом возможности не заканчиваются: проект открыт (open source), а значит, вы можете легко адаптировать его под любые нужды — получать не только стакан, но и любые другие рыночные данные.
Хотите больше — доработайте сами или закажите изменения. Всё локально, безопасно и полностью под вашим контролем.
Автор: Михаил Шардин
🔗 Моя онлайн-визитка
📢 Telegram «Умный Дом Инвестора»
15 июля 2025 года
Для них установка и настройка QUIK может быть избыточной, особенно если они уже ведут свои модели в таблицах.
Каждый выбирает инструменты под свои задачи: кому-то нужен тяжелый артиллерийский терминал, а кому-то — легкая интеграция в свою экосистему.
Главное, чтобы это работало эффективно для конкретного пользователя.
Так что у большинства алго — старый добрый квик.
Добрый день, а в гугл таблице можно такое устроить?
Или отдельный скрипт использовать который прямо в таблицу запишет
Мне нравится. Сам бы не использовал, так как уже на Python+Jupyter.
Но вот вопрос от Александра мне кажется актуальным и современным.
= IMPORTxml ( «iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml?iss.meta=off&iss.only=securities&securities.columns=SECID,SECNAME», СЦЕПИТЬ ( "//row[@SECID='", GAZP, "']/@SECNAME" ) )
А так котировку:
=IMPORTXML(СЦЕПИТЬ(«iss.moex.com/iss/engines/stock/markets/shares/securities/», GAZP, ".xml"), "/document/data[@id="«marketdata»"]/rows/row[@BOARDID="«TQBR»"]/@MARKETPRICE")
Спасибо!
Но на мой скромный взгляд -это далеко не самое практичное решение для реальной работы с данными ..
В 2000 годы — когда не было ни Питона ни многих других инструментов мудрые ребята писали(и долго поддерживали за так!) функциональные с удобным интуитивным интерфейсом программы для сбора данных (один только пример Quotes Updater- а таких программ было несколько!) по местной кухне и не только!
Тот же «самый крутой алготрейдер » автор OsEngine предлагает своё крайне кривое решение Data в составе OsEngine..
Ощущение, что нормальных программистов для решения в общем то Простой задачи больше нет!??
А предложенный метод норм если надо получить данные которых обычно нет в доступе — стакан, все сделки.
SHOAR, я конечно люблю смартлаб, но как вы добавите недвижимость например? Есть специализированные сервисы, или руками можно: smart-lab.ru/mobile/topic/1117802/
Вот ещё писал: smart-lab.ru/mobile/topic/1073200/
smart-lab.ru/blog/tradesignals/1062006.php
Комьюнити лицензию 1С можно получить бесплатно на
developer.1c.ru/
Лично моё мнение.
Да и не в тему поста это
Скажите зачем вообще все эти танцы с бубном?
Только для того чтобы смотреть на актуальную стоимость своих активов?
P.S. Программист и Excel вызывает не менее сильный рвотный рефлекс, чем 1с. Это как надо головой ударится, чтобы для отображения котировок бумаг своего портфеля такой oгород начать городить.
Мне кажется, долгосрочным инвесторам должно быть, достаточно tradingview. Без всяких установок и танцев с бубном
Практически все только в Экселе. Гугл Таблицы — ничтожно мало. И я тоже считаю что зря
Михаил Шардин, так и надо показывать преимущество другого инструмента, а не идти на поводу использования того, что не предназначено, разрабатывая и плодя костыли.
Написали бы статью «Excel vs Google Sheets» глядишь при следующем опросе пользователей облачных таблиц стало бы больше.
P.S. Для меня одно из основным преимуществ Google Sheets это доступ с любого устройства и история изменений. За последние 15 лет сам не создал ни одного Excel файла.