Методы проведения валкинг форварда - страница 5

 
Youri Tarshecki:
Да, надо создать тему уже давно - каким должен быть волкинг-форвард в МТ. Вот только руки не доходят. Что-то на эту тему было в фьючерсной части форума недавно, кстати.
Ну некоторые жмутся, и не говорят что им надо или что они сделали, считая, что рассказав про методику они отдадут что-то более ценное, чем сам эксперт. И в чем то они правы. Я например, про свой метод рассказал. Возможно потому, что считаю его несовершенным и желаю его улучшить. Про ваш метод кстати тоже не совсем ясно. Могли бы рассказать пошагово, что за чем делается, что делает ваш автооптимизатор?
 
elibrarius:
Ну некоторые жмутся, и не говорят что им надо, считая, что рассказав про методику они отдадут что-то более ценное, чем сам эксперт. И в чем то они правы. Я например, про свой метод рассказал. Возможно потому, что считаю его несовершенным и желаю его улучшить. Про ваш метод кстати тоже не совсем ясно. Могли бы рассказать пошагово, что за чем делается, что делает ваш автооптимизатор?

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

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

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

 
Youri Tarshecki:

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

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

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

Методика проведения - едина, согласен.

А как насчет выбора единственного результата из 10000+ вариантов из бек теста? По макс. прибыли? Или по макс. прибыли при каком-то уровне просадки (я обираю при просадке < 20%). Или какой-то другой метод отбора?

Критерий выбора результата - единый для всех участков? (Я считаю, что так должно быть) Или по разному?

 
elibrarius:

Методика проведения - едина, согласен.

А как насчет выбора единственного результата из 10000+ вариантов из бек теста? По макс. прибыли? Или по макс. прибыли при каком-то уровне просадки (я обираю при просадке < 20%). Или какой-то другой метод отбора?

Критерий выбора результата - единый для всех участков? (Я считаю, что так должно быть) Или по разному?

Я вам уже отвечал - форвард все рассудит!-) Проверяйте все сами, не верьте никому на слово!

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

 
elibrarius:

Методика проведения - едина, согласен.

А как насчет выбора единственного результата из 10000+ вариантов из бек теста? По макс. прибыли? Или по макс. прибыли при каком-то уровне просадки (я обираю при просадке < 20%). Или какой-то другой метод отбора?

Критерий выбора результата - единый для всех участков? (Я считаю, что так должно быть) Или по разному?


Мои мысли, в том числе по интерфейсу:

Итак, во первых. WF оптимизация отвечает на вопрос: если бы я проводил переоптимизацию моего советника каждые N дней и выбирал бы лучший результат (по какому-то критерию/правилу/фитнесс функции) как бы это отразилось на периоде торговли в M дней?  (выдержка из теории)

 

т.е. разработчик для эксперта опытным путем определяет:
1. Кастомный критерий (вшит в эксперт)  - на усмотрение разработчика - широкое поле для обсуждения (это к вашему по просадке <20%)
2. Периоды N (In Sample For Window) и M (Out Of Sample For Window). Причем интересное поле для исследований на основании каких-то критериев предыдущего периода изменять N и M.
3. Параметры системы которые должны подвергаться оптимизации
4. Диапазон значений параметров в котором необходимо проводить оптимизацию (ограничить можно и программно)

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

Нужен ли WF для других экспертов, разработчики которых не выявили все эти 4 пункта? Считаю что нет.

Т.е. для трейдера было бы неплохо если бы он, желая проверить работу эксперта по рекомендуемому сценарию от программиста выбирал бы walking forward в списке "Режим торговли"


Почему режим торговли? Потому что в итоге мы эмулируем торговлю с стратегией переоптимизации на заданных участках, выборе наилучшего по Custom Max критерию и торговле с определенными на каждом шаге значениями параметров.

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

- определять что выбран WalkForward
- задавать длительность периодов N и M


 
Igor Volodin:

Мои мысли, в том числе по интерфейсу:

Итак, во первых. WF оптимизация отвечает на вопрос: если бы я проводил переоптимизацию моего советника каждые N дней и выбирал бы лучший результат (по какому-то критерию/правилу/фитнесс функции) как бы это отразилось на периоде торговли в M дней?  (выдержка из теории)

 

т.е. разработчик для эксперта опытным путем определяет:
1. Кастомный критерий (вшит в эксперт)  - на усмотрение разработчика - широкое поле для обсуждения (это к вашему по просадке <20%)
2. Периоды N (In Sample For Window) и M (Out Of Sample For Window). Причем интересное поле для исследований на основании каких-то критериев предыдущего периода изменять N и M.
3. Параметры системы которые должны подвергаться оптимизации
4. Диапазон значений параметров в котором необходимо проводить оптимизацию (ограничить можно и программно)

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

Нужен ли WF для других экспертов, разработчики которых не выявили все эти 4 пункта? Считаю что нет.

Т.е. для трейдера было бы неплохо если бы он, желая проверить работу эксперта по рекомендуемому сценарию от программиста выбирал бы walking forward в списке "Режим торговли"


Почему режим торговли? Потому что в итоге мы эмулируем торговлю с стратегией переоптимизации на заданных участках, выборе наилучшего по Custom Max критерию и торговле с определенными на каждом шаге значениями параметров.

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

- определять что выбран WalkForward
- задавать длительность периодов N и M


Прям ностальгия, сколько еще сложностей впереди
 

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

