Смотри, как бесплатно скачать роботов
Ищи нас в Facebook!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Индикаторы

Symbol Spec Auditor - индикатор для MetaTrader 5

Quoc Dat Quach
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.
| Russian English 中文 Español Deutsch 日本語 Português 한국어 Français Italiano Türkçe
Просмотров:
24
Рейтинг:
(1)
Опубликован:
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Symbol Spec Auditor отображает на одной панели графика те части спецификации контракта по инструменту, которые определяют размер позиции и стоимость торговли: стоимость пункта, стоимость спреда, маржу, своп, правила исполнения и торговые сессии. Значения конвертируются в денежную сумму за 1,00 лот в валюте счета, а настройки брокера, которые незаметно нарушают правила определения размера лота, отображаются в виде предупреждений. Одним щелчком мыши можно экспортировать результаты такой проверки для всех символов в окне «Market Watch» в формат CSV.

symbol-spec-auditor-xauusd

XAUUSD H1: полная двухколонная панель по символу без ловушек

Проблема

Код, который работает у одного брокера, часто ведет себя некорректно у другого из-за детали спецификации, которую никто не проверил. Окно спецификации символа показывает всю эту информацию, но она разбросана по нескольким вкладкам и представлена в исходных единицах измерения, поэтому разницу между двумя брокерами или двумя типами счетов легко упустить из виду. Советник, который рассчитывает размер позиций на основе предполагаемого значения контракта или пункта, рискует неверной суммой, при этом в журнале не появляется никакой ошибки. Типичные случаи:

  • Золото с контрактом в 1 унцию вместо 100 унций или «мини»-символ на Форекс с 10 000 единиц. Формула расчёта лота, предполагающая стандартный контракт, может давать отклонение в 100 или в 10 раз.
  • Счёт в центах, где баланс, стоимость тика и маржа указаны в центах.
  • Уровень стоп-приостановки или заморозки, который отклоняет стоп-лоссы (SL)/точки прибыли (TP) или изменения, близкие к текущей цене.
  • Ежедневные ордера: брокер удаляет отложенные ордера, а иногда и SL/TP, в конце торгового дня.
  • Размер тика, отличающийся от пункта, в результате чего цены, выходящие за пределы сетки тиков, отклоняются.
  • Минимальный объем или шаг объема, вынуждающий округление; символ в режиме «только закрытие» или необычный день с тройным свопом.

Этот индикатор собирает эти значения в одном месте, преобразует их в денежную сумму за 1,00 лота и выводит список того, на что стоит обратить особое внимание, сопровождая каждое предупреждение однострочным описанием последствий. Это исключительно инструмент проверки: он не размещает ордеров, не использует DLL-библиотеки и не записывает файлы, за исключением экспорта в формат CSV по вашему запросу. Панель и файл CSV используют одни и те же вычисления, поэтому то, что вы видите на одном графике, можно сравнить со всем окном «Market Watch».

Что показывает панель

Панель описывает символ графика. Она обновляется раз в секунду и перестраивается при смене символа или таймфрейма, поэтому при переключении символов графика происходит проверка одного символа за другим. Значение, которое невозможно определить, отображается как «n/a» вместе с причиной, а строка, значение которой вызывает предупреждение, выделяется цветом предупреждения. Строки сгруппированы по разделам:

  • Идентификационные данные: символ, описание, путь, режим расчета, базовая валюта, валюта прибыли и маржи, валюта счета, кредитное плечо счета и режим маржи.
  • Цена и контракт: количество знаков, пункт, размер тика, стоимость тика (прибыль и убыток), размер контракта и дата истечения срока действия для инструментов с ограниченным сроком действия, таких как фьючерсы.
  • Сумма на 1,00 лот: стоимость 1 пункта, рассчитанная на основе стоимости тика и сверенная с помощью формулы «размер контракта × пункт × курс конвертации»; стоимость изменения цены на 1,00; текущий спред в пунктах и в денежном выражении; ATR(14) для таймфрейма графика и спред в процентах от него.
  • Объем: минимальный, шаг, максимальный и лимит.
  • Маржа за 1,00 лот: маржа на покупку и продажу, ставки начальной маржи, номинальная стоимость и эффективное кредитное плечо (номинальная стоимость, деленная на маржу) рядом с кредитным плечом счета. Если значение не может быть рассчитано, на панели указывается причина, например: «нет котировок», «ставка маржи равна 0», «кредитное плечо счета равно 0» или отсутствующий курс конвертации.
  • Своп за 1,00 лота: режим свопа, значения для длинных и коротких позиций, сумма за сутки в валюте счета (в пунктах, валюте и режимах начисления процентов) и день тройного свопа. Номер дня, не входящий в диапазон с воскресенья по субботу, отображается как «не установлен».
  • Исполнение: режим торговли, режим исполнения, политики заполнения (FOK, IOC, BOC, Return), допустимые типы ордеров, режимы истечения срока действия, режим GTC (срок действия отложенных ордеров и SL/TP), а также уровни стоп-лоссов и заморозки в пунктах и в цене.
  • Сессии: сегодняшние торговые сессии по серверному времени.

