
Cette stratégie combine des outils d’analyse technique tels que les moyennes mobiles (MA), les indices de force relative (RSI) et l’amplitude réelle moyenne (ATR) pour saisir les opportunités de tendance du marché. La stratégie utilise les croisements de deux courbes de la même longueur pour déterminer la direction de la tendance et le filtrage dynamique des signaux de négociation à l’aide de l’indicateur RSI, tout en utilisant l’ATR comme base de stop-loss pour contrôler les risques.
Le cœur de la stratégie est de déterminer la tendance du marché en utilisant le croisement de deux moyennes mobiles de différentes périodes (la ligne rapide et la ligne lente). Lorsque la ligne rapide traverse la ligne lente, indiquant une tendance à la hausse, la stratégie génère un signal de multiplication; inversement, lorsque la ligne rapide traverse la ligne lente, indiquant une tendance à la baisse, la stratégie génère un signal de rupture.
Afin d’améliorer la fiabilité des signaux de trading, la stratégie a introduit l’indicateur RSI comme filtre de dynamique. La surposition est autorisée lorsque le RSI est supérieur à un certain seuil (par exemple 50), et la position vide est autorisée lorsque le RSI est inférieur à ce seuil.
En outre, la stratégie utilise l’ATR comme base de stop-loss pour ajuster dynamiquement le stop-loss en fonction de l’ampleur des fluctuations des prix au cours de la période la plus récente afin de s’adapter à différentes conditions du marché. Cette méthode d’arrêt auto-adaptée permet de s’arrêter rapidement lorsque la tendance est incertaine et de contrôler le retrait.
La stratégie est mieux contrôlée par la combinaison organique de suivi de la tendance et de filtrage dynamique, tout en capturant les opportunités de tendance du marché. La logique de la stratégie est claire, facile à mettre en œuvre et à optimiser.
/*backtest
start: 2023-05-28 00:00:00
end: 2024-06-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Trend-Following Strategy with MACD and RSI Filter", overlay=true)
// Input variables
fastLength = input(12, title="Fast MA Length")
slowLength = input(26, title="Slow MA Length")
signalLength = input(9, title="Signal Line Length")
stopLossPct = input(1.0, title="Stop Loss %") / 100
rsiLength = input(14, title="RSI Length")
rsiThreshold = input(50, title="RSI Threshold")
// Moving averages
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)
// MACD
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength)
// RSI
rsi = ta.rsi(close, rsiLength)
// Entry conditions with RSI filter
bullishSignal = ta.crossover(macdLine, signalLine) and rsi > rsiThreshold
bearishSignal = ta.crossunder(macdLine, signalLine) and rsi < rsiThreshold
// Calculate stop loss levels
longStopLoss = ta.highest(close, 10)[1] * (1 - stopLossPct)
shortStopLoss = ta.lowest(close, 10)[1] * (1 + stopLossPct)
// Execute trades
strategy.entry("Long", strategy.long, when=bullishSignal)
strategy.entry("Short", strategy.short, when=bearishSignal)
strategy.exit("Exit Long", "Long", stop=longStopLoss)
strategy.exit("Exit Short", "Short", stop=shortStopLoss)
// Plotting signals
plotshape(bullishSignal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Bullish Signal")
plotshape(bearishSignal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Bearish Signal")
// Plot MACD
plot(macdLine, color=color.blue, title="MACD Line")
plot(signalLine, color=color.orange, title="Signal Line")
// Plot RSI
hline(rsiThreshold, "RSI Threshold", color=color.gray)
plot(rsi, color=color.purple, title="RSI")