Примеры: Визуальная оптимизация прибыльности индикаторов и сигналов - страница 3

 
marketeer:

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

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

Пару замечаний по поводу изменений:

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

2) С "оптимизмом" я бы не заигрывался. исходите из того, что окончательно и однозначно сигнал формируется в самом конце бара, а открываетесь вы в начале следующего (иначе у вас может быть такая же печальная картинка показано как здесь).

 
ForexTools:

Мой собственный вариант уже тоже ушел достаточно далеко от того, что было опубликовано.

Пару замечаний по поводу изменений:

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

2) С "оптимизмом" я бы не заигрывался. исходите из того, что окончательно и однозначно сигнал формируется в самом конце бара, а открываетесь вы в начале следующего (иначе у вас может быть такая же печальная картинка показано как здесь).

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

Даты можно действительно визуализировать - это было бы удобно, но настройки с датами я не менял (остались как было в индикаторе).

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

 
marketeer:

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

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

Итак, прикладываю последнюю версию OptiRunner3. Изменения:

- исправлено несколько ошибок;

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

- добавлен параметр MultiSignal (по-умолчанию false, что соответствует изначальному алгоритму); будучи установленным в true параметр позволяет открывать "сделки" по каждому сигналу на вход, т.е. не игнорирует повторные сигналы, что используется в некоторых торговых стратегиях;

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


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

Удачи!

 
marketeer:

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

чтож так пессимистично? ;)

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

 
ForexTools:

чтож так пессимистично? ;)

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

Это не пессимизм ;-), а в целом наоборот - появилась идея о выходе на новый уровень, так сказать. Осталось реализовать. После чего текущий инструмент останется только для эпизодического контроля и анализа ошибок "автопилота". Если честно, я не вижу большой разницы между рутиной перезапуска тестера и рутиной ручного подбора значений с помощью треугольников (элементы управления другие, но суть одна). Для советников, работающих побарово, время оптимизации достаточно мало. Оно конечно может быть существенно больше, чем у индикатора, но обычно только если используется куча параметров, а оценить время ручного подбора кучи параметров - вряд ли удастся: скорее всего методичный перебор тестером окажется быстрее. Именно поэтому и есть мысль автоматизировать перебор.

Но, так уж получилось, что я успел уже подправить версию 3, так что выкладываю версию 4.

В ней исправлен глюк со случайной неперерисовкой контролов.

А самое главное - сделан вывод графика эквити - разумеется на объектах, т.к. это не индикатор. Параметры:

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

- SqueezeEquityGraph - выбрасывать ли промежуточные бары, на которых не было изменений; если сжатие включено, то график НЕ соответствует времени баров (время и значение эквити указывается в описании объектов); если сжатие не включено, график совпадает с барами, но имеет промежутки там, где нет сделок.

 

Выкладываю последнюю версию OptiRunner5.mq4. Исправлены мелкие баги, добавлена возможность управлять периодом оптимизации с помощью двух вертикальных линий. Если что-то еще и появится, то это возможность анализировать стратегии с заданными уровнями TakeProfit и StopLoss (что уже вошло в библиотеку Optimatic, которую я готовлю для публикации ;-) ).

 
marketeer:

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

как говаривал один классик: "правильной дорогой идете товарищ!", но более полный вариант - это задание нескольких отрезков с одинаково начинающимися именами (например: участок01, участок02,...). Они расставляются на графике ручками и оптимизация выполняется только на барах "внутри" отрезков с нужным префиксом ("участок") который задается в параметрах индикатора. Что это дает? Можно выделить несколько однотипных участков - тогда картина оптимизации будет более "точная". Вторая фишка: находим однотипные участки, метим их отрезками, потом у одного из них имя отрезка меняется на "-участок" и он выпадает из оптимизации. После того как оптимальные параметры по остальным участкам найдены - задаем другое имя префиксов отрезков (в нашем случае - "-участок") и делаем "контрольный выстрел" на контрольном участке ;)

Я в своем рабочем варианте сделал такое - замечательно получилось. К сожалению, выложить этот вариант я не могу, поскольку очень тесно "скрестил" его с другим своим индикатором поиска аналогичных участков истории ft.Dejavu и он перестал быть универсальным. Может вы встроите этот механизм в свой OptiRunner6 ?

 
ForexTools:

более полный вариант - это задание нескольких отрезков с одинаково начинающимися именами (например: участок01, участок02,...). Они расставляются на графике ручками и оптимизация выполняется только на барах "внутри" отрезков с нужным префиксом ("участок") который задается в параметрах индикатора. Что это дает? Можно выделить несколько однотипных участков - тогда картина оптимизации будет более "точная". Вторая фишка: находим однотипные участки, метим их отрезками, потом у одного из них имя отрезка меняется на "-участок" и он выпадает из оптимизации. После того как оптимальные параметры по остальным участкам найдены - задаем другое имя префиксов отрезков (в нашем случае - "-участок") и делаем "контрольный выстрел" на контрольном участке ;)

Я в своем рабочем варианте сделал такое - замечательно получилось. К сожалению, выложить этот вариант я не могу, поскольку очень тесно "скрестил" его с другим своим индикатором поиска аналогичных участков истории ft.Dejavu и он перестал быть универсальным. Может вы встроите этот механизм в свой OptiRunner6 ?

Про первую "фишку" мне не совсем понятно, в чем смысл, т.к. фраза "можно выделить несколько однотипных участков" содержит неявным образом предположение, что трейдер сам на истории определяет отрезки времени, на которых его стратегия должна работать, а на каких нет. В общем случае, когда эти отрезки не есть торговля по строгим временным правилам (например, с 8 утра до 18 вечера), такое тестирование стратегии заведомо некорректно, т.к. в будущем трейдер не сможет выбирать отрезки времени. Иными словами, стратегия должна тестироваться не на выборочных отрезках, а просто на периоде от и до. Если же мы рассматриваем упомянутый случай торговли по расписанию, то он, имхо, гораздо проще кодируется в самой функции генерации сигналов через параметры стратегии, нежели размножением тестовых отрезков.

Про вторую "фишку" я б предположил, что для двух этапов - бэк-теста (настройки) и форвард-теста - достаточно иметь два разных сплошных (с учетом предыдущего замечания) отрезка, т.е. множественность участков для меня опять не ясна. А для двух отрезков вполне хватает текущего функционала - достаточно после настройки на первом отрезке прогнать скрипт на втором отрезке. В этом скрипте так и так используется ручной (и глазной) труд ;-). Другой вопрос, что при полностью автоматической оптимизации, которую делает библиотека Optimatic, имеет смысл производить форвард тест на отрезке, отличном от того, на котором проводилась оптимизации. Библиотека на проверке у модераторов. Я там пока этой возможности не реализовал, а только написал такое TODO в комментариях.

 
marketeer:

Про первую "фишку" мне не совсем понятно, в чем смысл, т.к. фраза "можно выделить несколько однотипных участков" содержит неявным образом предположение, что трейдер сам на истории определяет отрезки времени, на которых его стратегия должна работать, а на каких нет. В общем случае, когда эти отрезки не есть торговля по строгим временным правилам (например, с 8 утра до 18 вечера), такое тестирование стратегии заведомо некорректно, т.к. в будущем трейдер не сможет выбирать отрезки времени.

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

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