Cette stratégie combine des outils d'analyse technique tels que les moyennes mobiles (MA), l'indice de force relative (RSI) et la plage moyenne réelle (ATR) pour capturer les opportunités de tendance sur le marché.
Le noyau de cette stratégie est d'utiliser le croisement de deux moyennes mobiles avec des périodes différentes (rapide et lent) pour identifier les tendances du marché. Lorsque le MA rapide traverse au-dessus du MA lent, il indique une tendance haussière, et la stratégie générera un signal long. Inversement, lorsque le MA rapide traverse au-dessous du MA lent, il indique une tendance baissière, et la stratégie générera un signal court.
Pour améliorer la fiabilité des signaux de trading, la stratégie introduit l'indicateur RSI comme filtre de dynamique. Les positions longues ne sont autorisées que lorsque le RSI est au-dessus d'un certain seuil (par exemple, 50), et les positions courtes ne sont autorisées que lorsque le RSI est en dessous de ce seuil. Cela aide à éviter de négocier pendant les marchés latéraux ou lorsque la dynamique manque, améliorant ainsi la qualité du signal.
En outre, la stratégie utilise l'ATR comme base pour le stop-loss, en ajustant dynamiquement le niveau de stop-loss en fonction de la volatilité des prix au cours d'une période récente.
Cette stratégie combine efficacement le suivi des tendances et le filtrage de l'élan pour capturer les opportunités de tendance sur le marché tout en gérant les risques. La logique de la stratégie est claire et facile à mettre en œuvre et à optimiser. Cependant, dans l'application pratique, l'attention doit être portée sur le risque et le risque paramétrique. La stratégie doit être ajustée et optimisée de manière flexible en fonction des caractéristiques du marché et des besoins individuels. Dans l'ensemble, il s'agit d'une stratégie équilibrée qui prend en compte à la fois la capture des tendances et le contrôle des risques, digne d'une exploration et d'une pratique plus poussées.
/*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")