이중 돈치안 채널 탈출 전략

저자:차오장, 날짜: 2024-02-04 09:42:14
태그:

img

전반적인 설명

이중 돈치안 채널 브레이크아웃 전략 (Double Donchian Channel Breakout strategy) 은 돈치안 채널을 기반으로 한 양적 거래 전략이다. 이 전략은 저위험 고수익 브레이크아웃 거래를 달성하기 위해 빠르고 느린 돈치안 채널의 조합을 사용합니다. 가격이 느린 채널을 깨고 스톱 손실로 빠져나갈 때 길고 짧습니다. 또는 가격이 빠른 채널을 통해 다시 깨지면 이익을 취합니다.

전략 논리

이 전략은 주로 두 개의 돈치안 채널을 이용합니다. 더 긴 기간을 가진 느린 채널과 짧은 기간을 가진 더 빠른 채널을 포함합니다.

느린 돈치안 채널은 더 긴 기간을 가지고 있으며 이는 시장 소음을 효과적으로 필터링하여 브레이크아웃 신호를 더 신뢰할 수 있습니다. 가격이 느린 채널의 상단 범위를 넘어서면 전략은 길고 가격이 하단 범위를 넘어서면 짧습니다.

빠른 돈치안 채널은 짧은 기간을 가지고 있으며 단기 가격 변동에 신속하게 반응 할 수 있습니다. 가격이 이 채널을 통해 다시 깨지면 트렌드 역전 신호를 보내고 스톱 로스 또는 수익을 취하기 위해 출구를 촉구합니다.

또한, 변동성 조건은 엔트리 신호를 필터로 설정됩니다. 이 전략은 가격 움직임이 미리 결정된 퍼센트 임계치를 초과 할 때만 엔트리를 유발합니다. 이는 범위 제한 통합 중 빈번한 윙스를 피합니다.

이점 분석

  • 이중 채널 메커니즘은 두 가지 방어 라인을 설정하고 효과적으로 위험을 제어합니다.
  • 빠른 채널과 느린 채널을 조합하여 트렌드를 효율적으로 포착합니다.
  • 변동성 필터는 비효율적인 거래를 줄여줍니다.
  • 동시다발적으로 트렌드를 추적하고 과잉 적응을 방지
  • 단순하고 명확한 논리, 이해하기 쉽고 마스터

위험 분석

  • 치열한 가격 변동은 스톱 로스를 침투하여 큰 손실을 초래할 수 있습니다.
  • 부적절한 매개 변수 설정 (예: 채널 기간) 은 전략 효율성을 손상시킬 수 있습니다.
  • 거래 비용 또한 어느 정도 수익을 훼손
  • 중요한 사건에 대한 격차 위험은 주의가 필요합니다.

이러한 위험은 매개 변수 최적화, 합리적인 스톱 로스 배치, 이벤트 인식 등으로 줄일 수 있습니다.

최적화 방향

  • 치안 채널 기간의 다른 조합을 테스트
  • 가장 좋은 출입 시기를 위해 변동성 매개 변수를 최적화
  • 트렌드 검증 지표를 추가하여 트렌드 반대 거래를 피합니다.
  • 기본적 기준에 기초한 재고 선택
  • 손실을 제한하기 위해 스톱 로스 메커니즘을 조정

결론

이중 돈치안 채널 브레이크아웃 전략은 전반적으로 비교적 안정적이고 신뢰할 수 있는 트렌드 추후 전략이다. 트렌드 캡처와 리스크 제어 두 가지의 장점을 결합하여 다양한 주식 거래 전략의 기본 모듈로 적합합니다. 매개 변수 조정 및 논리 정밀화로 인해 성능의 추가 개선이 예상 될 수 있습니다.


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

더 많은