Новая версия платформы MetaTrader 5 build 2530: Сортировка в Обзоре рынка и удобная работа с результатами оптимизации - страница 22

 
Aleksander:

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

доделаю панель управления скоростью - смогу и откатывать назад и по пробелу сразу свечку рисовать и вставка ордеров с их расчётами - в общем МТ5 нормально и без тестера робит :)

https://www.mql5.com/ru/code/24848

Tester
Tester
  • www.mql5.com
Эта библиотека позволяет любой MT4-style советник запустить в визуальном Тестере. После компиляции запускаете советник на нужном Вам чарте и получаете окно визуального Тестера, где крутится Ваша ТС. В отличие от MT5-Тестера, данный визуальный Тестер работает не на Агенте, а в самом Терминале. Возможности Запуск и снятие индикаторов. Любое...
 
Artem Mordvinkin:

Всем привет!

У меня вопрос по параметрам оптимизации:

- раньше (прежние билды) можно было учитывать параметр "баланс + фактор восстановления" (например)

- сейчас только "фактор восстановления"


Что имеем:

- раньше получали оптимальное значение фактора восстановления при оптимальном значении баланса для этого параметра


Попробуйте провести оптимизацию по новому критерию- он учитывает множество показателей.

Build 2571 от 07/08/2020


 
помогите подключить подписку !!!
сколько не пытался кнопка подписаться не активна 
 

Здравствуйте, у меня вопрос по генетическому алгоритму оптимизации по критерию - Минимальная просадка.

Функция OnInit() оптимизируемого советника при определённом наборе параметров возвращает код INIT_PARAMETERS_INCORRECT. Из документации следует, что в этом случае, цитата: "набор параметров, для которого OnInit() вернула INIT_PARAMETERS_INCORRECT считается непригодным для тестирования и не будет использован для получения следующей популяции при генетической оптимизации".

На практике получается совсем другая картина. Забракованные таким образом наборы параметров встают в таблице оптимизации со значением критерия 0.0.

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

Как же можно без костылей, корректно оптимизировать советник по критерию - Минимальная просадка?


P.S. Добавьте пожалуйста в таблицу результатов оптимизации колонку - Просадка в валюте депозита. А то невозможно оценить её абсолютную величину по результатам оптимизации. А делать прогон по каждому набору параметров занимает очень много времени.

P.P.S И вообще будет отлично, если Вы добавите такой же критерий оптимизации. )))

Типы оптимизации - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Типы оптимизации - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
В тестере стратегий предусмотрено два режима оптимизации, переключение между которыми происходит на вкладке "Настройка". В данном режиме...
 
Andrey Kaunov:

Здравствуйте, у меня вопрос по генетическому алгоритму оптимизации по критерию - Минимальная просадка.

Функция OnInit() оптимизируемого советника при определённом наборе параметров возвращает код INIT_PARAMETERS_INCORRECT. Из документации следует, что в этом случае, цитата: "набор параметров, для которого OnInit() вернула INIT_PARAMETERS_INCORRECT считается непригодным для тестирования и не будет использован для получения следующей популяции при генетической оптимизации".

На практике получается совсем другая картина. Забракованные таким образом наборы параметров встают в таблице оптимизации со значением критерия 0.0.

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

Как же можно без костылей, корректно оптимизировать советник по критерию - Минимальная просадка?


P.S. Добавьте пожалуйста в таблицу результатов оптимизации колонку - Просадка в валюте депозита. А то невозможно оценить её абсолютную величину по результатам оптимизации. А делать прогон по каждому набору параметров занимает очень много времени.

P.P.S И вообще будет отлично, если Вы добавите такой же критерий оптимизации. )))

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

Я возвращаю INIT_SUCCEEDED, взвожу флаг, а в OnTick по этому флагу - TesterStop()

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

И, не по теме - мало смысла в критерии по просадке. Лучше по фактору восстановления (отношение прибыли к просадке). ИМХО из имеющих критериев единственно полезный - по комплексному критерию. Я использую кастомный.

 
Edgar Akhmadeev:

Я возвращаю INIT_SUCCEEDED, взвожу флаг, а в OnTick по этому флагу - TesterStop()

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

В качестве костыля, я сейчас возвращаю INIT_FAILED. Это неправильно с точки зрения технологии оптимизации, но при этом нулевые результаты не пишутся в общую таблицу. И по видимому такие неправильные наборы параметров не принимают участия в отборе.

Edgar Akhmadeev:

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

Именно поэтому я и обратился к разработчикам. На мой взгляд INIT_PARAMETERS_INCORRECT обрабатывается оптимизатором некорректно.

Edgar Akhmadeev:

И, не по теме - мало смысла в критерии по просадке. Лучше по фактору восстановления (отношение прибыли к просадке). ИМХО из имеющих критериев единственно полезный - по комплексному критерию. Я использую кастомный.

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

Фактор восстановления можно попробовать.

 
Andrey Kaunov:

Кастомный критерий конечно самый беспроигрышный вариант. 

И это однозначно и никакой второй свежести). Пишите какие то кастомные вычисления характеризующие торговлю в каждом проходе, для генетического алгоритма это вообще возможность управляемой эволюции. И не обязательно эти вычисления будут попадать в результат КАСТОМНОГО КРИТЕРИЯ, они наоборот могут принудительно "убивать"/обнулять полученный Кастомный Критерий. Пример: Кастомный Критерий тот-же Баланс, но если позиций Buy или Sell в два раза больше  Кастомный Критерий принудительно обнуляем.

 

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

При генетической оптимизации по критерию - Минимальная просадка, проход когда просадка =0.0% и количество сделок равно нулю, не может быть лучшим в принципе!

 
Andrey Kaunov:

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

При генетической оптимизации по критерию - Минимальная просадка, проход когда просадка =0.0% и количество сделок равно нулю, не может быть лучшим по определению!

ёпрст, ну что упираться то, по факту если все остальные результаты эксперта при наличии сделок отрицательные то лучше не торговать вообще! факт? - факт)

для фильтрации подобных парадоксов  - кастом критерий)

 
Andrey Kaunov:

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

Edgar Akhmadeev:

большое количество INIT_PARAMETERS_INCORRECT сильно ухудшает оптимизацию

Попробуйте, может помочь.