В данном конкретном случае не вижу смысла. В эксперте нет ничего, кроме чтения файла и сравнения свеч в цикле.
Если внимательно посмотреть на лог тестера, можно увидеть, что все происходит на custom символе, так что для полного воспроизведения ситуации
пришлось бы прикладывать целую библиотеку, импортируемые котировки и много чего еще, что не имеет прямого отношения к проблеме.
Судя по логам, Вы тестируете неизвестный кастомный символ.
Судя по логам, качество истории этого символа так себе
IR 3 12:20:45.320 Tester quality of analyzed history is 41%
Да, символ кастомный. В качестве истории я уверен, ошибок в свечах нет.
Как бы еще узнать, по каким критериям тестер оценивает качество котировок?
Причем качество, которое показывает тестер, почему-то сильно зависит от количества свечей (длительности периода тестирования).
На тех же котировках, но за больший период, тестер показывает около 80%.
Ситуацию понял, представляю.
В архиве:
Скрипт для импорта тестовых котировок, файл котировок, тестовый эксперт.
1. Распаковать в папку терминала.
2. Запустить скрипт на любом открытом графике. Он импортирует тестовый символ из файла.
Для чистоты эксперимента скрипт читает уже импортированные котировки с графика и пишет файл верификации.
Можно сравнить с исходным, они одинаковы.
3. Скопировать файл котировок в Files агента тестирования (Tester\Agent-127.0.0.1-3000\MQL5\Files).
При каждой перекомпиляции советника тестер зачем-то грохает всю папку Files. В этом случае
скопировать файл еще раз.
4. В архиве лежит скриншот с настройками тестера.
5. Запустить в тестере Rates_Test.ex5. Тест выводит в лог 2 десятка строк с ошибками, в конце счетчики.
У меня получаются следующие результаты:
2025.06.30 20:54:29.139 Core 1 2025.06.28 19:52:59 Ошибок даты 0
2025.06.30 20:54:29.139 Core 1 2025.06.28 19:52:59 Ошибок open 482303
2025.06.30 20:54:29.139 Core 1 2025.06.28 19:52:59 Ошибок close 484135
2025.06.30 20:54:29.139 Core 1 2025.06.28 19:52:59 Ошибок high 487642
2025.06.30 20:54:29.139 Core 1 2025.06.28 19:52:59 Ошибок low 487631
Ошибок даты нет, т.е. сравниваются свечи с одинаковым datetime. Такое впечатление, что где-то пошла рассинхронизация.
Настройки кастомного символа tick_value и tick_size противоречат ценовым данным.
Возможно и другие настройки противоречат, я не смотрел дальше
В чем именно заключается противоречие? Цена символа округлена до 5-го знака (_Digits = 5).
Насколько я понимаю, TICK_SIZE это минимально возможное изменение цены, должно быть равно размеру пункта (pipsValue), в данном случае единица 5-го знака после запятой.
TICK_VALUE - используется в случае, если символ котируется не в USD, фактически это TICK_SIZE, пересчитанное в USD.
В данном случае символ котируется в USD, значит TICK_VALUE = TICK_SIZE.
Я не прав?
PS: Да, написал то я все правильно, а потом полез проверять. Действительно, в скрипте был глюк, TICK_VALUE и TICK_SIZE ставились неправильно.
Устранил. Заодно немного доработал тест котировок. Теперь он показывает так:
2025.07.01 19:26:44.090 Core 1 2025.06.28 19:52:59 Начало проверки 2018.02.09 10:00
2025.07.01 19:26:44.090 Core 1 2025.06.28 19:52:59 Первая ошибка open 2020.03.12 10:47 проверено свечей 971
2025.07.01 19:26:44.090 Core 1 2025.06.28 19:52:59 Первая ошибка high 2020.03.12 10:47 проверено свечей 971
2025.07.01 19:26:44.090 Core 1 2025.06.28 19:52:59 Первая ошибка low 2020.03.12 10:49 проверено свечей 973
2025.07.01 19:26:44.090 Core 1 2025.06.28 19:52:59 Первая ошибка close 2024.01.01 00:06 проверено свечей 309411
То есть 971 свеча с начала проверки совпала, а потом пошел рассинхрон.
Исправленный скрипт и доработанный тест:
Заодно небольшой глючок в терминале: в окне "Символы" вкладка "Custom" присутствует в 2-х экземплярах. Содержимое одинаково.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Тестовый эксперт выдает следующее:
В отладчике видно, что эксперт действительно получает некорректные данные.
В последнее время терминал обновлялся часто, с какого билда появился глюк, не знаю.
Но раньше этот тест работал и давал 0 ошибок.