Тестер стратеги не работает или выдает ошибки MetaTrader 4
Здравствуйте, коллеги!
Разберем 2 важные темы:
1. Перегенирация таймфреймов архив котировок
2. Неправильный тест советника проблемы
Первая перегенирация тестера не совсем удался?советник не правильно протестирован, тестер использовал период М1 хотя настройки теста М30, и выдал ошибку в журнале тестирования.
Тогда я понял, почему мне нужно было своевременно закрыть и перезапустить терминал или закрыть тестер стратегии изначально заменить индикатор вместо советника в настройках теста, чтобы правильно удалить все файлы с истории и предотвратить загрузку старой истории советника, котировок, таймфреймов графиков терминала.
К сожалению, настройки М15 если вы увидите в тесте что использование периода M1, это означает, что все ваши тесты, проведенные для других TF, неверны, и вы зря потратили время.
Проблемы чаще всего возникают из-за отсутствия исторических данных, несовместимости советника или технических ограничений.
Если говорить простым языком: терминал пытается построить бары для теста, но видит, что на старшем таймфрейме максимальная цена (High) зафиксирована на уровне `77507.24`, а если сложить вместе все минутные свечи внутри этого часа, то там максимальная цена доходит только до `77471.17`. МТ4 не понимает, откуда взялась эта разница, теряет доверие к истории и выдает ошибку.
Из-за этого качество моделирования при тесте падает, а результаты могут быть неточными (или тест выдает ошибки вообще не работает, прерывается и т.д.).
Как исправить тестер стратегий?
Чтобы убрать ошибку, нужно полностью обновить и правильно перегенерировать историю котировок в которой появится новые временные данные и пройти по всем тайм фреймам которые вы будете тестировать; не забывайте закрыть тестер стратегии и перед удалением, убрать советники; к примеру я выставил в тестер стратегии вместо советника индикатор и закрыл тест, чтобы корректно удалить все файлы; закрывайте, проверяйте, перезагружайте терминал.
После исправления: Перед тестом проверьте советник на правильность TP и Stop для тестируемой пары.
Пошаговые действия:
1. Откройте терминал МТ4.
2. Перейдите в папку данных терминала (в МТ4: `Файл` -> `Открыть каталог данных`).
3. Зайдите в папку `history` -> далее в папку вашего брокера (например, `Alpari-Demo` или имя вашего сервера).
4. Найдите и удалите все файлы для тестируемой валютной пары (например, все файлы, начинающиеся с (XAUUSD или EURUSD с расширением hst).
Шаг 1. Очистка старой истории
1. Откройте терминал МТ4.
2. Перейдите в папку данных терминала (в МТ4: `Файл` -> `Открыть каталог данных`).
3. Зайдите в папку `history` -> далее в папку вашего брокера (например, `Alpari-Demo` или имя вашего сервера).
4. Найдите и удалите все файлы для тестируемой валютной пары (например, все файлы, начинающиеся с (XAUUSD или EURUSD с расширением hst).
Не переживайте, терминал скачает их заново.
5. Перейдите на уровень назад закройте тест или терминал, найдите папку `tester` -> `history` и тоже полностью очистите её.
1. Откройте МТ4, наведи мышкой на сервис чтоб открыть Архив котировок.
5. Перейдите на уровень назад закройте тест или терминал, найдите папку `tester` -> `history` и тоже полностью очистите её.
Шаг 2. Загрузка чистой минутной истории (M1)
1. Откройте МТ4, наведи мышкой на сервис чтоб открыть Архив котировок.
2. Нажмите F2 (откроется Архив котировок).
3. Найдите вашу валютную пару, дважды кликните на таймфрейм (M1), чтобы таблица справа заполнилась данными.
4. Нажмите кнопку «Загрузить». МТ4 скачает базовую минутную историю с серверов которые у вас есть к примеру MetaQuotes.
Поскольку ошибка возникает из-за несовпадения M1 со старшими графиками, их нужно сгенерировать заново строго из скачанного М1.
1. Откройте обычный график этой валютной пары на таймфрейме M1.
2. В окне *Навигатор* найдите раздел Скрипты -> PeriodConverter (он встроен в МТ4 по умолчанию).
3. Перетащите скрипт на график M1.
4. В настройках скрипта (вкладка «Входные параметры») укажите множитель для нужного таймфрейма.
- Например, если вы тестируете советник на H1, введите 60, если на H4, запустите скрипт еще раз и введите 240.
5. Нажмите ОК. Во вкладке «Эксперты» (снизу терминала) появится запись, что файлы успешно записаны.
Если возиться со скриптами не хочется, после полной очистки истории (Шаг 1) и загрузки M1 (Шаг 2):
1. Откройте график нужной пары.
2. Переключайтесь по очереди по всем таймфреймам: M1- M5 - M15 -> M30 -> H1 -> H4 -> D1.
3. На каждом таймфрейме зажимайте клавишу 'Home' на клавиатуре, чтобы график прокрутился максимально в левую сторону (в прошлое) терминал сам подгрузит и пересчитает бары.
После этого запустите тест заново. Ошибка должна исчезнуть, а качество моделирования станет максимально возможным для стандартного тестера МТ4 (до 90%).
3. Найдите вашу валютную пару, дважды кликните на таймфрейм (M1), чтобы таблица справа заполнилась данными.
4. Нажмите кнопку «Загрузить». МТ4 скачает базовую минутную историю с серверов которые у вас есть к примеру MetaQuotes.
Шаг 3. Генерация старших таймфреймов (скрипт PeriodConverter)
Поскольку ошибка возникает из-за несовпадения M1 со старшими графиками, их нужно сгенерировать заново строго из скачанного М1.
1. Откройте обычный график этой валютной пары на таймфрейме M1.
2. В окне *Навигатор* найдите раздел Скрипты -> PeriodConverter (он встроен в МТ4 по умолчанию).
3. Перетащите скрипт на график M1.
4. В настройках скрипта (вкладка «Входные параметры») укажите множитель для нужного таймфрейма.
- Например, если вы тестируете советник на H1, введите 60, если на H4, запустите скрипт еще раз и введите 240.
5. Нажмите ОК. Во вкладке «Эксперты» (снизу терминала) появится запись, что файлы успешно записаны.
Альтернативный (быстрый) вариант
Если возиться со скриптами не хочется, после полной очистки истории (Шаг 1) и загрузки M1 (Шаг 2):
1. Откройте график нужной пары.
2. Переключайтесь по очереди по всем таймфреймам: M1- M5 - M15 -> M30 -> H1 -> H4 -> D1.
3. На каждом таймфрейме зажимайте клавишу 'Home' на клавиатуре, чтобы график прокрутился максимально в левую сторону (в прошлое) терминал сам подгрузит и пересчитает бары.
После этого запустите тест заново. Ошибка должна исчезнуть, а качество моделирования станет максимально возможным для стандартного тестера МТ4 (до 90%).
Неправильный тест советника?
К примеру, Я загрузил котировки для терминала MT4 XAUUSD. Котировки M1 были загружены на период с 25 по 2026 год, а котировки H 4к примеру - с 2014 по 2026 год М30 к примеру другие временные котировки. Если я к примеру настрою советника для M1 в тестере стратегий за 2014 или 2019, откуда он будет брать котировки? Например, на 2019 год. При загрузке котировок M1 или M5 эта дата недоступна. Будет ли советник корректно протестирован за выбранное время если на вашем тайфрейме нет котировок за эти года?
Проблемы данными таймфреймов в архиве котировок и неправильный тест советника
Если вы запускаете тест на М1 за 2019 год, а истории М1 за этот период физически нет на диске, произойдет следующее:
Откуда тестер возьмет данные?
Тестер MT4 не умеет брать старший таймфрейм (например, H4) и «нарезать» из него минутные бары. Процесс идет ровно в обратную сторону (от младших к старшим).
Поэтому, если вы запустите тест на М1 за 2019 год:
Тестер обратится к файлам истории М1 за 2019 год.
Не найдя там данных (так как у вас они только с 2025 года), он выдаст ошибку в журнале (что-то вроде «test error... no data») или просто пропустит этот период, начав тест сразу с 2025 года.
В худшем случае, если в папке истории остались старые разрозненные или «битые» минутные бары за 2019 год, он попытается смоделировать котировки по ним, но это будут некорректные данные.
Важное уточнение: Если бы вы запускали тест на Н4 за 2019 год, имея историю Н4 с 2014 года, тестер бы работал. Но для моделирования внутри этих Н4-баров (метод «Все тики») он бы использовал виртуальное, искусственное деление бара, потому что реальных М1 баров за 2019 год у него нет.
Будет ли тест правильным?
Нет, такой тест не будет правильным и качественным. Если вы тестируете советник на М1, качество моделирования критически зависит от наличия реальной минутной истории.
Если истории М1 за 2019 год нет, тестер либо вообще не покажет сделок за этот период, либо покажет хаотичные результаты с графиком доходности, который не имеет ничего общего с реальностью.
В отчете тестера вы, скорее всего, увидите низкое Качество моделирования (Modeling quality) — менее 50%, а полоса качества будет гореть красным или серым цветом вместо зеленого.
Как сделать тест правильным?
Чтобы протестировать советник на М1 за 2019 год, вам нужно самостоятельно сгенерировать или загрузить котировки М1 за этот период. Вот стандартный алгоритм:
Очистите старую историю: Нажмите F2 (Архив котировок), выберите XAUUSD -> M1 и удалите старые данные, если они загружены некорректно.
Загрузка через Архив котировок: В том же окне F2 выберите XAUUSD -> M1 и нажмите кнопку «Загрузить». MT4 скачает минутную историю с серверов MetaQuotes (обычно доступно за несколько лет, включая 2019).
Конвертация в старшие таймфреймы (при необходимости): Если советнику для работы на М1 нужны данные с Н4 (например, он проверяет тренд по старшему таймфрейму), вам нужно открыть график М1, запустить стандартный скрипт PeriodConverter (идет в комплекте MT4) и сгенерировать из правильной минутной истории все остальные таймфреймы (М5, М15, ..., Н4).
Если стандартный архив MetaQuotes не дает скачать данные за 2019 год для золота (такое бывает у некоторых брокеров), трейдеры используют сторонние качественные котировки (например, бесплатные от Tickstory Lite или Dukascopy) и импортируют их в М1 терминала.turn


.png)





