트렌드 트레이더를 위한 이동 평균에 기반한 볼린저 밴드 백테스팅 전략


생성 날짜: 2023-12-11 13:12:44 마지막으로 수정됨: 2023-12-11 13:12:44
복사: 0 클릭수: 593
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

트렌드 트레이더를 위한 이동 평균에 기반한 볼린저 밴드 백테스팅 전략

개요

이 전략의 주요 아이디어는 이동 평균선과 브린 밴드를 사용하여 가격 추세를 판단하고 거래 신호를 생성하는 것입니다. 구체적으로, 먼저 일정 주기 동안의 평균 실제 변동 범위 ATR을 계산하고, 그 다음 최고 가격과 최저 가격을 결합하여 제한 통로를 얻습니다. 가격이 그 통로를 뚫면, 클로즈 가격이 통로 가격과 같도록하십시오.

전략 원칙

이 전략은 먼저 ATR의 변동 범위를 계산한 다음 최고 가격과 최저 가격과 결합하여 제한된 통로를 얻습니다. 은 가격이 그 통로를 뚫었을 때만 통로 가격에 제한됩니다. 이후 제한된 은 가격에 대한 이동 평균을 찾습니다. 이 이동 평균은 트렌드 트레이더의 평균 (Trend Trade AVR) 이라고 불립니다. 이 이동 평균은 가격의 중장기 트렌드 방향을 반영합니다. 마지막으로, 트렌드 트레이더의 평균 선에 각 평행선을 그리고, 브린 상반도로 내려가는 경로로 니다.

이 전략의 핵심은 트렌드 트레이더의 평균이며, 이는 중기 및 장기적인 트렌드 방향을 나타냅니다. 브린 밴드의 역할은 일부 가짜 브레이크를 필터링하여 거래 신호를 더 신뢰할 수있게 만듭니다. 전체 전략은 트렌드 추적과 브레이크 판단을 결합하여 강력한 트렌드 시스템을 형성합니다.

전략적 이점

  1. ATR을 이용해서 최고 최저 가격과 결합하여 채널을 형성하여 시장의 변동성을 효과적으로 추적할 수 있습니다.
  2. 트렌드 트레이더 평균 명확한 판단 중장기 트렌드
  3. 브린은 가짜 돌파구로 신호를 개선했습니다.
  4. 시스템 전체는 강한 추세를 나타내고, 장기 보유는 좋은 수익을 얻을 수 있습니다.

전략적 위험

  1. 중·장기 보유 시, 갑작스러운 사건으로 인해 손실이 발생할 수 있습니다.
  2. 잘못된 매개 변수 설정은 거래 빈도를 높이고 거래 비용을 증가시키고 지점을 잃게 할 수 있습니다.
  3. 효과는 파라미터 설정과 매우 관련이 있으며, 최적의 파라미터를 찾기 위해 조정이 필요합니다.

대책:

  1. 적당히 짧은 지분 기간, 적당히 막는 손실
  2. 최적화 변수, 신호가 특정 버퍼를 갖도록
  3. 역사 데이터와 리드 디스크 최적화 매개 변수를 활용

전략 최적화 방향

  1. 다른 시장의 다른 주기 변수 설정을 더 자세히 연구
  2. 테스트가 다른 지표들을 필터링할 수 있는지
  3. 단편적 손실을 통제하기 위해 Stop Loss 전략과 함께 시도하십시오.

요약하다

이 전략은 전체적으로 강력한 트렌드 추적 시스템이다. 중장선에서 시장의 흐름을 판단하고, 브린 대역과 결합하여 거래 신호를 생성한다. 변수를 최적화하여 안정적인 초과 수익을 얻을 수 있다. 그러나 또한 장기간 보유할 때 중대한 사건으로 인한 손실을 피하기 위해 위험 관리에 주의를 기울여야 한다.

전략 소스 코드
/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 16/10/2018
// This is plots the indicator developed by Andrew Abraham 
// in the Trading the Trend article of TASC September 1998  
// It was modified, result values wass averages.
// And draw two bands above and below TT line.
////////////////////////////////////////////////////////////
strategy(title="Trend Trader Bands Backtest", overlay = true)
Length = input(21, minval=1),
LengthMA = input(21, minval=1),
BandStep = input(20),
Multiplier = input(3, minval=1)
reverse = input(false, title="Trade reverse")
avgTR      = wma(atr(1), Length)
highestC   = highest(Length)
lowestC    = lowest(Length)
hiLimit = highestC[1]-(avgTR[1] * Multiplier)
loLimit = lowestC[1]+(avgTR[1] * Multiplier)
ret = 0.0
ret :=  iff(close > hiLimit and close > loLimit, hiLimit,
         iff(close < loLimit and close < hiLimit, loLimit, nz(ret[1], 0)))
nResMA = ema(ret, LengthMA)        
pos = 0.0
pos := iff(close < nResMA - BandStep , -1,
       iff(close > nResMA + BandStep, 1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
barcolor(pos == -1 ? red: pos == 1 ? green : blue )
plot(nResMA, color= blue , title="Trend Trader AVR")
plot(nResMA+BandStep, color= red , title="Trend Trader UpBand")
plot(nResMA-BandStep, color= green, title="Trend Trader DnBand")