Оптимизация и Тестирование вне выборки.

 

Добрый день всем.

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

Появилась мысль по оптимизации экспертов вне выборки. Предположим, мы "зарядили" советника на оптимизацию по ряду параметров. Задали дату. Например с 1 янв. 2006 по первое января 2007г.

Получили несколько тысяч выриантов. После чего, сохраняем страничку РЕЗУЛЬТАТЫ ОПТИМИЗАЦИИ в виде отдельного файла. Далее задаем для оптимизации след. период истории, т.е. прибавляем месяц или два или сколько надо.

Т.е. в нашем случае, ставим например с 1 янв. 2007г. по 1 июня 2007г. И опять включаем оптимизацию. Точнее это будет не совсем оптимизация. Оптимизатор должен брать параметры не в СВОЙСТВАХ ЭКСПЕРТА, а ПЕРЕбрать по очереди наборы параметров из того файла, что мы сохранили после первой оптимизации. После этой второй оптимизации у нас остаются лишь те вАрианты, которые дали прибыль вне выборки!

В результате, в идеале, мы получаем "идеальные параметры" для последующей работы и тестирования в онлайне!

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

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

 
leonid553, идешь в правильном направлении, так как существующая "оптимизация" без тестирования на данных out-of-sample - это чистейший curve fit. Но основной алгоритм должен быть сложнее, примерно как в нейросетевых программах. Вся "оптимизация" должна идти сразу на всех наборах данных одновременно (это пожелание разработчикам). Можно, конечно, работать только с двумя наборами данных, но лучше предусмотреть три - обучающий (А), валидирующий (В) и тестирующий (С). Ну а в существующих условиях придется работать примерно как ты предлагаешь.
 
Можно эксперту указать файл с параметрами, которые потом будет использовать при оптимизации. Или можно проще, оптимизировать на одном промежутке времени, потом на другом, сохранить все в экселе и сравнить :-)
 
dimontus:
Или можно проще, оптимизировать на одном промежутке времени, потом на другом, сохранить все в экселе и сравнить :-)
Нет, dimontus, так не пойдет. Два разных curve fit на разных данных к добру не приведут.
 
Так если они будут совпадать, т.е. одни и те же параметры на разных временных интервалах дают схожие результаты, разве это не то что хочет автор ветки?
 
Какой смысл делать curve fit на втором, если можно просто просеять перспективные наборы оптимизации на первом через второй?
 
В смысле?
 
я пробовал следующий вариант:
тестирую советника на всем доступном периоде,выбираю худший по матожиданию отрезок (провал на графике) и оптимизирую уже именно его,этот худший интервал
руками отсеиваю (на сколько это возможно) локальные экстремумы
а вот далее, рутинная работа-данные оптимизации худшего отрезка подставить  в оптимизатор и прогнать советника с этими данными на всем доступном интервале
из полученного выбираю мясо...:-)
 

В свете всего сказанного пока видится такой путь :

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

Каждому набору придать свой порядковый номер. А потом просто вставляем этот дополнительный советник в тестер вместо первого, и вне выборки оптимизируем его, причем параметром оптимизации будет ПОРЯДКОВЫЙ НОМЕР вставленных наборов!

Может это будет чуть канительно, но все же намного лучше чем вручную вне выборки...

Вот только нужно предусмотреть универсальность этого дополн. советника .

 
Логично, leonid553. Как сваяешь - кинь его в Code Base или сюда, если не жалко будет. Наверняка многие такое дело уже хотят... Я давно уже над этим думаю, просто руки не доходят. Только с параметрами оптимизации на out-of-sample надо еще подумать, так как надо еще как-то учесть результаты тестирования на первом наборе данных.
 
leonid553:

В свете всего сказанного пока видится такой путь :

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

Каждому набору придать свой порядковый номер. А потом просто вставляем этот дополнительный советник в тестер вместо первого, и вне выборки оптимизируем его, причем параметром оптимизации будет ПОРЯДКОВЫЙ НОМЕР вставленных наборов!

Может это будет чуть канительно, но все же намного лучше чем вручную вне выборки...

Вот только нужно предусмотреть универсальность этого дополн. советника .

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