Предупреждения

Блок «Предупреждения» в нижней части панели содержит список настроек, требующих внимания, причем самые серьёзные указаны первыми. В каждом предупреждении указано значение и его последствия для торгового кода. Если предупреждений нет, на панели отображается надпись «Ловушек не обнаружено». Проверки проводятся по общепринятым эталонным значениям, поэтому предупреждение не всегда означает ошибку брокера: оно указывает на настройку, которую ваш код должен считывать из спецификации, а не предполагать.

  • Необычный размер контракта для данного класса активов: форекс — 100 000, золото — 100, серебро — 5 000.
  • Значение тика или размер тика равно 0, либо значение пункта, вытекающее из значения тика, и значение пункта, вытекающее из размера контракта, различаются более чем на 1%.
  • Валюта счёта в центах (USC, EUC и т. п.).
  • Режим торговли, отличный от полного: отключен, только длинные позиции, только короткие позиции или только закрытие.
  • Истекающий контракт с указанием даты истечения срока действия.
  • Отсутствие текущих цен «бид»/«аск».
  • Размер тика отличается от значения пункта.
  • Уровень стопа или уровень заморозки выше 0.
  • Ежедневные ордера (режим GTC). «Ежедневный» удаляет SL/TP и отложенные ордера в конце торгового дня; «ежедневный, исключая стопы» удаляет отложенные ордера и сохраняет SL/TP.
  • Минимальный объем выше 0,01 или шаг объема выше 0,01 — только для символов Forex и CFD. Биржевые инструменты часто торгуются целыми лотами, поэтому они не помечаются.
  • Спред выше выбранного процента от ATR(14) на таймфрейме графика.
  • Тройной своп в день, отличный от среды, только для Форекс и металлов. Четверг допускается для USD по отношению к CAD, TRY, RUB и PHP, расчеты по которым производятся на день раньше. Индексы, криптовалюты и другие CFD часто переносятся на пятницу, поэтому для них день отображается, но не помечается.

предупреждения аудитора спецификаций символов

US500 M1 (CFD): минимальный объем 0,14 лота и спред 28 пунктов, что составляет 17,6% от ATR на таймфрейме M1

Экспорт в формат CSV

Кнопка «Экспорт в CSV» или опция запуска сохраняет файл MQL5\Files\SymbolSpecAudit_<сервер>_<ггггммдд_ччмм>.csv, в котором каждая строка соответствует одному символу из панели «Рынок». В 55 столбцах файла содержатся все вышеуказанные значения, включая режим GTC и срок действия контракта, а также столбец «Предупреждения» (разделенные символом « | ») и столбец «Примечания», в котором указана причина отсутствия того или иного значения. Два файла экспорта от двух брокеров или для двух типов счетов можно сравнивать строка за строкой.

Файл записан в кодировке UTF-8 с BOM, с разделителем запятой, со стандартной кавычкой для полей, содержащих запятые или кавычки. В числах в качестве десятичного разделителя используется точка, а разделители тысяч отсутствуют. В локалях, где разделителем списка является точка с запятой, откройте файл через диалоговое окно импорта электронной таблицы. Полный путь к файлу отображается на вкладке «Эксперты».

