Блог им. empenoso

Как я «взломал» Мосбиржу, чтобы бесплатно получать котировки в свой Excel. Пошаговая инструкция с кодом

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

Как я «взломал» Мосбиржу, чтобы бесплатно получать котировки в свой Excel. Пошаговая инструкция с кодом

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

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

Как я «взломал» Мосбиржу, чтобы бесплатно получать котировки в свой Excel. Пошаговая инструкция с кодом

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

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

Как я «взломал» Мосбиржу, чтобы бесплатно получать котировки в свой Excel. Пошаговая инструкция с кодом

Вся система строится на простой цепочке, которую можно повторить у себя за несколько минут, потому что код выложен на 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. После установки проверьте в командной строке:

    <code class="bash">python --version
    pip --version</code>
Как я «взломал» Мосбиржу, чтобы бесплатно получать котировки в свой Excel. Пошаговая инструкция с кодом

🐧 Linux (Debian/Ubuntu):

<code class="bash">sudo apt update && sudo apt install python3-venv python3-full -y</code>

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

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

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

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

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

Как я «взломал» Мосбиржу, чтобы бесплатно получать котировки в свой Excel. Пошаговая инструкция с кодом
  • Зайдите на сайт брокера

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

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

Как я «взломал» Мосбиржу, чтобы бесплатно получать котировки в свой Excel. Пошаговая инструкция с кодом

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

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

Как я «взломал» Мосбиржу, чтобы бесплатно получать котировки в свой Excel. Пошаговая инструкция с кодом

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. Отображает всю информацию о запуске.

Как я «взломал» Мосбиржу, чтобы бесплатно получать котировки в свой Excel. Пошаговая инструкция с кодомПод Windows всё работает

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

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

<code>python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip list
deactivate</code>
Как я «взломал» Мосбиржу, чтобы бесплатно получать котировки в свой Excel. Пошаговая инструкция с кодом

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

<code class="bash">source .venv/bin/activate
uvicorn server:app --host 127.0.0.1 --port 8000</code>
Как я «взломал» Мосбиржу, чтобы бесплатно получать котировки в свой Excel. Пошаговая инструкция с кодом


Через LibreOffice Calc в Ubuntu всё работает

Как проверить, что всё работает
  1. Запустите сервер (BAT или командой uvicorn).

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

<code>http://127.0.0.1:8000/orderbook.xml?ticker=SBER&class_code=TQBR</code>
Как я «взломал» Мосбиржу, чтобы бесплатно получать котировки в свой Excel. Пошаговая инструкция с кодом

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

Как я «взломал» Мосбиржу, чтобы бесплатно получать котировки в свой Excel. Пошаговая инструкция с кодом

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

Как я «взломал» Мосбиржу, чтобы бесплатно получать котировки в свой Excel. Пошаговая инструкция с кодомГлавный скрипт: server.py

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

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

<code class="python">load_dotenv()
TOKEN = os.getenv("TINKOFF_TOKEN")</code>

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

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

<code class="python">@app.get("/orderbook.xml")</code>

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

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

<code class="python">instrument_response = client.instruments.get_instrument_by(...)</code>

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

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

<code class="python">orderbook = client.market_data.get_order_book(...)</code>

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

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

<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.

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

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

<code class="xml"><error>Инструмент не найден</error></code>
Заключение

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

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

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

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

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

15 июля 2025 года

28.9К | ★95
67 комментариев
ЗакрепитьКомментарий закреплен пользователем Михаил Шардин
Виталий Иванов, QUIK — это проверенная временем платформа, которую многие трейдеры используют для активной торговли. Однако, моя статья рассчитана на другую аудиторию — частных инвесторов, которые не занимаются активным трейдингом, но хотят получать данные биржи в Excel для анализа и решений. 

Для них установка и настройка QUIK может быть избыточной, особенно если они уже ведут свои модели в таблицах.

Каждый выбирает инструменты под свои задачи: кому-то нужен тяжелый артиллерийский терминал, а кому-то — легкая интеграция в свою экосистему.

