돈치안 채널 트렌드 추적 전략

저자:차오장, 날짜: 2023-11-06 15:52:56
태그:

img

전반적인 설명

돈치안 채널 트렌드 추적 전략은 돈치안 채널 지표에 기반한 트렌드 추적 전략이다. 이 전략은 트렌드 추적 거래의 트렌드 방향을 결정하기 위해 상위, 하위 및 중간 밴드를 형성하기 위해 다양한 기간 동안 가장 높은 최고와 가장 낮은 최저를 계산합니다.

전략 논리

이 전략은 먼저 백테스팅의 시간대를 설정하고, 그 다음에는 길고 짧은 입력 규칙을 정의합니다.

긴 포지션의 경우, 가격이 돈치안 채널의 상단 범위를 넘어서면 긴 포지션을 열고, 가격이 하단 범위를 넘어서면 긴 포지션을 닫습니다.

짧은 포지션의 경우, 가격이 돈치안 채널의 하단 범위를 넘어서면 짧은 포지션을 열고, 가격이 상단 범위를 넘어서면 짧은 포지션을 닫습니다.

이 전략은 또한 스톱 로스 출구 메커니즘을 설정하기 위한 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)
    


더 많은