![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Sleep на 10 секунд тоже не помогает. Решает проблему только очистка той папки.
Выложите код для оптимизации MQL5\Experts\Examples\MACD\MACD Sample.mq5. Тогда можно попробовать воспроизвести. Сейчас конструктива почти нет.
Выложите код для оптимизации MQL5\Experts\Examples\MACD\MACD Sample.mq5. Тогда можно попробовать воспроизвести. Сейчас конструктива почти нет.
Спасибо! Попробую подготовить файлы и выложу. Сейчас пока все в непричёсанном виде.
Выложите код для оптимизации MQL5\Experts\Examples\MACD\MACD Sample.mq5. Тогда можно попробовать воспроизвести. Сейчас конструктива почти нет.
Добрый день!
Подготовил файлы и прилагаю.
Оптимизация с 25.03 по 20.05.2024 на таймфрейме M1.
Депозит 17000. Плечо 40. Максимум комплексного критерия.
Сначала нужно для чистоты эксперимента очистить папку "C:\Users\ASUS\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache"
Скрипт Nocturne надо запускать по одному параметру для оптимизации.
Тогда он выдает:
По первому параметру: ProfitNow -1478 ParamMax 0.37 в первый раз
По второму параметру: ProfitNow -379 ParamMax 30 в первый раз
По третьему параметру: ProfitNow -379 ParamMax 6 в первый раз
По третьему параметру: ProfitNow -379 ParamMax 6 повторно
По третьему параметру: ProfitNow -379 ParamMax 6 повторно
По третьему параметру: ProfitNow -379 ParamMax 6 повторно
Здесь показано зависание в кеше данных по третьему параметру.
А теперь нужно снова очистить папку "C:\Users\ASUS\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache"
И тогда повторение заново:
По первому параметру: ProfitNow -1478 ParamMax 0.37 в первый раз
По второму параметру: ProfitNow -379 ParamMax 30 в первый раз
По третьему параметру: ProfitNow -379 ParamMax 6 в первый раз
По третьему параметру: ProfitNow -379 ParamMax 6 повторно
По третьему параметру: ProfitNow -379 ParamMax 6 повторно
По третьему параметру: ProfitNow -379 ParamMax 6 повторно
В строках 151-154 скрипта Nocturne написано все как вы меня инструктировали:
Run(Odinar);
int GLOC = MTTESTER::GetLastOptCache(Bytes); // Получили opt-файл в байтовый массив Bytes
TESTERCACHE<ExpTradeSummary> Cache;
bool CL = Cache.Load(Bytes); // Подаём в Cache байтовый массив Bytes
Ошибка, конечно же, в коде, который я написал, но я пока не знаю, как ее исправить.
Однако экспериментально я установил, что если перед запуском Run убрать все opt-файлы вручную
из папки "C:\Users\ASUS\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache",
то мой код работает правильно и проводит оптимизацию по выбранному параметру.
Если же эту папку не чистить, то Тестер повторные оптимизации (с теми же самыми неизменными данными) не проводит, а считывает
уже имеющийся opt-файл из этой папки. Это хорошо видно при неоднократном запуске вручную одной и той же оптимизации.
Видно, что реальная оптимизация производится только в первый раз, а потом - только считывание opt-файла из папки.
При таком повторном считывании в кеше, по-видимому, не обновляется содержимое, и это-то и приводит к ошибке в моем коде.
Очистка указанной папки могла бы помочь устранить ошибку. Конечно, это плохое решение, и было бы элегантнее суметь восстановить нужные данные в кеше.
Но я не знаю, как это сделать. Пока же в кеше зависают данные от предыдущей реальной оптимизации (не соответствующие повторно считанным из папки).
К сожалению, из скрипта при помощи FolderClean нельзя очистить эту папку, потому что это запрещено в MQL5 -
она вне "песочницы" и заполняется только Тестером стратегий.
Может следует создать средствами С++ какую-то внешнюю примочку и запускать ее из скрипта.
С уважением, Александр
Ошибка в тексте:
Добрый день!
Подготовил файлы и прилагаю.
Оптимизация с 25.03 по 20.05.2024 на таймфрейме M1.
Депозит 17000. Плечо 40. Максимум комплексного критерия.
Сначала нужно для чистоты эксперимента очистить папку "C:\Users\ASUS\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache"
Скрипт Nocturne надо запускать по одному параметру для оптимизации.
Тогда он выдает:
По первому параметру: ProfitNow -1478 ParamMax 0.37 в первый раз
По второму параметру: ProfitNow -379 ParamMax 30 в первый раз
По третьему параметру: ProfitNow -379 ParamMax 6 в первый раз
По первому параметру: ProfitNow -379 ParamMax 6 повторно
По второму параметру: ProfitNow -379 ParamMax 6 повторно
По третьему параметру: ProfitNow -379 ParamMax 6 повторно
Здесь показано зависание в кеше данных по третьему параметру.
А теперь нужно снова очистить папку "C:\Users\ASUS\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache"
И тогда повторение заново:
По первому параметру: ProfitNow -1478 ParamMax 0.37 в первый раз
По второму параметру: ProfitNow -379 ParamMax 30 в первый раз
По третьему параметру: ProfitNow -379 ParamMax 6 в первый раз
По первому параметру: ProfitNow -379 ParamMax 6 повторно
По второму параметру: ProfitNow -379 ParamMax 6 повторно
По третьему параметру: ProfitNow -379 ParamMax 6 повторно
В строках 151-154 скрипта Nocturne написано все как вы меня инструктировали:
Run(Odinar);
int GLOC = MTTESTER::GetLastOptCache(Bytes); // Получили opt-файл в байтовый массив Bytes
TESTERCACHE<ExpTradeSummary> Cache;
bool CL = Cache.Load(Bytes); // Подаём в Cache байтовый массив Bytes
Ошибка, конечно же, в коде, который я написал, но я пока не знаю, как ее исправить.
Однако экспериментально я установил, что если перед запуском Run убрать все opt-файлы вручную
из папки "C:\Users\ASUS\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache",
то мой код работает правильно и проводит оптимизацию по выбранному параметру.
Если же эту папку не чистить, то Тестер повторные оптимизации (с теми же самыми неизменными данными) не проводит, а считывает
уже имеющийся opt-файл из этой папки. Это хорошо видно при неоднократном запуске вручную одной и той же оптимизации.
Видно, что реальная оптимизация производится только в первый раз, а потом - только считывание opt-файла из папки.
При таком повторном считывании в кеше, по-видимому, не обновляется содержимое, и это-то и приводит к ошибке в моем коде.
Очистка указанной папки могла бы помочь устранить ошибку. Конечно, это плохое решение, и было бы элегантнее суметь восстановить нужные данные в кеше.
Но я не знаю, как это сделать. Пока же в кеше зависают данные от предыдущей реальной оптимизации (не соответствующие повторно считанным из папки).
К сожалению, из скрипта при помощи FolderClean нельзя очистить эту папку, потому что это запрещено в MQL5 -
она вне "песочницы" и заполняется только Тестером стратегий.
Может следует создать средствами С++ какую-то внешнюю примочку и запускать ее из скрипта.
С уважением, Александр
Я выложил своего робота для оптимизации, так как на его перечень параметров ориентирован Nocturne.
А для MQL5\Experts\Examples\MACD\MACD Sample.mq5 нужна сильная переделка.
А кстати не проясните зачем нужен параметр input int inNum = 0;
Или это просто атавизм?
Выложите код для оптимизации MQL5\Experts\Examples\MACD\MACD Sample.mq5. Тогда можно попробовать воспроизвести. Сейчас конструктива почти нет.
Добрый день!
Все мои проблемы удалось решить с помощью Александра Славского: https://www.mql5.com/ru/users/s22aa
Он мне прислал код удаления содержимого Cache.
Напрямую почистить Cache не получалось, так как он вне песочницы.
Может кому-то это будет полезно перед запуском процедуры Run, чтобы результаты прошлых оптимизаций не препятствовали новым.
Я прилагаю этот скрипт.
Ваши библиотеки и эта процедура очистки обеспечили мне возможность последовательной оптимизации робота.
Большое спасибо за эти коды и вашу помощь.
С уважением, Александр
Тестер повторные оптимизации (с теми же самыми неизменными данными) не проводит, а считывает
уже имеющийся opt-файл из этой папки. Это хорошо видно при неоднократном запуске вручную одной и той же оптимизации.
Видно, что реальная оптимизация производится только в первый раз, а потом - только считывание opt-файла из папки.
При таком повторном считывании в кеше, по-видимому, не обновляется содержимое, и это-то и приводит к ошибке в моем коде.
#property tester_no_cache
inFakeRange
код удаления содержимого Cache.
В MTTester.mqh есть такая очень востребованная функция, когда делаешь много одиночных прогонов.
Если заменить tst на opt, то будет удалять последний opt-файл. Чистить всю папку Cache видится избыточным.