Главный враг всех алготрейдеров, как известно, просадка. Чего они только не делают, чтобы ее избежать!
— диверсифицируют свою стратегию по 30 инструментам на 10 таймфреймах с 15 наборами параметров
— мучают оптимизатор миллиардами прогонов до тех пор, пока все убыточные сделки не исчезнут
— убирают стопы, включают сетку и добавляют мартина, чтобы просадок не было видно ну хотя бы по балансу
— ну и продолжают, конечно же, поиск Грааля, который обязательно должен расти под 45 градусов вверх 365 дней в году...
Полагаю, все (или почти все) эти приемы либо очень сильно мешают им зарабатывать, либо ведут к неизбежному сливу. Потому что стратегия, которая будет стабильно прибыльной из года в год и имеет ограничение мах. убытка, НЕ МОЖЕТ быть без просадок. Чем сильнее пытаешься от них избавиться, тем выше подгонка под историю, и, как следствие, вероятность слива.
Полагаю, что проблема просадок заключается не в несовершенстве торгового алгоритма, а в неправильном управлении капиталом. Что делает типичный алготрейдер, когда его счет растет? Разумеется, постепенно повышает торговый объем. А что обычно случается со всеми системами (особенно трендовыми) после того, как они дают существенную прибыль? Конечно же, они уходят в просадку! Потому что после любого сильного движения на рынке наступает консолидация, в которой система теряет.
Что получаем в итоге:
период хорошего для системы рынка --> рост счета --> повышение объема --> период плохого рынка --> заход в просадку на повышенном объеме --> повышенный размер просадки --> снижение размера счета --> снижение объема --> более длительный выход из просадки на малом объеме.
Этому подходу можно было бы противопоставить торговлю фиксированным объемом, которая почти всегда дает менее глубокие просадки и более быстрые выходы из них (т.е. более высокий фактор восстановления). Но как тогда вообще повышать объем с ростом депозита?
И здесь конечно же вспоминается нетленная картинка:
Ведь ее можно применять не только к торговле, но и… к управлению капиталом в алготрейдинге!
Например, так:
1. Начнем торговлю фиксированным лотом.
2. Как только будет достигнута минимальная величина просадки, поднимем лот до нового значения баланса (максимального, до начала просадки)
3. Если просадка еще значительно углубится, поднимем лот еще раз.
Тогда сценарий полностью поменяется:
период хорошего для системы рынка --> рост счета --> период плохого рынка --> заход в просадку на малом объеме --> сниженный размер просадки --> снижение размера счета --> повышение объема --> более быстрый выход из просадки на повышенном объеме.
Ладно, хватит болтать, давайте проверим все это на цифрах! Берем вот такую систему за 6 лет (2018-2024) на крипте, начинаем с депозита 8000$ и торгуем фиксированный лот=4 (фикс. размер позиции, если быть точнее, потому что лот конечно же нормируется на цену, иначе риск будет плавать с изменением цены):
1205 сделок. Получаем с учетом комиссий
115 000$ прибыли при просадке
4000$, ФВ=
28.5. Фикс.лот — это своего рода эталон для анализа торговых систем. Любой метод реинвестирования повысит прибыль, но ухудшит отношение прибыли к просадке (ФВ).
Начнем с классического метода, % от депозита. Будем торговать 4 лота на каждые 20 000$ баланса:
Прибыль: 1 686 000 $
Мах просадка: 162 000 $
ФВ: 10.4
Прибыли конечно больше, но фактор резко упал. Качество снизилось.
Что если мы
не будем снижать объем на просадке, чтобы выйти из нее быстрее? Т.е. лот зависит от мах.баланса, а не от текущего:
Это конечно более агрессивный подход, поэтому, чтобы адекватно сравнить его с предыдущим, я снизил стартовый риск таким образом, чтобы получить в итоге такую же прибыль. Тогда мы можем сравнить, какой подход даст меньшую просадку.
Прибыль: 1 690 000 $
Мах просадка: 159 000 $
ФВ: 10.6
Просадка совсем чуть-чуть ниже. Получше, но не убедительно. Давайте попробуем теперь повышать объем до заданного при достижении определенного уровня просадки. Какого? Посмотрим на график просадок фикс.лота (просадки умножены на 10 для масштаба):
Мы видим, что уровень в 800$ захватит подавляющую часть заметных просадок. А уровень 1500$ мог бы быть дополнительным, т.к. он захватывает бОльшую часть более глубоких. Пробуем повышать лот на просадке 800 (для этого мы, разумеется, виртуально считаем эквити на фикс.лоте), опять нормируя риск, чтобы добиться одинаковой прибыли:
Прибыль: 1 680 000 $
Мах просадка: 148 000 $
ФВ: 11.4
Совсем другое дело! Видим значительно повышение ФВ и заметное снижение мах. просадки.
Попробуем повышать риск на просадке в 1000:
Прибыль: 1 680 000 $
Мах просадка: 153 000 $
ФВ: 11
Результат похуже. Пробуем повышать на 1200:
Прибыль: 1 682 000 $
Мах просадка: 156 000 $
ФВ: 10.8
Еще хуже. На 1500:
Прибыль: 1 687 000 $
Мах просадка: 166 000 $
ФВ: 10.2
Снова ухудшение! Очень похоже, что излишняя консервативность не позволяет использовать потенциал стратегии. В последнем варианте частота реинвестирования получается 1-2 раза в год. Видимо, это слишком мало.
А что если на первом значении просадки (800) повышать риск только до половины мах.баланса, а на втором (1500) до максимального? Пробуем:
Прибыль: 1 685 000 $
Мах просадка: 151 000 $
ФВ: 11.1
Тоже хороший результат, очень близкий к лучшему (1 просадка на 800), но все же слабее.
Сведем все результаты в таблицу:
Как видим, лучший результат при разовом реинвесте на просадке 800. Он заметно обходит стандартный. Ближайший к нему на просадках 800 и 1500.
На практике я решил использовать второй результат, потому что он психологически комфортнее (ты знаешь, что если уйдет глубже, тебе есть, что докинуть) и потому что, конечно же, просадки в будущем всегда больше, чем они были в прошлом :) (даже если бы не было переподгонки, а она в какой-то степени всегда неизбежна).
А сейчас оставлю вам код во включаемом файле MQL5, чтобы вы могли попробовать эти стратегии в своих советниках. В самом файле BalanceIncOnDD.mqh (его разумеется в папку /include) выберите из списка нужный вам режим ММ и задайте значения для 1й и 2й просадок:
enum LotCalcMode{AdjLotByBalance, AdjLotByMaxBalance, AdjLotIn1DD, AdjLotIn2DDs}; //варианты ММ
LotCalcMode MMmode=AdjLotByBalance; //режим ММ
#define DDsize1 800 //просадка для первого увеличения лота
#define DDsize2 1500 //для второго
Включите его в код своего советника:
#include <BalanceIncOnDD.mqh>
В функцию OnTick() добавьте расчет ММ по текущему балансу:
void OnTick()
{
LookForBalanceDDs(BalanceNorm);
}
где BalanceNorm — величина баланса, на которую нормируется ваш лот (при Lot=4 торгуется по 4 лота на каждые BalanceNorm баланса, в моем случае +-20k).
Лот для сделки установите следующим выражением:
double currlot=NormalizeDouble(Lot*PriceNorm/Bid, 2);
if(AdjustLotByBalance)currlot=NormalizeDouble(currlot*BalanceToCalcLot/BalanceNorm, 2);
где AdjustLotByBalance это режим роста лота с ростом баланса, а PriceNorm — цена актива, по которой нормируется лот (у меня 3000 для Эфира).
Наконец, в функцию OnTester() добавьте отрисовку графиков с просадками (будет в визуализаторе) и вывод всех случаев появления просадок (в логах) указанных размеров:
double OnTester()
{
OnTesterBalance(!AdjustLotByBalance);
}
Файл с кодом оставляю в блоге mql, здесь нельзя прикрепить его к посту.
В следующей записи я расскажу, как этот подход показал себя в реальной торговле.
С уважением
На форексе подобное лишено смысла. На золоте, индексах тоже плюсует конечно, но по ср. с криптой даже смысла нет торговать…
И вот что-то сильно я сомневаюсь, что с криптой по-другому будет. Точно не в ближайшие лет 10. А если волатильность и начнет снижаться, всегда можно будет найти другую монетку, которая скачет бодрее. На BNB например результаты почти такие же (без переоптимизации).
По самой теме: слишком мало жиру на еще один параметр. RC (aka ФВ) неустойчивый критерий оптимизации, слаб к подгонке.
Это привычка с форекса)) На бирже это называют фикс. размер? Ок, буду знать))
>По самой теме: слишком мало жиру на еще один параметр. RC (aka ФВ) неустойчивый критерий оптимизации, слаб к подгонке
Я не использую шарп, потому что он в разы скачет в MT5, когда просто меняешь размер исходного депо. Это же не нормально. И вообще он очень странно работает при оптимизации...
И вообще я не использую оптимизацию (почти). По ФВ я оцениваю результат. Настраиваю систему я другим образом.
А какие параметры, более устойчивые к подгонке, вам известны?
Товарищ, как я понимаю, забыл учесть комиссии :))) Ну и плюс там специфика самого подхода в том, что такое страшно начинать торговать… (если я правильно понимаю, о ком вы).
Статистика по сделкам полная вот, прибыльных 43%.
Среднее время удержания сделки 21 час:
это не мартингейл. чувак изобрел реинвест и в оптимизаторе нашел лучшие варианты подгона коэффициентов на истории.
Так что это просто аналог стратегии «вход в сделку частями».
Напрашивается включение в портфель разнородных систем на разнородных активах.
Плюс логика самой стратегии, которая максимально понятная и простая, для того чтобы на трендовом рынке скорее всего заработать.
Eth_algotrader, максимально по-разному)
Самый частый способ — просто месячная отсечка, а не глубина просадки. И какие-то действия я предпринимаю, только если на начало нового месяца имею просадку (неважно, -1% или -10%).
Если ставить календарные отсечки, а не по глубине просадки, всё будто бы становится сглаженнее. И обычно успевает измениться негативный характер рынка)
Eth_algotrader, да, исключительно алго) Своя самописная платформа. Крипта. ТФ — обычно использую не единичные, а смешанные (индексные) на одном счёте. Почти всегда миксую только три: D1, H4, H1.
писал о честном тестировании алгоритмов здесь
GOLD, исторические результаты здесь, полагаю, даны в подтверждение гипотезы, озвученной выше. А не вокруг них всё строилось.
Нужно различать.
Или вам больше нравятся гипотезы, озвученные без какой-то подтверждающей визуализации?)
Разницу между тезисом о граальности системы и тезисом о преимуществе одних способов реинвеста перед другими небараны, видимо, тоже не улавливают.
PS: Что самое смешное, система на реале торгует уже 9 месяцев так же, как на тестах.