듀얼 돈치안 채널 브레이크아웃 전략 (Dual Donchian Channel Breakout Strategy) 은 돈치안 채널을 기반으로 하는 브레이크아웃 거래 전략이다. 빠르고 느린 돈치안 채널을 사용하여 긴 및 짧은 거래 신호를 구성한다. 가격이 느린 채널을 통과할 때 긴 또는 짧은 포지션을 개척한다. 가격이 빠른 채널을 통과할 때 포지션을 닫는다. 전략은 또한 수익을 취하고 손실을 멈추는 조건을 설정한다.
이중 돈치안 채널 브레이크아웃 전략은 두 가지 매개 변수에 기반합니다.느린 돈치안 운하 시대그리고빠른 돈치안 채널 기간전략은 먼저 두 개의 돈치안 채널의 상부와 하부 밴드를 계산합니다.
긴 입력 신호는상단보다 높은 부진와 함께변동성이 임계보다 높습니다.짧은 입력 신호는하단역 이하의 분포와 함께변동성이 임계보다 높습니다..
긴 스톱 손실 출구 신호는하단역 이하의 분포짧은 스톱 손실 출구 신호는상단보다 높은 부진.
이 전략은 또한이윤을 취하는 것출구 조건. 기본 수익률은 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)