돈치안 채널 트렌드 추적 전략은 돈치안 채널 지표에 기반한 트렌드 추적 전략이다. 이 전략은 트렌드 추적 거래의 트렌드 방향을 결정하기 위해 상위, 하위 및 중간 밴드를 형성하기 위해 다양한 기간 동안 가장 높은 최고와 가장 낮은 최저를 계산합니다.
이 전략은 먼저 백테스팅의 시간대를 설정하고, 그 다음에는 길고 짧은 입력 규칙을 정의합니다.
긴 포지션의 경우, 가격이 돈치안 채널의 상단 범위를 넘어서면 긴 포지션을 열고, 가격이 하단 범위를 넘어서면 긴 포지션을 닫습니다.
짧은 포지션의 경우, 가격이 돈치안 채널의 하단 범위를 넘어서면 짧은 포지션을 열고, 가격이 상단 범위를 넘어서면 짧은 포지션을 닫습니다.
이 전략은 또한 스톱 로스 출구 메커니즘을 설정하기 위한 ATR 지표를 포함합니다. 스톱 로스 수준으로 사용되는 계수에 곱한 ATR 값입니다.
특히, 긴 스톱 손실은 입상 가격 빼기 ATR 스톱 손실 값이며, 짧은 스톱 손실은 입상 가격 더하기 ATR 스톱 손실 값입니다.
이 전략은 또한 Donchian Channel의 상부와 하부 대역과 ATR 스톱 로스 라인을 전체 거래 시스템을 형성하도록 계획합니다.
트렌드 방향을 결정하기 위해 돈치안 채널을 사용하세요
돈치안 채널 부드러운 매개 변수는 조절이 가능하며 가장 좋은 매개 변수 조합을 찾기 위해 매개 변수 최적화를 허용합니다.
ATR의 스톱 로스 메커니즘은 위험을 효과적으로 제어할 수 있습니다.
길고 짧은 거래 규칙은 간단하고 이해하기 쉽고 초보자에게 적합합니다.
코드 구조는 명확하고 이해하기 쉽고 수정 할 수 있습니다.
돈치안 운하에서는 가격 변동이 있을 수 있습니다.
부적절한 ATR 스톱 손실 범위 설정은 너무 넓거나 너무 민감한 스톱 손실을 유발할 수 있습니다.
긴 포지션과 짧은 포지션은 너무 집중되어 포지션 사이징 규칙을 필요로 할 수 있습니다.
전략은 독립적인 매개 변수 최적화와 함께 다른 제품에 적용 가능성에 대해 테스트해야합니다.
거래 비용도 고려해야 합니다. 높은 비용 환경에서 매개 변수를 조정해야 할 수도 있습니다.
가장 좋은 매개 변수 조합을 찾기 위해 돈치안 채널의 기간 매개 변수를 최적화합니다.
최적의 스톱 손실 범위를 찾기 위해 다른 ATR 계수를 시도합니다.
ATR 스톱 로스 위에 트레일링 스톱 로스를 도입해 수익을 올릴 수 있습니다.
시장 조건에 따라 긴/단기 포지션 비율을 조정합니다.
일반 매개 변수를 찾기 위해 다른 제품에서 매개 변수 견고성을 테스트합니다.
안정성을 높이기 위해 MACD 및 다른 필터를 통합하는 연구.
다른 거래 비용 환경에서 매개 변수 적응성을 테스트합니다.
요약하자면, 이것은 돈치안 채널의 적용을 중심으로 한 비교적 간단한 트렌드 추적 전략이다. 이점은 단순성과 이해하기 쉬운 데 있으며 학습 목적으로 적합하지만 매개 변수 및 위험은 여전히 추가 최적화가 필요합니다. 다양한 향상 기술로 전략 안정성과 수익성이 잠재적으로 향상 될 수 있습니다.
/*backtest start: 2022-10-30 00:00:00 end: 2023-11-05 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © kriswaters //@version=4 strategy("Donchian Channels Strategy by KrisWaters", overlay=true ) // Date filter FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromYear = input(defval = 2017, title = "From Year", minval = 1900) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToYear = input(defval = 9999, title = "To Year", minval = 2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true // create function "within window of time" // Strategy Settings canEnterLong = input(true, title="Can Enter Long Position") canEnterShort = input(false, title="Can Enter Short Position") showLongChannel = input(true, title="Show Donchian Long Channels") showShortChannel = input(false , title="Show Donchian Short Channels") useAtrAsStopRule = input(false, title="Enable ATR Stop Rule") // DonCcian Channel Lengths longUpperLength = input(20, minval=1) longLowerLength = input(10, minval=1) shortUpperLength = input(10, minval=1) shortLowerLength = input(20, minval=1) // Donchian indicator calculations longUpperValue = highest(high,longUpperLength) longLowerValue = lowest(low,longLowerLength) shortUpperValue = highest(high,shortUpperLength) shortLowerValue = lowest(low,shortLowerLength) // Plot Donchian Channels uLong = plot(showLongChannel ? longUpperValue : na, color=color.green, offset=1) lLong = plot(showLongChannel ? longLowerValue : na, color=color.green, offset=1) uShort = plot(showShortChannel ? shortUpperValue : na, color=color.red, offset=1) lShort = plot(showShortChannel ? shortLowerValue : na, color=color.red, offset=1) // Styling fill(uLong,lLong, color=color.green, transp=95, title="Long Arkaplan") fill(uShort,lShort, color=color.red, transp=95, title="Short Arkaplan") // Stop-loss value calculations atrMultiplier = 2.0 atrValue = atr(20) longStopValue = open - (atrMultiplier*atrValue) shortStopValue = open + (atrMultiplier*atrValue) // Plot stop-loss line plot(useAtrAsStopRule ? longStopValue : na, color=color.red, linewidth=2, offset=1) plot(useAtrAsStopRule ? shortStopValue : na, color=color.red, linewidth=2, offset=1) // Long and Short Position Rules if canEnterLong and na(longUpperValue) != true and na(longLowerValue) != true and window() strategy.entry("Long", true, stop=longUpperValue) strategy.exit("Long Exit", "Long", stop=useAtrAsStopRule ? max(longLowerValue,longStopValue) : longLowerValue) if canEnterShort and na(shortUpperValue) != true and na(shortLowerValue) != true and window() strategy.entry("Short", false, stop=shortLowerValue) strategy.exit("Short Exit", "Short", stop=useAtrAsStopRule ? min(shortUpperValue,shortStopValue) : shortUpperValue)