Управление панелями

  • Любой угол графика, один или два столбца (по умолчанию — автоматически) и компактный режим, отображающий только предупреждения.
  • Кнопка сворачивания, которая остается в свернутом состоянии при смене символа и таймфрейма.
  • Цвета по умолчанию повторяют цвета графика: светлая панель на светлом фоне графика и тёмная панель на тёмном. Каждый цвет также можно установить вручную.
  • Макет рассчитывается на основе фактических метрик шрифта, поэтому он остается выровненным по отношению к другим шрифтам и на экранах с высоким DPI. Длинные предупреждения переносятся по ширине панели.
  • Обновляются только те метки, текст или положение которых изменились, поэтому панель не мерцает.
  • При запуске объекты панели, оставшиеся на графике от предыдущего экземпляра (например, из сохраненного шаблона), удаляются.

только предупреждения аудитора спецификации символов

EURUSD M1, режим «только предупреждения»: спред в 6 пунктов составляет 35,9% от ATR на M1

Параметры

Входные данные По умолчанию Описание
Угол панели Левый верхний Угол диаграммы, к которому привязана панель.
Смещение по оси X (в пикселях при масштабировании экрана 100 %) 10 Горизонтальное расстояние от угла. Автоматически масштабируется на экранах с высоким разрешением (DPI).
Смещение по оси Y (в пикселях при масштабировании экрана 100 %) 30 Вертикальное расстояние от угла. Масштабируется автоматически на экранах с высоким разрешением (DPI).
Макет Авто При выборе параметра «Авто» используется одна колонка, если панель помещается в высоту диаграммы, в противном случае — две колонки. Параметры «Одна колонка» и «Две колонки» принудительно задают макет.
Название шрифта Consolas Шрифт с фиксированной шириной букв позволяет сохранить аккуратный вид столбцов; подойдет любой установленный шрифт.
Размер шрифта 9 От 4 до 24; другие значения приводятся к этому диапазону.
Показывать только предупреждения false Компактная панель с заголовком, предупреждениями и кнопкой «Экспорт в CSV».
Текст (Нет = автоматически) Нет Цвет текста. При значении «Нет» цвет подбирается в соответствии с фоном диаграммы.
Заголовки (Нет = автоматически) Нет Цвет заголовков разделов.
Предупреждения (Нет = автоматически) Нет Цвет предупреждений и строк за ними.
ОК / без ловушек (Нет = автоматически) Нет Цвет строки «Ловушки не обнаружены».
Фон (Нет = автоматически) Нет Фон панели. Надписи кнопок, рамки и сами кнопки создаются путем смешивания цветов текста и фона.
Выдавать предупреждение, если разброс превышает % от ATR(14) (0 = выкл.) 15,0 Пороговое значение для предупреждения о спреде. Значение 0 отключает эту функцию.
Экспортировать все символы из панели «Market Watch» в CSV при запуске false CSV-файл записывается один раз при запуске индикатора, а не при каждом изменении символа или таймфрейма.

Как использовать

  1. Прикрепите индикатор к любому графику. Он не рисует линий и может работать одновременно с советником.
  2. Сначала ознакомьтесь с разделом «Предупреждения»; в строках над ним приведены цифры, соответствующие каждому предупреждению.
  3. Смените символ на графике, чтобы провести аудит других символов, или нажмите «Экспорт в CSV», чтобы провести аудит всех символов в окне «Рынок» сразу.
  4. Используйте кнопку «-», чтобы свернуть панель до полосы заголовка.

Обычно индикатор используется для проверки нового брокера или типа счета перед переносом туда советника, а также для сравнения размеров контрактов, значений тиков, шагов объема, уровней стопов, режимов GTC и дней свопа со счетом, на котором был разработан советник. Различия в этих столбцах чаще всего влияют на риск по сделке или стоимость стратегии без каких-либо видимых ошибок.

