Как вы проводите оптимизацию? (варианты в первом посте)

 

1. Задаете все возможные варианты.
Например у первого параметра может быть 1000 вариантов, у второго параметра 100 вариантов.
Задаете все эти варианты с шагом 1, итого 100 000 вариантов.
Ставите на оптимизацию на сутки.


2. Прореживание.
Выбираете шаг оптимизации.
Пример. оптимизация по 1 параметру. Он может принимать значения от 1 до 1000.
Выбираете шаг не 1, а 10, и таким образом ускоряете процесс оптимизации.


3. Метод сита
Пример. Нужно провести оптимизацию по одному параметру. он может принимать значения от 1 до 1000.


Сначала оптимизируете сотни (с шагом 100). То есть варианты параметра будут такими: 100, 200, 300, 400 .... 1000
Результат показал, что наилучшие варианты - это 200 и 300.


Потом проводите оптимизацию между этими 200 и 300. Оптимизируете десятки (с шагом 10).
Параметры будут выглядеть таким образом: 200, 210, 220 ... 300
Результат показывает лучшие параметры это 270 и 280.


Потом оптимизируете единицы. В диапазоне между 270 и 280. Это будут: 270, 271, 272 ... 280.
Лучшим вариантом оказывается 273.


4. Генетический алгоритм



Можете предложить какие-то свои способы?

 

Если много параметров и много значений в сумме получается при оптимизации, то одновременно варианты 3 и 4.

Если параметров немного, от 1 до 4 например, то вариант 3.

 

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

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

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

 
Georgiy Merts:

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

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

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

При 2-3 параметрах генетика смысла не имеет.

Раньше тоже подобным образом в несколько этапов оптимизировал, потом понял, что это пустая трата времени. Лучше написать нормальный OnTester(), и потом просто на нескольких MT (от 4 до 8) одновременно генетику запускать.

Но иногда для проверки отдельные параметры прямым перебором прогоняю в дополнение к генетике, когда новую идею проверить нужно, например.
 
Sergey Basov:

При 2-3 параметрах генетика смысла не имеет.

Раньше тоже подобным образом в несколько этапов оптимизировал, потом понял, что это пустая трата времени. Лучше написать нормальный OnTester(), и потом просто на нескольких MT (от 4 до 8) одновременно генетику запускать.

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

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

 
Georgiy Merts:

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

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

Тоже так думал, но оказалось что через нормально написанный OnTester() "статистические артефакты" и "неустойчивые варианты" можно легко отсеять. Но генетика бывает ошибается, поэтому MT несколько нужно, чтобы время зря не терять.

Поэтапная оптимизация гарантирует только потерю времени, имхо.

Это если набор рабочих параметров и разброс диапазонов значений известен уже хотя бы примерно. Если система в стадии разработки, то конечно можно и поэтапно добавлять-оптимизировать параметры, и сравнивать результаты.
 
Свой вариант: без оптимизатора, вручную. И считаю это единственно правильным решением.))
 
Yuriy Asaulenko:
Свой вариант: без оптимизатора, вручную. И считаю это единственно правильным решением.))

Возможно и правильное, но скучное. ))

 
Sergey Basov:

Возможно и правильное, но скучное. ))

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

Оптимизирую генетическим перебором постоянным лотом. И проблема не в том каким образом оптимизироваться что отбирать для работы. 
Практически любая ТС не лишена переоптимизации. 
Длина участка - в принципе не так важна. А вот количество сделок- очень критично. Как показала Если сделок больше хотя бы 200, то тест более менее правдивый. 
После самой оптимизации выбираем сет. Для этого лучше использовать не оптимизированный участок инструмента. Если поведение баланса более менее совпадает с кривой роста баланса на оптмиимзируемом участке то сет подходит. 

В МТ4 надо учитывать ролловер. Я например исключаю 1 час после ролловера из торговли. 

Ну и последний этап проверить как будет расти баланс если kn будет зависеть от размера депозита. 

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