Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Двигаемся дальше.
Я вынес в отдельный скрипт кусок, который пишет свечи с графика в файл. В тест добавил конечный индекс сравниваемых массивов.
Запустил тест на EURUSD.
2025.07.02 12:14:19.336 Core 1 2025.06.30 23:59:59 Исходный файл: EURUSD_M1.mql, 9596442 cвеч
2025.07.02 12:14:20.184 Core 1 2025.06.30 23:59:59 Свеч на графике тестера 9594346
2025.07.02 12:14:20.184 Core 1 2025.06.30 23:59:59 Начальный индекс 0
2025.07.02 12:14:20.184 Core 1 2025.06.30 23:59:59 Конечный индекс 9594344
2025.07.02 12:14:20.184 Core 1 2025.06.30 23:59:59 Начало проверки 1971.01.04 00:00
2025.07.02 12:14:20.184 Core 1 2025.06.30 23:59:59 Конец проверки 2025.06.30 23:58
2025.07.02 12:14:20.184 Core 1 2025.06.30 23:59:59 Ошибок даты 0
2025.07.02 12:14:20.184 Core 1 2025.06.30 23:59:59 Ошибок open 0
2025.07.02 12:14:20.184 Core 1 2025.06.30 23:59:59 Ошибок close 0
2025.07.02 12:14:20.184 Core 1 2025.06.30 23:59:59 Ошибок high 0
2025.07.02 12:14:20.184 Core 1 2025.06.30 23:59:59 Ошибок low 0
На тестовом символе картина та же, что и раньше:
2025.07.02 12:37:46.432 Core 1 2025.06.28 19:52:59 Исходный файл: TEST_SYMB_M1.mql, 495410 cвеч
2025.07.02 12:37:46.432 Core 1 2025.06.28 19:52:59 Свеч на графике тестера 495410
2025.07.02 12:37:46.432 Core 1 2025.06.28 19:52:59 Начальный индекс 0
2025.07.02 12:37:46.432 Core 1 2025.06.28 19:52:59 Конечный индекс 495408
2025.07.02 12:37:46.432 Core 1 2025.06.28 19:52:59 Начало проверки 2018.02.09 10:00
2025.07.02 12:37:46.432 Core 1 2025.06.28 19:52:59 Конец проверки 2025.06.28 19:47
2025.07.02 12:37:46.432 Core 1 2025.06.28 19:52:59 Первая ошибка open 2020.03.12 10:47 проверено свечей 971
2025.07.02 12:37:46.432 Core 1 2025.06.28 19:52:59 Первая ошибка high 2020.03.12 10:47 проверено свечей 971
2025.07.02 12:37:46.432 Core 1 2025.06.28 19:52:59 Первая ошибка low 2020.03.12 10:49 проверено свечей 973
2025.07.02 12:37:46.432 Core 1 2025.06.28 19:52:59 Первая ошибка close 2024.01.01 00:06 проверено свечей 309411
2025.07.02 12:37:46.432 Core 1 2025.06.28 19:52:59 Ошибок даты 0
2025.07.02 12:37:46.432 Core 1 2025.06.28 19:52:59 Ошибок open 251745
2025.07.02 12:37:46.432 Core 1 2025.06.28 19:52:59 Ошибок close 181968
2025.07.02 12:37:46.432 Core 1 2025.06.28 19:52:59 Ошибок high 219337
2025.07.02 12:37:46.432 Core 1 2025.06.28 19:52:59 Ошибок low 217660
Таким образом подтверждается:
1. Slava, Ваше утверждение "На наших данных нет никаких ошибок"
2. Корректность работы самого теста.
3. То, что глюк в тестере есть, и проявляется он именно при работе с Custom символами.
Билд 5147. Глюк не исправлен.
Все это видно прямо в тестере:
Одни и те же свечи. На верхнем рисунке - с графика, который открывается после окончания теста, здесь все правильно.
На нижнем - из визуализатора тестера. Разница налицо.
Билд 5147. Глюк не исправлен.
Все это видно прямо в тестере:
Одни и те же свечи. На верхнем рисунке - с графика, который открывается после окончания теста, здесь все правильно.
На нижнем - из визуализатора тестера. Разница налицо.
У вас неправильные настройки пользовательского символа. Перед передачей тестеру исторические данные пакуются, как если бы эти данные передавались с торгового сервера. Пакуются согласно вашим настройкам. И этот алгоритм меняться не будет
Ищите ошибки у себя. Целая тема есть https://www.mql5.com/ru/forum/304554
И ещё.
Не надо вручную копировать файлы в каталог агента тестирования.
Для этого специально существует #property tester_file "<file_name>"
И ещё.
Не надо вручную копировать файлы в каталог агента тестирования.
Для этого специально существует #property tester_file "<file_name>"
Не пользовался раньше. Спасибо.
Правда с ходу не заработало.
В эксперте:
#property tester_file "TEST_SYMB_M1.mql" // Файл на момент компиляции существует и лежит в MQL5\Files
int handle = FileOpen("TEST_SYMB_M1.mql", FILE_BIN|FILE_READ); // Не находит файла. При ручном копировании все работает.
У вас неправильные настройки пользовательского символа. Перед передачей тестеру исторические данные пакуются, как если бы эти данные передавались с торгового сервера. Пакуются согласно вашим настройкам. И этот алгоритм меняться не будет
Ищите ошибки у себя. Целая тема есть https://www.mql5.com/ru/forum/304554
Может что-то у меня и неправильно, буду искать. Но что делать с тем фактом, что тестер не видит параметров, которые установлены правильно?
Это из окна "Символы":
А это тот же символ из тестера.
Перед передачей тестеру исторические данные пакуются, как если бы эти данные передавались с торгового сервера. Пакуются согласно вашим настройкам.
Slava, подскажите pls, какой еще параметр, кроме точности (_Digits) способен влиять на паковку/распаковку данных так, чтобы это приводило к их искажению?
Мне больше ничего в голову не приходит...
Одни и те же свечи. На верхнем рисунке - с графика, который открывается после окончания теста, здесь все правильно.
На нижнем - из визуализатора тестера. Разница налицо.
У вас неправильные настройки пользовательского символа. Перед передачей тестеру исторические данные пакуются, как если бы эти данные передавались с торгового сервера. Пакуются согласно вашим настройкам. И этот алгоритм меняться не будет
Это никак не объясняет того факта, что графики в тестере и визуализаторе разные. Если тестер получает данные, строит по ним график, формирует (из этих же данных) тики и отправляет их эксперту, то данные получены правильные, поскольку график в тестере правильный. А глюк где-то при формировании тиков, и неверные данные получают эксперт и визуализатор. Если же тестер получает свои данные только для визуализатора, а график строит из данных исходного символа, то это вообще не имеет смысла.
Slava, внесите ясность, pls!
Это никак не объясняет того факта, что графики в тестере и визуализаторе разные. Если тестер получает данные, строит по ним график, формирует (из этих же данных) тики и отправляет их эксперту, то данные получены правильные, поскольку график в тестере правильный. А глюк где-то при формировании тиков, и неверные данные получают эксперт и визуализатор. Если же тестер получает свои данные только для визуализатора, а график строит из данных исходного символа, то это вообще не имеет смысла.
Slava, внесите ясность, pls!
Я уже сказал, что при передаче на тестер исторические данные пакуются в соответствии с настройками символа.
Первый бар в контейнере пишется как есть. Остальные данные - это изменение состояния текщего бара в тиках. Здесь в полный рост вступает tick size. А ещё, что это за символ, forex, cfd, stocks что там ещё.
Я вам дал ссылку на обсуждение пользовательских символов - все ваши проблемы уже были обсуждены и решены. Ищите самостоятельно
Ищите самостоятельно
Нашел. Глюк в тестере есть и устойчиво воспроизводится. Но не в параметрах custom символов, как ожидалось, а где-то в генераторе тиков.
Надеюсь, никто не будет оспаривать утверждение: "Ни при каких условиях тестер не должен искажать исходные котировки".
По факту имеем следующее: для каких-то произвольных свечей с tick_volume = 1 тестер генерит глючный тик, в котором open, high, low равны close.
Получается свеча, "схлопнутая" в ноль. Таких свечей немного, в тестах на разных символах выходило от 200 до 400 шт из ~3,9 млн, но они гробят на корню все результаты тестирования.
В котировках "родных" символов свечей с tick_volume = 1 тоже немало, например для EURUSD - 229 тыс. из 9,6 млн баров, но при этом тестер ведет себя правильно,
все свечи в тестовом эксперте совпадают с исходными.
Для котировок стороннего брокера описанный глюк присутствует. Лечится редактированием минимального тикового объема. При tick_volume = 4 уже не проявляется.
Логически вроде понятно, 4 - это как раз OHLC тики. Но если тестеру не хватает объема, чтобы выдать все тики, он должен выдать всю свечу (а не ее часть) в одном тике или сколько там получилось сгенерить. И в режиме "Только цены открытия" я должен получать цены открытия, а не что-то другое. Да и редактировать объем в каждой свече в сторонних котировках - так себе идея.
Воспроизведение:
1. Распаковать архив в папку терминала
2. Открыть "Символы" -> Custom -> "Создать символ"
3. Ввести название, например EURUSD_1, внизу "Скопировать из" выбрать EURUSD -> "OK"
4. На любом открытом графике запустить скрипт "Copy_Rates". При настройках по-умолчанию он скопирует котировки из файла (котировки стороннего брокера) в EURUSD_1
и сохранит их же в файл EURUSD_1_M1.mql.
5. Скопировать файл EURUSD_1_M1.mql в Files агента тестирования, запустить "Rates_Test"
6. Удалить базы тестера, повторить п. 4,5 с другими значениями "Минимальный объем"