Stratégie de retournement de tendance basée sur le MACD et le RSI


Date de création: 2023-12-18 17:53:38 Dernière modification: 2023-12-18 17:53:38
Copier: 0 Nombre de clics: 660
1
Suivre
1621
Abonnés

Stratégie de retournement de tendance basée sur le MACD et le RSI

Aperçu

La stratégie utilise un ensemble de trois indicateurs, le MACD, l’EMA et le RSI, pour suivre la tendance et inverser les transactions. Elle génère un signal d’achat lorsque le MACD passe à la hausse par la ligne de signal et que le prix de clôture est supérieur à la moyenne de l’EMA. Elle génère un signal de vente lorsque le MACD descend et que le prix de clôture est inférieur à la moyenne de l’EMA, afin de capturer la tendance.

Principe de stratégie

  1. Calculer les MACDdiffs et les EMA.
   fastMA = ema(close, fast)  
   slowMA = ema(close, slow)
   macd = fastMA - slowMA
   signal = sma(macd, 9)
   ema = ema(close, input(200))
  1. Génération d’un signal d’achat: la différence MACD est traversée par l’axe 0 et le prix de clôture est supérieur à la moyenne EMA.
   delta = macd - signal 
   buy_entry= close>ema and delta > 0
  1. Signal de vente: rupture de l’axe 0 sous la différence MACD et clôture du cours inférieur à la moyenne de l’EMA.
   sell_entry = close<ema and delta<0 
  1. Lorsque le RSI entre dans une zone de surachat et de survente, effectuez un revirement.
   if (rsi > 70 or rsi < 30)
       reversal := true

Analyse des avantages

  1. La combinaison de suivi de tendance et de trading inverse permet de suivre les principales tendances et de réaliser des bénéfices sur les points d’inversion.
  2. Le MACD est utilisé pour déterminer la direction des principales tendances et éviter les fausses ruptures.
  3. L’EMA filtre une partie du bruit.
  4. L’indicateur RSI détermine le point de basculement et augmente la marge de profit de la stratégie.

Analyse des risques

  1. Dans les marchés à forte tendance, le renversement peut entraîner des pertes.
  2. Les paramètres mal définis augmentent la fréquence des transactions et les coûts des points de glissement.
  3. Les signaux de retour peuvent être retardés, ce qui fait que l’on peut manquer l’heure d’entrée optimale.

La solution est simple:

  1. Optimiser les paramètres pour trouver la meilleure combinaison de paramètres
  2. Ajustez le seuil RSI de l’opération inverse de manière appropriée.
  3. Envisagez d’ajouter un stop-loss pour contrôler les pertes.

Direction d’optimisation

  1. Les paramètres de la ligne moyenne EMA de différentes longueurs sont testés.
  2. Optimiser les paramètres MACD pour trouver la meilleure combinaison de paramètres
  3. Tester différents seuils de retour du RSI.
  4. Considérer d’ajouter d’autres indicateurs à la combinaison combinatio.

Résumer

Cette stratégie utilise les indicateurs MACD, EMA et RSI de manière intégrée, permettant une combinaison organique de suivi de la tendance et de retournement des transactions. La MACD détermine la direction de la tendance principale, le bruit des ondes EMA et l’indicateur RSI capture les points de retournement. Cette combinaison de plusieurs indicateurs permet de déterminer avec plus de précision l’évolution du marché, tout en réduisant les transactions erronées et en augmentant la probabilité de réaliser des bénéfices.

Code source de la stratégie
/*backtest
start: 2023-11-17 00:00:00
end: 2023-12-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mbuthiacharles4

//Good with trending markets
//@version=4
strategy("CHARL MACD EMA RSI")

fast = 12, slow = 26
fastMA = ema(close, fast)
slowMA = ema(close, slow)
macd = fastMA - slowMA
signal = sma(macd, 9)

ema = ema(close, input(200))

rsi = rsi(close, input(14))
//when delta > 0  and close above ema buy

delta = macd - signal

buy_entry= close>ema and delta > 0
sell_entry = close<ema and delta<0 
var bought = false
var sold = false
var reversal = false
if (buy_entry and bought == false and rsi <= 70) 
    strategy.entry("Buy",true , when=buy_entry)
    bought := true
    
strategy.close("Buy",when= delta<0 or rsi > 70)
if (delta<0 and bought==true)
    bought := false

//handle sells

if (sell_entry and sold == false and rsi >= 30)
    strategy.entry("Sell",false , when=sell_entry)
    sold := true

strategy.close("Sell",when= delta>0 or rsi < 30)
if (delta>0 and sold==true)
    sold := false
    
if (rsi > 70 or rsi < 30)
    reversal := true
    placing = rsi > 70 ? high :low
    label.new(bar_index, placing, style=label.style_flag, color=color.blue, size=size.tiny)
if (reversal == true)
    if (rsi < 70 and sold == false and delta < 0)
        strategy.entry("Sell",false , when= delta < 0)
        sold := true
        reversal := false
    else if (rsi > 30 and bought == false and delta > 0)
        strategy.entry("Buy",true , when= delta > 0)
        bought := true
        reversal := false