Стратегия двойного прорыва в канале Дончиана - это стратегия прорыва, основанная на каналах Дончиана. Она использует быстрые и медленные каналы Дончиана для построения длинных и коротких торговых сигналов. Когда цена проходит через медленный канал, открывайте длинные или короткие позиции. Когда цена проходит через быстрый канал, закрывайте позиции. Стратегия также устанавливает условия получения прибыли и остановки потери.
Стратегия двойного прорыва из Дончианского канала основана на двух параметрах:Период медленного Дончианского каналаиПериод быстрого Дончианского каналаСтратегия сначала рассчитывает верхнюю и нижнюю полосы двух Дончианских каналов.
Сигнал длинного входапрорыв над верхней полосойсволатильность выше порогового значенияСигнал короткого входаразбивка ниже нижней полосысволатильность выше порогового значения.
Сигнал выхода длинного стоп-лоссаразбивка ниже нижней полосыСигнал выхода с короткой остановкой - этопрорыв над верхней полосой.
Стратегия также устанавливаетполучать прибыльПо умолчанию коэффициент получения прибыли составляет 2%, то есть получение прибыли, когда движение цены достигает 2%.
Стратегия двойного прорыва в канале Дончиан имеет следующие преимущества:
Дизайн двойного канала может улавливать сигналы тренда как из более длинных, так и из более коротких временных рамок, что позволяет получать более точные записи.
Условие волатильности позволяет избегать частой торговли на рынках с ограниченным диапазоном.
Всеобъемлющие настройки сбора прибыли и остановки убытков блокируют частичную прибыль и уменьшают убытки.
Простая и понятная логика стратегии, легко понятная и реализуемая.
Настраиваемые параметры подходят для различных продуктов и торговых предпочтений.
Стратегия двойного прорыва из Дончианского канала также сопряжена с некоторыми рисками:
Дизайн двойного канала чувствителен и может генерировать ложные сигналы. Более широкие каналы или регулируемые параметры волатильности могут уменьшить ложные сигналы.
На волатильных рынках стоп-лосс может запускаться слишком часто.
Фиксированный процент получения прибыли не позволяет максимизировать прибыль.
Реальная эффективность торговли может отличаться от ожиданий от обратного теста. Требует тщательной проверки и корректировки параметров при необходимости.
Стратегия двойного прорыва каналов Дончиа может быть оптимизирована в нескольких аспектах:
Проверьте больше комбинаций периодов, чтобы найти оптимальные параметры.
Попробуйте различные показатели волатильности, такие как ATR, чтобы найти наиболее стабильный показатель.
Установите ограничение на количество записей, чтобы избежать потерь в конце тренда.
Попробуйте динамическую прибыль, чтобы получить более высокую прибыль.
Включить другие показатели для фильтрации записей и повышения точности, например объем.
Оптимизируйте модели управления деньгами, такие как фиксированное размеры позиций для лучшего контроля рисков.
В заключение, Стратегия двойного прорыва канала Дончиана является отличной стратегией, следующей за трендом. Она сочетает в себе как идентификацию тренда, так и возможности защиты от обращения. С оптимизацией параметров и уточнением правил она может быть прибыльной для большинства продуктов и рыночных условий. Стратегия проста и практична, стоит изучить и применить для количественных трейдеров.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © omererkan //@version=5 strategy(title="Double Donchian Channel Breakout", overlay=true, initial_capital = 1000, commission_value = 0.05, default_qty_value = 100, default_qty_type = strategy.percent_of_equity) // Donchian Channels slowLen = input.int(50, title="Slow Donchian", group = "Conditions") fastLen = input.int(30, title="Fast Donchian", group = "Conditions") // Volatility Calculated as a percentage volatility = input.int(3, title="Volatility (%)", group = "Conditions") // Long positions long = input.bool(true, "Long Position On/Off", group = "Strategy") longProfitPerc = input.float(2, title="Long TP1 (%)", group = "Strategy", minval=0.0, step=0.1) * 0.01 // Short positions short = input.bool(true, "Short Position On/Off", group = "Strategy") shortProfitPerc = input.float(2, title="Short TP1 (%)", group = "Strategy", minval=0.0, step=0.1) * 0.01 // First take profit point for positions TP1Yuzde =input.int(50, title = "TP1 Position Amount (%)", group = "Strategy") // Slow Donchian Calculated ubSlow = ta.highest(high, slowLen)[1] lbSlow = ta.lowest(low, slowLen)[1] // Fast Donchian Calculated ubFast = ta.highest(high, fastLen)[1] lbFast = ta.lowest(low, fastLen)[1] // Plot Donchian Channel for entries plot(ubSlow, color=color.green, linewidth=2, title="Slow DoCh - Upperband") plot(lbSlow, color=color.green, linewidth=2, title="Slow DoCh - Lowerband") plot(ubFast, color=color.blue, linewidth=2, title="Fast DoCh - Upperband") plot(lbFast, color=color.blue, linewidth=2, title="Fast DoCh - Lowerband") // This calculation, the strategy does not open position in the horizontal market. fark = (ubSlow - lbSlow) / lbSlow * 100 // Take profit levels longExitPrice = strategy.position_avg_price * (1 + longProfitPerc) shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc) // Code long trading conditions longCondition = ta.crossover(close, ubSlow) and fark > volatility if longCondition and long == true strategy.entry("Long", strategy.long) // Code short trading conditions shortCondition = ta.crossunder(close, lbSlow) and fark > volatility if shortCondition and short == true strategy.entry("Short", strategy.short) // Determine long trading conditions if strategy.position_size > 0 and ta.crossunder(close, lbFast) strategy.close_all("Close All") // Determine short trading conditions if strategy.position_size < 0 and ta.crossover(close, ubFast) strategy.close_all("Close All") // Take Profit Long if strategy.position_size > 0 strategy.exit("TP1", "Long", qty_percent = TP1Yuzde, limit = longExitPrice) // Take Profit Short if strategy.position_size < 0 strategy.exit("TP1", "Short", qty_percent = TP1Yuzde, limit = shortExitPrice)