EA Ledger True Costs MT5
- Утилиты
-
Quoc Dat Quach
Software engineer with 8 years in fintech and mobile, writing MQL4/MQL5 since 2017. I build Expert Advisors, indicators, trade and risk-management panels and utilities for MT4/MT5, and I trade forex and gold on MT5 myself. - Версия: 1.0
- Активации: 10
Журнал учёта счёта для MetaTrader 5: разбивает ваши результаты по магическому номеру, символу, дню недели и часу, показывает P/L по цене, комиссию, своп и сборы в отдельных колонках и измеряет спред, уплаченный при каждом исполнении, и проскальзывание относительно запрошенной вами цены. Итоги сверяются с балансом счёта при каждом обновлении. На графике он никогда не торгует.
Что он делает
Прикрепите его к одному графику. Он читает историю сделок счёта, восстанавливает каждую позицию из её сделок и показывает результат на панели:
- чистый результат, P/L по цене, комиссия, своп и сборы — в отдельных колонках
- издержки на спред и на проскальзывание по каждому исполнению, измеренные по тиковой истории самого терминала
- MFE и MAE каждого закрытого трейда: насколько далеко цена уходила в вашу пользу и против вас, пока он был открыт
- трейды, доля прибыльных трейдов, профит-фактор, лоты и полные издержки на лот
- пополнения, снятия, кредит, бонусы, корректировки и другие неторговые операции — отдельно от торговых результатов
Он обновляется сам, когда добавляется сделка. Расчёт проверен на синтетических историях из 50 000 и 200 000 сделок; на живых тестовых счетах было до 1 249 сделок.
Итоги, которые сходятся с балансом
При каждом изменении истории панель суммирует все сделки счёта и сравнивает сумму с балансом, который сообщает брокер. Строка под сводкой показывает оба числа и разницу: зелёное «OK», когда они совпадают до цента, красное «MISMATCH», когда не совпадают. Для выбранного периода она также показывает, что изменение баланса равно торговому результату плюс неторговые операции.
Кредит показывается, но не учитывается в балансе — так же, как его учитывает MetaTrader.
Позиции, восстановленные из сделок
- Хеджинговые и неттинговые счета.
- Частичные закрытия, наращивание позиций, встречное закрытие (обе позиции помечаются «CB») и развороты на неттинговых счетах (одна сделка, которая закрывает позицию и открывает противоположную). Комиссия сделки разворота делится между закрытым и новым трейдом пропорционально объёму.
- Комиссия, проведённая отдельными сделками, а также дневная или месячная комиссия привязывается к своей позиции, если брокер связывает её с позицией. Иначе она показывается отдельной строкой «Commission not linked to a position».
- Выходы по стоп-лоссу, тейк-профиту и стоп-ауту помечаются.
Группировка и фильтры
Представления: по магическому номеру (с подписью из комментария EA, если он есть; магический номер 0 — «Manual»), по символу, по магическому номеру и символу, по дню недели входа, по часу входа по времени брокера и список трейдов.
Периоды: сегодня, эта неделя, этот месяц, вся история или произвольный диапазон по времени сервера.
Щелчок по строке магического номера показывает его символы, по строке символа — его магические номера, по строке магического номера и символа — её трейды. Метка на панели показывает активный фильтр и сбрасывает его.
Страница Results показывает деньги; страница Costs — спред, проскальзывание, комиссию и сборы по группам, издержки на лот, средние MFE и MAE и источник каждого измерения.
Как измеряются издержки
- Спред при исполнении: Bid/Ask, действовавшие на момент сделки, по тиковой истории терминала. Если тика нет, используется спред бара M1, и трейд помечается «M1».
- Проскальзывание: цена исполнения относительно запрошенной цены:
- отложенный ордер: цена ордера
- стоп-лосс или тейк-профит: уровень стопа
- рыночный ордер: брокер обычно не сохраняет для него запрошенную цену, поэтому котировка на момент выставления ордера берётся из тиковой истории (Ask для покупки, Bid для продажи)
Положительное проскальзывание — против вас, отрицательное — в вашу пользу.
- Денежная стоимость пункта: берётся из прибыли самого трейда, поэтому учитывает валюту счёта, включая центовые и EUR-счета, и размер контракта (золото по 1, 10 или 100 oz на лот, индексные CFD по 1, 10 или 100 единиц). Если у трейда нет движения цены, по которому её можно измерить, используется среднее значение по символу, а затем собственный расчёт прибыли брокера.
- MFE / MAE: самая высокая и самая низкая цена, по которой оценивалась позиция (Bid для покупки, Ask для продажи) между входом и выходом, по тикам. Для трейдов длиннее 3 дней (задаётся входным параметром) используются бары M1, и такие трейды помечаются «M1».
Издержки на спред и на проскальзывание уже входят в P/L по цене, потому что они являются частью цены исполнения. Они показываются, чтобы вы видели, какую часть результата они забрали. Повторно они не вычитаются.
Результаты сохраняются в небольшом файле кэша, поэтому измерение выполняется один раз на сделку. На тестовых счетах первое измерение 1 246 исполнений и 557 трейдов заняло 7 секунд; оно выполняется небольшими порциями в фоне, и панелью в это время можно пользоваться.
Экспорт CSV
Кнопка «Export CSV» записывает четыре файла в MQL5\Files\EALedger\<account>\:
- <time>_summary.csv: итоги периода, неторговые операции, сверка с балансом
- <time>_groups.csv: по строке на каждую группу текущего представления
- <time>_trades.csv: по строке на трейд — вход и выход, издержки, спред и проскальзывание на входе и на выходе, MFE и MAE в пунктах и в деньгах, источник каждого измерения и примечания
- <time>_deals.csv: по строке на сделку — трейд, к которому она относится, запрошенная цена, котировка на момент ордера, проскальзывание и спред
При включённом входном параметре «Write the CSV files again after every history change» те же файлы поддерживаются в актуальном состоянии с префиксом auto_.
Входные параметры
| Параметр | По умолчанию | Описание |
|---|---|---|
| Period shown at start | All history | Today, This week, This month, All history, Custom |
| Custom period: from / to | 2026.01.01 / 0 | Время сервера. 0 = текущий момент |
| View shown at start | By magic number | By magic number, By symbol, By magic number and symbol, By weekday of entry, By broker hour of entry, Trade list |
| Show only this magic number | -1 | -1 — показать все |
| Measure spread and slippage at every fill | true | |
| Measure MFE / MAE of closed trades | true | |
| Trades up to this many days long use ticks | 3 | Для более длинных трейдов используются бары M1 |
| Write the CSV files again after every history change | false | |
| Panel distance from the left / top edge | 8 / 22 | Пиксели |
| Panel scale in % | 0 | 0 — по DPI экрана |
| Hide the chart's own trade arrows while the panel is open | true | MetaTrader рисует их поверх панели. Настройка графика восстанавливается, когда панель свёрнута или EA удалён |
| Tester only: open sample positions | true | См. ниже |
Тестер стратегий
В тестере на старте нет истории сделок, которую можно было бы показать. Поэтому только в тестере стратегий EA сам открывает короткую серию пробных позиций:
- минимальный объём (двойной минимум, если позволяет маржа), три магических номера («Sample A», «Sample B», «Sample C»)
- каждая позиция открывается, затем закрывается её половина, затем остаток, всего до 60 позиций
- перед каждой новой позицией проверяется свободная маржа; если денег слишком мало, он пишет примечание и ничего не отправляет
Запустите его в визуальном режиме, чтобы увидеть, как заполняется панель. Пробные позиции — не торговая стратегия, и их результаты ничего не говорят о прибыли. В тестере нет запрошенной цены для рыночных ордеров, и тиковой истории может не быть, поэтому там спред и MFE/MAE берутся из баров M1, а проскальзывание показывается как «n/a» в списке трейдов и 0,00 в сводке.
На графике реального или демо-счёта EA никогда не отправляет, не изменяет и не закрывает ордера.
Ограничения (прочитайте перед покупкой)
- Один слот графика: это советник, поэтому он занимает слот EA на графике, к которому прикреплён. Прикрепите его к свободному графику, а не к графику торгующего EA.
- Тиковая история принадлежит брокеру: для спреда, проскальзывания по рыночным ордерам и MFE/MAE нужна тиковая история брокера за время трейда. Брокеры хранят её ограниченное время, а для некоторых символов не хранят вовсе (у одного CFD на акцию в тестах её не было). Тогда используются бары M1 и трейд помечается «M1» или «n/a», если данных нет. Первое измерение загружает тиковую историю с сервера брокера.
- Проскальзывание рыночных ордеров измеряется относительно котировки на момент выставления ордера. Оно включает любое движение цены во время исполнения — именно это вы и платите.
- Встречное закрытие: MetaTrader относит всю прибыль встречного закрытия на одну из двух позиций. Журнал учёта показывает её так, как её провёл брокер; итоги верны, а распределение между двумя позициями — то, которое сделал MetaTrader.
- Неттинговые счета: одну позицию могут изменять несколько EA. Трейд относится к магическому номеру, который его открыл; сделки других магических номеров по нему помечаются «Mix».
- Деньги показываются в валюте счёта так, как их сообщает брокер. Центовый счёт показывает центы.
- Своп показывается в отдельной колонке и не входит в полные издержки на лот, которые включают спред, проскальзывание, комиссию и сборы.
- День недели и час — это день и час входа по времени сервера.
- Где проверено:
- Вживую на четырёх демо-счетах: MetaQuotes-Demo USD, хеджинговый (1 249 сделок), EUR, хеджинговый (900 сделок), USD, неттинговый (262 сделки), и демо-счёт у второго брокера, USD, хеджинговый (337 сделок, включая серебро 5 000 oz, индексные контракты на 10 и 100 единиц и CFD на акции). На всех четырёх итоги совпали с балансом до цента, и каждый трейд совпал с отдельной реконструкцией истории, написанной для теста.
- Центовые счета и золото 1 oz покрыты модульными тестами на синтетических сделках, а не живыми счетами. Ни один из брокеров не предлагал их на демо.
- Скорость проверена на синтетических историях из 50 000 и 200 000 сделок.
- Пожалуйста, сначала попробуйте его на демо-счёте с помощью бесплатной демоверсии в тестере стратегий.
