이 전략의 핵심은 TASC 잡지 1998년 9월호에서 앤드류 에이브러햄이 발표한 기사?? 트레이딩 트렌드?? 에서 개발된 지표에 기초합니다. 지표는 중장기 트렌드를 포착하는 것을 목표로 거래 신호 필터링을 위한 MACD 지표와 결합하여 시장 트렌드 방향을 결정하기 위해 평균 진정한 범위와 가격 채널을 사용합니다.
이 전략은 먼저 평균 실 범위 (ATR) 의 21 일 가중화 이동 평균을 기본 변동성 범위로 계산합니다. 그 다음 지난 21 일 동안 가장 높고 가장 낮은 가격을 계산합니다. 현재 폐쇄 가격을 기본 범위의 상부 및 하부 한계와 비교하여 가격이 트렌드 방향을 결정하기 위해 채널을 벗어날 수 있는지 판단합니다.
특히, 상위 채널 제한은 지난 21 일 동안의 가장 높은 가격인 마이너스 3 배 기본 라인 ATR로 정의되며, 하위 채널 제한은 지난 21 일 동안의 가장 낮은 가격인 마이너스 3 배 기본 라인 ATR로 정의됩니다. 닫기 가격이 상위 제한보다 높을 때 상승 추세를 나타냅니다. 닫기 가격이 하위 제한보다 낮을 때 하향 추세를 나타냅니다.
트렌드 방향을 결정하는 동안, 이 전략은 필터링을 위한 MACD 지표를 도입하기도 한다. MACD 히스토그램이 양성일 때만 구매 신호를 생성하여 구매 기회를 놓치지 않도록 한다.
이 전략은 트렌드 결정과 지표 필터링을 결합하여 단기 변동에 의해 잘못 인도되지 않고 중장기 시장 트렌드 방향을 효과적으로 식별 할 수 있습니다. 주요 장점은 다음과 같습니다.
이 전략은 또한 다음과 같은 측면에서 주로 몇 가지 위험을 가지고 있습니다.
이러한 위험은 매개 변수를 최적화하고 엄격한 포지션 크기를 설정하고 적시에 스톱 로스를 통해 줄일 수 있습니다.
이 전략은 다음과 같은 주요 측면에서 최적화 될 수 있습니다.
길이 또는 곱셈의 다른 조합을 테스트하여 백테스트를 기반으로 가장 높은 수익을 내는 매개 변수 조합을 찾으십시오.
신호를 필터링하고 수익성을 향상시키기 위해 RSI, KDJ 및 기타 지표를 통합하는 테스트.
트렌드가 강할 때 채널 범위를 적절히 넓히거나 시장이 범위에 더 묶여있을 때 범위를 좁히는 것과 같은 시장 조건에 따라 매개 변수를 동적으로 조정합니다.
요약하자면, 이것은 전반적으로 견고한 트렌드 다음 전략입니다. 가격 채널 트렌드 결정과 MACD 필터링을 결합함으로써 중장기 트렌드를 효과적으로 식별하고 안정적인 수익을 창출 할 수 있습니다. 매개 변수 최적화, 위험 관리 및 적절한 조정으로,이 전략은 거래 시스템의 필수 요소가 될 수 있습니다.
/*backtest start: 2023-01-26 00:00:00 end: 2024-02-01 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © melihtuna //@version=1 strategy("Trend Trader Strategy with MACD", overlay=true) // === Trend Trader Strategy === Length = input(21), Multiplier = input(3, minval=1) MacdControl = input(true, title="Control 'MACD Histogram is positive?' when Buy condition") avgTR = wma(atr(1), Length) highestC = highest(Length) lowestC = lowest(Length) hiLimit = highestC[1]-(avgTR[1] * Multiplier) loLimit = lowestC[1]+(avgTR[1] * Multiplier) ret = iff(close > hiLimit and close > loLimit, hiLimit, iff(close < loLimit and close < hiLimit, loLimit, nz(ret[1], 0))) pos = iff(close > ret, 1, iff(close < ret, -1, nz(pos[1], 0))) barcolor(pos == -1 ? red: pos == 1 ? green : blue ) plot(ret, color= blue , title="Trend Trader Strategy with MACD") // === INPUT BACKTEST RANGE === FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2020, title = "From Year", minval = 2017) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2017) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true // === MACD === [macdLine, signalLine, histLine] = macd(close, 12, 26, 9) macdCond= MacdControl ? histLine[0] > 0 ? true : false : true strategy.entry("BUY", strategy.long, when = window() and pos == 1 and macdCond) strategy.entry("SELL", strategy.short, when = window() and pos == -1)