Стратегия тренда на канале Дончиан с двойным подтверждением

Автор:Чао Чжан, Дата: 22-12-2023 10:55:06
Тэги:

img

Обзор

Эта стратегия разработана на основе стандартного индикатора Donchian Channel. Она ждет двух последовательных более высоких максимумов (или более низких минимумов) для подтверждения по умолчанию, прежде чем выдавать торговые сигналы, чтобы избежать того, чтобы быть выбитым рыночными производителями.

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

Для тех, кто не любит короткие позиции, есть также возможность исключить короткие позиции.

Логика стратегии

Стратегия основана на верхней и нижней полосах индикатора Дончианского канала. Верхняя полоса - это самый высокий максимум за последние n бар, в то время как нижняя полоса - самый низкий минимум за последние n бар. Период просмотра по умолчанию n равен 20.

Средняя полоса представляет собой среднее значение верхней и нижней полос и может быть использована для измерения направления тренда.

Когда цена выходит выше верхней полосы, стратегия будет длинной, если не существует существующей длинной позиции.

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

Анализ преимуществ

Преимущества этой стратегии включают:

  1. Индикатор Донкского канала прост и понятен.

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

  3. Период просмотра канала может быть настроен для адаптации к различным рыночным условиям.

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

  5. Код чистый и понятный для дальнейшего развития.

Анализ рисков

Эта стратегия также сопряжена с некоторыми рисками:

  1. Двойное подтверждение может привести к тому, что некоторые торговые возможности будут упущены.

  2. Неправильные настройки периода канала могут привести к чрезмерной частоте или редкости торговли.

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

  4. Необходимо следить за дополнительными рисками, связанными с продажей на коротком счету.

  5. Осторожность необходима при пересадке на задней панели.

Соответствующие решения:

  1. Отключить двойную подтверждение или сократить интервал подтверждения.

  2. Оптимизировать параметры и выбрать подходящие периоды канала.

  3. Установите стоп-лосс/прибыль на разумный предел по сделке.

  4. Обезвредить короткую продажу, и пойти только на длинную.

  5. Проверяйте стратегию в различных рыночных условиях.

Возможности для расширения

Возможности для улучшения включают:

  1. Динамическое регулирование размеров позиций на основе волатильности.

  2. Профильтруйте ложные прорывы на основе показателей интенсивности прорыва.

  3. Использовать механизм задержки, чтобы следить за тенденциями.

  4. Объединяйте другие индикаторы, чтобы определить направление тренда и избежать упущения важных поворотных моментов.

  5. Автооптимизировать параметры с помощью машинного обучения.

Эти улучшения могут еще больше улучшить стабильность и рентабельность стратегии.

Заключение

Это простая, но эффективная стратегия, основанная на механизме двойного подтверждения Дончианского канала.


/*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)

Больше