Стратегия двойного прорыва в канале Дончиана - это количественная стратегия торговли, основанная на канале Дончиана. Эта стратегия использует комбинацию быстрых и медленных каналов Дончиана для достижения низкорисковой высокодоходной торговли. Она длится / коротко, когда цена выходит из медленного канала и выходит на стоп-лосс или получает прибыль, когда цена выходит через быстрый канал.
Эта стратегия в основном использует два Дончианских канала, включая более медленный канал с более длительным периодом и более быстрый канал с более коротким периодом.
Медленный канал Донкиан имеет более длительный период, который может эффективно фильтровать рыночный шум, что делает его сигналы прорыва более надежными.
Когда цена проходит через этот канал, это сигнализирует об обратном тренде и побуждает к выходу для остановки потери или получения прибыли.
Кроме того, условие волатильности устанавливается в качестве фильтра для сигналов входа. Стратегия будет запускать вход только тогда, когда движение цен превышает заранее определенный процентный порог.
Эти риски могут быть уменьшены путем оптимизации параметров, разумного размещения стоп-лосса, осведомленности о событиях и т.д.
Стратегия Double Donchian Channel Breakout в целом является относительно стабильной и надежной стратегией, следующей за трендом. Она сочетает в себе сильные стороны захвата тренда и контроля рисков, что делает ее подходящей в качестве базового модуля в различных стратегиях торговли акциями.
/*backtest start: 2024-01-04 00:00:00 end: 2024-02-03 00:00:00 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) slowLen = input.int(50, title="Slow Donchian") fastLen = input.int(30, title="Fast Donchian") volatility = input.int(3, title="Volatility (%)") longProfitPerc = input.float(2, title="Long TP1 (%)", minval=0.0, step=0.1) * 0.01 shortProfitPerc = input.float(2, title="Short TP1 (%)", minval=0.0, step=0.1) * 0.01 TP1Yuzde =input.int(50, title = "TP1 Position Amount (%)") ubSlow = ta.highest(close, slowLen)[1] lbSlow = ta.lowest(close, slowLen)[1] ubFast = ta.highest(close, fastLen)[1] lbFast = ta.lowest(close, fastLen)[1] 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") fark = (ubSlow - lbSlow) / lbSlow * 100 longExitPrice = strategy.position_avg_price * (1 + longProfitPerc) shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc) longCondition = ta.crossover(close, ubSlow) and fark > volatility if (longCondition) strategy.entry("Long", strategy.long) shortCondition = ta.crossunder(close, lbSlow) and fark > volatility if (shortCondition) strategy.entry("Short", strategy.short) if strategy.position_size > 0 and ta.crossunder(close, lbFast) strategy.close("Long", "Close All") if strategy.position_size < 0 and ta.crossover(close, ubFast) strategy.close("Short", "Close All") // Take Profit if strategy.position_size > 0 strategy.exit("TP1", "Long", qty_percent = TP1Yuzde, limit = longExitPrice) if strategy.position_size < 0 strategy.exit("TP1", "Short", qty_percent = TP1Yuzde, limit = shortExitPrice)