Indicator Test Report MT4
- Утилиты
-
Narayanan Mohanan Mohanan Krishnan
Я создаю инструменты измерения для MetaTrader. Они описывают, что рынок уже сделал, и прямо указывают границы каждого измерения, а не скрывают их. - Версия: 3.10
Indicator Test Report для MetaTrader 4 — средство проверки перерисовки и тестер индикаторов MT4, которое показывает, как на самом деле ведет себя любой индикатор.
Вы не можете заглянуть внутрь скомпилированного индикатора. Отчет о тестировании индикатора загружает любой индикатор — купленный, написанный или встроенный в MetaTrader — и отвечает на вопрос, на который не может ответить описание: перерисовывается ли он, сколько истории ему нужно и что на самом деле публикует? Он сообщает о поведении. Это не оценивает.
Загрузите любой индикатор в тестер стратегий и получите простой отчет о двенадцати аспектах его поведения: сколько буферов он публикует, сколько истории ему нужно, прежде чем его значения что-то значат, изменяются ли когда-либо значения на закрытых барах впоследствии и сколько стоит их чтение.
Не существует ни оценки, ни проходного балла, ни вердикта о том, хорош ли индикатор — есть только то, что наблюдалось, и что это доказывает, а что нет.
Что это отвечает
1. Буферы.Сколько пронумерованных серий данных фактически публикует индикатор, и самый высокий индекс, на который он реагирует. Зачастую это больше, чем показано на графике: двухлинейный индикатор может публиковать шесть буферов, а для чтения советника по индексу необходимо реальное число. В отчете говорится, что там, где индексы не являются смежными, индексирование путем подсчета приведет к прочтению неправильного ряда.
2. Состояние расчета.Сколько баров цель вычислила по сравнению с существующим количеством. Ноль с заполненными буферами — это реальное именованное состояние, а не ошибка.
3. Устойчивость на закрытой перекладине.Первое значение, увиденное для каждого столбца, фиксируется, а затем сравнивается с каждым последующим считыванием. Если впоследствии значение на уже закрытом баре изменится, в отчете будет указано время бара, индекс буфера и оба значения. Движущийся текущий бар не перерисовывается — пересчет формирующегося бара корректен и желателен. Значение имеет закрытый бар, значение которого впоследствии изменится.
4. Разминка.Количество баров, которое необходимо каждому буферу, прежде чем он вообще сможет хранить какое-либо значение, измеряется на самых старых доступных барах, а не на последнем окне, где каждый ответ будет равен нулю. Буферы закономерно различаются: сигнальной линии требуется больше истории, чем серии, которую она сглаживает. Первые пятьдесят баров на вашем графике могут еще не иметь значения.
5. Мерцание внутриполосного сигнала.Мигает ли формирующая полоса между пустым и числовым сигналом перед закрытием. Нормально для сигнального индикатора; имеет значение, действует ли ваш советник на формирующемся баре.
6. Стоимость доступа к буферу.Затраты на получение значений в микросекундах на бар, поэтому вы можете запланировать советник, который считывает несколько значений за тик. Относительные цифры для сравнения показателей, а не абсолютные цифры VPS.
7. Выходная область.Наименьшее и наибольшее значения, выдаваемые каждым буфером, с точностью до шестнадцати десятичных знаков — для определения порогов в советнике. Это наблюдаемый диапазон, а не возможный диапазон.
8. Постоянство сигнала.Для стрелок, точек и флажков: если значение появилось на формирующемся баре, было ли оно там при закрытии? Непрерывные линии оцениваются в 100% по своей конструкции и помечаются как таковые, поскольку это число является арифметическим, а не результатом.
9. Нечисловые значения.Выдал ли какой-либо буфер значение, не являющееся числом. Каждое сравнение с NaN является ложным, включая «больше» и «меньше», поэтому пороговый тест никогда не срабатывает и не сообщает об ошибках, а любая арифметическая операция, касающаяся этого значения, в свою очередь, выдает NaN. Это дефект мишени, и он невидим для охранника, написанного против EMPTY_VALUE один.
10. Отпечаток объекта диаграммы.Сколько объектов диаграммы появилось во время движения цели и — на реальном графике — сколько осталось там после ее удаления. Индикаторы панели, зоны и информационной панели рисуются с помощью объектов, а не буферов, поэтому для этих продуктов каждая вторая проверка измеряет пустую половину. Индикатор, который не очищается, оставляет мусор, который нужно убрать вручную.
11. Модельная зависимость.Запустите дважды, изменив только модель тестера. Каждый тик и 1-минутный OHLC представляют собой разные моделируемые ценовые траектории, поэтому индикатор, который намеренно реагирует на внутрибарное движение, может законно отличаться. Это имеет значение, когда целевые утверждения закрытых значений являются окончательными.
12. Зависимость от истории.Запустите дважды, изменив только диапазон дат. Разница означает, что цель сообщает разные значения для одного и того же бара в зависимости от того, сколько истории ей предшествовало — дефект, из-за которого бэктест не совпадает с реальным графиком.
Попробуйте это на чем-то, что вы уже знаете
Он читает все, что доступно через iCustom, включая собственные индикаторы MetaTrader. Наведите курсор на ZigZag: все знают, что ZigZag перерисовывается, и в отчете будут показаны измененные бары и оба значения. Наведите его на Ишимоку и наблюдайте, как два сдвинутых в будущее промежутка ведут себя иначе, чем три, которые этого не делают. Проверка инструмента по индикатору, поведение которого вам уже известно, — это самый быстрый способ решить, стоит ли доверять ему только что купленному — и это ничего не стоит.
Как тестировался этот инструмент
Каждая проверка проверялась на специально созданных индикаторах, которые преднамеренно ведут себя неправильно: тот, который переписывает каждый столбец в своей истории на каждом тике, тот, который выдает нечисловые значения, тот, который требует 399 баров прогрева, тот, который оставляет объекты диаграммы после его удаления. Их поймали проверки, включая время бара и значения «до» и «после». Инструмент, который сообщает о показателях других людей, должен иметь возможность рассказать, как он сам тестировался.
Двигатели также работают друг против друга. Один и тот же индикатор, измеренный в MetaTrader 4 и MetaTrader 5, совпадает по десяти из двенадцати проверок; два различия — это факты платформы, отмеченные в отчете: MetaTrader 4 не имеет BarsCalculated и нет возможности досрочно разгрузить индикатор, поэтому эти проверки говорят о том, что они не могут измерить, а не сообщают о комфортном нуле.
Если вы пишете индикаторы, а не покупаете их
Тот же отчет отвечает на другой вопрос: что на самом деле делает мой собственный продукт и могу ли я сказать это в описании? Заявление о том, что значения закрытых полосок являются окончательными, стоит больше, если учесть количество сравнений, стоящих за ним, — и лучше найти перерисовку самостоятельно, чем позволить ее найти рецензенту.
Запустите его на обеих платформах, и пара покажет вам, где находится ваш MT4 иMT5 сборки расходятся: разное количество буферов, прогрев, который переехал, значение, которое меняется на одном, а не на другом. Это расхождение обычно воспринимается вами как отзыв с одной звездой от человека, который купил оба.
Сгенерированный фрагмент — это документация по интеграции, которую вы в противном случае написали бы вручную — каждый названный буфер с указанием его разминки, его диапазона и того, становится ли он пустым. Отправьте его или вставьте в свое описание. Это измеренное поведение вашего продукта, а не претензия.
Чего он не делает
Он не скажет вам, есть ли у сигнала преимущество, стоит ли покупать индикатор или прибыльна ли стратегия. Он не оценивает, не оценивает и не ранжирует. Он не читает исходный код — только наблюдаемое поведение через документированный интерфейс буфера. Он запускает цель на своих собственных входных данных по умолчанию.
Находка не является ошибкой
Перерисовка, долгая разминка, внутрибарное движение и объекты графика — это выбор дизайна, и многие хорошие индикаторы делают это намеренно. Этот инструмент измеряет то, что произошло; только собственное описание продавца может сказать, было ли это задумано. В каждом отчете есть это предложение и еще одно: если вас что-то удивляет, спросите разработчика. Отчет — это хороший вопрос, который можно задать продавцу. Это не является доказательством для публикации против них, и оно не было для этого создано.
Чистый результат не является доказательством
В каждом отчете об испытаниях индикаторов это указано в отдельном тексте. Один прогон — это один символ, один таймфрейм, один период, одна модель тестера. В отчете указывается, какие проверки данный прогон не удалось протестировать — прогон со слишком малым количеством тиков не может проверить поведение внутрибара, и он говорит об этом вместо того, чтобы сообщать о комфортном нуле. Отсутствие наблюдения не является доказательством отсутствия.
Каждый отчет заканчивается сводной информацией обо всех двенадцати проверках на одном экране, а также таблицей всех предыдущих запусков одной и той же цели, поэтому несколько запусков в разных условиях можно считать одним набором.
Входы
- Название индикатора— цель в том виде, в котором она отображается в Навигаторе, включая ее папку. Рыночный продукт находится под Market\ и собственное имя; примеры MetaTrader под Examples\. Ошибка – это единственная ошибка, которая останавливает развитие событий, и в отчете говорится об этом простым языком, а не молчаливо проваливается.
- Сначала подожди столько-то тактов— отчет не запускается до тех пор, пока диаграмма не будет содержать столько истории. По умолчанию 500.
- Закрытые решетки, чтобы следить за перерисовкой— как далеко назад каждый тик перечитывает и сравнивает. Это глубина проверки 3. По умолчанию 300.
- Новые бары, на которые стоит посмотреть, прежде чем сообщать — размер выборки.Серия заканчивается после закрытия этого количества баров, поэтому меньшее число является более слабым тестом, а не сокращением пути. По умолчанию 200.
- Максимальная история для проверки на разминку— как далеко назад искать первое реальное значение в каждом буфере. По умолчанию 10000.
- Допуск для числовых проверок перерисовки— ниже этого значения разница рассматривается как шум с плавающей запятой, а не как изменение. Шкалируется с величиной значений, поэтому ряд цен и ряд объемов оцениваются на одних и тех же условиях. По умолчанию 0.00000001.
- Базовый уровень: Авто/Блокировка/Сброс— решает, с чем сравнивать второй прогон. Авто — это то, что большинство людей подразумевает под двойным запуском цели: при первом запуске устанавливается ссылка, а при последующих запусках выполняется сравнение без ее замены. По умолчанию Авто.
- Запустить ярлык— как вы заявляете, что вы изменили между двумя запусками. MetaTrader не дает программе возможности увидеть, какая модель тестера работает, поэтому метка — единственный способ, которым отчет может отличить изменение модели от повторения.
- Целевое отображаемое имя— читаемое имя заголовка отчета. Путь к файлу по-прежнему отображается рядом с ним, поскольку отображаемое имя никогда не должно заменять идентификатор того, что было измерено.
- Напишите готовый к использованию фрагмент советника— включено по умолчанию. Выключите его, если вам нужен только отчет.
- Префикс выходного файла— позволяет двум запускам одной и той же цели записывать в отдельные файлы вместо совместного использования одной сводки.
Что показывают скриншоты
- Снимок.Все двенадцать проверок на одном экране — каждый прогон заканчивается этим блоком, что бы еще ни содержалось в отчете.
- Находка.Закрытый бар, значение которого изменилось, с указанием времени бара и обоих значений. Вот для чего нужен этот инструмент; остальное — контекст.
- Обе платформы.Один и тот же индикатор измеряется в MetaTrader 4 и MetaTrader 5, поэтому два отчета можно сравнивать построчно.
- Честный отказ.Прогон, который не смог что-то протестировать и говорит об этом вместо того, чтобы печатать ноль, который будет считаться пройденным.
- Сгенерированный фрагмент.Готовый к использованию .mqh файл, записанный при запуске, с каждым названным буфером и уже имеющейся функцией чтения.
Читаем скриншоты
Янтарь не красный.Янтарный вердикт означаетповедение было обнаружено, и вот доказательства, нетэтот индикатор сломан. Перерисовка, долгий прогрев и объекты диаграмм — это выбор дизайна, и многие хорошие индикаторы делают это намеренно — в отчете указывается время полосы и оба значения, так что вы можете спросить об этом разработчика, что вам и советует сделать на этой странице.
Синие вердикты – это те, которые стоит понять. [NOT TESTED] и[NOT FOUND] означает, что прогон не смог что-то измерить — слишком мало тиков или сканирование достигло своего потолка. Это не пропуска. Большинство инструментов напечатали бы здесь удобный ноль; этот говорит вам, что на вопрос не был дан ответ, и в этом разница между измерением и заверением.
Изображение четности показывает один и тот же показатель, измеренный на обеих платформах, поэтому два отчета можно сравнивать построчно. Результат, показанный на изображениях, получен в результате намеренно сломанного тестового индикатора, написанного для этой цели, а не в продукте, представленном на рынке.
По поводу скриншотов.Каждое изображение получено в ходе реального запуска: отчеты — это файлы, которые записывает инструмент, а не макеты. Эти изображения получены в MetaTrader 4, потому что две из двенадцати проверок там действительно читаются по-другому, и отображение результатов MetaTrader 5 в листинге MetaTrader 4 могло бы исказить их. На изображении четности обе платформы показаны рядом по одному и тому же показателю: десять из двенадцати проверок идентичны, а две отличающиеся названы в отчете. Эти два вопроса зависят от того, что может предоставить ПЛАТФОРМА, а не от того, насколько тщательно был написан порт: в MQL4 нет BarsCalculated функция, и нет возможности досрочно выгрузить индикатор. В сборке MetaTrader 4 ничего не осталось — она сообщает обо всем, о чем может сообщить MetaTrader 4, и говорит об этом там, где не может. Этот инструмент создан для того, чтобы указывать то, что он не может измерить, и это в первую очередь относится к его собственному списку.
Выход
Текстовый отчет, базовые данные в формате CSV для перекрестного сравнения и накопительная сводка (одна строка на каждый прогон) записываются в общую папку «Файлы», чтобы они сохранялись между прогонами. Каждое отличающееся значение записывается в отдельный CSV-файл, когда оно обнаруживается при сравнении.
И готовый к использованию фрагмент кода: компилируемый .mqh присвоение имени каждому живому буферу, его прогрев, наблюдаемый диапазон и то, станет ли он пустым — с функцией чтения, уже написанной для платформы, на которой вы работали. Это то, что в противном случае звонивший обнаружил бы в ходе судебного разбирательства. Если при прогоне были обнаружены изменения закрытого столбца или значения NaN, фрагмент говорит об этом вверху и указывает в своем примере на буфер, но никаких результатов по нему не обнаружено.
Кредит там, где он причитается
Подход к чтению буфера следующийТестер пользовательских индикаторовАвтор: Петр Латошинский, бесплатно доступен в Маркете с 2020 года. Метод «заморозить и сравнить» для обнаружения измененных значений закрытого бара описан Брахимом Бен Абла в сообщении mql5.com 772704 (17 июля 2026 г.), с реальными числами; метод его, только доставка моя.
Чем отличается MetaTrader 4
Десять из двенадцати проверок читаются идентично MetaTrader 5, построенному на том же индикаторе. Два не могут: в MQL4 нет BarsCalculated, поэтому состояние расчета является эмпирическим исследованием и помечается как[MT4 PROXY]; а MQL4 не может выгрузить индикатор раньше времени, поэтому на вопрос об очистке объекта-диаграммы ответ дается только на живом графике и читается[НЕ ПРОВЕРЕНО]в тестере стратегий. Оба названы в отчете, а не скрыты. Это не является ни ограничением этого инструмента, ни ярлыком в порте: это возможности самого MetaTrader 4, и в отчете говорится, на какой из двух он смотрит, а не сообщается о комфортном нуле.
Примечания
- Это советник, который пишет отчет. Он никогда не торгуется.Он не выставляет ордеров, не открывает и не закрывает позиции и ничего не трогает на вашем счете — он читает индикатор и записывает текстовые файлы.
- Автоторговля должна быть включена.MetaTrader закрывает это разрешение для каждого эксперта, независимо от того, торгует он или нет, поэтому при выключенной кнопке терминал перестает вызывать программу, и вы не увидите ни отчета, ни ошибок. Прикрепите его к демо-счету, если вы не хотите включать его на реальном аккаунте; результат идентичен, потому что от аккаунта здесь ничего не зависит.
- Запускается в тестере стратегий и на реальном графике, где для проверки требуются реальные тики. Считывает цель через документированную iCustom интерфейс.
- Некоторые цели, которые создают свои собственные дескрипторы индикаторов внутри, никогда не сообщают о вычисленном состоянии. В отчете упоминается этот случай, а не сообщается ноль.
- Вывод поступает в общую папку «Файлы», поэтому отчеты сохраняются между запусками и накапливают по одной сводной строке каждый.
- Поддерживается несколько экземпляров.Две диаграммы могут одновременно измерять разные символы, и оба прогона добавляются к одной и той же суммирующей сводке, а не перезаписывают друг друга — протестировано с двумя экземплярами, заканчивающимися с разницей в одну секунду. Дайте им разные префиксы вывода, если вы предпочитаете хранить две истории отдельно.
- Никаких внешних зависимостей. Он не вызывает ни библиотеки, ни другого индикатора.
| Другие инструменты от этого разработчика Я разрабатываю индикаторы и советники для MetaTrader с упором на чистый документированный код: логика по закрытому бару, проверенные буферы и отсутствие зависимостей от других индикаторов. Этот инструмент появился потому, что я хотел проверить это утверждение на собственной работе, прежде чем просить кого-то в него поверить. Посмотреть все опубликованные продукты → Нашли в отчете что-то, чего не ожидали, или хотите получить проверку, который не покрывает двенадцать? Пишите мне в личные сообщения — с радостью отвечу. |
Разработано и поддерживается Narayanan Mohanan, ML/Python/MQL Developer.
Если вы заметили ошибку в переводе этой страницы, сообщите мне — я ее исправлю.
