
이 전략은 Andrew Abraham이 1998년 9월 ?? 트레이딩 테크니컬 애널리스트 ?? 지에 발표한 ?? 트렌드 트래킹 ?? 기사에서 제시한 아이디어를 기반으로 설계되었으며, 동적으로 주식 가격 트렌드를 추적하고 이에 따라 거래 신호를 생성하기 위해 설계되었다.
이 전략은 먼저 최근 21일간의 평균 실제 변동 범위를 기준 하위값으로 계산한 다음 최근 21일간의 최고 가격과 최저 가격을 계산하고, 이에 따라 채널의 상한을 설정하고, 채널의 상한은 최근 21일간의 최고 가격으로 평균 실제 변동 범위를 3배 빼고, 하한은 최근 21일간의 최저 가격으로 평균 실제 변동 범위를 3배 더한다. 접수판이 채널의 상한보다 높을 때, 압력 신호로, 접수판이 채널의 하한보다 낮을 때, 흡수 신호로.
이 전략의 가장 큰 장점은 가격 트렌드를 동적으로 추적할 수 있다는 점이며, 이에 따라 거래 신호를 생성한다. 고정된 파라미터의 이동 평균 전략에 비해 가격 변화 트렌드를 더 잘 포착할 수 있다. 또한, 실제 변동 범위를 결합하여 통로를 구축함으로써, 최고 가격 최저 가격에 따라만 통로를 제한하는 데 따른 단점을 피할 수 있다. 통로의 상하 제한 범위의 변동 범위도 매우 합리적이며, 어느 정도 가짜 돌파구를 피할 수 있다.
이 전략에는 주로 두 가지 측면의 위험이 있습니다. 하나는 거래 신호의 증가로 인한 과도한 거래 위험; 두 번째는 파라미터를 잘못 설정할 수 있는 위험입니다. 이 전략이 동적 파라미터를 채택하기 때문에 거래 신호는 전통적인 이동 평균 전략보다 더 자주 발생하며, 어느 정도 과도한 거래 위험을 초래할 수 있습니다. 또한, 파라미터가 잘못 설정되면, 시간 주기가 너무 짧거나 채널 제한 수치가 너무 작을 경우, 가짜 신호가 증가하여 위험이 증가합니다.
위험을 제어하기 위해, 적절한 변수를 조정할 수 있으며, 더 긴 시간 주기를 선택할 수 있으며, 채널 상하의 제한을 적절히 완화 할 수 있습니다. 또한 단편 손실을 제어하기 위해 손실을 막는 전략을 추가하는 것도 고려할 수 있습니다.
이 전략의 최적화 공간은 상대적으로 크다. 예를 들어, RSI, KD와 같은 다른 필터링 지표와 결합하여 가짜 돌파구를 방지하는 것을 고려할 수 있다. 또한 기계 학습 방법을 통해 자동으로 최적화 변수를 시도할 수 있다. 또한, 다른 주식 및 시장 환경 하에서, 변수의 최우수 값도 달라질 수 있다. 따라서 우리는 또한 주식 및 시장 특성의 동력에 따라 최적의 변수를 선택하는 매커니즘을 개발하는 것을 고려할 수 있다.
이 전략은 전체적으로 매우 실용적인 트렌드 추적 전략이다. 전통적인 이동 평균 전략에 비해, 그것은 더 유연하고 지능적이며, 가격 변화의 트렌드를 동적으로 포착할 수 있다. 매개 변수를 적절히 조정할 경우, 거래 신호 품질이 높고, 좋은 수익을 얻을 수 있다. 후속적으로 추가 최적화를 통해, 이 전략의 성능은 지속적으로 개선될 것으로 예상된다. 실장 테스트 및 투입 적용 가치가 있다.
/*backtest
start: 2023-02-15 00:00:00
end: 2024-02-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 10/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.
////////////////////////////////////////////////////////////
strategy(title="Trend Trader AVR Backtest", overlay = true)
Length = input(21, minval=1),
LengthMA = input(21, minval=1),
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
pos := iff(close < nResMA, -1,
iff(close > nResMA, 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 )
plot(nResMA, color= blue , title="Trend Trader AVR")