
La stratégie est un système de trading de revers de tendance combinant une moyenne mobile indicielle (EMA) et un indicateur relativement faible (RSI). Le système est conçu pour contrôler efficacement les retraits par des signaux croisés de 9 cycles et 21 cycles d’EMA, en combinaison avec une confirmation de rupture de l’indicateur RSI au niveau de 50, fournissant aux traders un point de revers de tendance précis.
La logique de base de la stratégie est basée sur le croisement de l’EMA rapide (cycle 9) et l’EMA lente (cycle 21) et la confirmation de la dynamique est effectuée à l’aide de l’indicateur RSI. Lorsque l’EMA rapide traverse l’EMA lente vers le haut et que le RSI est supérieur à 50, le système émet un signal de multiplication; lorsque l’EMA rapide traverse l’EMA lente vers le bas et que le RSI est inférieur à 50, le système émet un signal de placement.
La stratégie, combinée à une confirmation croisée des EMA et à la dynamique du RSI, a permis de construire un système de suivi de tendance robuste. Un mécanisme de contrôle des risques parfait et une interface visuelle claire lui confèrent une grande praticité. Bien que la performance soit légèrement insuffisante sur les marchés de la marge horizontale, la performance globale de la stratégie devrait être encore améliorée par l’orientation d’optimisation recommandée.
/*backtest
start: 2024-11-26 00:00:00
end: 2024-12-25 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Crossover with RSI Confirmation and Buy/Sell Signals", overlay=true)
// Input for EMAs and RSI
fastLength = input.int(9, title="Fast EMA Length")
slowLength = input.int(21, title="Slow EMA Length")
rsiLength = input.int(14, title="RSI Length")
rsiLevel = input.int(50, title="RSI Level", minval=0, maxval=100)
// Calculate the EMAs and RSI
fastEMA = ta.ema(close, fastLength)
slowEMA = ta.ema(close, slowLength)
rsi = ta.rsi(close, rsiLength)
// Plot the EMAs on the chart
plot(fastEMA, color=color.green, linewidth=2, title="Fast EMA (9)")
plot(slowEMA, color=color.red, linewidth=2, title="Slow EMA (21)")
// Plot the RSI on a separate pane (below the chart)
hline(rsiLevel, "RSI Level", color=color.gray)
plot(rsi, color=color.blue, linewidth=2, title="RSI")
// Buy condition: Fast EMA crosses above Slow EMA and RSI crosses above 50
buyCondition = ta.crossover(fastEMA, slowEMA) and rsi > rsiLevel
// Sell condition: Fast EMA crosses below Slow EMA and RSI crosses below 50
sellCondition = ta.crossunder(fastEMA, slowEMA) and rsi < rsiLevel
// Execute trades based on conditions
if (buyCondition)
strategy.entry("Buy", strategy.long)
label.new(bar_index, low, "Buy", color=color.green, textcolor=color.white, style=label.style_label_up, size=size.small)
if (sellCondition)
strategy.close("Buy")
label.new(bar_index, high, "Sell", color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small)
// Strategy exit (optional): Fixed risk-to-reward ratio (take profit and stop loss)
takeProfit = input.int(2, title="Take Profit (Risk-Reward)", minval=1)
stopLoss = input.int(1, title="Stop Loss (Risk-Reward)", minval=1)
strategy.exit("Exit Buy", "Buy", stop=close * (1 - stopLoss / 100), limit=close * (1 + takeProfit / 100))
// Plot buy/sell arrows for visualization
plotarrow(buyCondition ? 1 : na, offset=-1, colorup=color.green, maxheight=30, title="Buy Signal Arrow")
plotarrow(sellCondition ? -1 : na, offset=-1, colordown=color.red, maxheight=30, title="Sell Signal Arrow")