Геннадий Попов
Элитный участник
FX Mammoth (МАМОНТ) © v5.0: принципиально новый подход и отличные результаты форвард-тестов!
-
FX Mammoth (МАМОНТ) © v5.0
Это 15 версия (только то, что выкладывается). Кажется, я приближаюсь к идеалу.
С каждым разом все сложнее добиться от советника еще больше профита, еще большей устойчивости, еще меньше рисков, еще более быстрой работы и пр.
В чем основное отличие версии 5.0:
1) Окончательно отказался от игры трендов (/импульсов). Торгуя совокупность "флэт+тренд", при переоптимизации мы, конечно, получаем больше профита. Но трендовая составляющая вносит неопределенность в систему. То есть, надежность системы, которая играет также и тренд, заметно ниже.
2) Раньше мы делили сутки на трендовую и флэтовую часть. Сейчас "откатился" до исключительно флэтовой. Но применил инновационный, не побоюсь этого слова, подход.
Раньше мы перебирали часы старта и финиша игры по системе. Теперь по-другому: система играет как бы круглые сутки (только флэт), но мы исключаем определенные часы. Прицельно. По одному часу. И совсем немного.
Такой подход оказался весьма эффективным.
Оказывается, достаточно исключить всего 2-4 часа, чтобы придать системе достаточно стабильности.
Эта версия мамонта как никакие другие хорошо проходит форвард-тесты.
Стабильность во времени - вот главное достоинство нового алгоритма!
3) Переработал коэффициенты.
4) Добавил еще больше свободы при учете закрытых прибыльных/убыточных сделок (когда присваиваем повышающий/понижающий коэффициент каждому часу; и когда рассчитываем перевес убыточных сделок на последней истории закрытых сделок).
5) Ввел TP (SL, как страховка от редких лосей в несколько фигур, но достаточно большой, уже был). Зачем нужен TP: для тестов. Иногда случается, что система "зарабатывает" несколько фигур на одной сделке и это искажает результаты тестирования. Такие прогоны попадают в топ, но они малонадежные из-за этих самых отдельных сверхпрофитных сделок.
6) Ограничил SL и TP минимумом ("если меньше, то минимум"; т.к. SL и TP адаптивные, привязанные к волатильности) и максимумом.
7) Добавил еще один фильтр на последнюю, перед открытием сделки, волатильность. Как и остальные фильтры, этот не отменяет и не разрешает сделку. Он просто немного увеличивает или уменьшает лот. Всего коэффициентов для лота уже 4, причем, некоторые рассчитываются из нескольких условий, некоторые - несколько раз за один проход, а некоторые - постоянно с каждым проходом.
8) Ввел "мягкий мартин". Я не сторонник Мартингейла, поэтому повышающий (нарастающий) коэффициент при убыточных сделках очень незначительный. Это не тот тип мартина, когда каждый раз увеличиваем лот вдвое или больше.
Зачем ввел: существует понятие "асимметричный рычаг" - это когда с динамическим лотом мы после просадки выигрываем меньше, чем проигрываем до этого (при условии двух сделок, убыточной и прибыльной, с равным количеством пунктов убытка и прибыли).
Для нивелирования этого фактора, асимметричного рычага, и введен "мягкий мартин". И он имеет дополнительное ограничение: при достижении определенной границы, коэффициент больше не повышается.
В целом, "мягкий мартин" положительно влияет на систему (но только на эту систему, где достаточно жесткие ограничения при убытках; как на другие - не знаю, надо оценивать риски).
9) Тестирование теперь проходит еще быстрее. Если раньше, в первых версиях, надо было прогонять несколько оптов (до 8), а пара оптов могла давать 625 итераций (4 вместе давали уже 390625 проходов), затем остались только час старта и час финиша (576 проходов), то теперь проходов не более 300, а в среднем 50-75(!).
Всего 50-75 проходов для определения условий торговли по конкретной паре!
10) Самое интересное, количество кода практически не увеличилось. 10-ки изменений от версии к версии - но всё как-то помещается в те же 2 сотни строк. )
---
Как выглядит форвард-тестирование в этой версии.
1) Прогоняем часть времени и берем один из результатов:
2) Проверяем:
3) Добавляем еще время и проверяем:
* Тестировать лучше 2/3 времени, а проверять на 1/3. Либо 3/4 - 1/4 - примерно такие пропорции.
* Если сервер вашего ДЦ переходит на летнее/зимнее время (вдруг), тестирование с таким переходом теряет смысл. Тогда тестируйте участки без перехода.
* Лучше всего тестировать на 5-минутках по контрольным точкам (по 1-минутным котировкам). Т.к. в 5-минутке аж 5 минут. И данный способ дает больше достоверности (по сравнению с другими таймфреймами). Вместо утомительного тестирования на тиках.
* Не все пары хороши. Но отличия объяснимы. Например, пары из одного географического региона дают худшие результаты. В йене, например, тоже мало закономерностей. Зато хорошо работает евро. Хорошо работает золото, хорошо работает австралиец. Хорошо работает то, что по индикаторам FX Matrix (например, по FX Matrix Hours) дает яркую и понятную картинку. Причем, эти пары работают (подтверждается форвард-тестированием), как на длительных временных промежутках, так и на коротких. Закономерности присутствуют и сохраняются.
---
Опты.
По сути, теперь всего один опт (не считая KELLY_PERCENT): это исключаемый час - EXLUDE_HOUR (_*).
Но таких часов я ввел несколько: шесть.
Однако не всегда все 6 приходится задействовать.
Как я уже говорил, флэт играем круглые сутки. Но исключаем отдельные часы.
Так вот, чем меньше часов приходится исключать, тем надежнее пара.
Количество задействованных оптов как бы является своеобразным рейтингом пары.
Если достаточно 1-2 - рейтинг высокий.
Если приходится включать 5-6 оптов, рейтинг низкий, и такая пара, скорее всего, плохо себя покажет в будущем.
* При EXLUDE_HOUR = "-1" - этот опт не учитывается.
* От "-1" до "23" - прогоняем на предмет исключения очередной час.
---
Как быстро тестировать.
Сначала просто, без оптимизации, запускаем тестер на определенной паре.
Смотрим, "достойна" ли она. ))
Если количество сделок сразу ограничено, очень небольшое, значит сова быстро прекратила работу на этой паре.
Но можем попробовать и на ней. Вероятно, что мы просто захватили неудачный период, а сама пара профитная.
Если количество сделок "достаточное", прогоняем опты часов:
1) Подгружаем прилагаемый к эксперту сет. Там уже прописаны диапазоны оптов и шаг, также стоит птичка на первом опте.
2) Запускаем тестер, получаем 25 результатов. Смотрим, хорошо ли они отличаются, т.е. имеет ли смысл исключать определенные часы.
3) В списке результатов оптимизации дважды кликаем на нужный результат. Он автоматически прописывается в опт.
4) Заходим в настройки эксперта, снимаем птичку с этого опта (там уже должен стоять наш час), ставим птичку на следующий опт. Запускаем тест.
5) Далее по кругу.
* Слишком много часов исключать не стоит. Если следующий исключаемый час не дает ощутимого преимущества и тем более где-то ухудшает результаты, лучше остановиться.
Дело в том, что у эксперта должно быть достаточно резерва для закрытия и последующего открытия сделки (переворота). Если мы ограничиваем этот резерв, мы тем самым добавляем неопределенности в торговлю, добавляем энтропию. Кстати, по-этому тренды плохо работают в будущем. Слишком узкие временные интервалы и тренд (импульс) может возникнуть как раньше, так и позже. Ну, а если мы исключаем определенный час (потенциально трендовый) из всего диапазона флэтового времени (24 часа), но в будущем он вдруг оказался флэтовым - не велика потеря. Понимаете разницу?
---
Как теперь выглядят графики:
1.
2.
---
В архиве: FX Mammoth (МАМОНТ) © v5.0 + сет.
Для build 625 и старше.
* Кликнуть на "спасибо" - чего может быть проще... )
-
-
FX Mammoth (МАМОНТ) © v5.0
Это 15 версия (только то, что выкладывается). Кажется, я приближаюсь к идеалу.
С каждым разом все сложнее добиться от советника еще больше профита, еще большей устойчивости, еще меньше рисков, еще более быстрой работы и пр.
В чем основное отличие версии 5.0:
1) Окончательно отказался от игры трендов (/импульсов). Торгуя совокупность "флэт+тренд", при переоптимизации мы, конечно, получаем больше профита. Но трендовая составляющая вносит неопределенность в систему. То есть, надежность системы, которая играет также и тренд, заметно ниже.
2) Раньше мы делили сутки на трендовую и флэтовую часть. Сейчас "откатился" до исключительно флэтовой. Но применил инновационный, не побоюсь этого слова, подход.
Раньше мы перебирали часы старта и финиша игры по системе. Теперь по-другому: система играет как бы круглые сутки (только флэт), но мы исключаем определенные часы. Прицельно. По одному часу. И совсем немного.
Такой подход оказался весьма эффективным.
Оказывается, достаточно исключить всего 2-4 часа, чтобы придать системе достаточно стабильности.
Эта версия мамонта как никакие другие хорошо проходит форвард-тесты.
Стабильность во времени - вот главное достоинство нового алгоритма!
3) Переработал коэффициенты.
4) Добавил еще больше свободы при учете закрытых прибыльных/убыточных сделок (когда присваиваем повышающий/понижающий коэффициент каждому часу; и когда рассчитываем перевес убыточных сделок на последней истории закрытых сделок).
5) Ввел TP (SL, как страховка от редких лосей в несколько фигур, но достаточно большой, уже был). Зачем нужен TP: для тестов. Иногда случается, что система "зарабатывает" несколько фигур на одной сделке и это искажает результаты тестирования. Такие прогоны попадают в топ, но они малонадежные из-за этих самых отдельных сверхпрофитных сделок.
6) Ограничил SL и TP минимумом ("если меньше, то минимум"; т.к. SL и TP адаптивные, привязанные к волатильности) и максимумом.
7) Добавил еще один фильтр на последнюю, перед открытием сделки, волатильность. Как и остальные фильтры, этот не отменяет и не разрешает сделку. Он просто немного увеличивает или уменьшает лот. Всего коэффициентов для лота уже 4, причем, некоторые рассчитываются из нескольких условий, некоторые - несколько раз за один проход, а некоторые - постоянно с каждым проходом.
8) Ввел "мягкий мартин". Я не сторонник Мартингейла, поэтому повышающий (нарастающий) коэффициент при убыточных сделках очень незначительный. Это не тот тип мартина, когда каждый раз увеличиваем лот вдвое или больше.
Зачем ввел: существует понятие "асимметричный рычаг" - это когда с динамическим лотом мы после просадки выигрываем меньше, чем проигрываем до этого (при условии двух сделок, убыточной и прибыльной, с равным количеством пунктов убытка и прибыли).
Для нивелирования этого фактора, асимметричного рычага, и введен "мягкий мартин". И он имеет дополнительное ограничение: при достижении определенной границы, коэффициент больше не повышается.
В целом, "мягкий мартин" положительно влияет на систему (но только на эту систему, где достаточно жесткие ограничения при убытках; как на другие - не знаю, надо оценивать риски).
9) Тестирование теперь проходит еще быстрее. Если раньше, в первых версиях, надо было прогонять несколько оптов (до 8), а пара оптов могла давать 625 итераций (4 вместе давали уже 390625 проходов), затем остались только час старта и час финиша (576 проходов), то теперь проходов не более 300, а в среднем 50-75(!).
Всего 50-75 проходов для определения условий торговли по конкретной паре!
10) Самое интересное, количество кода практически не увеличилось. 10-ки изменений от версии к версии - но всё как-то помещается в те же 2 сотни строк. )
---
Как выглядит форвард-тестирование в этой версии.
1) Прогоняем часть времени и берем один из результатов:
* Если сервер вашего ДЦ переходит на летнее/зимнее время (вдруг), тестирование с таким переходом теряет смысл. Тогда тестируйте участки без перехода.
* Лучше всего тестировать на 5-минутках по контрольным точкам (по 1-минутным котировкам). Т.к. в 5-минутке аж 5 минут. И данный способ дает больше достоверности (по сравнению с другими таймфреймами). Вместо утомительного тестирования на тиках.
* Не все пары хороши. Но отличия объяснимы. Например, пары из одного географического региона дают худшие результаты. В йене, например, тоже мало закономерностей. Зато хорошо работает евро. Хорошо работает золото, хорошо работает австралиец. Хорошо работает то, что по индикаторам FX Matrix (например, по FX Matrix Hours) дает яркую и понятную картинку. Причем, эти пары работают (подтверждается форвард-тестированием), как на длительных временных промежутках, так и на коротких. Закономерности присутствуют и сохраняются.
---
Опты.
По сути, теперь всего один опт (не считая KELLY_PERCENT): это исключаемый час - EXLUDE_HOUR (_*).
Но таких часов я ввел несколько: шесть.
Однако не всегда все 6 приходится задействовать.
Как я уже говорил, флэт играем круглые сутки. Но исключаем отдельные часы.
Так вот, чем меньше часов приходится исключать, тем надежнее пара.
Количество задействованных оптов как бы является своеобразным рейтингом пары.
Если достаточно 1-2 - рейтинг высокий.
Если приходится включать 5-6 оптов, рейтинг низкий, и такая пара, скорее всего, плохо себя покажет в будущем.
* При EXLUDE_HOUR = "-1" - этот опт не учитывается.
* От "-1" до "23" - прогоняем на предмет исключения очередной час.
---
Как быстро тестировать.
Сначала просто, без оптимизации, запускаем тестер на определенной паре.
Смотрим, "достойна" ли она. ))
Если количество сделок сразу ограничено, очень небольшое, значит сова быстро прекратила работу на этой паре.
Но можем попробовать и на ней. Вероятно, что мы просто захватили неудачный период, а сама пара профитная.
Если количество сделок "достаточное", прогоняем опты часов:
1) Подгружаем прилагаемый к эксперту сет. Там уже прописаны диапазоны оптов и шаг, также стоит птичка на первом опте.
2) Запускаем тестер, получаем 25 результатов. Смотрим, хорошо ли они отличаются, т.е. имеет ли смысл исключать определенные часы.
3) В списке результатов оптимизации дважды кликаем на нужный результат. Он автоматически прописывается в опт.
4) Заходим в настройки эксперта, снимаем птичку с этого опта (там уже должен стоять наш час), ставим птичку на следующий опт. Запускаем тест.
5) Далее по кругу.
* Слишком много часов исключать не стоит. Если следующий исключаемый час не дает ощутимого преимущества и тем более где-то ухудшает результаты, лучше остановиться.
Дело в том, что у эксперта должно быть достаточно резерва для закрытия и последующего открытия сделки (переворота). Если мы ограничиваем этот резерв, мы тем самым добавляем неопределенности в торговлю, добавляем энтропию. Кстати, по-этому тренды плохо работают в будущем. Слишком узкие временные интервалы и тренд (импульс) может возникнуть как раньше, так и позже. Ну, а если мы исключаем определенный час (потенциально трендовый) из всего диапазона флэтового времени (24 часа), но в будущем он вдруг оказался флэтовым - не велика потеря. Понимаете разницу?
---
Как теперь выглядят графики:
1.
В архиве: FX Mammoth (МАМОНТ) © v5.0 + сет.
Для build 625 и старше.
* Кликнуть на "спасибо" - чего может быть проще... )
-