Примечания и ограничения

  • Для перекрестной проверки маржи и стоимости пункта используются формулы. MetaTrader 5 не позволяет индикаторам вызывать функции OrderCalcMargin или OrderCalcProfit (вызов завершается с ошибкой 4014), поэтому индикатор применяет формулы, приведенные в документации MQL5 для каждого режима расчета: фиксированную начальную маржу, если брокер её устанавливает; коэффициент начальной маржи из SymbolInfoMarginRate; а также конвертацию в валюту счёта по цене «ask» при покупке и по цене «bid» при продаже. На символах Forex, Forex без кредитного плеча, CFD и CFD с кредитным плечом результаты совпадали с результатами функции OrderCalcMargin, вызванной из советника по тем же ценам, с точностью до округления до цента.
  • Маржа отображается как «н/д» для облигаций и залоговых инструментов, для фьючерсов без начальной маржи, а также для CFD-индексов, валюты которых отличаются от валюты счёта. Уровни маржи, зависящие от объёма, и правила, применяемые только на торговом сервере, не учитываются.
  • Для фьючерсов и облигаций тик-стоимость брокера является спецификацией, поэтому перекрестная проверка значения пункта там отображается как «н/д».
  • Своп-сумма для режимов начисления процентов рассчитывается на основе номинальной суммы и 360-дневного года. Для режимов повторного открытия фиксированной суммы не существует, поэтому отображается «н/д».
  • При конвертации валют используются только символы из панели «Рынок» с котировками в реальном времени — напрямую или через доллар США. При отсутствии таких котировок соответствующие денежные значения отображаются как «н/д», либо номинальная сумма показывается без конвертации. Добавьте пару для конвертации в панель «Рынок», чтобы заполнить эти поля.
  • MetaTrader 5 добавляет символ конвертации в «Market Watch» при считывании значения тика символа с иностранной валютой прибыли. Поэтому индикатор считывает значение тика только в том случае, если котируемый символ в «Market Watch» уже связывает валюту прибыли и валюту счета, и он никогда не перечисляет символы за пределами «Market Watch»; в противном случае значение тика отображается как «н/д» при отсутствии пары, например, «в «Market Watch» нет котируемого символа KRW/USD». В ходе тестирования символ никогда не добавлялся. Однако терминал самостоятельно выбирает символ конвертации, поэтому у брокера, у которого символ конвертации имеет другое название, чем в «Market Watch», символ всё же может быть добавлен.
  • Счета в центах распознаются по коду валюты счета (USC, EUC, GBC и т. п.) и конвертируются как 1/100 основной валюты, то есть 1 USD = 100 USC. Этот алгоритм проверялся на симулированной валюте счета, а не на реальном счете в центах. Счет в центах, в котором в качестве валюты указаны USD, не обнаруживается при этой проверке.
  • Обычные размеры контрактов и дни тройного свопа являются ориентировочными значениями. Брокер может законно использовать другие размеры (микро- или центовые символы) или другой день ролловера; предупреждение предусмотрено для того, чтобы ваш код учитывал спецификацию, а не делал предположения.
  • ATR — это ATR(14) последнего закрытого бара на таймфрейме графика. Для остальных символов в файле CSV он рассчитывается на основе их истории баров; сразу после запуска эта история может ещё загружаться, и в этом случае в столбце «Примечания» будет соответствующая пометка, а при повторном экспорте данные будут заполнены.
  • Панель обновляется с помощью таймера с интервалом в 1 секунду, а не при каждом тике. Состояние свернутости сохраняется во временной глобальной переменной терминала SymbolSpecAuditor_<идентификатор графика>, которая удаляется при удалении индикатора или закрытии графика. Используйте по одному экземпляру на каждый график.
  • Скриншоты были сделаны на демо-счете на экране с разрешением 192 DPI и размером шрифта 4 (6 в режиме «только предупреждения»), чтобы панель помещалась в изображение шириной 750 пикселей. Размер по умолчанию 9 даёт более крупную панель.

Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/77806

Spread Profile by Hour Spread Profile by Hour

Отображает реальный спред за каждый час работы сервера, рассчитанный на основе собственной истории тиков вашего брокера: медиана и 90-й процентиль за час, опциональная стоимость в виде доли от вашего стопа и в расчете на лот, а также экспорт в формат CSV.

iFVG Indicator With Signals iFVG Indicator With Signals

Индикатор iFVG с сигналами

YURAZ_RSAXEL Скрипт рисует уровни Рудолфа Акселя YURAZ_RSAXEL Скрипт рисует уровни Рудолфа Акселя

Скрипт рисует уровни Рудолфа Акселя

YURAZ_MCCH YURAZ_MCCH

Индикатор рассчитывает % роста или падения относительно CLOSE, написан с применением ООП, и легко интегрируется в любой советник или иной индикатор.