Новая версия платформы MetaTrader 5 build 2190 - страница 48

 

Здравствуйте Разработчики! 

Большая просьба, добавьте пожалуйста функцию фильтрации параметров во вкладке "Оптимизация". Например когда прошла "Оптимизация" и получили много Результатов, то не желательные результаты по каким либо условиям можно было бы отфильтровать.

(Сейчас крайне не удобно работать с результатами в Оптимизации МТ5, есть простая ранжировка результатов и очень мало параметров выводится, нет таких как "средняя сделка" "макс.просадка в пунктах" и т.д.)

Например: как в TSlab очень удобно отбирать полученные результаты после оптимизации и по очень большому количеству параметров.


 

Сначала думал, что просто случайность, но все-таки, похоже, на какую-то ошибку.

Начиная с билда 2219, как минимум, при генетической оптимизации и использовании сетевых агентов иногда происходит ситуация, когда все задания имеют статус finished, но новых итераций не начинается.

Даже после нескольких часов. Уже три дня не могу оптимизировать ни одного своего советника, просто внезапно прерывается процесс и все.

Текущий билд 2245, у сетевых агентов пишет 2230, но то же самое было и на более ранних билдах.


В журнале никаких особых сообщений нет, есть сообщения, что агенты отваливались по обрыву соединения, затем снова подключались (подключены через VPN, через широкий канал 100мбит, пинг до удаленного сервера 1мс).

 

Форум по трейдингу, автоматизированным торговым системам и тестированию торговых стратегий

Автоматизированное тестирование - ошибки прямого тестирования

Маркос Сильва , 2019.11.30 22:11

Привет всем,


У меня есть набор скриптов, которые автоматически запускают терминал MT5 в режиме оптимизации и выводят результат в формате xml. Я могу запустить тестирование без проблем, но автоматическое форвард-тестирование (с использованием сценария) вызывает ошибки и не может быть завершено. Самое странное в том, что прямое тестирование отлично работает при работе с ним вручную.


Вот несколько тысяч ошибок, которые я получаю:

MQ 2 15: 33: 08,576 Core 20 прямой проход 990 проверен с ошибкой «ошибка обработки истории (ошибка времени тактера)» в 0: 00: 00.014

RQ 2 15: 33: 08,594 Core 18 прямой проход 306 проверен с ошибкой «ошибка обработки истории (ошибка времени на панели тестера)» в 0: 00: 00.013

...


Примечание: я загрузил достаточно истории (бары / данные тиков), чтобы покрыть период оптимизации.


Я собрал подтверждение концепции для этой проблемы, используя стандартный советник «скользящее среднее». Файл прикреплен к этому сообщению.

Forward_Issue.zip - папка «Forward_Issue» должна быть разархивирована внутри папки терминала MT5.


Файл / папка Forward_Issue содержит:

Log Messages.txt - Сообщения об ошибках, которые я получаю

Moving Average.set - установить файл с настроенными параметрами оптимизации

run.cmd - Команда для выполнения (отредактируйте, чтобы увидеть код). В основном он создает копию файла common.ini, добавляет к нему Tester.txt (Оптимизация конфигурации) и запускает для него файл Terminal64.exe.

Tester.txt - Директива по оптимизации.


Я много раз искал способ решить эту проблему безрезультатно. Я полагаю, что это проблема с терминалом tester / MT5, так как прямое тестирование работает при запуске его вручную.

Чтобы убедиться в этом, просто отмените автоматическую оптимизацию, как только ошибки начнут появляться, и повторите оптимизацию с теми же / загруженными параметрами. Не нужно закрывать терминал.


Также, пожалуйста, дайте мне знать, если кто-нибудь знает, как связаться со службой поддержки, чтобы сообщить об этой проблеме.


Спасибо!


Файлы:
 
Alain verleyen :

Thank you for helping out.

 
Marcos Silva:

Thank you for helping out.

Исправлено.
 

Выгрузку ДЛЛки после тестирования нужно организовать, а то приходится убивать процесс. Это зависит от сторонних библиотек.

PythonDLL вешает процесс тестирования при втором запуске и ничего я с этим поделать не могу.

 
Roffild:

Выгрузку ДЛЛки после тестирования нужно организовать, а то приходится убивать процесс. Это зависит от сторонних библиотек.

PythonDLL вешает процесс тестирования при втором запуске и ничего я с этим поделать не могу.

Как вариант зависонов, убедитесь что после первого тестирования, все выполнения в dll завершены, т.е. дожидайтесь окончания работы dll прежде чем завершить основную программу.
Если проблема задержи завершения dll подтвердится, пересмотрите свою dll где она может тормозить, или запускайте в отдельный поток.
Если в dll есть new, malloc, пересмотрите все ли объекты удаляются, и в нужных ли местах они удаляются.
Не завершённые  выполнения в dll после первого запуска, скорее всего вешают процесс на втором запуске.

 
Roffild:

Выгрузку ДЛЛки после тестирования нужно организовать, а то приходится убивать процесс. Это зависит от сторонних библиотек.

PythonDLL вешает процесс тестирования при втором запуске и ничего я с этим поделать не могу.

или наоборот - залочить DLL в памяти и не позволить выгружаться.

Не всякая dll приспособлена к многократной загрузке/выгрузке. После выгрузки могут остаться например thread-specific-vars в неопределённом состоянии или какие следы непосредственно в процессе, и повторная загрузка интерпретатора станет невозможной.

PS/ первоисточник нарыл в записях : https://blogs.msmvps.com/vandooren/2006/10/09/preventing-a-dll-from-being-unloaded-by-the-app-that-uses-it/ если DLL часто (многими вашими советника/скриптами/индикаторами) используется, то есть резон её не выгружать, всё равно потребуется вскорости.
 
Maxim Kuznetsov:

или наоборот - залочить DLL в памяти и не позволить выгружаться.

Не всякая dll приспособлена к многократной загрузке/выгрузке. После выгрузки могут остаться например thread-specific-vars в неопределённом состоянии или какие следы непосредственно в процессе, и повторная загрузка интерпретатора станет невозможной.

PS/ первоисточник нарыл в записях : https://blogs.msmvps.com/vandooren/2006/10/09/preventing-a-dll-from-being-unloaded-by-the-app-that-uses-it/ если DLL часто (многими вашими советника/скриптами/индикаторами) используется, то есть резон её не выгружать, всё равно потребуется вскорости.

Можно делать LoadLibrary на саму себя, и выгружать её тогда когда тебе нужно.
Но не знаю как работает с mql, не проверял.

 
Roman:

Можно делать Loadlibrary на саму себя, и выгружать её тогда когда тебе нужно.
Но не знаю как работает с mql, не проверял.

я проверял первый рецепт из приведённой ссылки - работает. второй проверять не потребовалось
Причина обращения: