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

Автор:Чао Чжан, Дата: 2024-02-04 09:42:14
Тэги:

img

Обзор

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

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

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

Медленный канал Донкиан имеет более длительный период, который может эффективно фильтровать рыночный шум, что делает его сигналы прорыва более надежными.

Когда цена проходит через этот канал, это сигнализирует об обратном тренде и побуждает к выходу для остановки потери или получения прибыли.

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

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

  • Двухканальный механизм устанавливает две линии защиты и эффективно контролирует риск
  • Комбинация быстрых и медленных каналов эффективно фиксирует тенденции
  • Фильтр волатильности уменьшает неэффективные сделки
  • Одновременно отслеживает тенденции и предотвращает переподборку
  • Простая и понятная логика, легко понятная и освоенная

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

  • Сильные колебания цен могут проникнуть через стоп-лосс и привести к большим потерям
  • Неправильное настройка параметров (например, периоды канала) может снизить эффективность стратегии
  • Торговые издержки также в некоторой степени снижают прибыль
  • Необходимо уделить внимание рискам, связанным с отсутствием значений вокруг значимых событий

Эти риски могут быть уменьшены путем оптимизации параметров, разумного размещения стоп-лосса, осведомленности о событиях и т.д.

Руководство по оптимизации

  • Испытать различные комбинации периодов Донкианского канала
  • Оптимизировать параметр волатильности для лучшего времени входа
  • Добавить индикатор проверки тренда для предотвращения контратендерных сделок
  • Фундаментальный подбор запасов
  • Регулировать механизм остановки потери для ограничения потерь

Заключение

Стратегия 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)

Больше