
La stratégie est un système de négociation intégré qui combine des moyennes mobiles, des indicateurs de faiblesse relative et des indicateurs de force de tendance. La combinaison de plusieurs indicateurs techniques permet de capturer avec précision les tendances du marché et de contrôler efficacement les risques. Le système utilise un mécanisme de stop-loss dynamique qui garantit le rapport risque-rendement des transactions, tout en s’adaptant aux différents environnements du marché grâce à un ajustement flexible des paramètres de l’indicateur.
La stratégie est basée sur trois indicateurs principaux: les moyennes mobiles des indices rapides et lents (EMA), les indicateurs relativement faibles (RSI) et les indicateurs de tendance moyenne (ADX). Lorsque l’EMA rapide traverse l’EMA lente, le système vérifie si le RSI est dans la zone de non-survente (moins de 60), tout en confirmant que l’ADX affiche une force de tendance suffisante (plus de 15). Lorsque ces conditions sont remplies, le système émet plusieurs signaux.
La stratégie crée un système de négociation relativement complet grâce à l’utilisation intégrée de multiples indicateurs techniques. Son avantage central réside dans l’amélioration de la fiabilité des signaux de négociation grâce à la synergie des indicateurs, tout en garantissant la sécurité des transactions grâce à un mécanisme de contrôle du risque dynamique. Bien qu’il existe certaines limitations inhérentes, la stratégie a encore beaucoup de place d’amélioration grâce à l’orientation de l’optimisation proposée.
/*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")