Stratégie de momentum RSI à double moyenne mobile et système d'optimisation du risque et du rendement

SMA RSI ATR RR
Date de création: 2024-11-12 16:00:58 Dernière modification: 2024-11-12 16:00:58
Copier: 3 Nombre de clics: 454
1
Suivre
1617
Abonnés

Stratégie de momentum RSI à double moyenne mobile et système d’optimisation du risque et du rendement

Aperçu

Il s’agit d’une stratégie de trading quantitative qui combine la croisée des deux courbes, les sur-achats et les sur-ventes RSI et le rapport risque/rendement. Cette stratégie permet de déterminer la direction de la tendance du marché en croisant les moyennes mobiles à court et à long terme, tout en utilisant l’indicateur RSI pour identifier les zones de sur-achat et de sur-vente, permettant un filtrage plus précis des signaux de négociation. La stratégie intègre également un système de gestion des objectifs de profit basé sur l’arrêt dynamique des pertes et le rapport risque/rendement fixe basé sur l’ATR.

Principe de stratégie

La stratégie utilise deux moyennes mobiles des 9e et 21e jours comme base de jugement de la tendance et confirme le signal par la zone de survente de l’indicateur RSI ((3565)). Dans le cas d’une entrée à plusieurs têtes, la moyenne à court terme est requise au-dessus de la moyenne à long terme et le RSI est dans la zone de survente inférieure à (35); l’entrée à vide nécessite une moyenne à court terme au-dessous de la moyenne à long terme et le RSI est dans la zone de survente supérieure à (65).

Avantages stratégiques

  1. Le mécanisme de confirmation de signaux multiples améliore considérablement la fiabilité des transactions
  2. Les paramètres de stop-loss dynamiques peuvent s’adapter à la volatilité du marché
  3. Le ratio risque/bénéfice fixe contribue à la stabilité des bénéfices à long terme
  4. La limitation des délais de détention a permis d’éviter une survente
  5. Système de marquage visuel pour faciliter la surveillance stratégique et l’analyse de retour
  6. La couleur de l’arrière-plan change pour afficher intuitivement la position actuelle

Risque stratégique

  1. Un système de double ligne peut produire de faux signaux dans une ville en crise
  2. L’indicateur RSI pourrait manquer certaines opportunités de trading dans une tendance forte
  3. Le rapport risque/bénéfice fixe peut ne pas être suffisamment flexible dans certaines conditions de marché
  4. L’arrêt de l’ATR peut ne pas être suffisamment rapide en cas de mutation de volatilité
  5. La durée minimale de détention peut entraîner des pertes en temps opportun

Orientation de l’optimisation de la stratégie

  1. Introduction d’un mécanisme de sélection de cycles homogènes adaptatifs qui s’adapte à la dynamique du marché
  2. Augmentation des filtres d’intensité de tendance pour améliorer la qualité du signal
  3. Développer un système dynamique de risque/bénéfice adapté à différents environnements de marché
  4. Intégration de l’indicateur de trafic pour améliorer la fiabilité du signal
  5. Ajout d’un module d’analyse de la volatilité du marché pour optimiser le choix du moment de la transaction
  6. Présentation des algorithmes d’apprentissage automatique pour optimiser la sélection des paramètres

Résumer

La stratégie a été conçue pour être un système de négociation relativement complet, grâce à la collaboration de multiples indicateurs techniques. Elle ne se concentre pas seulement sur la qualité des signaux d’entrée, mais aussi sur la gestion des risques et la définition des objectifs de profit. Bien qu’il existe des endroits qui nécessitent une optimisation, la conception globale du cadre est raisonnable, avec une bonne valeur pratique et de la place pour l’expansion.

Code source de la stratégie
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("JakeJohn", overlay=true)

// Input parameters
smaShortLength = input(9, title="Short SMA Length")
smaLongLength = input(21, title="Long SMA Length")
lengthRSI = input(14, title="RSI Length")
rsiOverbought = input(65, title="RSI Overbought Level")
rsiOversold = input(35, title="RSI Oversold Level")
riskRewardRatio = input(2, title="Risk/Reward Ratio") // 2:1
atrMultiplier = input(1.5, title="ATR Multiplier") // Multiplier for ATR to set stop loss

// Calculate indicators
smaShort = ta.sma(close, smaShortLength)
smaLong = ta.sma(close, smaLongLength)
rsi = ta.rsi(close, lengthRSI)
atr = ta.atr(14)

// Entry conditions
longCondition = (smaShort > smaLong) and (rsi < rsiOversold) // Buy when short SMA is above long SMA and RSI is oversold
shortCondition = (smaShort < smaLong) and (rsi > rsiOverbought) // Sell when short SMA is below long SMA and RSI is overbought

// Variables for trade management
var float entryPrice = na
var float takeProfit = na
var int entryBarIndex = na

// Entry logic for long trades
if (longCondition and (strategy.position_size == 0))
    entryPrice := close
    takeProfit := entryPrice + (entryPrice - (entryPrice - (atr * atrMultiplier))) * riskRewardRatio
    strategy.entry("Buy", strategy.long)
    entryBarIndex := bar_index // Record the entry bar index
    label.new(bar_index, high, "BUY", style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)

// Entry logic for short trades
if (shortCondition and (strategy.position_size == 0))
    entryPrice := close
    takeProfit := entryPrice - (entryPrice - (entryPrice + (atr * atrMultiplier))) * riskRewardRatio
    strategy.entry("Sell", strategy.short)
    entryBarIndex := bar_index // Record the entry bar index
    label.new(bar_index, low, "SELL", style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)

// Manage trade duration and exit after a minimum of 3 hours
if (strategy.position_size != 0)
    // Check if the trade has been open for at least 3 hours (180 minutes)
    if (bar_index - entryBarIndex >= 180) // 3 hours in 1-minute bars
        if (strategy.position_size > 0)
            strategy.exit("Take Profit Long", from_entry="Buy", limit=takeProfit)
        else
            strategy.exit("Take Profit Short", from_entry="Sell", limit=takeProfit)

// Background colors for active trades
var color tradeColor = na
if (strategy.position_size > 0)
    tradeColor := color.new(color.green, 90) // Light green for long trades
else if (strategy.position_size < 0)
    tradeColor := color.new(color.red, 90) // Light red for short trades
else
    tradeColor := na // No color when no trade is active

bgcolor(tradeColor, title="Trade Background")

// Plotting position tools
if (strategy.position_size > 0)
    // Plot long position tool
    strategy.exit("TP Long", limit=takeProfit)
    
if (strategy.position_size < 0)
    // Plot short position tool
    strategy.exit("TP Short", limit=takeProfit)

// Plotting indicators
plot(smaShort, color=color.green, title="Short SMA", linewidth=2)
plot(smaLong, color=color.red, title="Long SMA", linewidth=2)

// Visual enhancements for RSI
hline(rsiOverbought, "Overbought", color=color.red)
hline(rsiOversold, "Oversold", color=color.green)
plot(rsi, color=color.blue, title="RSI", linewidth=2)

// Ensure there's at least one plot function
plot(close, color=color.black, title="Close Price", display=display.none) // Hidden plot for compliance