Эта стратегия разработана на основе стандартного индикатора Donchian Channel. Она ждет двух последовательных более высоких максимумов (или более низких минимумов) для подтверждения по умолчанию, прежде чем выдавать торговые сигналы, чтобы избежать того, чтобы быть выбитым рыночными производителями.
Стратегия также предусматривает возможность отключения механизма двойного подтверждения, чтобы он мог выдавать торговые сигналы сразу же после появления новых максимумов или минимумов.
Для тех, кто не любит короткие позиции, есть также возможность исключить короткие позиции.
Стратегия основана на верхней и нижней полосах индикатора Дончианского канала. Верхняя полоса - это самый высокий максимум за последние n бар, в то время как нижняя полоса - самый низкий минимум за последние n бар. Период просмотра по умолчанию n равен 20.
Средняя полоса представляет собой среднее значение верхней и нижней полос и может быть использована для измерения направления тренда.
Когда цена выходит выше верхней полосы, стратегия будет длинной, если не существует существующей длинной позиции.
Чтобы отфильтровать ложные прорывы, по умолчанию включена опция
Преимущества этой стратегии включают:
Индикатор Донкского канала прост и понятен.
Механизм двойного подтверждения эффективно отфильтровывает ложные утечки и избегает ловушки.
Период просмотра канала может быть настроен для адаптации к различным рыночным условиям.
Опция короткой продажи удовлетворяет потребностям различных инвесторов.
Код чистый и понятный для дальнейшего развития.
Эта стратегия также сопряжена с некоторыми рисками:
Двойное подтверждение может привести к тому, что некоторые торговые возможности будут упущены.
Неправильные настройки периода канала могут привести к чрезмерной частоте или редкости торговли.
Долгие периоды хранения могут не способствовать эффективному контролю рисков.
Необходимо следить за дополнительными рисками, связанными с продажей на коротком счету.
Осторожность необходима при пересадке на задней панели.
Соответствующие решения:
Отключить двойную подтверждение или сократить интервал подтверждения.
Оптимизировать параметры и выбрать подходящие периоды канала.
Установите стоп-лосс/прибыль на разумный предел по сделке.
Обезвредить короткую продажу, и пойти только на длинную.
Проверяйте стратегию в различных рыночных условиях.
Возможности для улучшения включают:
Динамическое регулирование размеров позиций на основе волатильности.
Профильтруйте ложные прорывы на основе показателей интенсивности прорыва.
Использовать механизм задержки, чтобы следить за тенденциями.
Объединяйте другие индикаторы, чтобы определить направление тренда и избежать упущения важных поворотных моментов.
Автооптимизировать параметры с помощью машинного обучения.
Эти улучшения могут еще больше улучшить стабильность и рентабельность стратегии.
Это простая, но эффективная стратегия, основанная на механизме двойного подтверждения Дончианского канала.
/*backtest start: 2022-12-15 00:00:00 end: 2023-12-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Donchian Channels", shorttitle="DC", overlay=true, initial_capital=10000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, calc_on_every_tick=true) length = input(20, minval=1) lower = lowest(length) upper = highest(length) basis = avg(upper, lower) bool inShortPos = false bool inLongPos = false bool wait4confirmation = input(true, title="Wait for double confirmation?") bool doShort = input(true, title="Include short positions") plot(basis, "Basis", color=#FF6D00) u = plot(upper, "Upper", color=#2962FF) l = plot(lower, "Lower", color=#2962FF) fill(u, l, color=color.rgb(33, 150, 243, 95), title="Background") //if(inShortPos == false and inLongPos == false) if(not inLongPos and upper > upper[1]) if(wait4confirmation) if(not inLongPos and upper > upper[1] and upper[1] > upper[2]) strategy.close("Short", true) strategy.entry("Buy", true) else strategy.close("Short", true) strategy.entry("Buy", true) else if(not inShortPos and lower < lower[1]) if(wait4confirmation) if(not inShortPos and lower < lower[1] and lower[1] < lower[2]) strategy.close("Buy", true) if(doShort) strategy.entry("Short", true) else strategy.close("Buy", true) if(doShort) strategy.entry("Short", true)