static int step = 0;
static bool lastState = 0; //0 - бэк, 1 - форвард
while(FrameNext(pass,name,id,value,data)) {
   bool is_forward = CheckPass(step, pass); //проверим pass в пуле для step шага
   if (!is_forward) {
     AddPass(step, pass); //добавим pass в пул
     if (lastState == 1) {
        //первый фрейм от нового walk-step'а
        step++;
        lastState = 0;   
     }
     
     //обработка бэка с учетом значения step
   } else {
     lastState = 1;

     //обработка форварда с учетом step'а
   }

}//endwhile
В документации можно добавить пример сохранения и визуализации фреймов для walk-forward режима прогона в тестере, да и в кодобазе, я думаю, появится простой вариант который можно модифицировать под свои цели.
 
Igor Volodin:


 

т.е. разработчик для эксперта опытным путем определяет:
1. Кастомный критерий (вшит в эксперт)  - на усмотрение разработчика - широкое поле для обсуждения (это к вашему по просадке <20%)
2. Периоды N (In Sample For Window) и M (Out Of Sample For Window). Причем интересное поле для исследований на основании каких-то критериев предыдущего периода изменять N и M.
3. Параметры системы которые должны подвергаться оптимизации
4. Диапазон значений параметров в котором необходимо проводить оптимизацию (ограничить можно и программно)

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

Нужен ли WF для других экспертов, разработчики которых не выявили все эти 4 пункта? Считаю что нет.

1. Критерии оптимизации уже есть в тестере, зачем их "вшивать" в эксперт.

2. Изменение и соотношение бэка к форварду  - это ТОЖЕ предмет проверки на форварде.  При каком соотношении форвард оказывается лучше, то и берем для дальнейшей работы.

3 Параметры для оптимизации - пользовательские переменные. Предмет тестирования - сам код.

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

 

Откуда очевидность, что это отдельный класс экспертов? По-моему этот класс включает ВСЕ эксперты, поскольку ВСЕ без исключения эксперты без переоптимизации или переобучения сливают.  Форвард просто показывает, как быстро это происходит.

 
Igor Volodin:

Мои мысли, в том числе по интерфейсу:

Итак, во первых. WF оптимизация отвечает на вопрос: если бы я проводил переоптимизацию моего советника каждые N дней и выбирал бы лучший результат (по какому-то критерию/правилу/фитнесс функции) как бы это отразилось на периоде торговли в M дней?  (выдержка из теории)

 

т.е. разработчик для эксперта опытным путем определяет:
1. Кастомный критерий (вшит в эксперт)  - на усмотрение разработчика - широкое поле для обсуждения (это к вашему по просадке <20%)
2. Периоды N (In Sample For Window) и M (Out Of Sample For Window). Причем интересное поле для исследований на основании каких-то критериев предыдущего периода изменять N и M.
3. Параметры системы которые должны подвергаться оптимизации
4. Диапазон значений параметров в котором необходимо проводить оптимизацию (ограничить можно и программно)

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

Нужен ли WF для других экспертов, разработчики которых не выявили все эти 4 пункта? Считаю что нет.

Т.е. для трейдера было бы неплохо если бы он, желая проверить работу эксперта по рекомендуемому сценарию от программиста выбирал бы walking forward в списке "Режим торговли"


Почему режим торговли? Потому что в итоге мы эмулируем торговлю с стратегией переоптимизации на заданных участках, выборе наилучшего по Custom Max критерию и торговле с определенными на каждом шаге значениями параметров.

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

- определять что выбран WalkForward
- задавать длительность периодов N и M


Думаю самое лучшее - сделать анализ WF сторонними средствами, потом показать MQ и попросить встроить в тестер.

Но что-то мне кажется это будет сложно. Я например без БД не решился. Простой подсчет:
1 проход оптимизации дает 10000+ строк
+ 1 проход форварда - еще 10000+ строк
=20000+ строк
* например на 12 - годовой участок с помесячной переоптимизацией

=240 тыс строк

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

Пока еще не сделал, но скорее всего введу фильтры по уровню (например просадка <20%) + сортировка (макс прибыль). Фильтр скорее всего будет не один.

В терминале можно оперировать только файлами и массивами, что намного более трудоемко, чем SQL запрос.

Можно конечно к системе на МТ5 приделать и БД. Но это будет не масштабируемое решение, т.к. простому юзеру это будет оч. сложно. Я для себя делаю на сайте - загрузка файлов бек и форвардов через форму в БД с последующим анализом.

К тому же я не увидел возможности в МТ5 выводить на экран таблицы, как в броузере. Видимо и в этом будет запарка.

В общем, боюсь что в МТ5 - WF не будет никогда.

 
Youri Tarshecki:

1. Критерии оптимизации уже есть в тестере, зачем их "вшивать" в эксперт.

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

дальше, по пунктам не вижу отличий от моего списка.

Откуда очевидность, что это отдельный класс экспертов? По-моему этот класс включает ВСЕ эксперты, поскольку ВСЕ без исключения эксперты без переоптимизации или переобучения сливают.  Форвард просто показывает, как быстро это происходит.

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

Причем N и M задать в интерфейсе тестера нельзя - я так предложил, только программно. Если видите как понятно для всех внести в интерфейс тестера настройки walk-а, а они тогда уже будут фиксированными - периоды N и M введет пользователь (хотя ваше "Изменение и соотношение бэка к форварду  - это ТОЖЕ предмет проверки на форварде" не сработает), предложите свой вариант.