트렌드 트레이더 밴드 백테스트 전략 트렌드 트레이더 이동 평균에 기초

저자:차오장, 날짜: 2023-12-11 13:12:44
태그:

img

전반적인 설명

이 전략의 주요 아이디어는 가격 트렌드를 판단하고 움직이는 평균과 볼링거 밴드를 사용하여 거래 신호를 생성하는 것입니다. 구체적으로, 그것은 먼저 변동성 범위를 얻기 위해 특정 기간 동안의 평균 진정한 범위 (ATR) 를 계산하고, 그 다음 가장 높은 가격과 가장 낮은 가격을 결합하여 제한 채널을 형성합니다. 가격이이 채널을 통과하면 폐쇄 가격은 채널 가격으로 설정됩니다. 그 후 트렌드 트레이더 이동 평균 (AVR) 이라고 불리는 제한 된 폐쇄 가격의 이동 평균을 계산합니다. 마지막으로 트렌드 트레이더 이동 평균의 위와 아래로 볼링거 밴드를 그리며 거래 신호를 형성합니다. 가격이 상위 밴드를 통과 할 때 길고, 하위 밴드를 통과 할 때 짧습니다.

전략 논리

이 전략은 먼저 ATR 범위를 계산하고 가장 높고 가장 낮은 가격과 결합한 한계 채널을 형성합니다. 폐쇄 가격은 채널을 통과 할 때만 채널 가격으로 제한됩니다. 그 후 중장기 트렌드 방향을 반영하는 제한 된 폐쇄 가격의 트렌드 트레이더 이동 평균을 계산합니다. 마지막으로 볼링거 밴드로 트렌드 트레이더 이동 평균에 평행한 상위 대와 하위 대를 그리십시오. 상위 대를 통과하면 긴 신호를 생성하고 하위 대를 통과하면 짧은 신호를 생성합니다.

트렌드를 판단하는 핵심은 중장기 트렌드 방향을 구현하는 트렌드 트레이더 이동 평균에 있다. 볼링거 밴드의 역할은 일부 잘못된 브레이크를 필터링하고 거래 신호를 더 신뢰할 수 있게 만드는 것이다. 전체 전략은 트렌드 추종과 브레이크를 결합하여 강력한 트렌드 시스템을 형성한다.

장점

  1. ATR 및 가격 범위는 시장 변동성을 추적하기 위한 적응 채널을 구축합니다.
  2. 트렌드 트레이드 AVR는 중장기 동향을 명확히 판단합니다.
  3. 볼링거 밴드는 가짜 브레이크를 필터링하고 신호 품질을 향상시킵니다.
  4. 이 시스템은 강한 추세를 반영하고, 장기 보유는 좋은 수익을 얻을 수 있습니다.

위험성

  1. 장기 보유는 어떤 갑작스러운 사건으로 인해 큰 손실을 입을 수 있습니다.
  2. 부적절한 매개 변수 설정은 과도한 거래, 거래 비용 증가 및 미끄러짐으로 이어질 수 있습니다.
  3. 성능은 파라미터 조정에 크게 의존합니다.

해결책:

  1. 보유 기간을 적절히 줄이고 스톱 손실을 설정합니다.
  2. 신호에 충분한 버퍼를 제공하기 위해 매개 변수를 최적화
  3. 매개 변수를 조정하기 위해 역사 데이터와 라이브 거래를 활용

최적화 방향

  1. 연구 매개 변수 설정 다른 시장 및 시간 프레임
  2. 다른 지표가 잘못된 파장을 필터링할 수 있는지 테스트합니다.
  3. 무역 손실 당 제한에 중지 손실을 통합하려고 노력

결론

이 전략은 전반적으로 강한 트렌드 다음 시스템이다. 중장기 트렌드를 판단하고 볼링거 밴드와 결합하여 거래 신호를 생성할 수 있다. 매개 변수 최적화를 통해 안정적인 알파를 얻을 수 있다. 그러나 장기적으로 보유할 때 갑작스러운 사건으로 인한 막대한 손실을 피하기 위해 위험 통제도 중요하다. 일반적으로, 전략은 장기 지속 가능한 알파를 위해 추가 연구와 최적화를 받아야 한다.


/*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")

더 많은