Symbol Spec Auditor
- Утилиты
-
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
Symbol Spec Auditor выводит на одну панель на графике ту часть спецификации контракта символа, от которой зависят размер позиции и торговые издержки: стоимость пункта, стоимость спреда, маржу, своп, правила исполнения и торговые сессии. Сырые значения спецификации пересчитываются в деньги на 1,00 лот в валюте счёта, а настройки брокера, которые незаметно ломают код расчёта лота, перечисляются как предупреждения. Одна кнопка экспортирует такой же аудит для каждого символа из Обзора рынка в CSV-файл.
Это инструмент проверки. Он не выставляет ордеров, не использует DLL и WebRequest и не записывает никаких файлов, кроме экспорта в CSV, который вы запрашиваете сами.
Зачем он нужен: код, который работает у одного брокера, у следующего часто ведёт себя неправильно из-за детали спецификации, которую никто не проверил. Золото с контрактом в 1 унцию вместо 100 унций, центовый счёт, где баланс и стоимость тика выражены в центах, уровень стопов, который отклоняет близкий стоп-лосс, размер тика, отличающийся от пункта, отложенные ордера, удаляемые в конце дня. Терминал показывает всё это, но разбросанным по нескольким вкладкам и в сырых единицах, поэтому разницу между двумя брокерами или двумя типами счетов легко пропустить. Формула расчёта размера позиции, которая исходит из обычного размера контракта, в таком случае ошибается в 10 или 100 раз без какой-либо ошибки в журнале.
Что панель показывает для символа графика (обновляется один раз в секунду и перестраивается при смене символа или таймфрейма):
- Идентификация: символ, описание, путь, режим расчёта, базовая валюта, валюта прибыли и валюта маржи, валюта счёта, кредитное плечо счёта и режим расчёта маржи.
- Цена и контракт: число знаков после запятой, пункт, размер тика, стоимость тика для прибыли и для убытка, размер контракта и дата истечения для контрактов, срок действия которых истекает.
- Деньги на 1,00 лот: стоимость одного пункта по стоимости тика, перепроверенная по произведению размера контракта, пункта и курса конвертации; стоимость движения цены на 1,00; спред в пунктах и в деньгах; ATR(14) таймфрейма графика и спред в процентах от него.
- Объём: минимум, шаг, максимум и лимит.
- Маржа на 1,00 лот: маржа на покупку и на продажу, коэффициенты начальной маржи, номинальная стоимость и эффективное плечо рядом с кредитным плечом счёта.
- Своп на 1,00 лот: тип свопа, значения для длинных и коротких позиций, деньги за ночь и день тройного свопа.
- Исполнение: режим торговли, режим исполнения, политики заполнения, разрешённые типы ордеров, режимы истечения, режим GTC, а также уровень стопов и уровень заморозки в пунктах и в цене.
- Сессии: сегодняшние торговые сессии по серверному времени.
Значение, которое невозможно определить, показывается как n/a, а не как правдоподобное число. Строки стоимости тика, проверки стоимости пункта, спреда, ATR и маржи также указывают причину, например отсутствующую пару для конвертации или коэффициент маржи, равный 0.
Блок Warnings перечисляет настройки, на которые стоит взглянуть ещё раз, в порядке серьёзности, и для каждой указывает последствие для торгового кода: нетипичный размер контракта для данного класса активов, стоимость тика или размер тика, равные 0, стоимость пункта по стоимости тика, расходящаяся со стоимостью по размеру контракта, центовая валюта счёта, ограниченный режим торговли, истекающий контракт, отсутствие текущих котировок, размер тика, отличающийся от пункта, уровень стопов или заморозки выше 0, дневной режим GTC, минимальный объём или шаг объёма выше 0,01 на символах форекс и CFD, спред выше выбранного процента от ATR(14) и день тройного свопа, нетипичный для данного класса активов. Если ничего из этого не применимо, панель сообщает, что ловушек не обнаружено. Предупреждение — не обязательно ошибка брокера; оно отмечает значение, которое ваш код должен считывать из спецификации, а не предполагать заранее.
Кнопка Export CSV записывает файл MQL5\Files\SymbolSpecAudit_<server>_<date_time>.csv — по одной строке на каждый символ из Обзора рынка, 55 столбцов, включая столбец Warnings и столбец Notes, который объясняет отсутствие стоимости тика, проверки стоимости пункта, маржи или ATR. Два экспорта, сделанные у двух брокеров или на двух типах счетов, можно сравнить построчно, прежде чем переносить советник с одного на другой.
Работа с панелью: любой угол графика, одна или две колонки (по умолчанию выбирается автоматически), компактный режим только с предупреждениями и кнопка сворачивания, состояние которой сохраняется при смене символа и таймфрейма. По умолчанию цвета следуют за графиком — светлая панель на светлом фоне и тёмная на тёмном, — и каждый цвет можно также задать вручную. Разметка рассчитывается по реальным метрикам шрифта, поэтому она остаётся выровненной на экранах с высоким DPI и с другими шрифтами.
Входные параметры: угол панели, отступ по X и Y, компоновка, имя и размер шрифта, режим только с предупреждениями, пять цветов, порог предупреждения о спреде в процентах от ATR(14) и опция экспорта CSV при запуске. Каждый входной параметр описан в терминале собственным комментарием.
Примечания и ограничения. MetaTrader 5 не позволяет индикатору вызывать OrderCalcMargin или OrderCalcProfit, поэтому маржа и перекрёстная проверка стоимости пункта рассчитываются по документированным формулам для каждого режима расчёта. На символах форекс и CFD брокера, использованного для тестирования, результаты совпали с OrderCalcMargin, вызванной из советника по тем же ценам, с точностью до округления до цента. Для символов облигаций и залоговых символов, для фьючерсов без начальной маржи и для индексных CFD, валюты которых отличаются от валюты счёта, маржа показывается как n/a. Для конвертации валют используются символы из Обзора рынка с текущими котировками, напрямую или через USD; если такого символа нет, затронутые значения показывают n/a и указывают недостающую пару. Центовые счета распознаются по коду валюты счёта, например USC или EUC. ATR — это ATR(14) последнего закрытого бара таймфрейма графика. Панель обновляется по таймеру с интервалом в одну секунду, а не на каждом тике, и рассчитана на один экземпляр на график.
