Indice de force relative et stratégie de croisement des moyennes mobiles

Auteur:ChaoZhang est là., Date: 21-12-2023 à 11h30
Les étiquettes:

img

Résumé

L'indice de force relative (RSI) et la stratégie de croisement de la moyenne mobile combinent l'indicateur RSI et les moyennes mobiles pour prendre des décisions de trading quantitatives.

La logique de la stratégie

  1. Calculer la valeur de l'indicateur RSI. L'indicateur RSI mesure l'ampleur des changements de prix récents pour évaluer si un actif est suracheté ou survendu.

  2. Calculer une ligne de moyenne mobile (MA) du RSI à l'aide d'une moyenne mobile exponentielle (EMA) ou d'une moyenne mobile simple (SMA).

  3. Lorsque le RSI dépasse sa ligne MA, un signal d'achat en croix dorée est généré.

  4. Lorsque le RSI dépasse le seuil de surachat, l'actif est considéré comme suracheté et une position courte peut être ouverte.

Analyse des avantages

  1. La combinaison de signaux croisés d'indicateurs avec les niveaux de surachat/survente du RSI améliore la précision des décisions de négociation.

  2. Les seuils de surachat et de survente des indices de volatilité déterminent les entrées et les sorties optimales.

  3. Capturer les renversements de tendance en agissant sur les signaux croisés des indicateurs.

Analyse des risques

  1. Le RSI peut générer des signaux incorrects pendant les marchés agités ou latéraux.

  2. Les paramètres de seuil de surachat ou de survente inappropriés pourraient conduire à des signaux trop lâches ou trop stricts.

  3. Les moyennes mobiles sont sensibles aux anomalies à court terme et aux pics de volatilité, ce qui augmente la probabilité qu'elles soient arrêtées prématurément.

Directions d'optimisation

  1. Optimiser le paramètre RSI en testant différentes périodes de longueur.

  2. Déterminez les périodes moyennes mobiles optimales en évaluant différentes longueurs d'AM.

  3. Testez différents niveaux de seuil de surachat et de survente pour affiner les signaux d'entrée.

  4. Incorporer des filtres supplémentaires pour valider les signaux et éviter les faux échanges.

Conclusion

La RSI et la stratégie de croisement des moyennes mobiles combinent les niveaux de surachat/survente du RSI avec les signaux de croisement MA pour identifier les points tournants du marché et capturer les renversements.


/*backtest
start: 2022-12-14 00:00:00
end: 2023-12-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//dfurrer45
strategy(title="Relative Strength Index", shorttitle="RSI", overlay=true)
src = close, len = input(13, minval=1, title="Length"), maLen = input(9, minval=1, title="MA Lenght"), exponential = input(false, title="Exponential")

// === BACKTEST RANGE ===
FromMonth = input(defval = 10, title = "From Month", minval = 1)
FromDay   = input(defval = 3, title = "From Day", minval = 1)
FromYear  = input(defval = 2017, title = "From Year", minval = 2014)
ToMonth   = input(defval = 1, title = "To Month", minval = 1)
ToDay     = input(defval = 1, title = "To Day", minval = 1)
ToYear    = input(defval = 9999, title = "To Year", minval = 2014)
// ===  BACKTEST END  ===
backtestdaterange = (time > timestamp(FromYear, FromMonth, FromDay, 00, 00))

rsioverbought = input(90, minval=1, title="RSI % start overbought")
rsioversold = input(10, minval=1, title="RSI % start oversold")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
ma = exponential ? ema(rsi, maLen) : sma(rsi, maLen)
rsimacrossup = cross(rsi,ma) and rsi > ma
rsimacrossdown = cross(rsi,ma) and rsi < ma
plotchar(rsimacrossup, char='⇧', location = location.belowbar, color = green, text = "", textcolor = green, size=size.small)
plotchar(rsimacrossdown, char='⇩', location = location.abovebar, color = red, text = "", textcolor = red, size=size.small)
plotchar(rsi > rsioverbought, char='x', location = location.belowbar, color = aqua, text = "", textcolor = red, size=size.small)
plotchar(rsi < rsioversold, char='x', location = location.belowbar, color = aqua, text = "", textcolor = red, size=size.small)


closetrade = rsimacrossup or rsimacrossdown
strategy.close_all(closetrade)
strategy.close_all((rsi > rsioverbought) or (rsi < rsioversold))
strategy.entry("Short Overbought",strategy.short, when=(rsi > rsioverbought) and backtestdaterange)
strategy.entry("Buy Overbought",strategy.long, when=(rsi < rsioversold) and backtestdaterange)
strategy.entry("Long Cross", strategy.long, when=rsimacrossup and backtestdaterange)
strategy.entry("Short Cross", strategy.short, when=rsimacrossdown and backtestdaterange)


Plus de