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

От истории MT5 к понятному отчёту.

Реальные сделки. Отдельный учёт пополнений. Экспорт результата.

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

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

  1. 0:00

    От истории MT5 к понятному отчёту.

    В этом уроке вы узнаете, как получить историю сделок MT5, рассчитать учтённый торговый результат и выгрузить понятный отчёт с помощью Python.

  2. 0:13

    Подключитесь для чтения истории.

    Откройте mt5.mrpc.pro и выберите ConnectEx. Укажите логин демосчёта, пароль и сервер брокера. Используйте TRIAL или свой ключ API. Необязательное поле id оставьте пустым. Для этой записи мы используем инвесторский пароль с доступом только для чтения. Консоль сохранит полученный идентификатор терминала.

  3. 0:41

    Проверьте валюту счёта.

    Выполните AccountSummary. Это демосчёт в долларах США. Его баланс составляет девяносто девять тысяч девятьсот девяносто девять долларов девяносто шесть центов. При отображении прибыли и расходов используйте валюту счёта.

  4. 1:01

    Выберите завершённый период.

    Выберите DealsHistory. Заполните inputFromUtc и inputToUtc временными метками с буквой Z в конце. Соответствующие поля времени брокера оставьте пустыми. В записи выбран период с первого октября до начала двадцать восьмого октября. Зафиксируйте его перед загрузкой следующих страниц.

  5. 1:27

    Получите все страницы.

    Получив HTTP Status Code 200, сначала проверьте error. Здесь ошибки API нет. При pageSize, равном двум, первый ответ содержит лишь две из тринадцати записей. Передайте nextPageToken в pageToken, сохранив фильтры. Продолжайте, пока nextPageToken не станет пустым.

  6. 1:53

    Ордера, сделки и позиции.

    Ордер — это торговое поручение, а сделка фиксирует его исполнение. AllHistoryOrders показывает записи ордеров. В DealsHistory поле order связывает сделку с тикетом ордера, а positionId объединяет исполнения одной позиции. Здесь у позиции вход объёмом ноль целых две сотых лота и два выхода по одной сотой.

  7. 2:19

    Складывайте суммы с их знаками.

    Для каждой сделки сложите profit, commission, swap и fee именно в том виде, как их вернул API. Сохраняйте знаки: отрицательную комиссию не нужно вычитать ещё раз. Эта закрывающая сделка принесла два цента без расходов. Учитывайте и входящие сделки: брокер может взимать комиссию при открытии.

  8. 2:45

    Отделяйте пополнения.

    Первая запись — пополнение демосчёта на сто тысяч долларов. Её тип BALANCE, ордер и позиция отсутствуют. Это не торговая прибыль. Отчёт отделяет сделки Buy и Sell от остальных типов. Отдельные списания, кредиты и корректировки проверяйте в файле other-deals.

  9. 3:10

    Учитывайте границы отчёта.

    Получены все тринадцать записей. Двенадцать торговых сделок дают минус четыре цента. Комиссии, свопы и сборы в этом примере нулевые. Пополнение учитывается отдельно. Это учтённые суммы за период, а не плавающая прибыль. У позиции, открытой раньше, часть расходов может остаться за границами отчёта.

  10. 3:36

    Выгрузите данные через Python.

    Скрипт вызывает тот же DealsHistory, проходит все страницы по курсору и проверяет итоговое число записей. Он использует десятичную арифметику и группирует суммы по positionId. Сохраните ключ API и идентификатор терминала в приватных переменных окружения. Скрипт не открывает и не закрывает сделки.

  11. 4:02

    Откройте три файла отчёта.

    Запустите скрипт с фиксированными датами UTC. Он создаст trade-deals.csv, other-deals.csv и summary.json. Пример выгрузки проверен на записанной истории. При ошибке API или неполном наборе страниц скрипт останавливается, а не показывает неполный итог.

  12. 4:26

    Завершите сеанс.

    В конце вызовите Disconnect в консоли, чтобы освободить терминал. Наш сеанс уже отключён. Вы получили историю, отделили пополнения от торгового результата и выгрузили отчёт, который можно проверить и использовать дальше.