Новая версия платформы MetaTrader 5 build 2007: Экономический календарь, MQL5-программы в виде сервисов - страница 53

 
Alain Verleyen:

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

Ошибки, баги, вопросы

Slava, 2019.03.26 16:14

С этим ограничением жили много лет.

Вопрос возник впервые за всё время

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

Ошибки, баги, вопросы

Slava, 2019.03.26 16:17

Обоснования в протоколе обмена с агентом тестирования.

Чтобы задавать кучу символов, запишите эту кучу в текстовый файл и передавайте его, используя #property tester_file

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

Ошибки, баги, вопросы

Slava, 2019.03.27 06:46

Начнём с того, что в кеше оптимизации, и в MT5, и в MT4 строковые параметры всегда усекались до 63 символов.

При передаче событий строка тоже не может быть длиннее 63 символов

То есть, то что приходит снаружи - ограничено

Что касается продуктов для конечных пользователей. Продавец должен учитывать ограничения. И если он их не знает, значит он недостаточно тестировал свой продукт перед продажей


 
Andrey Khatimlianskii :

Спасибо :-)
 

Ещё в копилку параметров при оптимизации:

Добавил несколько input, перекомпилировал - список остался прежним, без новых строк

Выбрал из списка другой советник, потом снова текущий - строки появились. При этом, кстати, единички/нолики превратились в true/false

2025

 
Igor Zakharov:

Ещё в копилку параметров при оптимизации:

Добавил несколько input, перекомпилировал - список остался прежним, без новых строк

Выбрал из списка другой советник, потом снова текущий - строки появились. При этом, кстати, единички/нолики превратились в true/false

2025

Странно. Это поведение было исправлено до выхода 2025 билда.

Проверим

PS. Не воспроизводится


Давайте точные шаги по воспроизведению.

Может быть у Вас шло тестирование, когда Вы перекомпилировали? Или может быть окно тестера было минимизировано или закрыто? В общем, любые подробности

 
Slava:

PS. Не воспроизводится

Давайте точные шаги по воспроизведению.

Попытался добавить ещё параметр. Всё получилось. 

Обращу внимание на условия при следующем случае, сообщу.

Оптимизация не шла. Когда заметил, что нет нескольких строк, перекомпилировал дважды - не помогло.

Добавлено:

Повторно произошло. Скопировал три предыдущих строки, переименовал имена переменных. Нажал "компилировать". Не появились. 

Попробовал добавить одну - так же не появилась.

Попробовал сделать  при разных значениях меню вариантов оптимизации, не появилось. Переключением текущего советника - появилось.

С удалением параметров - та же история: не пропадают.


Теста/оптимизации не запущено.

 
Igor Zakharov:

Попытался добавить ещё параметр. Всё получилось. 

Обращу внимание на условия при следующем случае, сообщу.

Оптимизация не шла. Когда заметил, что нет нескольких строк, перекомпилировал дважды - не помогло.

Добавлено:

Повторно произошло. Скопировал три предыдущих строки, переименовал имена переменных. Нажал "компилировать". Не появились. 

Попробовал добавить одну - так же не появилась.

Попробовал сделать  при разных значениях меню вариантов оптимизации, не появилось. Переключением текущего советника - появилось.

С удалением параметров - та же история: не пропадают.


Теста/оптимизации не запущено.

Будем искать и воспроизводить
 

Не уверен баг это или так задумано, но доставляет некоторые неудобства:

Делаю полную (медленную) оптимизацию, потом выбираю из меню оптимизации "по всем символам выбранным в обзоре". Запускаю. 

После этого пропадают результаты предыдущих оптимизаций (все: для всех советников и во всех режимах, включая текущий. Т.е. просто пустой список).

Чтобы вернуть, нужно не просто снова выбрать полную медленную, а именно запустить её. Тогда снова вернутся предыдущие. 

Как вернуть результаты "по всем символам" - не нашёл.

 

странно, что при сборке подобных условий

if(a_ticks[i].flags & TICK_FLAG_BUY) {...}

компилятор дает предупреждение

expression not boolean

приходится ставить костыль

if(bool(a_ticks[i].flags & TICK_FLAG_BUY)) {...}

что бы убрать предупреждение, хотя логика отрабатывается нормально


ps. в с++ нет ни каких проблем

 
Konstantin:

странно, что при сборке подобных условий

компилятор дает предупреждение

приходится ставить костыль

что бы убрать предупреждение, хотя логика отрабатывается нормально


ps. в с++ нет ни каких проблем

Результатом побитовой операции является число.

 
Konstantin:

странно, что при сборке подобных условий

компилятор дает предупреждение

Попробуйте так:

if((a_ticks[i].flags & TICK_FLAG_BUY)==TICK_FLAG_BUY) {...}
Причина обращения: