Вопрос по самооптимизации

 

Вообщем надо прооптимизировать в автоматическом режиме 2 переменные примерно 2000 проходов за 2 месяца к примеру или за 1 месяц. При прямом переборе весь процесс займет к примеру 20 минут. 
Думаю что для этого подойдут службы. Потому как через сколько остановится OnTimer не понятно. 

Соответсвенно вопрос правильно ли я мыслю про Servises ? и как запустить службу из советника и получить результаты в советник ? 

 
Dmitiry Ananiev:

Вообщем надо прооптимизировать в автоматическом режиме 2 переменные примерно 2000 проходов за 2 месяца к примеру или за 1 месяц. При прямом переборе весь процесс займет к примеру 20 минут. 
Думаю что для этого подойдут службы. Потому как через сколько остановится OnTimer не понятно. 

Соответсвенно вопрос правильно ли я мыслю про Servises ? и как запустить службу из советника и получить результаты в советник ? 

Разве это не тот же советник без привязки к графику? Скорее всего, терминал подвиснет эти на 20 минут, поэтому можно с таким же успехом делать оптимизацию прямо в текущем советнике.

Я когда-то делал подобное - задачу разбивал на кусочки - она выполнялась дольше (в разы!), но терминал не вис.

 

Как минимум, три варианта есть.

  1. Автооптимизирующийся советник нужно оценить в Тестере.
  2. Автооптимизирующийся советник только для реала.
  3. Автооптимизирующийся советник должен удовлетворять Маркет-требованиям. В частности, без DLL.
 
fxsaber:

Как минимум, три варианта есть.

  1. Автооптимизирующийся советник нужно оценить в Тестере.
  2. Автооптимизирующийся советник только для реала.
  3. Автооптимизирующийся советник должен удовлетворять Маркет-требованиям. В частности, без DLL.

Ну в тестере в любом случае нужно посмотреть как будет рабоать. 
ДА и в данном случае использование ДЛЛ не критично. Не для Маркета же все это делается а для себя ! 

 

Ввиду того что под это дело можно арендовать скажем 6-8 ядерный ВПС , то соответсвенно можно использовать много поточность. А вот как это реализовать на MQL5 ? 

 
Dmitiry Ananiev:

Ну в тестере в любом случае нужно посмотреть как будет рабоать. 
ДА и в данном случае использование ДЛЛ не критично. Не для Маркета же все это делается а для себя ! 

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

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

После чего на основе этого файла написать ТС, которая будет считывать соответствующий текущему  времени набор входных параметров.


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


ЗЫ Самое хреновое и распространенное, это когда ТС при таком простом исследовании показала плохой результат. Тут уже нужно либо включать свой вечный оптимизм, либо приписывать к ТС клеймо.

 
fxsaber:

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

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

После чего на основе этого файла написать ТС, которая будет считывать соответствующий текущему  времени набор входных параметров.


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

Вот не уверен что это самое простое решение. А не проще ли сразу написать самооптимизируемый советник? надо только чтоб он не подвешивал терминал. и не обрывался. 
Как я понял Igor Zakharov то можно запускать самооптмизатор в виде функции из Таймера. Так правильно будет? 

 
Dmitiry Ananiev:

Вот не уверен что это самое простое решение. А не проще ли сразу написать самооптимизируемый советник? надо только чтоб он не подвешивал терминал. и не обрывался. 
Как я понял Igor Zakharov то можно запускать самооптмизатор в виде функции из Таймера. Так правильно будет? 

Я не могу поручится за то, что в вашем случае получится избежать зависаний, т.к. по цифрам в первом посте один проход 0,5...1 сек. Довольно долго.

Но в целом да, так я и делал: OnTimer() с частотой в 3-4 раза больше, чем время проходов за один вызов.

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

 
Dmitiry Ananiev:

Вот не уверен что это самое простое решение. А не проще ли сразу написать самооптимизируемый советник?

Нет, это гораздо сложнее. При этом есть два варианта.

  1. Через DLL, но при этом нельзя будет гнать в Тестере.
  2. Без DLL. И можно будет гнать в Тестере. Но это много сложнее варианта выше.

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


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

Если Тестер, то самооптимизация без стороннего запуска. Иначе - самозапуск.

Плюсом такого подхода является отсутствие DLL и возможность исследования в Тестере. Минус - сложность реализации.

Причина обращения: