Отключение оптимизации параметров в зависимости от input переменной.

 

В боте есть модули которые могут быть включены или отключены. У модулей есть свои input параметры, которые прогоняются в оптимизации. Так же, активность задана в оптимизации булевым input'ом. Есть ли какая то возможность при оптимизации игнорировать перебор параметров модуля если он выключен (активность установлена в false)? Иначе, получаем бесполезные прогоны с разными вариациями настроек отключеного модуля.

В документированых возможностях такого не нашел. Может быть есть возможность реализовать это при помощи какого то костыля? Например, проверять на стадии инициализации был ли уже такой же прогон, в котором совпадают input прараметры включеных модулей и вылетать по INIT_FAILED или по намереному обращению к NULL указателю? Если такая возможность есть - то как это повлияет на генетическую оптимизацию?

Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Прочие константы
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Прочие константы
  • www.mql5.com
Прочие константы - Именованные константы - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Посмотрите пример в https://www.mql5.com/ru/code/12942
MD5 Cloud Decryptor
MD5 Cloud Decryptor
  • www.mql5.com
Этот пример показывает принцип использования механизма передачи кастомных фреймов данных с агентов во время массового перебора паролей в задаче поиска MD5 хешей. В режиме реального времени показываются скоростные характеристики расчетной сети и прогресс выполнения. Другой особенностью программы является демонстрация принципа виртуализации входных нелинейных и нечисловых параметров в числовой счетчик.
 
Rashid Umarov #:
Посмотрите пример в https://www.mql5.com/ru/code/12942

Да, с фреймами разбирался. Не понятно как это можно использовать в данном случае. Если я гоню только со включенным модулем или только с выключенным - в таком случае можно включать и выключать параметры автоматически на OnTesterInit. Если оптимизация идет с и без модуля - такое не представляется возможным.

 
DrSky #:

Да, с фреймами разбирался. Не понятно как это можно использовать в данном случае. Если я гоню только со включенным модулем или только с выключенным - в таком случае можно включать и выключать параметры автоматически на OnTesterInit. Если оптимизация идет с и без модуля - такое не представляется возможным.

Рашид, скорее всего, предлагал обратить внимание на функцию ParameterSetRange. Там можно включать/отключать параметры от оптимизации.

Документация по MQL5: Работа с результатами оптимизации / ParameterSetRange
Документация по MQL5: Работа с результатами оптимизации / ParameterSetRange
  • www.mql5.com
ParameterSetRange - Работа с результатами оптимизации - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Stanislav Korotky #:

Рашид, скорее всего, предлагал обратить внимание на функцию ParameterSetRange. Там можно включать/отключать параметры от оптимизации.

Включить отключить можно и при настройке параметров. Впопрос в том, как их отключить в в зависимости от конкретного параметра, который так же меняется во время оптимизации.

 
DrSky #:

Включить отключить можно и при настройке параметров. Впопрос в том, как их отключить в в зависимости от конкретного параметра, который так же меняется во время оптимизации.

Пакетизация пространства входных параметров. В примере выше реализация подобного. Фреймы для этого не нужны.

 
DrSky #:

Включить отключить можно и при настройке параметров. Впопрос в том, как их отключить в в зависимости от конкретного параметра, который так же меняется во время оптимизации.

А внутри самого эксперта это сделать нельзя? 

Скажем, есть параметр, который может принимать значения от 1 до 100. Но, при этом надо исключить значения 10-20, 50-60 и 80-90.

Отлично. Вводим искусственный параметр, который может принимать значения от 1 до 70, Первые 10 значений таких же, как и в "настоящем параметре", далее 30 значений соответствующие диапазону 20-50 "настоящего параметра", далее 20 значений, соответствующие "настоящему диапазону "60-80", и наконец последние 10 значений соответствуют "настоящим" значениям 90-100.

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

У меня в моей Лиге ТС почти так сделано объединение двух "настоящих" параметров (используемого таймфрейма и рабочих дней недели) в один "искусственный" параметр-перечисление.

 

вот бы добавить к input переменной свойство невидимости в тестере, например у меня в inpt используется Подгружать историю по всем используемым символам или нет, в тестере если не отключить подгрузку, начинается проблема

сейчас посмотрел весь свой input, там много всего что занимает лишние строки в тестере, причем в самом верху, и спускать вниз такие совсем не хочется

 
lynxntech #:

вот бы добавить к input переменной свойство невидимости в тестере, например у меня в inpt используется Подгружать историю по всем используемым символам или нет, в тестере если не отключить подгрузку, начинается проблема

сейчас посмотрел весь свой input, там много всего что занимает лишние строки в тестере, причем в самом верху, и спускать вниз такие совсем не хочется

Так а в чём проблема запросить внутри советника, работает ли режим оптимизации, и если работает, то игнорировать переменную?

 
Georgiy Merts #:

Так а в чём проблема запросить внутри советника, работает ли режим оптимизации, и если работает, то игнорировать переменную?

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

речь была про список видимости, что в роботе есть много используемых input переменных, а внутри тестера нет никакой необходимости их видеть, просто куча лишних строк

add

но это отметка переменной должна быть что-то типа  Доп символ к названию input переменной, что-бы функционал можно было быстро вернуть в тестер при необходимости

 
lynxntech #:

вот бы добавить к input переменной свойство невидимости в тестере, ...

С подобным неудобством я для себя справился так. Практически весь код хранится в .mqh-файлах, а для получения готового советника есть один .mq5-файл, в котором оставлены только input-переменные и подключение .mqh. Поэтому если надо уменьшить количество видимых в тестере переменных можно просто создать копию .mq5-файла и убрать слово input для тех переменных, которые не нужны при оптимизации в тестере. И оптимизировать этот новый исполняемый файл.

Вместо искусственных параметров использовал проверку в OnInit(), допустимы ли такие значения параметров. Например, если величина Trailing Stop оказалась больше Take Profit, то такой прогон не нужен. Если в этом случае возвращать INIT_INCORRECT_PARAMETERS, то тестер просто перейдет к следующей комбинации.

Причина обращения: