
Il s’agit d’une stratégie de suivi de la tendance qui combine une croix de ligne équilibrée et un indicateur relativement faible ((RSI)). Cette stratégie permet de déterminer la direction de la tendance du marché en croisant des moyennes mobiles à court et à long terme, tout en utilisant le RSI comme filtre dynamique pour confirmer la force de la tendance, ce qui améliore la fiabilité des signaux de négociation. La stratégie comprend également des points de perte et des points d’arrêt pour la gestion du risque.
La stratégie utilise les moyennes mobiles simples à 9 cycles et 21 cycles (SMA) comme indicateur principal de la tendance. Lorsque la moyenne à court terme traverse la moyenne à long terme à la hausse et que le RSI est supérieur à 50, le système émet un signal de multiplication.
Il s’agit d’une stratégie de suivi de tendance structurée et logiquement claire. La direction de la tendance fondamentale est fournie par la croisée des lignes, le RSI fournit la confirmation de la dynamique, puis est associé à un mécanisme de gestion des risques, formant un système de négociation complet. Bien qu’il existe des limites inhérentes, la stratégie est susceptible de maintenir une performance stable dans différents environnements de marché grâce à une optimisation et une adaptation continues.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Moving Average Crossover + RSI Strategy", overlay=true, shorttitle="MA RSI Strategy")
// --- Input Parameters ---
shortMA = input.int(9, title="Short MA Period", minval=1)
longMA = input.int(21, title="Long MA Period", minval=1)
rsiLength = input.int(14, title="RSI Length", minval=1)
rsiOverbought = input.int(70, title="RSI Overbought Level", minval=50, maxval=100)
rsiOversold = input.int(30, title="RSI Oversold Level", minval=0, maxval=50)
stopLossPercent = input.float(1, title="Stop Loss Percentage", minval=0.1, maxval=10.0) / 100
takeProfitPercent = input.float(2, title="Take Profit Percentage", minval=0.1, maxval=10.0) / 100
// --- Calculate Moving Averages ---
shortMA_value = ta.sma(close, shortMA)
longMA_value = ta.sma(close, longMA)
// --- Calculate RSI ---
rsi_value = ta.rsi(close, rsiLength)
// --- Buy and Sell Conditions ---
longCondition = ta.crossover(shortMA_value, longMA_value) and rsi_value > 50
shortCondition = ta.crossunder(shortMA_value, longMA_value) and rsi_value < 50
// --- Plot Moving Averages ---
plot(shortMA_value, color=color.blue, linewidth=2, title="Short MA")
plot(longMA_value, color=color.red, linewidth=2, title="Long MA")
// --- Plot RSI (Optional) ---
hline(rsiOverbought, "Overbought", color=color.red)
hline(rsiOversold, "Oversold", color=color.green)
plot(rsi_value, color=color.purple, title="RSI")
// --- Strategy Execution ---
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// --- Risk Management (Stop Loss and Take Profit) ---
longStopLoss = close * (1 - stopLossPercent)
longTakeProfit = close * (1 + takeProfitPercent)
shortStopLoss = close * (1 + stopLossPercent)
shortTakeProfit = close * (1 - takeProfitPercent)
// Set the stop loss and take profit for long and short positions
strategy.exit("Long Exit", from_entry="Long", stop=longStopLoss, limit=longTakeProfit)
strategy.exit("Short Exit", from_entry="Short", stop=shortStopLoss, limit=shortTakeProfit)