
동적 통로 돌파 전략은 트렌드 추적 전략이다. 이 전략은 Donchian 통로 지표를 사용하여 동적으로 돌파 구매 및 판매 가격을 결정하고, 변동률 ATR 지표와 결합하여 중지 지점을 설정하여 거래 신호 생성 및 중지 탈퇴를 완전히 자동화한다.
돈치안 채널 (Donchian channel) 은 역동적인 채널 지표로, 과거 일정 주기 동안의 최고 가격과 최저 가격을 계산하여 상위 궤도와 하위 궤도를 형성한다. 상위 궤도는 과거 n 주기 동안의 최고 가격이며 하위 궤도는 과거 n 주기 동안의 최저 가격이다. 돈치안 채널은 시장의 변동 범위와 잠재적인 경향을 반영한다.
이 전략은 Donchian 통로 주기를 20일로 설정한다. 가격이 상승세를 돌파할 때 구매 신호가 발생하여 시장이 상승 추세에 들어간다는 것을 나타냅니다. 가격이 하락세를 돌파할 때 판매 신호가 발생하여 시장이 하락 추세에 들어간다는 것을 나타냅니다.
ATR 지표는 Average True Range의 약자로, 특정 자산의 최근 기간 동안의 평균 변동의 폭을 반영한다. ATR은 시장 변동의 빈도 변화에 자동으로 적응할 수 있어 시장의 최근 기간의 실제 변동의 폭을 더 정확하게 반영한다.
이 전략은 20일 ATR 지표로 스톱로스를 계산한다. ATR 값이 더 큰 것은 시장의 변동이 더 큰 것을 의미하며, 설정된 스톱로스는 더 멀리 떨어져 있다. 이것은 스톱로스가 너무 가까워서 시장의 작은 변동에 의해 타격을 입는 것을 방지한다.
가격이 위쪽으로 Donchian 통로의 중선을 통과하면 구매 신호가 발생하고, 가격이 아래쪽으로 Donchian 통로의 중선을 통과하면 판매 신호가 발생한다. 이것은 가격이 새로운 라운드 트렌드에 진입하기 위해 통로를 뚫기 시작했다는 것을 나타냅니다.
또한, ATR 지표의 계산에 결합된 중지 손실 지점, 손실이 중지 손실 지점에 도달했을 때 적극적으로 중지 손실 퇴출 포지션, 통제 위험.
돈치안 채널 (Donchian channel) 은 트렌드 추적 지표이다. 이 전략은 채널 범위를 동적으로 조정하여 시장 추세의 변화를 자동으로 추적하여 구매 및 판매 신호를 생성한다. 이것은 인위적인 판단의 주관성을 피하고 거래 신호의 생성을 더 객관적이고 신뢰할 수있게 만든다.
전략은 양방향 거래를 가능하게 하는 상장 및 상하 규칙을 동시에 포함합니다. 이것은 전략이 적용되는 시장 환경을 확장하여 시장이 상승하거나 하락할 때 이익을 얻을 수 있습니다.
ATR 지표와 결합된 스톱 로즈 메커니즘은 단일 거래의 손실을 효과적으로 제어할 수 있다. 이것은 양적 거래에 특히 중요하며, 전략이 높은 확률의 이벤트에서 안정적인 긍정적인 수익을 얻을 수 있도록 보장할 수 있다.
돈치안 통로 전략에는 어느 정도의 수축 위험이 있다. 가격이 반전되어 통로로 다시 들어가면, 상쇄하지 않으면 큰 손실이 발생할 수 있다. 이 전략은 ATR 지표의 상쇄 메커니즘을 통해 이 위험을 감소시킨다.
트렌드 반전이 있을 때, Donchian 통로 지표는 잘못된 신호를 생성한다. 사용자는 시장 상황에 주의를 기울여야 하며, 눈에 띄는 트렌드 반전이 있을 때 여전히 맹목적으로 따라다니는 것을 피한다. 이 전략에는 트렌드 판단 지표 등이 포함될 수 있다.
Donchian 채널과 ATR 정지기의 주기 파라미터는 최적화 검사가 필요하며, 그렇지 않으면 과잉 오류 신호가 발생한다. 이 전략은 경험 파라미터를 사용하며, 실제 디스크에서는 역사 데이터에 따라 파라미터를 최적화해야 한다.
이동 평균과 같은 트렌드 판단 지표가 추가될 수 있으며, 유의미한 트렌드 반전 지점에서 잘못된 신호가 발생하지 않도록 한다.
Donchian 채널과 ATR 매개 변수를 최적화하여 최적의 매개 변수 조합을 찾습니다. 채널 주기를 적절히 줄이면 트렌드 전환을 더 빨리 잡을 수 있습니다.
K선 형태, 거래량 변화 등과 같은 다른 보조 판단 지표와 결합하면 신호의 정확도를 높여 불필요한 반전 거래를 줄일 수 있다.
동적 통로 돌파 전략은 Donchian 통로의 상하 궤도를 통해 트렌드 방향을 설정하고 거래 신호를 생성한다. 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)