MetaTrader 5 Strategy Tester! - страница 81

 
Andrey Dik:

Вот кстати пример задачи с текстом это и демонстрирует - изменение параметра не даёт никакого изменения ФФ. Но кому это интересно? - по крайней мере не MQ.

В советниках (по крайней мере торговых советниках для рынка) не бывает гладких ФФ, любое изменение параметра либо не даёт никакого изменения ФФ либо скачкообразно её меняет. Это просто и логично вытекает из за дискретности рыночной информации и дискретности торговой активности. 

Оптимизатор обладает мат. режимом (так его назвали). Это значит, что ФФ может обладать не только ТС-характеристиками, как это субъективно видит каждый по-своему, а быть любой.
 
Andrey Dik:

2. Можно и наверное нужно бы сделать. Но сложно в реализации объективного теста (обязательно обвинят в мухлеже). Для этого понадобится написать два эксперта, один для тестера МТ, другой для кастомного тестера, после этого нужно будет добится идентичных результатов в одиночном тесте в обоих тестерах. Только после этого можно будет приступать к тетсированию оптимизатора. Есть множество нерешённых проблем до сих пор, например в штатном оптимизаторе не удаляется хендл индикатора после каждого прогона оптимизатора, а это было бы необходимо для сравнения кастомным оптимизатором, так уже через несколько секунд оптимизатор МТ наглухо подвешивает операционную систему из за моментального переполнения оперативной памяти, даже не надейтесь, что Вам хватит 8, 16, 32 Гига, не хватит! Вот когда будут решены подобные проблемы висящие годами, тогда можно говорить по Вашему вопросу. 

На знал, что есть такая проблема в пятерке - в четверке она не наблюдается - память там чиститься нормально, но есть сложность с памятью при работе со скриптом.

 

Andrey Dik:

Вот кстати пример задачи с текстом это и демонстрирует - изменение параметра не даёт никакого изменения ФФ. Но кому это интересно? - по крайней мере не MQ.

В советниках (по крайней мере торговых советниках для рынка) не бывает гладких ФФ, любое изменение параметра либо не даёт никакого изменения ФФ либо скачкообразно её меняет. Это просто и логично вытекает из за дискретности рыночной информации и дискретности торговой активности. 

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

- Влияет на вход в позицию

- Влияет на выход из позиции

- Влияет на стоп лосс

- Влияет на тейк профит

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

Далее следует выявить, линейно (примерно) происходит изменение результатов или нет, и учитывать эти обстоятельства при переборе параметров.

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

Интересно, кто реально использует генетику при осмысленном построении АТС? 

 

Собственно сам тестер (тема топика) не вызывает никаких вопросов и проблем, эмуляция торгового окружения для советников (тем более с недавним появлением режима реальных тиков) просто нереально объективна и точна.

Вопросы вызывает собственно оптимизатор. Для эффективного использования оптимизатора сейчас необходимо ввести новый тип input параметров:

input doublearray min [];
input doublearray step [];
input doublearray max [];

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

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

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

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

 
fxsaber:
Оптимизатор обладает мат. режимом (так его назвали). Это значит, что ФФ может обладать не только ТС-характеристиками, как это субъективно видит каждый по-своему, а быть любой.
Безусловно это так. Именно поэтому, в том числе, оптимизатор должен уметь работать с любым типом функций, а особенно с дискретными как у советников, ведь это всё таки торговый терминал как никак. 
 
Andrey Dik:

Первый тест (оформленный по первоначальной схеме)

у алгоритма от MQ 41.33 при среднем вызове ФФ 20906, у алгоритма от Joo 46.6 при ровно 20000 вызовов.

Давайте объясню, что это значит на самом деле. А то тут про какие-то 86% говорят.

Есть мат. функция, которая изменяет свое значение (51 штука: от 0 до 50) от 50-ти аргументов. Диапазон изменения каждого - 26.

Это значит, что всего 26^50 значений функции. И у этой функции есть только ОДИН абсолютный максимум - 50.

Есть 26^(50 - N) локальных максимумов со значением не меньше N.

Например, 26^0=1 максимумов со значением >= 50. 26^1=26 максимумов со значением >= 49. И т.д.

26^(50-46)=456 976 (~0.5 миллиона) со значением >= 46.

26^(50-41)=5 429 503 678 976 (~5.5 триллионов) >= 41.

Т.е. красный алгоритм выдал один из 5.5 триллионов локальных экстремумов. Справился?

Зеленый тоже попал в молоко, но выдал один из 0.5 миллиона локальных экстремумов. Справился?

На оба вопроса лично я отвечаю отрицательно. Фактически, получается, место зеленого в соревновании находится в районе 0.5 миллиона, а красного - 5.5 триллионов. Вот такая разница в местах.

Интересно, что если зеленому дать не 20К итераций, а побольше, то можно бороться уже с абсолютным чемпионом.

 

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

 
fxsaber

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

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

А если просто 20тыс рандомных проб взять, результат сильно хуже будет? ))

 
Vladimir Kazakov:

А если просто 20тыс рандомных проб взять, результат сильно хуже будет? ))

попробуйте, я даже выкладывал такой рандомный оптимизатор. результат на вряд-ли превысит число 10 в итоге. 
 
Andrey Dik:
Но в данном случае мы сравниваем алгоримы и должны выбрать алгоритм который найдет точку выше.
Вот именно. Поэтому говорить о "86% - счастье и подвиг" на приходится. Результат годится только для сравнения алгоритмов. И результат по количеству итераций и, особенно, по времени выполнения, у зеленого на порядки лучше в этом конкретном воспроизводимом случае. В связи с этим, некоторые заявления отдают излишней самоуверенностью.
 

Интересно, что если иметь робастую ТС. И при этом искать какой-то глобальный максимум через ГА или полным перебором, то найденные входные аргументы ТС могут оказаться вне поля робастости ТС. Т.е. ГА и полный перебор + кастомный критерий не позволяют найти робастые диапазоны у робастой ТС. Но это, действительно, другая тема.