Donchian 채널 돌파 전략


생성 날짜: 2024-03-22 16:13:58 마지막으로 수정됨: 2024-03-22 16:13:58
복사: 0 클릭수: 856
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

Donchian 채널 돌파 전략

전략 개요

둥근 통로 돌파 전략은 트렌드를 추적하는 양적 거래 전략이다. 이 전략은 둥근 통로를 사용하여 시장의 흐름을 포착하고 ATRSL 이동 상쇄를 사용하여 위험을 통제한다. 가격이 둥근 통로를 돌파 할 때, 전략은 더 많은 위치를 열고, 가격이 ATRSL 이동 상쇄선을 넘어갈 때, 전략은 평지한다.

전략 원칙

  1. 둥 통로 계산: 사용자 입력에 따라donLength변수를 계산하는 방법donLength한 주기의 최고 가격과 최저 가격, 각각 동천 통로의 승차로donUpper그리고 아래로donLower통로 중앙선donBasis위아래 궤도의 평균값이다.
  2. ATRSL 이동 중지 손실 계산: 사용자 입력에 따라AP2 그리고 AF2ATR 값을 계산하는 변수SL2그리고는 현재 매출액을 기준으로SC그리고 그 전에 이동한 막부 가격Trail2[1]동적으로 조정된 이동식 스톱 가격의 관계Trail2
  3. 포지션 개설 조건: 현재 폐장 가격에 돈치안 통로를 타면 포지션을 더 많이 개설한다.
  4. 평점 조건: 현재 종식 가격 아래 ATRSL 이동 중지 라인을 통과 할 때 평점.

전략적 이점

  1. 트렌드 추적: 동천 통로를 통해 트렌드 방향을 판단하여 시장의 흐름을 효과적으로 파악할 수 있다.
  2. 동적 스톱: ATRSL 이동 스톱을 사용하여 시장의 변동에 따라 스톱 위치를 동적으로 조정하여 위험을 제어 할 수 있습니다.
  3. 유연한 변수: 사용자가 자신의 필요에 따라 조정할 수 있습니다.donLengthAP2 그리고 AF2그리고 이 모든 것은 전략의 성능을 최적화하기 위한 것입니다.

전략적 위험

  1. 매개 변수 위험: 서로 다른 매개 변수 설정은 전략 성능에 큰 차이를 초래할 수 있으며 충분한 재검토와 매개 변수 최적화가 필요합니다.
  2. 시장 위험: 시장이 흔들리거나 추세가 역전될 때 이 전략은 큰 회수 현상이 발생할 수 있다.
  3. 슬리핑 포인트와 거래 비용: 자주 거래하면 전략 수익에 영향을 미치는 높은 슬리핑 포인트와 거래 비용이 발생할 수 있습니다.

최적화 방향

  1. 트렌드 필터 추가: 포지션 개시 조건에서 ADX와 같은 지표를 추가하여 트렌드 강도를 판단할 수 있으며, 트렌드가 분명할 때만 포지션을 개시하여 포지션 개시 품질을 향상시킬 수 있습니다.
  2. 최적화 손실: 다른 손실 방법을 사용하여 시도 할 수 있습니다. 백분율 손실, ATR 손실 등, 또는 여러 손실 방법을 결합하여 손실 유연성을 높일 수 있습니다.
  3. 포지션 관리에 참여: 시장의 변동과 계정 위험에 따라 포지션 크기를 동적으로 조정하고, 위험 노출을 제어한다.

요약하다

동치안 채널 브레이크 전략은 동치안 채널을 통해 트렌드를 포착하고 ATRSL를 사용하여 이동한 손실 통제 위험을 수행하는 고전적인 트렌드 추적 전략이다. 이 전략의 장점은 논리적으로 간단하고 명확하며 구현 및 최적화하기 쉽다는 것이다. 단점은 위축 시장과 트렌드 역전시에는 좋지 않은 성능을 발휘하며, 변수 설정은 전략의 성능에 큰 영향을 미친다. 실제 응용에서는 원본 전략의 기초에 트렌드 필터링, 정지 및 포지션 손실 관리 등의 모듈을 추가하여 전략의 안정성과 수익성을 향상시킬 수 있다. 동시에 거래 주파수 및 비용을 제어하는 데 주의를 기울이고 시장 특성과 자신의 위험 선호도에 따라 변수를 유연하게 조정해야 한다.

전략 소스 코드
/*backtest
start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Stock Trend USE THIS", overlay = true)
donLength = input(100, minval=1)

//Donchian Long
donLower = lowest(donLength)
donUpper = highest(donLength)
donBasis = avg(donUpper,donLower)

// ATRSL
SC = close

// Slow Trail //
AP2 = input(10, title="Slow ATR period")  // ATR Period
AF2 = input(3, title="Slow ATR multiplier")  // ATR Factor
SL2 = AF2 * atr(AP2)  // Stop Loss
Trail2 = 0.0
iff_3 = SC > nz(Trail2[1], 0) ? SC - SL2 : SC + SL2
iff_4 = SC < nz(Trail2[1], 0) and SC[1] < nz(Trail2[1], 0) ? min(nz(Trail2[1], 0), SC + SL2) : iff_3
Trail2 := SC > nz(Trail2[1], 0) and SC[1] > nz(Trail2[1], 0) ? max(nz(Trail2[1], 0), SC - SL2) : iff_4



// Long and Short Conditions
longCondition = (crossover(close,donUpper[1])) 

// Close Conditions
closeLongCondition = crossunder(close,Trail2)

// Strategy logic
if (longCondition) 
    strategy.entry("Long", strategy.long)
    alert("Open Long position")

if (closeLongCondition)
    strategy.close("Long")
    alert("Close Long position")

// Plot Donchian
l = plot(donLower, color=color.blue)
u = plot(donUpper, color=color.blue)
plot(donBasis, color=color.orange)
fill(u, l, color=color.blue)
plot(Trail2, color=color.blue, title="ATRSL Trail")