이 전략은 주로 ADX 지표를 사용하여 트렌드를 판단하고, MA와 EMA 이동 평균을 다른 매개 변수 설정과 결합하여 단장 트렌드 추적 전략을 구축합니다. ADX가 상승하면 긴 방향을 나타냅니다. 가격이 상승 MA와 EMA를 넘을 때 긴 포지션을 개척합니다. ADX가 떨어지거나 가격이 MA 또는 EMA 이하로 떨어지면 포지션을 닫습니다.
이 전략은 주로 ADX를 사용하여 시장 추세와 강도를 판단합니다. ADX는 추세의 존재와 강도를 결정하기 위해 가격 변화의 정도와 방향을 계산합니다. ADX가 상승하면 현재 상승 추세에 있음을 의미합니다. ADX가 떨어지면 추세가 약화되고 있음을 의미합니다.
이 전략은 또한 보조 판단으로 다른 매개 변수 설정을 가진 두 개의 이동 평균, MA와 EMA를 사용합니다. 그들은 가격의 무작위성을 효과적으로 필터링하고 가격의 주요 트렌드 방향을 보여줄 수 있습니다. 가격이 상승하고 MA와 EMA를 통과하면 긴 신호입니다. 가격이 떨어지고 통과하면 폐쇄 신호입니다.
ADX와 이동 평균의 특성을 결합하여 전략은 트렌드 방향을 판단하기 위해 거래 신호를 구축합니다. ADX가 상승하고 가격이 상승 MA와 EMA를 통과 할 때 긴 지점을 가지며 ADX가 떨어지거나 가격이 MA/EMA를 통과 할 때 포지션을 닫습니다. 그것은 단지 긴 트렌드 추적 전략을 구현합니다.
이 전략의 주요 장점은 다음과 같습니다.
또한 몇 가지 위험이 있습니다.
해결책:
전략은 다음 측면에서 최적화 될 수 있습니다:
일반적으로 ADX를 사용하여 트렌드 강도를 판단하고 보조 필터로 두 개의 이동 평균을 사용합니다. 유효하지 않은 거래의 발생을 효과적으로 제어하고 트렌드를 추적하는 효과를 달성합니다. 비교적 안정적인 장기 단위 전략입니다. 일부 최적화로 전략의 안정성과 수익률을 더욱 향상시킬 수 있습니다.
/*backtest start: 2023-01-22 00:00:00 end: 2024-01-28 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("ADX, MA, and EMA Long Strategy - ADX Trending Up", shorttitle="ADX_MA_EMA_Long_UpTrend", overlay=true) adxlen = input(14, title="ADX Smoothing") dilen = input(14, title="DI Length") maPeriod = input(50, title="MA Period") emaPeriod = input(50, title="EMA Period") dirmov(len) => up = change(high) down = -change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) truerange = rma(tr, len) plus = fixnan(100 * rma(plusDM, len) / truerange) minus = fixnan(100 * rma(minusDM, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) sig = adx(dilen, adxlen) maValue = sma(close, maPeriod) emaValue = ema(close, emaPeriod) longCondition = sig > sig[1] and close > maValue and close > emaValue if (longCondition) strategy.entry("Long", strategy.long) exitCondition = sig < sig[1] or close < maValue or close < emaValue if (exitCondition) strategy.close("Long") plot(maValue, color=color.blue, title="MA") plot(emaValue, color=color.orange, title="EMA") plot(sig, color=color.red, title="ADX")