이 전략은 이동 평균, 상대 강도 지수 및 트렌드 강도 지표를 결합 한 포괄적인 거래 시스템입니다. 여러 기술적 지표의 조정을 통해 시장 트렌드를 정확하게 파악하고 효과적인 위험 통제를 달성합니다. 시스템은 역동적 인 스톱 로스 및 영리 메커니즘을 채택하여 유연한 매개 변수 조정을 통해 다른 시장 조건에 적응하면서 유리한 리스크 리워드 비율을 보장합니다.
이 전략은 주로 세 가지 핵심 지표: 빠르고 느린 기하급수적 이동 평균 (EMA), 상대적 강도 지수 (RSI), 평균 방향 지수 (ADX) 를 기반으로 한다. 빠른 EMA가 느린 EMA를 넘을 때, 시스템은 RSI가 과잉 구매되지 않은 영역 (60 이하) 에 있는지 확인하고 ADX (위 15) 와 충분한 트렌드 강도를 확인한다. 이러한 조건이 충족되면 긴 엔트리 신호를 유발한다. 반대 조건은 출구 신호를 유발한다. 시스템은 또한 위험-상금 비율에 기초한 동적 인수점과 스톱-러스 포인트를 구현하여 매개 위험에 대한 정확한 통제를 달성한다.
이 전략은 여러 기술적 지표의 포괄적 인 사용을 통해 비교적 완전한 거래 시스템을 구축합니다. 주요 장점은 동적 리스크 제어 메커니즘을 통해 거래 안전을 보장하면서 지표 조정을 통해 거래 신호 신뢰성을 향상시키는 데 있습니다. 일부 고유 한 제한이 존재하지만 전략은 제안 된 최적화 방향을 통해 개선 할 수있는 상당한 여지가 있습니다. 전반적으로 이것은 추가 최적화 및 실제 응용에 적합한 실용적인 거래 전략 프레임워크입니다.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-23 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Enhanced EMA + RSI + ADX Strategy (Focused on 70% Win Rate)", 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(15, title="ADX Threshold") riskRewardRatio = input.float(1.5, title="Risk/Reward Ratio") rsiOverbought = input.int(60, title="RSI Overbought Level") // Adjusted for flexibility rsiOversold = input.int(40, title="RSI Oversold Level") // 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 with Confirmation buyCondition = ta.crossover(fastEMA, slowEMA) and rsiValue < rsiOverbought and adxValue > adxThreshold sellCondition = ta.crossunder(fastEMA, slowEMA) and rsiValue > rsiOversold and adxValue > adxThreshold // Dynamic Exit Conditions takeProfit = strategy.position_avg_price + (close - strategy.position_avg_price) * riskRewardRatio stopLoss = strategy.position_avg_price - (close - strategy.position_avg_price) // Entry logic if (buyCondition) strategy.entry("Buy", strategy.long) strategy.exit("Sell", from_entry="Buy", limit=takeProfit, stop=stopLoss) if (sellCondition) strategy.close("Buy") // Plotting EMAs 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 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") // Alerts alertcondition(buyCondition, title="Buy Alert", message="Buy signal triggered") alertcondition(sellCondition, title="Sell Alert", message="Sell signal triggered")