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

RepaintTest - measure whether a drawing indicator repaints - скрипт для MetaTrader 5

Yogeswaran Suppiah
Yogeswaran Suppiah
Независимый разработчик для MetaTrader из Малайзии. Публикую инструменты графического анализа для дискреционных трейдеров. На MQL5 с 2015 года.
| Russian English 中文 Español Deutsch 日本語 Português 한국어 Français Italiano Türkçe
Просмотров:
17
Рейтинг:
(2)
Опубликован:
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Практически в каждом описании индикатора встречается фраза «без перерисовки». Практически ни в одном из них не указано конкретное число. Эта фраза не может быть ложной, поскольку к ней не привязана никакая процедура — и разработчик, который никогда не проверял это, и разработчик, который тщательно проверил, пишут одну и ту же фразу. Этот скрипт заменяет эту фразу на конкретное значение.

Инвариант

Как только бар закрылся и был обработан, ни один объект, нарисованный индикатором на этом баре, не должен никогда изменяться. Не смещаться, не менять цвет, не менять текст и не исчезать. Это утверждение может оказаться ложным, и именно поэтому его стоит проверить.

Метод

Пользовательский символ инициализируется с помощью пробного отрезка реальной истории, ваш индикатор подключается через шаблон, и каждый объект, который он рисует, фиксируется. Добавляются новые бары, и график принудительно пересчитывается полностью, так что индикатор заново строит каждый объект с нуля на основе более длинной истории. Затем каждый объект из предыдущего прохода, расположенный на уже закрытом баре, ищется в новом проходе и сравнивается поле за полем: оба времени привязки, обе цены привязки, цвет и текст. Процесс повторяется столько раз, сколько вы укажете.

Полное перестроение — более сложный тест, чем инкрементальный тик. Индикатор должен воспроизвести идентичную карту на основе более длинной истории, используя другие индексы массива, не имея представления о том, что он рисовал в прошлый раз. Именно это и запускает пользователь, прокручивая график достаточно далеко назад, чтобы терминал загрузил более старые бары, и именно здесь названия объектов, привязанные к ИНДЕКСУ бара, а не к ВРЕМЕНИ бара, дают сбой.

Что учитывается

Изменения и исчезновения учитываются отдельно, и только изменение означает, что утверждение неверно. Большинство индикаторов рисования намеренно удаляют старые объекты после превышения ограничения, поэтому исчезновение обычно связано с вашими собственными настройками MaxObjects или HistoryBars, а не с дефектом. Запускайте индикатор с снятыми этими ограничениями.

Запуск, в ходе которого не было выполнено ни одного сравнения, отмечается как «INCONCLUSIVE» (неоднозначный результат), но никогда не считается успешным. Самая опасная ошибка тестового набора — это сообщение об успешном завершении пустого запуска, поскольку именно это число в конечном итоге будет приводиться в отчётах.

Результаты выводятся в виде файла CSV в папке MQL5\Files: по одной строке на каждый символ, таймфрейм и шаг, с указанием количества сопоставленных, изменившихся и исчезнувших объектов, а также первого объекта, вызвавшего сбой. Просуммируйте столбец marks_compared, и вы получите число, которое можно опубликовать, — а также файл, подтверждающий его достоверность.

Использование

1. Укажите в поле «Prefix» префикс имени объекта вашего индикатора. В поле «Exclude» укажите всё, что изменяется по замыслу: легенду, перерисовываемую при каждом тике, таймер обратного отсчёта. Это не являются отметками. Указать их здесь честнее, чем фильтровать их незаметно.

2. Прикрепите индикатор к графику со снятыми всеми ограничениями на рисование и сохраните этот график в качестве шаблона. Укажите этот шаблон в поле «Шаблон».

3. Увеличивайте значение SettleMs до тех пор, пока количество отметок на первом проходе не перестанет меняться между запусками. Слишком малое значение не приводит к ошибкам — оно вызывает «фантомное» исчезновение отметок.

4. Намеренно выведите что-нибудь из строя один раз: сдвиньте один объект на одну полосу и убедитесь, что скрипт сообщит об этом, указав название поля. То, что вы никогда не видели сбоя в работе набора тестов, ещё не является доказательством.

Чего вам это не скажет

Точен ли индикатор и насколько полезны его сигналы. Он отвечает на один узкий вопрос, и только поэтому этот ответ имеет какую-то ценность.

Два «теста», которые выглядят как тесты, но таковыми не являются, — оба были опробованы и отвергнуты до этого: «Тестер стратегий», в котором объекты индикатора, управляемого iCustom, вообще не могут быть перечислены советником на MT4; и изменение собственного параметра HistoryBars индикатора на реальном графике, что меняет место начала цикла, но оставляет parameters_total и все индексы массива без изменений, поэтому класс ошибок, для обнаружения которых он предназначен, никогда не задействуется.

Бесплатно, указание авторства не требуется. Если он обнаружит что-то в вашем коде, я был бы рад узнать, что именно.

Результат теста RepaintTest: 199 984 проверок инвариантов, 0 изменений, 0 исчезновений

Принцип работы теста: запуск, добавление столбцов, принудительная полная перестройка, сравнение

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

Sniper Gold Hybrid Recovery EA Sniper Gold Hybrid Recovery EA

Советник для XAUUSD на графике M15 с корректировкой корзины, адаптивным интервалом по ATR, проверкой структуры LL/LH, динамической фильтрацией по RSI, обнаружением резких падений, фильтром новостей и интеллектуальной корректировкой позиций.

Volume Profile Levels Indicator Volume Profile Levels Indicator

Постраивает горизонтальную гистограмму объема за последнее окно обратного просмотра и отмечает точку контроля (POC) и зону значения с использованием стандартного алгоритма расширения зоны значения TPO/объема — а не просто POC ± фиксированное смещение. Обновляется при появлении каждого нового бара, отображается в виде боковой полосы рядом с ценой.

Support Resistance zig zag based Support Resistance zig zag based

«Support Resistance zig zag based» — это индикатор Price Action, предназначенный для автоматического и динамического отображения на графике уровней поддержки, сопротивления и переходных зон (зон разворота). Он ориентирован исключительно на четкое отображение ценовой структуры и выделение ключевых зон отскока (SBR и RBS). Кроме того, он включает интерактивную панель инструментов для отслеживания рыночной тенденции в режиме реального времени.

YURAZ_MCCH YURAZ_MCCH

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