동적 채널 브레이크아웃 전략은 트렌드를 따르는 전략입니다. 브레이크아웃 구매 및 판매 가격을 동적으로 결정하기 위해 돈치안 채널 지표를 사용하여 ATR 지표를 결합하여 스톱 로스 포인트를 설정하고 거래 신호 생성 및 스톱 로스 출구의 완전한 자동화를 달성합니다.
돈치안 채널 (Donchian Channel) 은 역동적인 채널 지표로, 과거의 특정 기간 동안의 최고 및 최저 가격을 계산하여 상부 및 하부 대역을 형성한다. 상부 대역은 지난 n 기간 동안의 최고 가격이며, 하부 대역은 지난 n 기간 동안의 최저 가격이다. 돈치안 채널은 변동 범위와 시장의 잠재적 추세를 반영한다.
이 전략은 돈치안 채널 기간을 20일로 설정합니다. 가격이 상단 레일을 통과하면 시장이 상승 추세로 진입했다는 것을 나타내는 구매 신호가 생성됩니다. 가격이 하단 레일 아래에 떨어지면 시장이 하향 추세로 진입했다는 것을 나타내는 판매 신호가 생성됩니다.
ATR 지표는 최근 기간 동안 특정 자산의 평균 변동 폭을 반영하는 평균 진정한 범위의 약자입니다. ATR은 최근 기간 동안 시장의 실제 변동성을 더 정확하게 반영하기 위해 시장 변동성 빈도의 변화에 자동으로 적응 할 수 있습니다.
이 전략은 20일 ATR 지표를 사용하여 스톱 로스 포인트를 계산합니다. ATR 값이 클수록 시장 변동이 커지고 설정된 스톱 로스 포인트가 멀어집니다. 이것은 스톱 로스 포인트가 너무 가깝고 소규모 시장 변동에 의해 타격되는 것을 방지합니다.
가격이 돈치안 채널의 중간선을 상향으로 돌파할 때 구매 신호가 생성됩니다. 가격이 중간선을 아래로 돌파할 때 판매 신호가 생성됩니다. 이것은 가격이 이 채널을 돌파하고 새로운 라운드 트렌드에 진입하기 시작했다는 것을 나타냅니다.
동시에 ATR 지표에 의해 계산된 스톱 로스 포인트와 결합하여, 손실이 스톱 로스 포인트에 도달하면, 포지션은 위험을 제어하기 위해 적극적으로 중단됩니다.
돈치안 채널은 트렌드 추적 지표입니다. 채널 범위를 동적으로 조정함으로써이 전략은 자동으로 시장 트렌드의 변화를 추적하고 그에 따라 구매 및 판매 신호를 생성 할 수 있습니다. 이것은 수동 판단의 주관성을 피하고 거래 신호를 보다 객관적이고 신뢰할 수 있습니다.
이 전략은 긴 규칙과 짧은 규칙을 모두 포함하고 있어 양방향 거래가 가능하다. 이는 전략이 적용될 수 있는 시장 환경을 확장시켜 상승 추세와 하락 추세 모두에서 수익성을 가능하게 한다.
ATR 지표의 스톱 로스 메커니즘은 단일 거래의 손실을 효과적으로 제어 할 수 있습니다. 이것은 높은 확률의 사건에서 전략이 안정적인 긍정적 인 수익을 얻는 것을 보장하기 위해 양적 거래에 특히 중요합니다.
돈치안 채널 전략은 함락될 위험이 있습니다. 가격이 역전되어 스톱 손실 없이 채널로 다시 진입하면 상당한 손실이 발생할 수 있습니다. 이 전략의 ATR 스톱 손실 메커니즘은 그러한 위험을 완화하는 데 도움이됩니다.
트렌드 반전 시, 돈치안 채널 지표는 잘못된 신호를 생성합니다. 사용자는 중요한 트렌드 반전 시 맹상 거래를 피하기 위해 시장 조건에 주의를 기울여야합니다. 이러한 위험을 줄이기 위해 트렌드 판단 지표가 추가 될 수 있습니다.
이 전략의 매개 변수는 경험적이다. 실제 거래에서는 역사적 데이터에 기초하여 최적화되어야 한다.
유동 평균과 같은 트렌드 판단 지표는 중요한 트렌드 전환점에 잘못된 신호를 피하기 위해 추가 될 수 있습니다.
최적화 Donchian 채널 및 ATR 매개 변수 최고의 조합을 찾기. 적절하게 채널 주기를 단축하면 트렌드 전환을 더 빨리 잡을 수 있습니다.
촛불 패턴과 거래량 변화와 같은 다른 보조 판단 지표를 결합하여 신호 정확성을 향상시키고 불필요한 반전 거래를 줄이십시오.
동적 채널 브레이크아웃 전략 (Dynamic Channel Breakout Strategy) 은 돈치안 채널의 상부 및 하부 밴드를 통해 트렌드 방향을 파악하고 거래 신호를 생성합니다. ATR 스톱 로스 메커니즘은 위험을 제어합니다. 이 전략은 높은 수준의 자동화 기능을 가지고 있으며 양적 거래에 적합합니다. 최적화 공간은 매개 변수 선택 최적화 및 신호 정확성을 향상시키기 위해 다른 보조 지표를 결합하는 데 있습니다. 일반적으로이 전략은 시장 추세를 정확하게 판단하고 강력한 실용성을 가지고 있습니다.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title = "dc", overlay = true) atrLength = input(title="ATR Length:", defval=20, minval=1) testStartYear = input(2018, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testEndYear = input(2018, "Backtest Start Year") testEndMonth = input(12) testEndDay = input(31, "Backtest Start Day") testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testPeriod() => true //time >= testPeriodStart ? true : false dcPeriod = input(20, "Period") dcUpper = highest(close, dcPeriod)[1] dcLower = lowest(close, dcPeriod)[1] dcAverage = (dcUpper + dcLower) / 2 atrValue=atr(atrLength) useTakeProfit = na useStopLoss = na useTrailStop = na useTrailOffset = na Buy_stop = lowest(low[1],3) - atr(20)[1] / 3 plot(Buy_stop, color=red, title="buy_stoploss") Sell_stop = highest(high[1],3) + atr(20)[1] / 3 plot(Sell_stop, color=green, title="sell_stoploss") plot(dcLower, style=line, linewidth=3, color=red, offset=1) plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1) plot(dcAverage, color=yellow, style=line, linewidth=3, title="Mid-Line Average") strategy.entry("simpleBuy", strategy.long, when=(close > dcAverage) and cross(close,dcAverage)) strategy.close("simpleBuy",when=((close < dcAverage) and cross(close,dcAverage)) or ( close< Buy_stop)) strategy.entry("simpleSell", strategy.short,when=(close < dcAverage) and cross(close,dcAverage) ) strategy.close("simpleSell",when=((close > dcAverage) and cross(close,dcAverage)) or ( close > Sell_stop)) //strategy.exit("Exit simpleBuy", from_entry = "simpleBuy", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset) //strategy.exit("Exit simpleSell", from_entry = "simpleSell", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)