Выбор проходов для оптимизатора

 

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

ParameterSetRange для этого не подходит, т.к. вызывается только в OnTesterInit. Возможно ли переопределить пространство проходов после вызова FrameFirst - вызывать событие TesterInit?

И есть ли возможность тормознуть оптимизацию (а-ля FrameLast)?

 

Есть функция OnTester, в которой Вы можете сформировать любое значение с известными только Вам смыслами.

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

Программно тормознуть оптимизацию прямой возможности нет

 

Спасибо, но это даже не костыльный вариант. Поясню. Если дошло дело до вызова OnTester, значит проход полностью посчитался. А я не хочу бессмысленные проходы считать, либо же свести его хотя бы к пустому OnTick. Но этого никак не сделать.

 

После оптимизации и ручной фильтрации оставил данные по сотне прогонов. Теперь хочу прогнать их же, но с другими начальными уловиями (проскальзывание увеличить или какой-нибудь другой входной параметр ТС изменить). Как из файла сформировать пространство нужных проходов для оптимизации?

 
hrenfx:

Спасибо, но это даже не костыльный вариант. Поясню. Если дошло дело до вызова OnTester, значит проход полностью посчитался. А я не хочу бессмысленные проходы считать, либо же свести его хотя бы к пустому OnTick. Но этого никак не сделать.

 

После оптимизации и ручной фильтрации оставил данные по сотне прогонов. Теперь хочу прогнать их же, но с другими начальными уловиями (проскальзывание увеличить или какой-нибудь другой входной параметр ТС изменить). Как из файла сформировать пространство нужных проходов для оптимизации?

Ну зачем же про костыльный вариант. Вы бы сначала документацию почитали что ли. И статьи. Форум опять же. Только пятёрочный, а не этот - четвёрка не работает с клаудом.

Как только Вы поняли что что-то пошло не так, выставляете некий признак и вызываете ExpertRemove. Прогон тестирования закончится досрочно. После будет вызван OnTester, в котором на основании выставленного некоего признака Вы можете сформировать любое кастомное значение

Какие проблемы с формированием пространства нужных проходов из файла? Читаете в функции OnTesterInit файл и формируете нужное пространство функцией ParameterSetRange

 

Говорю о MT5-only. Статьи и документацию прочел, спасибо. Непонятки остались - спрашиваю. Про ExpertRemove описание таких замечательных свойств не нашел. Буду знать, спасибо.

На пятерочном форуме трижды повешен... Да и весь неконструктив теперь туда перебрался. Так что четверочный из флудильни вернулся снова к своим адекватным истокам, как в добрые наивные времена.

stringo:

Какие проблемы с формированием пространства нужных проходов из файла? Читаете в функции OnTesterInit файл и формируете нужное пространство функцией ParameterSetRange

Не получается. Нужно, например, 27, 35 и 856 проходы. И еще, никак не выходит передать удаленному агенту, что текущий проход надо игнорить, чтобы применить ExpertRemove.
 

Нет проблем. 27, 35 и 856 проходы можно запустить вручную. Но можно и полуавтоматизировать.

Агентам можно засылать файлы при помощи #property tester_file

Сформируйте некий текстовый файл из 3 (а может и больше) строк с интересными Вам параметрами.

Если эксперту не подходят параметры (их нет в этом файле), то из OnInit можно вернуть значение INIT_PARAMETERS_INCORRECT, и проход будет отклонён моментально.

 

Годится, спасибо! INIT_PARAMETERS_INCORRECT упустил из виду.

 

Зато теперь знаю про замечательный  INIT_AGENT_NOT_SUITABLE. Благодаря этому можно отсеить удаленные агенты, например, по скорости вычислений. Но в самом OnInit бенчмарк писать расточительно. Поэтому актуален вопрос по предыдущему проходу: если время расчета предыдущего прохода меньше порога (через тот же GetTickCount), то на следующем проходе в OnInit возвращать INIT_AGENT_NOT_SUITABLE. 

 
Как будет начисляться плата за облако в случаях INIT_PARAMETERS_INCORRECT и ExpertRemove?
 
hrenfx:
Как будет начисляться плата за облако в случаях INIT_PARAMETERS_INCORRECT и ExpertRemove?
В подавляющем большинстве случаев - как за 1 миллисекунду
 
Получается, если в OnInit будут серьезные расчеты, а затем вызывается INIT_AGENT_NOT_SUITABLE или INIT_PARAMETERS_INCORRECT, то оплата может быть "полноценной"?
 
hrenfx:
Получается, если в OnInit будут серьезные расчеты, а затем вызывается INIT_AGENT_NOT_SUITABLE или INIT_PARAMETERS_INCORRECT, то оплата может быть "полноценной"?
Да.
Причина обращения: