이 전략은 다중 기술 지표에 기반한 양적 거래 시스템이며, 기하급수적인 이동 평균 (EMA), 상대적 강도 지수 (RSI), 평균 방향 지수 (ADX) 를 통합합니다. 이 전략은 EMA 크로스오버 신호를 주요 입시 기준으로 사용하고, 과잉 구매 / 과잉 판매 확인을 위한 RSI와 트렌드 강도 평가에 대한 ADX와 결합하여 완전한 거래 결정 시스템을 형성합니다. 이 전략에는 사전 정의된 리스크-상금 비율을 통해 스톱-러스 및 취리 수익 수준을 제어하는 리스크 관리 모듈도 포함됩니다.
이 전략의 핵심 논리는 다음의 핵심 요소에 기반합니다.
이 전략은 여러 가지 기술적 지표를 통합하는 완전한 논리를 가진 잘 설계된 전략입니다. EMA, RSI 및 ADX의 통합을 통해 전략은 트렌드 추적 및 리스크 제어에서 좋은 성능을 보여줍니다. 최적화 할 수있는 영역이 있지만 전략은 좋은 실용적 가치와 확장 할 수있는 공간이 있습니다. 제안 된 최적화 방향을 통해 성능을 더 향상시킬 수 있습니다.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-11 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Enhanced EMA + RSI + ADX Strategy", overlay=true) // Input parameters lenFast = input.int(9, title="Fast EMA Length", minval=1) lenSlow = input.int(21, title="Slow EMA Length", minval=1) rsiPeriod = input.int(14, title="RSI Period") adxPeriod = input.int(14, title="ADX Period") adxSmoothing = input.int(1, title="ADX Smoothing") adxThreshold = input.int(20, title="ADX Threshold") riskRewardRatio = input.float(2.0, title="Risk/Reward Ratio") // EMA Calculations fastEMA = ta.ema(close, lenFast) slowEMA = ta.ema(close, lenSlow) // RSI Calculation rsiValue = ta.rsi(close, rsiPeriod) // ADX Calculation [plusDI, minusDI, adxValue] = ta.dmi(adxPeriod, adxSmoothing) // Entry Conditions buyCondition = ta.crossover(fastEMA, slowEMA) and rsiValue < 60 and adxValue > adxThreshold sellCondition = ta.crossunder(fastEMA, slowEMA) and rsiValue > 40 and adxValue > adxThreshold // Entry logic if (buyCondition) strategy.entry("Buy", strategy.long) strategy.exit("Sell", from_entry="Buy", limit=close + (close - strategy.position_avg_price) * riskRewardRatio, stop=close - (close - strategy.position_avg_price)) if (sellCondition) strategy.close("Buy") // Plotting EMAs (thinner lines) plot(fastEMA, color=color.new(color.green, 0), title="Fast EMA", linewidth=1) plot(slowEMA, color=color.new(color.red, 0), title="Slow EMA", linewidth=1) // Entry and exit markers (larger shapes) plotshape(series=buyCondition, style=shape.triangleup, location=location.belowbar, color=color.new(color.green, 0), size=size.normal, title="Buy Signal") plotshape(series=sellCondition, style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.normal, title="Sell Signal") // Displaying price labels for buy/sell signals if (buyCondition) label.new(bar_index, low, text="Buy\n" + str.tostring(close), color=color.new(color.green, 0), style=label.style_label_down, textcolor=color.white) if (sellCondition) label.new(bar_index, high, text="Sell\n" + str.tostring(close), color=color.new(color.red, 0), style=label.style_label_up, textcolor=color.white) // Optional: Add alerts for entry signals alertcondition(buyCondition, title="Buy Alert", message="Buy signal triggered") alertcondition(sellCondition, title="Sell Alert", message="Sell signal triggered")