리소스 로딩... 로딩...

돈치안 채널 탈출 전략

저자:차오장, 날짜: 2024-02-26 14:55:04
태그:

img

전반적인 설명

돈치안 채널 브레이크아웃 전략 (Donchian channel breakout strategy) 은 가격 채널을 기반으로하는 트렌드 추적 전략이다. 돈치안 채널의 상단, 하단, 중선 이동 평균을 사용하여 구매 및 판매 신호를 생성하기 위해 가격 트렌드와 브레이크아웃을 결정한다.

전략 논리

이 전략은 먼저 특정 기간 동안 가격의 가장 높은 최고, 가장 낮은 최저 및 중간 선 이동 평균을 계산합니다. 상위 및 하부 대역은 가격 채널을 형성하고 중간 선은 채널의 중앙에 있습니다. 가격이 중간 선 위에 넘으면 상승 추세를 신호하고 길게됩니다. 가격이 중간 선 아래로 넘으면 하락 추세를 신호하고 짧게됩니다.

구체적으로, 전략은 다음 단계로 작동합니다:

  1. 20개 기간 최대 최대값 dcUpper를 계산합니다.
  2. 20주기 최저하위, 즉 dcLower를 계산합니다.
  3. dcUpper와 dcLower의 평균을 계산하여 dcAverage를 채널의 중간선으로 얻습니다.
  4. 위쪽, 아래쪽, 그리고 평균으로 도 채널을 형성합니다.
  5. 클로즈가 중간선 dcAverage보다 높을 때 장거리, 클로즈가 dcAverage보다 낮을 때 단거리.
  6. 출구 규칙: 클로즈가 하위 계단 아래면 dc장면, 긴 포지션을 닫습니다. 클로즈가 중점 라인 위에 있다면 dc단면, 짧은 포지션을 닫습니다.

위의 논리는 전략의 기본 거래 원리를 설명합니다. 가격 파기 및 피브 포인트에서 방향 전환을 통해 트렌드를 포착합니다.

이점 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 탄탄한 이론적 기초 - 가격 채널을 사용하여 동향을 결정하는 것은 검증된 기술 분석 접근법입니다.
  2. 단순하고 명확한 논리, 이해하기 쉽고 실행하기 쉽습니다.
  3. 많은 트렌드를 따르는 기회를 가진 브레이크아웃 기반 시스템, 적절한 양 거래 전략
  4. 단일 거래 손실을 제한하기 위한 명확한 스톱 로스 메커니즘
  5. 유연성 - 매개 변수를 다른 시장 환경에 맞게 조정할 수 있습니다.

위험 분석

또한 몇 가지 위험이 있습니다.

  1. 높은 거래 빈도는 더 높은 비용과 미끄러짐으로 이어집니다.
  2. 부적절한 스톱 손실 배치로 인해 오버 스톱 손실이 발생합니다.
  3. 부적절한 매개 변수는 신호가 누락되거나 잘못된 신호로 이어집니다.
  4. 늦은 트렌드 브레이크 실패는 손실로 이어집니다.

해결책:

  1. 매개 변수를 최적화하고 거래 빈도를 제어합니다.
  2. 스톱 손실 로직을 강화하여 스톱 손실을 초과하는 것을 방지합니다.
  3. 다른 환경에서 테스트하고 매개 변수를 조정합니다.
  4. 늦은 트렌드 브레이크 실패를 피하기 위해 필터를 추가합니다.

최적화 방향

이 전략은 다음 측면에서 더 이상 최적화 될 수 있습니다.

  1. 주요 트렌드에 대한 거래를 피하기 위해 시장 구조 메트릭을 추가합니다.
  2. 신호 필터링을 높여 브레이크의 유효성을 보장하고 잘못된 신호를 줄이세요.
  3. 부진 강도를 측정하기 위해 변동성 메트릭을 포함합니다.
  4. 안정성을 높이기 위해 여러 시간 프레임 또는 여러 자산 분석을 적용합니다.
  5. 머신러닝을 활용하여 변화하는 시장에 적응하는 매개 변수를 자동 조정합니다.

결론

결론적으로, 돈치안 채널 브레이크아웃 전략은 건전한 이론적 기초, 간단한 논리, 그리고 브레이크아웃을 통해 트렌드를 타고 갈 수 있는 능력을 갖춘 효과적인 트렌드-추천 시스템이다. 한편, 그러한 브레이크아웃 시스템의 내재적인 위험은 매개 변수 조정과 신호 필터링을 요구한다. 추가 연구와 최적화로 돈치안 전략은 양적 거래자에게 더 견고하고 실용적으로 될 수 있다.


/*backtest
start: 2024-01-26 00:00:00
end: 2024-02-25 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

strategy(title = "dc", overlay = true)


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

plot(dcLower, style=line, linewidth=3, color=red, offset=1)
plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1)

plot(dcAverage, color=black, style=line, linewidth=3, title="Mid-Line Average")

strategy.entry("simpleBuy", strategy.long, when=close > dcAverage)
strategy.close("simpleBuy",when=close < dcLower)
    
strategy.entry("simpleSell", strategy.short,when=close < dcAverage)
strategy.close("simpleSell",when=close > dcAverage)
    



더 많은