이 전략은 지수 이동 평균 (EMA), 이동 평균 컨버전스 디버전스 (MACD), 슈퍼 트렌드, 평균 방향 지표 (ADX), 평균 진정한 범위 (ATR) 를 포함한 여러 기술적 지표를 결합하여 시장 트렌드, 변동성 및 거래 신호를 결정하여 암호화폐 거래에서 강력한 수익을 달성하는 것을 목표로합니다. 전략은 트렌드 식별, 오스실레이션 결정 및 리스크 통제를 균형 잡기 위해 다른 지표의 강점을 활용하여 거래자에게 신뢰할 수있는 거래 신호를 제공합니다.
EMA-MACD-SuperTrend-ADX-ATR 다중 지표 거래 신호 전략은 여러 기술적 지표를 통합하는 양적 거래 전략이다. EMA, MACD, ADX 및 ATR과 같은 지표를 결합함으로써 전략은 트렌드, 오스실레이션 및 리스크 제어 등 다양한 차원에서 시장을 분석하여 거래자에게 신뢰할 수있는 거래 신호를 제공합니다. 전략의 강점은 다중 지표 조합, 트렌드 식별, 리스크 제어 및 스톱 로스 메커니즘에 있습니다. 그러나 또한 매개 변수 최적화, 시장 적응력, 거래 비용 및 백테스팅 제한과 같은 위험에 직면합니다. 미래에 전략은 동적 매개 변수 최적화, 감성 지표 통합, 스톱 로스 메커니즘 강화, 포지셔닝 최적화 및 멀티 타임프레임 분석을 통해 최적화 및 개선 될 수 있습니다.
/*backtest start: 2023-03-23 00:00:00 end: 2024-03-28 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA-MACD-SuperTrend-ADX-ATR Strategy", overlay = true, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 70) //MACD [macdLine, signalLine, hist] = ta.macd(close, 12, 26, 9) //Plot Candlesticks candlestickscolor = (hist >= 0 ? (hist[1] < hist ? #26A69A : #B2DFDB) : (hist[1] < hist ? #FFCDD2 : #FF5252)) plotcandle(open, high, low, close, color = candlestickscolor, bordercolor = candlestickscolor) //EMA ema12 = ta.ema(close, 12) ema26 = ta.ema(close, 26) //Plot EMA plot(ema26, color= #EE6969, linewidth = 2) plot(ema12, color= #B4CBF0, linewidth = 2) //Average Directional Index (ADX) Calculation trueRange = ta.rma(ta.tr, 14) plusDM = ta.rma(math.max(high - high[1], 0), 14) minusDM = ta.rma(math.max(low[1] - low, 0), 14) plusDI = 100 * ta.rma(plusDM / trueRange, 14) minusDI = 100 * ta.rma(minusDM / trueRange, 14) adxValue = 100 *ta.rma(math.abs(plusDI - minusDI) / (plusDI + minusDI), 14) //Trend Confirmation (ADX) trending = adxValue > 15 //Volatility Filter (ATR) atrValue = ta.atr(14) volatility = atrValue > 0.5 * ta.atr(20) //SuperTrend atrlength = input.int(10, "ATR Length", step = 1) factor = input.float(3, "Factor", step = 0.1) [supertrend, direction] = ta.supertrend(factor, atrlength) supertrend := barstate.isfirst ? na : supertrend //Plot SuperTrend uptrend = plot(direction < 0 ? supertrend : na, "Up Trend", color = color.green, style = plot.style_linebr, linewidth = 1) downtrend = plot(direction > 0 ? supertrend : na, "Down Trend", color = color.red, style = plot.style_linebr, linewidth = 1) bodymiddle = plot(barstate.isfirst ? na : (open + close)/2, "Body Middle", display = display.none) fill(bodymiddle, uptrend, color.new(color.green, 90), fillgaps = false) fill(bodymiddle, downtrend, color.new(color.red, 90), fillgaps = false) //Entry Conditions longCondition = ta.crossover(ema12, ema26) and trending and volatility and hist > 0 shortCondition = ta.crossunder(ema12, ema26) and trending and volatility and hist < 0 long_SL_Con = ta.crossunder(close, supertrend) short_SL_Con = ta.crossover(close, supertrend) //Plot Signal plotshape(longCondition, title='Buy', text='Buy', location= location.belowbar, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.new(color.white, 0)) plotshape(shortCondition, title='Sell', text='Sell', location= location.abovebar, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.new(color.white, 0)) //Backtest start = timestamp(2020, 1, 1, 0, 0, 0) end = timestamp(2024, 1, 1, 0, 0, 0) backtestperiod = time >= start and time <= end if longCondition and backtestperiod strategy.entry("Buy", strategy.long) if long_SL_Con and backtestperiod strategy.close("Buy") if shortCondition and backtestperiod strategy.entry("Sell", strategy.short) if short_SL_Con and backtestperiod strategy.close("Sell")