Есть функция OnTester, в которой Вы можете сформировать любое значение с известными только Вам смыслами.
Например, если проход никуда не годится, то можно вернуть значение минус сто тыщ миллионов, которое уведёт данный проход в самый низ таблицы
Программно тормознуть оптимизацию прямой возможности нет
Спасибо, но это даже не костыльный вариант. Поясню. Если дошло дело до вызова OnTester, значит проход полностью посчитался. А я не хочу бессмысленные проходы считать, либо же свести его хотя бы к пустому OnTick. Но этого никак не сделать.
После оптимизации и ручной фильтрации оставил данные по сотне прогонов. Теперь хочу прогнать их же, но с другими начальными уловиями (проскальзывание увеличить или какой-нибудь другой входной параметр ТС изменить). Как из файла сформировать пространство нужных проходов для оптимизации?
Спасибо, но это даже не костыльный вариант. Поясню. Если дошло дело до вызова OnTester, значит проход полностью посчитался. А я не хочу бессмысленные проходы считать, либо же свести его хотя бы к пустому OnTick. Но этого никак не сделать.
После оптимизации и ручной фильтрации оставил данные по сотне прогонов. Теперь хочу прогнать их же, но с другими начальными уловиями (проскальзывание увеличить или какой-нибудь другой входной параметр ТС изменить). Как из файла сформировать пространство нужных проходов для оптимизации?
Ну зачем же про костыльный вариант. Вы бы сначала документацию почитали что ли. И статьи. Форум опять же. Только пятёрочный, а не этот - четвёрка не работает с клаудом.
Как только Вы поняли что что-то пошло не так, выставляете некий признак и вызываете ExpertRemove. Прогон тестирования закончится досрочно. После будет вызван OnTester, в котором на основании выставленного некоего признака Вы можете сформировать любое кастомное значение
Какие проблемы с формированием пространства нужных проходов из файла? Читаете в функции OnTesterInit файл и формируете нужное пространство функцией ParameterSetRange
Говорю о MT5-only. Статьи и документацию прочел, спасибо. Непонятки остались - спрашиваю. Про ExpertRemove описание таких замечательных свойств не нашел. Буду знать, спасибо.
На пятерочном форуме трижды повешен... Да и весь неконструктив теперь туда перебрался. Так что четверочный из флудильни вернулся снова к своим адекватным истокам, как в добрые наивные времена.
Какие проблемы с формированием пространства нужных проходов из файла? Читаете в функции OnTesterInit файл и формируете нужное пространство функцией ParameterSetRange
Нет проблем. 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?
Получается, если в OnInit будут серьезные расчеты, а затем вызывается INIT_AGENT_NOT_SUITABLE или INIT_PARAMETERS_INCORRECT, то оплата может быть "полноценной"?
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Как в MT5-оптимизаторе управлять во время оптимизации проходами, которые нужно считать, а которые - игнорить?
ParameterSetRange для этого не подходит, т.к. вызывается только в OnTesterInit. Возможно ли переопределить пространство проходов после вызова FrameFirst - вызывать событие TesterInit?
И есть ли возможность тормознуть оптимизацию (а-ля FrameLast)?