ADX 및 MACD 지표에 기반한 거래 전략

저자:차오장, 날짜: 2023-12-13 15:45:24
태그:

img

전반적인 설명

이 전략은 ADX 및 MACD 지표에 기반한 트렌드 다음 전략 (Trend Following Strategy Based on ADX and MACD Indicators) 이라고 불린다. ADX가 강한 트렌드를 나타내고 MACD가 거래 신호를 내놓을 때만 긴 또는 짧은 포지션을 설정한다.

전략 논리

이 전략은 시장 트렌드 방향과 강도를 판단하기 위해 ADX 및 +DI, -DI 라인을 계산합니다. +DI 라인이 -DI 이상으로 넘으면 상승 추세이며, -DI가 +DI 이하로 떨어지면 하락 추세입니다. 또한 ADX 판독이 20 이상이면 트렌드가 충분히 강하다는 것을 나타냅니다. 이 전략은 MACD 지표의 차이 값 (macdline) 과 신호 라인 (신호 라인) 을 구매 및 판매 신호로 넘어서 트렌드를 따르는 거래를 수행합니다.

구체적으로, 거래 신호 논리는 다음과 같습니다.

긴 신호: +DI > -DI와 MACD 차선 선이 신호 선 위를 가로 지릅니다.
짧은 신호: -DI > +DI 및 MACD 차이 선이 신호 선 아래를 가로 지릅니다.

이 논리를 통해 전략은 강력한 트렌드에 최적의 입시 시기를 파악할 수 있습니다.

장점

이 전략의 가장 큰 장점은 트렌드 판단과 엔트리 타이밍 선택을 모두 고려하여 거래자가 강력한 방향 시장이있을 때 상대적으로 좋은 엔트리 포인트를 찾을 수 있다는 것입니다. 이것은 시스템의 안정성과 수익성을 크게 향상시킵니다.

또한, 스톱 로스 논리도 구현된다. 포지션 손실이 사용자 정의 스톱 로스 가격을 초과하면 손실을 적극적으로 절감한다. 이것은 또한 전략의 하이라이트이다.

위험성

이 전략은 몇 가지 장점을 가지고 있지만, 여전히 다음과 같은 위험을 인식해야 합니다.

  1. ADX와 MACD로 구성된 거래 신호는 특정 시장 상황에서 실패하거나 잘못된 신호를 제공하여 불필요한 손실을 초래할 수 있습니다.

  2. 사용자가 정한 스톱 로스 가격은 침투될 수 있어 예상 이상의 손실이 발생할 수 있습니다.

  3. 다양한 시장에서 너무 많은 비효율적인 거래가 발생하여 거래 비용을 소비 할 수 있습니다.

이러한 위험을 완화하기 위해 ADX와 MACD의 매개 변수 최적화와 엄격한 돈 관리 규칙을 구현하는 것이 좋습니다. 또한 다른 시장 환경에서 중지 손실 논리도 적절히 조정해야합니다.

개선 방향

이 전략은 여전히 개선할 여지가 있습니다.

  1. 더 강력한 거래 신호를 형성하기 위해 더 많은 지표를 도입할 수 있습니다. 예를 들어 변동성 지수를 거래 제한에 결합합니다.

  2. ADX와 MACD 매개 변수는 기계 학습을 통해 자동으로 최적화 될 수 있습니다.

  3. 시장 변동의 동적 추적을 위해 적응 가능한 스톱 로스 메커니즘을 설정할 수 있습니다.

이러한 방법은 전략의 안정성과 수익성을 더욱 향상시키는 데 도움이 될 수 있습니다.

결론

결론적으로, ADX 및 MACD 지표에 기반한 트렌드 다음 전략은 트렌드 방향을 결정하고 최적의 진입 시기를 찾고, 스톱 로스 로직 등을 설정하는 데 장점이 있으며, 상당한 거래 시스템입니다. 적절한 매개 변수 조정 및 위험 통제를 고려하면 적당한 투자 수익을 얻을 수 있습니다. 그러나 거래자는 여전히 잠재적 인 위험에 신중하고 변화하는 시장 환경을 면밀히 모니터링해야합니다. 체계적 모니터링 및 향상으로 전략은 지속 가능한 알파를 달성 할 가능성이 있습니다.


/*backtest
start: 2022-12-06 00:00:00
end: 2023-12-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("TUE ADX/MACD Confluence V1.0", overlay=true)

showsignals = input(true, title="Show BUY/SELL Signals")
showcandlecolors = input(true, title="Show Candle Colors")
length = input(14, title="ADX Length")
smoothing = input(10, title="ADX Smoothing")
macdsource = input(close, title="MACD Source")
macdfast = input(12, title="MACD Fast Length")
macdslow = input(26, title="MACD Slow Length")
macdsignal = input(9, title="MACD Signal Length")
colorup = input(color.green, title="Up Candle Color")
colordown = input(color.red, title="Down Candle Color")

/////////////////////////////////////////////////////////////////////////////////////////////// ADX AND MACD CALC
[diplus, diminus, adx] = ta.dmi(length, smoothing)

[macdline, signalline, histline] = ta.macd(macdsource, macdfast, macdslow, macdsignal)

//////////////////////////////////////////////////////////////////////////////////////////////TRADE CALC

longcheck = diplus > diminus and macdline > signalline
shortcheck = diminus > diplus and signalline > macdline

int trade = 0

//Open from nothing

if trade == 0 and longcheck
    trade := 1

else if trade == 0 and shortcheck
    trade := -1
    
//Reversal

else if trade == 1 and shortcheck
    trade := -1
    
else if trade == -1 and longcheck
    trade := 1
    
//Keep status quo until crossover

else
    trade := trade[1]

//////////////////////////////////////////////////////////////////////////////////////////////PLOT 

colors = longcheck ? colorup : shortcheck ? colordown : color.white

plotcandle(open, high, low, close, color = showcandlecolors ? colors : na)

plotshape(trade[1] != 1 and trade == 1 and showsignals, style=shape.labelup, text='BUY', textcolor=color.white, color=color.green, size=size.small, location=location.belowbar)
plotshape(trade[1] != -1 and trade == -1 and showsignals, style=shape.labeldown, text='SELL', textcolor=color.white, color=color.red, size=size.small, location=location.abovebar)

///////////////////////////////////////////////////////////////////////////////////////////// ALERTS

// Add Stop Loss
stopLossPrice = input(100, title="Stop Loss Price")

if trade == 1
    strategy.entry("Long", strategy.long)

if trade == -1
    strategy.entry("Short", strategy.short)

if trade == 1 and close < close[1] - stopLossPrice
    strategy.close("LongExit")

if trade == -1 and close > close[1] + stopLossPrice
    strategy.close("ShortExit")


더 많은