이중 확인 Donchian 채널 추세 전략
개요
본 전략은 표준 돈치안 채널(Donchian Channel) 지표를 기반으로 개발되었습니다. 기본적으로 거래 신호를 발생시키기 전에 두 개의 연속된 더 높은 고점(또는 더 낮은 저점)을 확인하여 시장 조성자(Market Maker)의 페이크 아웃(Fakeout)에 속지 않도록 합니다.
또한 이중 확인 메커니즘을 비활성화하여 신고가 또는 신저가 발생 시 즉시 거래 신호를 보낼 수 있는 옵션도 제공합니다.
공매도를 선호하지 않는 사용자를 위해 공매도 거래를 필터링하는 옵션도 포함되어 있습니다.
전략 원리
본 전략은 돈치안 채널 지표의 상단 밴드(Upper Band)와 하단 밴드(Lower Band)를 기반으로 합니다. 상단 밴드는 지난 n개 캔들의 최고가(High) 중 최댓값이고, 하단 밴드는 지난 n개 캔들의 최저가(Low) 중 최솟값입니다. 여기서 n의 기본값은 20입니다.
중간 밴드(Middle Band)는 상단과 하단 밴드의 평균값으로, 추세 방향을 판단하는 데 사용됩니다.
가격이 상단 밴드를 돌파하면 전략은 롱 포지션(Long Position)이 없는 상태에서 매수하고, 가격이 하단 밴드를 하향 돌파하면 숏 포지션(Short Position)이 없는 상태에서 매도합니다.
가짜 돌파(False Breakout)를 걸러내기 위해 전략은 기본적으로 "이중 확인 대기" 옵션이 활성화되어 있습니다. 이는 두 개의 연속된 더 높은 고점(또는 더 낮은 저점)이 있어야 거래 신호가 발생함을 의미합니다.
장점 분석
본 전략은 다음과 같은 장점을 가집니다:
-
돈치안 채널 지표는 간단하고 실용적이며 이해와 구현이 쉽습니다.
-
이중 확인 메커니즘은 가짜 돌파를 효과적으로 걸러내어 손실을 방지합니다.
-
채널 기간 길이를 사용자 정의하여 다양한 시장 환경에 적응할 수 있습니다.
-
공매도 거래 옵션을 제공하여 다양한 투자자의 요구를 충족시킵니다.
-
코드가 간결하여 이해하고 2차 개발하기 쉽습니다.
리스크 분석
본 전략에는 몇 가지 리스크도 존재합니다:
-
이중 확인 메커니즘으로 인해 일부 거래 기회를 놓칠 수 있습니다.
-
채널 기간 설정이 부적절하면 거래가 너무 자주 또는 너무 드물게 발생할 수 있습니다.
-
포지션 보유 시간이 너무 길면 리스크를 효과적으로 통제하지 못할 수 있습니다.
-
공매도 거래로 인한 추가 리스크에 주의해야 합니다.
-
백테스트 데이터 과적합(Overfitting) 리스크를 경계해야 합니다.
이에 대한 해결 방법은 다음과 같습니다:
-
이중 확인 메커니즘을 비활성화하거나 확인 간격을 적절히 단축합니다.
-
매개변수를 최적화하여 적절한 채널 기간을 선택합니다.
-
손절매(Stop-Loss) 또는 이익 실현(Take-Profit)을 설정하여 단일 손실을 합리적으로 통제합니다.
-
공매도 거래를 비활성화하고 롱(Long)만 거래합니다.
-
다양한 시장 환경에서 여러 번 백테스트를 수행하여 전략을 엄격히 평가합니다.
최적화 방향
본 전략의 최적화 방향은 다음과 같습니다:
-
변동성 지표를 기반으로 포지션 크기를 동적으로 조정합니다.
-
돌파 강도 지표를 사용하여 가짜 돌파를 필터링합니다.
-
이동 손절매(Trailing Stop) 메커니즘을 추가하여 추세를 추적합니다.
-
다른 지표와 결합하여 추세 방향을 판단하고 중요한 전환점을 놓치지 않도록 합니다.
-
머신러닝 방법을 사용하여 매개변수를 자동으로 최적화합니다.
이러한 최적화 조치는 전략의 안정성과 수익성을 더욱 향상시킬 수 있습니다.
요약
본 전략은 돈치안 채널의 이중 확인 메커니즘을 기반으로 리스크를 통제하면서 간단하고 효과적인 추세 추종(Trend Following)을 구현합니다. 매개변수 최적화 및 기능 확장을 통해 본 전략은 더 넓은 시장 환경에 적응할 수 있으며 실용성이 뛰어납니다.
/*backtest
start: 2022-12-15 00:00:00
end: 2023-12-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Donchian Channels", shorttitle="DC", overlay=true, initial_capital=10000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, calc_on_every_tick=true)
length = input(20, minval=1)
lower = lowest(length)- 1

