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

 

Привет всем.

Меня зовут Александр, недавно начал торговать на реале, до этого около полу-года оттачивал стратегию на демо.

Написал ряд собственных индикаторов, разработал правила ТС.


Давно читаю этот форум (ну примерно с пол-года), но не любитель виртуального общения, поэтому не регался, а тут вот заел вопрос

озвученный в теме сообщения.

Вот такой график:

Относительная просадка около 11%



гладкий график кривой роста доходности


Хорошая кривая почти приближенная к прямой, направлена вверх под хорошим таким углом :) Все нравиться. Да только дело в том, что я на неё наткнулся практически случайно, потому-что

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


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


Собственно все :)

 
StukovAlexStv писал(а) >>

Привет всем.

Меня зовут Александр, недавно начал торговать на реале, до этого около полу-года оттачивал стратегию на демо.

Написал ряд собственных индикаторов, разработал правила ТС.


Давно читаю этот форум (ну примерно с пол-года), но не любитель виртуального общения, поэтому не регался, а тут вот заел вопрос

озвученный в теме сообщения.

Вот такой график:

Относительная просадка около 11%

гладкий график кривой роста доходности

Хорошая кривая почти приближенная к прямой, направлена вверх под хорошим таким углом :) Все нравиться. Да только дело в том, что я на неё наткнулся практически случайно, потому-что

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

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

Собственно все :)

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

Для анализа можно брать регрессию кривой баланса и СКО. Как раз СКО и даст нам нашу гладкость. Чем оно меньше, тем глаже. Но там появятся другие вопросы.

 

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

Тогда вот какой момент (и, да, теперь мне становится стыдно) я хороший программист, но, увы, совершенно никудышный математик.

Подскажите как считать регрессию и СКО. Т.е. осветите подробнее вот этот момент "Для анализа можно брать регрессию кривой баланса и СКО. Как раз СКО и даст нам нашу гладкость."


P.S.: правда чтобы рассчитать совершенно корректную линейную регрессию, нам надо знать всю историю развития депозита, соответственно ТС должна отработать до конца и, соответственно, не будет отсеяна генетическим алгоритмом. Тупик :(

 
StukovAlexStv писал(а) >>

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

Тогда вот какой момент (и, да, теперь мне становится стыдно) я хороший программист, но, увы, совершенно никудышный математик.

Подскажите как считать регрессию и СКО. Т.е. осветите подробнее вот этот момент "Для анализа можно брать регрессию кривой баланса и СКО. Как раз СКО и даст нам нашу гладкость."

Хорошо. ПОдготовлю код в удобочитаемом виде. Тем более все равно я его уже выкладывал.

Надо убрать лишнее, добавить комментарии. Сделать инструкцию по использованию.

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

 

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

но я делаю это так: на каждом прогоне смотрю максимальное отклонение в % кривой баланса от прямой между первым и последним значением баланса.

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

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

 
beruk писал(а) >>

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

но я делаю это так: на каждом прогоне смотрю максимальное отклонение в % кривой баланса от прямой между первым и последним значением баланса.

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

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

хороший вариант.

 

Уважаемый Vinin!


Подготовить исходники, оформить их и т.д. это правильно конечно, но если вы выложите функции с хоть каким-нибудь описанием - это будет просто здорово :)


Уважаемый beruk

Замечательный способ, спасибо! На реале работает?

Впринципе все понятно, только " затем делю прибыль на максимальное пропадение и на полученное значение отклонения" вот это как? Я примерно понимаю и конечно-же придумаю какой-нить свой критерий, но что тут вы считаете?

Пропадения - это видимо когда график баланса опускается ниже прямой?

Опять же способ хорош для полного просчета всех параметров, но никак не для генетического поиска. Увы :(

Хотя, повторюсь, идея отличная, спасибо за совет. Сегодня вечером попробую сделать!

 

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

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

 
А на сколько скорость выполненеия программы на MQL5  ниже скажем чем на Си .Разработчики насколько помню заявляли про такую же скорость . Если различия не очень можно и на MQL  проект начинать, первая ласточка альпари вроде как бета тестирование начинает .И полноценный тестер особой необходимости нет, по ценам открытия вполне приемлемые результаты дает .
 
ivandurak писал(а) >>
А на сколько скорость выполненеия программы на MQL5 ниже скажем чем на Си .Разработчики насколько помню заявляли про такую же скорость . Если различия не очень можно и на MQL проект начинать, первая ласточка альпари вроде как бета тестирование начинает .И полноценный тестер особой необходимости нет, по ценам открытия вполне приемлемые результаты дает .

Тестера все равно пока нету

 
Vinin >>:

Тестера все равно пока нету


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

С уважением .