Главное, чтобы это работало эффективно для конкретного пользователя.
Зачем эти танцы с бубном? Можно из квика в эксель любую таблицу вывести 
avatar
Reznor, для тех кто НЕ использует Квик.
Reznor, зачем он вообще нужен? Напомните пожалуйста
Михаил Шардин, квик использует большинство тех, кто торгует через комп. Мобильные приложения брокеров — весьма свежа новация.  МТ5 и системы отдельных брокеров не слишком популярны и были, и есть. Плаза, фикс и тому подобное — дорого и только для ХФТ. 
Так что у большинства алго — старый добрый квик. 
avatar
SergeyJu, mt4, mt5 в разы удобнее. Торгую с мобильника только потому, что хитрожопые брокеры вместо норм платформ пихают кривущий Квик.
avatar
1 Цер, ну и славно. 
avatar
Reznor, я использую прямые ссылки только котировки за вчерашнюю сессию. строится график сравнения с бенчмарком. чтобы понимать как моя стратегия отличается от индекса
Спасибо
Eugen Invest Malina, 🙏
круто
avatar
Crogall, 🙏
avatar

Добрый день, а в гугл таблице можно такое устроить?

avatar
Александр, всё можно — там JS можно прямо внутри таблицы написать.
Или отдельный скрипт использовать который прямо в таблицу запишет
Александр,
Мне нравится. Сам бы не использовал, так как уже на 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")
Матвей Зонов,

Спасибо!

avatar
Матвей Зонов, в этом примере специально не использую взаимодействие с мосбиржей
Спасибо за решения актуального вопроса..
Но на мой скромный взгляд -это далеко  не самое практичное решение для реальной работы с данными ..
В 2000 годы — когда не было ни Питона ни многих других инструментов мудрые ребята писали(и долго поддерживали за так!) функциональные с удобным интуитивным интерфейсом программы для сбора данных (один только пример Quotes Updater- а таких программ было несколько!) по местной кухне и не только!
Тот же «самый крутой алготрейдер » автор OsEngine предлагает своё  крайне кривое решение Data в составе OsEngine..     
Ощущение, что нормальных программистов для решения в общем то Простой задачи больше нет!??
avatar
igor12, больше на философский вопрос похоже
Михаил Шардин, Это не философия, а примеры деградации нынешних «программистов»..   Не переживайте сильно- эти процессы мировые…
avatar
igor12, ответ заключается в словах «за так». Вы «за так» много работаете?
avatar
zhorzh, Нынешние криворукие и не «за так»-ничего толкового не могут написать) 
avatar
Спасибо за труд 
avatar
Chiko Bamboni, 🙏
У брокеров бывают тех проблемы и в данных будет гэп, а получить всю историю через АПИ не всегда возможно, есть лимиты. Более разумным представляется выкачивать файлы с котировками автоматом и разбирать их в питон/панда .

А предложенный метод норм если надо получить данные которых обычно нет в доступе — стакан, все сделки.
avatar
MoscowTrades, и стакан, и все сделки без проблем можно брать из квика, хоть в эксель, хоть на экран, хоть сразу в БД. 

avatar
SergeyJu, можно, если квик использовать
MoscowTrades, 09:36 В настройках Квика есть пункт «Восстанавливать пропущенные данные».
в Альфа-директ лет 15 есть экспорт в прямом эфире котировок…
Мир в экономике, и?
Виталий Иванов, ответил в закреплённом комментарии
Не подскажете, чем АПИ Тинькова лучше АПИ Мосбиржи?
avatar
СергейК, через API мосбиржи например данные стакана нельзя получить. Во всяком случае без регистрации точно
проще и полезнее КВИК установить
avatar
AndKud, а для чего полезнее?
AndKud, современный QUIK потребляет под гигабайт памяти и порой притормаживает, плюс загружает сеть, если инструментов много. Когда не нужен весь функционал, вполне достаточно самописных настраиваемых и легковесных решений.
avatar
Для полноты картины рынка.
avatar
Можно проще. Собрать портфель прямо на смартлабе. Он автоматом обновляет котировки. А в эксель при необходимости можно просто скопировать.

avatar

SHOAR, я конечно люблю смартлаб, но как вы добавите недвижимость например? Есть специализированные сервисы, или руками можно: smart-lab.ru/mobile/topic/1117802/

Вот ещё писал: smart-lab.ru/mobile/topic/1073200/ 

