# Московская биржа — ISS (Informational & Statistical Server): Получить итоги торгов по всем акциям за день

Сценарий из mcp-everything. Актуально на 2026-10-24.

Цены закрытия, число сделок и объёмы по каждой бумаге — для аналитики, бэктестов и отчётов по портфелю.

1. Запроси итоги: GET /iss/history/engines/{engine}/markets/{market}/boards/{board}/securities.json с engine = stock, market = shares, board — режимом торгов (основной для акций — TQBR) и date в формате YYYY-MM-DD.
2. В ответе блок history: columns — названия колонок, data — строки. Нужные колонки — SECID (тикер), LEGALCLOSEPRICE (цена закрытия), NUMTRADES (число сделок).
3. Ответ приходит частями: увеличивай start на число полученных строк и повторяй, пока data не станет пустым.
4. Дробные числа — с точкой, пустые значения — null. Для части данных (реальное время) нужна авторизация через MOEX Passport: cookie MicexPassportCert передаётся в каждом запросе.

```python
import requests

URL = "https://iss.moex.com/iss/history/engines/stock/markets/shares/boards/TQBR/securities.json"
rows, start = [], 0
while True:
    block = requests.get(URL, params={"date": "2026-10-23", "start": start}).json()["history"]
    if not block["data"]:
        break
    cols = block["columns"]
    rows += [dict(zip(cols, r)) for r in block["data"]]
    start += len(block["data"])

for r in rows[:5]:
    print(r["SECID"], r["LEGALCLOSEPRICE"], r["NUMTRADES"])
```

## Базовые URL

- Боевой: `http://iss.moex.com`
- Авторизация (MOEX Passport): `https://passport.moex.com/authenticate`
- Формат ответа задаётся расширением в пути: `.xml`

## Авторизация

Тип: Basic Auth

Запрос к `https://passport.moex.com/authenticate` с заголовком `Authorization: Basic base64(user:password)` (учётная запись MOEX Passport). В ответ приходит cookie `MicexPassportCert`, которую нужно передавать в следующих запросах к ISS. По примерам, логин и пароль нужны для данных в реальном времени и для запрошенных в примере исторических данных. При истечении cookie авторизацию повторяют.

## Методы сценария

### GET /iss/history/engines/{engine}/markets/{market}/boards/{board}/securities.json — Итоги торгов по всем инструментам за дату

Ответ приходит частями: увеличивайте `start` на число полученных строк, пока ответ не станет пустым. В блоке `history` поле `columns` — список идентификаторов колонок, `data` — строки; среди колонок `SECID`, `LEGALCLOSEPRICE`, `NUMTRADES`.

Тот же запрос в XML — `securities.xml`: блок `<data id="history">`, строки в `<rows>`, значения в атрибутах.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `engine` | path | string | да | Торговая система, например stock |
| `market` | path | string | да | Рынок, например shares |
| `board` | path | string | да | Режим торгов, например eqne |
| `date` | query | string | да | Дата торгов YYYY-MM-DD, например 2010-04-29 |
| `start` | query | integer | нет | Смещение для постраничной загрузки |
| `iss.json` | query | string | нет | extended — идентификаторы колонок вместе с данными в каждой строке (больше трафика) |

## Нюансы

- Ответ JSON состоит из блоков (например, `history`), в каждом `columns` и `data`; метаданные рекомендуется хранить отдельно.
- Дробные числа в ответах всегда с точкой в качестве разделителя.
- Длинные ответы разбиты на страницы — всегда используйте `start`.
- Пустые значения приходят как `null`.

## Другие сценарии

- [Найти нужный рынок и режим торгов](https://mcp-everything.ru/integrations/moex-iss/scenarios/nayti-nuzhnyy-rynok-i-rezhim-torgov.md)

---

Если этого недостаточно — официальная документация: https://iss.moex.com/iss/reference/
Вся интеграция одним документом: https://mcp-everything.ru/integrations/moex-iss.md
