Стратегия прорыва в канале Дончиана - это ценовое действие и тренд после прорыва в торговой стратегии.
Основная логика этой стратегии заключается в следующем:
Используйте функции Ta.highest и Ta.lowest для вычисления максимального максимума и минимального минимума за определенный период времени (например, 60 бар) для построения верхней и нижней полос Дончианского канала.
Когда цены выходят выше верхней полосы, это указывает на то, что может начаться восходящий тренд, так что займите длинный на следующих барах, открытых после выхода верхней полосы.
Как только цены опускаются ниже верхней полосы или поднимаются выше нижней полосы, это указывает на изменение тренда, поэтому сглаживайте существующие длинные или короткие позиции.
Чтобы контролировать риски, установите стоп-лосс по цене входа минус/плюс один минимальный тик после начала длинных/коротких позиций.
Такой вид стратегии прорыва канала является простым и прямолинейным, учитывая как ценовое движение, так и тенденцию, легко выполняемым и стабильным.
Эта стратегия имеет несколько преимуществ:
Логика ясна, проста и легко понятна, с высокой эффективностью.
Использование Дончианского канала для определения направления тренда может эффективно отфильтровать шум и идентифицировать надежные сигналы прорыва.
Разумная установка стоп-лосса после входа может хорошо контролировать однократные убытки.
Независимо от рыночных условий, стратегия может торговать вместе с трендом, как только произойдет действительный прорыв и поймать потенциальные большие движения.
Очень мало параметров, не склонны к переустановке, с большим пространством настройки и высокой пластичностью.
Эта стратегия также сопряжена с некоторыми рисками:
Как стратегия, следующая за трендом, она не может поймать обратные движения.
Стоп-лосс слишком близко может быть остановлен краткосрочными колебаниями цен.
Неправильное установление длины канала увеличивает вероятность ложного прорыва.
Некоторые противодействия:
Включайте другие показатели для выявления потенциальных изменений, избегайте слепого следования тенденциям.
Используйте разумную остановку, чтобы зафиксировать прибыль, вместо того, чтобы придерживаться первоначального жесткого остановки.
Испытайте различные значения параметров, чтобы найти оптимальную комбинацию.
Есть возможности для дальнейшей оптимизации:
Попробуйте двойную стратегию прорыва на канале Дончиана, один для входа и один для остановки потерь/прибыли.
Только после того, как прорыв превысит определенное количество тиков, чтобы отфильтровать ложные прорывы.
Добавьте фильтр объема или волатильности, чтобы избежать плохих сделок, когда цены сильно колеблются.
Попробуйте различные стратегии удержания, такие как следование тренду или среднее изменение в сочетании для достижения лучших результатов.
Добавить модули управления рисками для ограничения максимальных суточных потерь, максимального вывода и т.д.
Подводя итог, Стратегия прорыва канала Дончиана - это очень практичная краткосрочная стратегия следования трендам. Она определяет потенциальные изменения тренда посредством ценового действия и использует прорывы канала для вступления в сделки. Логика проста и проста в исполнении и может достичь приличных результатов на различных рынках. При дальнейшей оптимизации, такой как настройка параметров, механизмы остановки потери, идентификация обратного движения и т. Д., можно ожидать значительного повышения производительности.
/*backtest start: 2023-11-03 00:00:00 end: 2023-12-03 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // Step 1. Define strategy settings strategy(title="Price action and breakout Channel Forexrn", overlay=true, pyramiding=0, initial_capital=100000, commission_type=strategy.commission.cash_per_order, commission_value=4, slippage=2) dochLen = input.int(60, title="Price action and breackout Channel Forexrn") // Position sizing inputs usePosSize = input.bool(true, title="Use Position Sizing?") atrLen = input.int(10, title="ATR Length") atrRiskOffset = input.float(4, title="ATR Risk Offset Multiple", step=0.25) maxRisk = input.float(2, title="Max Position Risk %", step=.25, minval=0.25, maxval=15) maxExposure = input.float(10, title="Max Position Exposure %", step=1, minval=1, maxval=100) marginPerc = input.int(10, title="Margin %", minval=1, maxval=100) // Step 2. Calculate strategy values upperband = ta.highest(high, dochLen)[1] lowerband = ta.lowest(low, dochLen)[1] // Calculate position size riskEquity = (maxRisk * 0.01) * strategy.equity riskTrade = (ta.atr(atrLen) * atrRiskOffset) * syminfo.pointvalue maxPos = ((maxExposure * 0.01) * strategy.equity) / ((marginPerc * 0.01) * (close * syminfo.pointvalue)) posSize = usePosSize ? math.min(math.floor(riskEquity / riskTrade), maxPos) : 1 // Step 3. Output strategy data plot(upperband, color=color.green, linewidth=2, title="DoCh Upperband") plot(lowerband, color=color.red, linewidth=2, title="DoCh Lowerband") // Step 4. Determine trading conditions tradeWindow = true tradeAllowed = tradeWindow and bar_index > dochLen // Step 5. Submit entry orders if tradeAllowed if strategy.position_size < 1 strategy.entry("EL", strategy.long, qty=posSize, stop=upperband + syminfo.mintick) if strategy.position_size > -1 strategy.entry("ES", strategy.short, qty=posSize, stop=lowerband - syminfo.mintick) // Step 6. Submit exit orders if not tradeWindow strategy.close_all()