Cette stratégie est un système de trading complet qui combine des moyennes mobiles, un indice de force relative et des indicateurs de force de tendance. Grâce à la coordination de plusieurs indicateurs techniques, il parvient à une capture précise des tendances du marché et à un contrôle efficace des risques. Le système adopte un mécanisme dynamique de stop-loss et de take-profit, assurant un ratio risque-rendement favorable tout en s'adaptant aux différentes conditions du marché grâce à des ajustements de paramètres flexibles.
La stratégie est principalement basée sur trois indicateurs de base: les moyennes mobiles exponentielles (EMA), l'indice de force relative (RSI) et l'indice de direction moyen (ADX). Lorsque l'EMA rapide dépasse l'EMA lente, le système vérifie si l'ESR est dans un territoire non suracheté (en dessous de 60), tout en confirmant une force de tendance suffisante avec l'ADX (au-dessus de 15). Ces conditions déclenchent des signaux d'entrée longs lorsqu'elles sont remplies. Les conditions opposées déclenchent des signaux de sortie.
Cette stratégie établit un système de trading relativement complet grâce à l'utilisation complète de plusieurs indicateurs techniques. Son principal avantage réside dans l'amélioration de la fiabilité du signal de trading grâce à la coordination des indicateurs tout en assurant la sécurité du trading grâce à des mécanismes de contrôle des risques dynamiques. Bien que certaines limitations inhérentes existent, la stratégie a une marge d'amélioration significative grâce aux directions d'optimisation suggérées.
/*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")