Вопрос - самоптимизирующийся индикатор.

 

Есть идея на базе существующего индикатора с задаваемыми параметрами сделать самооптимизирующий.

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

 
Rustem Bigeev:

Есть идея на базе существующего индикатора с задаваемыми параметрами сделать самооптимизирующий.

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

Я делал. Очень долго считает (по сравнению с советником в оптимизаторе на той же логике) и, самое главное, терминал на время оптимизации перейдёт в режим "не отвечает", т.к. цикл перебора параметров "без продыха".

В итоге был сделан с кнопкой. Но, в целом, опыт считаю неудачным, больше не повторял. Всё будет работать, но не эффективно по сравнению с экспертом в тестере. (если значение для оптимизации не прибыль/количество сделок, то это тоже можно провернуть используя возвращаемое значение от OnTester() )

 
Rustem Bigeev:

Есть идея на базе существующего индикатора с задаваемыми параметрами сделать самооптимизирующий.

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

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

 
Алексей Тарабанов:

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

Как думаете, зависать не будет? У меня в коде индикатора реализована возможность пересчета через задаваемые промежутки времени, а не при каждом тике.

 
Rustem Bigeev:

Есть идея на базе существующего индикатора с задаваемыми параметрами сделать самооптимизирующий.

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

Не надо здесь перебора. Анализ истории за период даст вам параметры индикатора для следующего шага (свечи, скажем).
Делать это можно оч по разному, а конкретику вряд-ли кто за вас будет делать.
 
Yuriy Asaulenko:
Не надо здесь перебора. Анализ истории за период даст вам параметры индикатора для следующего шага (свечи, скажем).
Делать это можно оч по разному, а конкретику вряд-ли кто за вас будет делать.

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

 
Rustem Bigeev:

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

Обычно перебор наиболее ресурсоемкий вариант. Не исключено, что в данном случае это не так. Хотя, правильным перебором за 8 шагов можно выбрать что-то из 256 вариантов, но это уже не совсем перебор.) Скажем, найти макс или мин функции, или близость к заданному критерию.

 
Yuriy Asaulenko:

Обычно перебор наиболее ресурсоемкий вариант. Не исключено, что в данном случае это не так. Хотя, правильным перебором за 8 шагов можно выбрать что-то из 256 вариантов, но это уже не совсем перебор.) Скажем, найти макс или мин функции, или близость к заданному критерию.

график


На графике выше изображен осциллятор (окно снизу), который отображает результаты виртуальной торговли. Принцип следующий. Если индикатор на графике (ступенчатая линия) меняет направление ступеней, например вниз, то с этого момента осциллятор начинает откладывать на закрытии каждого бара результат виртуального эквити. То есть если ступени пошли вниз, то подразумевается что открылись в продажу и если цена снижается, то осциллятор растет, если наоборот, то кривая осциллятора падает показывая виртуальный убыток. И наоборот с растущими ступенями, если цена после этого растет, то осциллятор тоже растет... Шкала у осциллятора процентная. Стартует с 100% далее как покажет.

параметры

На графике выше показано окно с параметрами осциллятора. 1,9 и 30  это параметры индикатора, который на графике, такие же параметры и у осциллятора. Есть параметр стартовой даты, он показывает момент, с которого нужно вести расчет. Остальные параметры второстепенные. Если параметры индикатора менять, то будет меняться и итоговое расчетное значение у осциллятора.

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

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

 
Есть статья по Автоматической оптимизации экспертов.
Может поможет в ваших поисках решения.

https://www.mql5.com/ru/articles/4917
Автоматическая оптимизация советника в MetaTrader 5
Автоматическая оптимизация советника в MetaTrader 5
  • www.mql5.com
В нашем советнике Buddy Ilan используются 4 основных параметра. Мы хотели реализовать еженедельную автоматическую оптимизацию этих параметров, чтобы советник максимально соответствовал изменениям на рынке. Нереально запускать такой процесс каждую неделю вручную, поэтому мы попытались найти существующие механизмы для выполнения повторяющихся...
 
Roman:
Есть статья по Автоматической оптимизации экспертов.
Может поможет в ваших поисках решения.

https://www.mql5.com/ru/articles/4917

Спасибо за участие, но есть несколько НО! 

1. Это индикатор.

2. Написан на МТ4.

 
Rustem Bigeev:

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

Можно, но очень много дополнительных вопросов.

Было бы проще на  MT5 - однократный вызов приводит к пересчету точек по всей истории - остается дождаться пересчета буфферов с заданными параметрами и проанализировать их.

Для MT4 нужно вызывать индикатор для вычисления каждой точки. Здесь как раз нужно подумать об разбиении циклов для снижения загрузки индикатора.

В обоих случаях необходимо определиться с критериями оптимизации. 

Мне думается, что проще оптимизировать советник на основе индикатора. Здесь хоть критерии понятны - профит, количество сделок, просадка.