Помогает хоть иксы делать?)
avatar
Дрейк, как связан технический момент с получением котировок и иксами?
Прошу не считать рекламой ибо бесплатно
smart-lab.ru/blog/tradesignals/1062006.php
Комьюнити лицензию 1С можно получить бесплатно на 
developer.1c.ru/
Биржевой Спекулянт Инвестор, лично мне НЕ нравится квик, но 1С мне НЕ нравится ещё сильнее.
Лично моё мнение.

Да и не в тему поста это
Михаил Шардин, Что было в тему поста. QUIK льет данные постоянно дергать не надо ни API ни еще что либо. + QUIK позволяет подавать заявки на биржу через брокера.
Мне кажется, но по моему люди у которых есть деньги для торговли на бирже не умеют пользоваться Excel. Так что все решения равнозначны по бесполезности.
Биржевой Спекулянт Инвестор, это вообще печально. Эксель — практически база. То же самое что не уметь пользоваться телефоном
Михаил Шардин, Им нет потребности в нем. Как и в телефоне тоже.
Михаил Шардин, вышеупомянутый Python удобнее, чем криворукий Эксель. Эксель вообще не для этого предназначен, его роль ограничивается рисованием графиков на коленке и форматированием таблиц. Для серьёзных задач, связанных с деньгами, его использовать — дурной тон.
avatar
lihoslavl, не могу согласится. Главные герой этой статьи — Эксель

Скажите зачем вообще все эти танцы с бубном? 

Только для того чтобы смотреть на актуальную стоимость своих активов?

P.S. Программист и Excel вызывает не менее сильный рвотный рефлекс, чем 1с.  Это как надо головой ударится,  чтобы для отображения котировок бумаг своего портфеля такой oгород начать городить.

avatar
Вадим, это когда Квик — избыточно ставить, а по Апи подключиться это раз плюнуть :xDDDDD
Мне кажется, долгосрочным инвесторам должно быть, достаточно tradingview. Без всяких установок и танцев с бубном
Капитан Козявочность, так и есть
Вадим, Экселем многие пользуются. Универсальный
Михаил Шардин, Экцелем да, пользуюсь, но после строчек — установка Python. На этом мои компетенции все…
Капитан Козявочность, может быть стоит попробовать что-то новое? Тем более схема реально рабочая
Михаил Шардин, для всего описанного Вами достаточно Google Sheets без всего этого набора костылей.
avatar
Вадим, когда я выступал на конференции Смартлаба в прошлом году, то проводил опрос кто пользуется Экселем, а кто Гугл Таблицами.
Практически все только в Экселе. Гугл Таблицы — ничтожно мало. И я тоже считаю что зря

Михаил Шардин, так и надо показывать преимущество другого инструмента, а не идти на поводу использования того, что не предназначено, разрабатывая и плодя костыли. 

Написали бы статью «Excel vs Google Sheets» глядишь при следующем опросе пользователей облачных таблиц стало бы больше.

P.S. Для меня одно из основным преимуществ Google Sheets это доступ с любого устройства и история изменений. За последние 15 лет сам не создал ни одного Excel файла.

avatar
Сложный способ у автора статьи., но рабочий и универсальный. По мне проще по dde сразу в Эксель
avatar
Salvinit, 🙏
А вы не родственник знаменитого инвестора Шадрина?
avatar
d_69, нет. Фамилии разные: Шардин и Шадрин
Михаил Шардин, да, я уже тогда увидел, прошу прощения.
avatar
Указанные бесплатные API брокеров — там данные без задержки или тоже 15 минут, как у МосБиржи?
Александр Тимофеев, без

Читайте на SMART-LAB:
Фото
✔️ Рыночное положение: всё с̶л̶о̶ж̶н̶о̶ надежно
Вчера мы получили статус официального администратора финансовых индикаторов. После внесения в соответствующий реестр Московская биржа стала первой...
Фото
Холдинг SFI закрыл сделку по продаже ЛК «Европлан» Альфа-Банку
Альфа-Банк приобрел 87,5% ПАО «ЛК «Европлан», крупнейшего независимого оператора на российском рынке лизинга, у инвестиционного холдинга SFI....
Фото
Софтлайн + собственные разработки = ?
В стратегии, которую мы представили рынку в 2023 году, одним из главных приоритетов было развитие собственных решений. Они более прибыльные для...
Фото
Какая доходность среди облигаций с наивысшим рейтингом надежности и сроком погашения от 3 лет?

теги блога Михаил Шардин

....все тэги



UPDONW
Новый дизайн