← Все видеоинструкции
MT5 API · 5:52

Сбои подключения и ограничения запросов.

API восстанавливает терминал. Вы управляете приложением.

Скачать пример на Python · PY ↓

Пошаговая инструкция

  1. 0:00

    Сбои подключения и ограничения запросов.

    В этом уроке разберём сбои MT5 и ограничения запросов: как дождаться восстановления API, возобновить поток котировок и безопасно повторить чтение данных. Используем реальные ответы демонстрационного счёта.

  2. 0:18

    Проверьте существующий сеанс.

    Откройте эм ти пять точка эм эр пи си точка про. Сохраните ключ API и идентификатор терминала. В записанном ответе ConnectState состояние Connected, а isConnected, isAlive и apiIsAlive равны true. Терминал исправен. Обрыв связи в браузере или неудачный запрос сам по себе не требует создания нового терминала.

  3. 0:45

    Дождитесь автоматического восстановления.

    MetaRPC проверяет состояние терминалов и автоматически пытается восстановить активные сеансы, для которых разрешено восстановление. Идентификатор терминала сохраняется. Приложение должно приостановить затронутые операции и дать сервису время, а не постоянно вызывать Reconnect или ConnectEx. Проверяйте состояние с интервалами. Перед продолжением убедитесь через AccountSummary, что счёт снова доступен. Восстановление не происходит мгновенно после каждого сбоя.

  4. 1:23

    Устраняйте причину сбоя.

    Намеренное отключение, истечение срока сеанса, приостановка обслуживания или неверные учётные данные требуют соответствующего действия. Прочитайте причину ошибки и при необходимости обновите данные или устраните проблему со счётом. Reconnect и ConnectByToken — инструменты явного восстановления, а не часть цикла повторения каждого запроса. Если подходящий для восстановления сеанс остаётся недоступен, не возобновляйте работу и передайте поддержке код ошибки и время.

  5. 2:02

    Восстановите WebSocket приложения.

    Восстановление терминала и WebSocket приложения — разные соединения. Когда чтение счёта снова работает, закройте неисправный сокет и откройте OnSymbolTick с сохранённым id и ключом API. Возобновите подписки на инструменты. Реальные сообщения EURUSD показывают bid, ask и время. Убедитесь, что приходят свежие данные, и не создавайте дублирующие потоки. Исправный поток можно оставить открытым.

  6. 2:35

    Распознайте превышение лимита.

    Вот реальный отказ AccountSummary, полученный в ограниченном тесте чтения. HTTP Status Code 200 означает, что API вернул ответ. Поле error не равно null и содержит TERMINAL_RATE_LIMIT_EXCEEDED. Сообщение указывает, что вызов не выполнялся. В тесте лимит составлял триста неторговых вызовов за скользящую минуту для всех клиентов одного терминала. Проверяйте текущие ограничения, а не записывайте это число навсегда в код.

  7. 3:11

    Подождите указанное сервером время.

    В этом ответе error.properties содержит пару ключа и значения RetryAfterSeconds со значением 1. Подождите не менее одной секунды и добавьте небольшую случайную задержку перед повторным чтением. Приостановите и другие процессы, использующие лимит этого терминала. При новом отказе используйте новую задержку. Для HTTP Status Code 429 учитывайте заголовок Retry-After.

  8. 3:44

    Возобновляйте запросы постепенно.

    После ожидания реальный запрос снова успешен: HTTP Status Code 200, ошибки API нет, получены данные демосчёта. Не отправляйте сразу все накопившиеся запросы. Кэшируйте повторяющиеся сведения, согласуйте частоту запросов между процессами и используйте OnSymbolTick для котировок. Превышение лимита требует ожидания, а не переподключения терминала.

  9. 4:14

    Задайте чёткие правила повторения.

    Пример Python предназначен только для AccountSummary. Он повторяет запрос при явном превышении лимита или занятости, если указано корректное время ожидания, добавляет случайную задержку и ограничивается тремя попытками. Остальные ошибки передаются вызывающему коду. Храните секреты в переменных окружения. Для сбоев подключения нужна отдельная ограниченная политика. Не применяйте этот обработчик чтения к подключениям и торговым методам.

  10. 4:48

    Сначала выясните результат сделки.

    Если ответ на торговый запрос потерян, брокер уже мог его выполнить. Автоматическое восстановление не сообщает результат сделки. После восстановления доступа проверьте OpenedOrders и DealsHistory. Используйте тикеты ордеров и сделок, если они известны, и сопоставьте инструмент, направление, объём и время. Похожие сделки могут совпадать по этим признакам. Не повторяйте автоматически запрос с невыясненным результатом.

  11. 5:24

    Завершите сеанс правильно.

    Когда намеренно заканчиваете работу, остановите подписки и вызовите Disconnect. Демонстрационный поток остановлен, терминал отключён; сделки не изменялись. Помните: MetaRPC восстанавливает подходящие сеансы, приложение при необходимости восстанавливает свой сокет, при ограничениях нужно ждать, а перед новой сделкой — выяснить результат предыдущей.