
이 전략의 핵심은 앤드루 아브라함이 1998년 9월 ?? 트레이딩 트렌드 ?? 저널 TASC 칼럼에 발표한 기사에 기초한 지표이다. 이 지표는 평균 실제 변동 범위와 가격 채널을 사용하여 시장의 경향 방향을 판단하고 MACD 지표와 결합하여 중장선 경향을 잡기 위해 거래 신호 필터링을 수행한다.
이 전략은 우선 21일 평균 실제 변동 범위 ((ATR) 의 중화 이동 평균을 기준 변동 범위로 계산한다. 다음에는 지난 21일 동안의 최고 가격과 최저 가격을 계산하여 현재 K선 종결 가격과 기준 변동 범위의 상하계를 비교하여 가격이 채널을 뚫었는지 판단하여 추세 방향을 판단한다.
구체적으로, 채널의 상한은 지난 21일 최고 가격에서 기준 ATR의 3배를 빼고, 채널의 하한은 지난 21일 최저 가격에서 기준 ATR의 3배를 더한다. 종전 가격이 채널의 상한보다 높을 때, 낙관적 경향으로 판단하고, 종전 가격이 채널의 하한보다 낮을 때, 낙관적 경향으로 판단한다.
트렌드 방향을 결정하는 동시에, 이 전략은 MACD 지표에 필터링을 도입한다. MACD 기둥이 적당할 때만 구매 신호를 생성하여 구매 지점을 놓치지 않도록한다.
이 전략은 트렌드 판단과 지표 필터링을 결합하여 시장의 중장선 트렌드 방향을 효과적으로 판단하고 시장의 단기 변동에 의해 오해되는 것을 피합니다. 구체적인 장점은 다음과 같습니다:
이 전략은 다음과 같은 몇 가지 측면에서 위험성이 있습니다.
이에 대해, 최적화된 파라미터 설정, 엄격한 포지션 사이즈링, 적시에 손실을 중지함으로써 위험을 줄일 수 있다.
이 전략은 다음의 몇 가지 측면에서 최적화될 수 있습니다.
다양한 Length 매개 변수 또는 Multiplier 매개 변수의 조합을 테스트하여 재측정 데이터에 기초하여 최적의 수익률을 창출하는 매개 변수 조합을 찾을 수 있습니다.
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)