Stratégie de trading de suivi de tendance sur plusieurs périodes basée sur le croisement de la ligne de signal RSI

RSI MA RMA EMA SMA TMA ARSI
Date de création: 2025-02-18 15:04:49 Dernière modification: 2025-02-18 15:04:49
Copier: 1 Nombre de clics: 358
1
Suivre
1617
Abonnés

Stratégie de trading de suivi de tendance sur plusieurs périodes basée sur le croisement de la ligne de signal RSI

Aperçu

La stratégie est un système de suivi de tendance basé sur un indicateur renforcé de force relative (RSI). Il capte les occasions de revirement de tendance dans différents cycles de marché en calculant une version améliorée du RSI et en combinant ses lignes de signal. La stratégie calcule non seulement la valeur de l’indicateur, mais montre également visuellement les zones de survente et de survente pour aider les traders à juger plus intuitivement de l’état du marché.

Principe de stratégie

Le principe de base de la stratégie est d’identifier les tendances du marché en calculant le RSI ((ARSI)).

  1. Calculer le prix le plus élevé et le prix le plus bas sur une période donnée pour obtenir une fourchette de prix
  2. Différence calculée en fonction de la variation des prix
  3. Le traitement de la différence est épuré à l’aide d’une méthode de moyenne mobile (EMA, SMA, RMA, TMA)
  4. Standardisez les résultats dans la plage 0-100
  5. Un signal de multiplicité est généré lorsque l’ARSI traverse une ligne de signal inférieure à 50
  6. Un signal de coupe est généré lorsque l’ARSI tombe au-dessus de la ligne de signal 50

Avantages stratégiques

  1. Mechanisme de confirmation de signal amélioré - la fiabilité du signal est assurée par le croisement ARSI avec la ligne de signal et le filtrage de l’axe central
  2. Adaptabilité - prend en charge plusieurs méthodes de moyenne mobile et s’adapte aux différentes caractéristiques du marché
  3. Le contrôle des risques est raisonnable - la gestion des pourcentages de position permet de contrôler efficacement le risque de chaque transaction
  4. L’effet visuel est mis en évidence - les zones de survente sont clairement affichées par remplissage de couleur pour un jugement rapide
  5. Gestion des positions inversées - les positions existantes sont automatiquement liquidées en cas de signal inversé, ce qui évite le risque de position bilatérale

Risque stratégique

  1. Risque de choc - Faux signaux fréquents peuvent être générés lors de chocs horizontaux
  2. Risque de retard - le signal présente un certain retard en raison du calcul des moyennes mobiles
  3. Sensitivité des paramètres - des paramètres différents peuvent entraîner une différence de performance de la stratégie
  4. Risque d’adaptabilité au marché - les stratégies peuvent présenter des variations significatives dans différentes conditions de marché
  5. Risques de gestion de fonds - la gestion de positions à pourcentage fixe peut entraîner des risques plus importants en cas de forte volatilité

Orientation de l’optimisation de la stratégie

  1. Introduction d’un filtre à volatilité - un indicateur ATR peut être ajouté pour filtrer les signaux de transaction dans un environnement à faible volatilité
  2. Augmentation de l’indicateur de confirmation de tendance - combiné à un indicateur de tendance à plus longue période pour améliorer la fiabilité du signal
  3. Optimisation de la gestion des positions - Adaptation du ratio de détention en fonction de la dynamique de la volatilité du marché
  4. Adhésion à un mécanisme de stop-loss - configuration d’un stop-loss dynamique basé sur l’ATR pour une meilleure maîtrise des risques
  5. Développer des paramètres d’adaptation - étudier des méthodes d’optimisation dynamique des paramètres pour améliorer l’adaptabilité des stratégies

Résumer

Il s’agit d’une stratégie de suivi de tendance structurée et logiquement claire. Grâce à des méthodes de calcul innovantes de RSI renforcées, combinées aux avantages de plusieurs indicateurs techniques, un système de négociation fiable est formé. Bien qu’il existe des risques inhérents, la stratégie a de bonnes perspectives d’application sur le terrain grâce à des mesures d’optimisation et de gestion des risques raisonnables.

Code source de la stratégie
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-16 08:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Ultimate RSI [LuxAlgo] Strategy", shorttitle="ULT RSI Strat", overlay=false, initial_capital=10000, currency=currency.USD, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

//------------------------------------------------------------------------------
// Settings
//------------------------------------------------------------------------------
length    = input.int(14, minval=2, title="RSI Length")
smoType1  = input.string("RMA", title="Method", options=["EMA", "SMA", "RMA", "TMA"])
src       = input(close, title="Source")

arsiCss   = input.color(color.silver, "RSI Color", inline="rsicss")
autoCss   = input.bool(true, "Auto", inline="rsicss")

// Signal Line settings
smooth    = input.int(14, minval=1, title="Signal Smooth", group="Signal Line")
smoType2  = input.string("EMA", title="Method", options=["EMA", "SMA", "RMA", "TMA"], group="Signal Line")
signalCss = input.color(color.new(#ff5d00, 0), "Signal Color", group="Signal Line")

// Overbought/Oversold style
obValue     = input.float(80, "Overbought", inline="ob", group="OB/OS Style")
obCss       = input.color(color.new(#089981, 0), "", inline="ob", group="OB/OS Style")
obAreaCss   = input.color(color.new(#089981, 80), "", inline="ob", group="OB/OS Style")

osValue     = input.float(20, "Oversold", inline="os", group="OB/OS Style")
osCss       = input.color(color.new(#f23645, 0), "", inline="os", group="OB/OS Style")
osAreaCss   = input.color(color.new(#f23645, 80), "", inline="os", group="OB/OS Style")

//------------------------------------------------------------------------------
// Function: Moving Average (selectable type)
//------------------------------------------------------------------------------
ma(x, len, maType)=>
    switch maType
        "EMA" => ta.ema(x, len)
        "SMA" => ta.sma(x, len)
        "RMA" => ta.rma(x, len)
        "TMA" => ta.sma(ta.sma(x, len), len)
 
//------------------------------------------------------------------------------
// Augmented RSI Calculation
//------------------------------------------------------------------------------
upper = ta.highest(src, length)
lower = ta.lowest(src, length)
r     = upper - lower

d     = src - src[1]
diff  = upper > upper[1] ? r : lower < lower[1] ? -r : d

num   = ma(diff, length, smoType1)
den   = ma(math.abs(diff), length, smoType1)
arsi  = den != 0 ? num / den * 50 + 50 : 50  // safeguard against division by zero

signal = ma(arsi, smooth, smoType2)

//------------------------------------------------------------------------------
// Strategy Entry Conditions
//------------------------------------------------------------------------------
// Long entry: Ultimate RSI crosses above its signal when it is below 50 (lower half)
// Short entry: Ultimate RSI crosses below its signal when it is above 50 (upper half)
longCondition  = ta.crossover(arsi, signal) and arsi < 50
shortCondition = ta.crossunder(arsi, signal) and arsi > 50

// Close opposite positions when conditions occur
if shortCondition
    strategy.close("Long")
if longCondition
    strategy.close("Short")

// Place new entries based on the conditions
if longCondition
    strategy.entry("Long", strategy.long)
if shortCondition
    strategy.entry("Short", strategy.short)

// //------------------------------------------------------------------------------
// // Plots and Constant Lines
// //------------------------------------------------------------------------------
// // Plot the Ultimate RSI and its Signal
// plot_rsi = plot(arsi, title="Ultimate RSI",
//      color = arsi > obValue ? obCss : arsi < osValue ? osCss : autoCss ? chart.fg_color : arsiCss,
//      linewidth=2)
// plot(signal, title="Signal Line", color=signalCss, linewidth=2)

// // Instead of using hline, create constant plots for OB, Midline, and OS
// plot_ob  = plot(obValue, title="Overbought", color=obCss, style=plot.style_line, linewidth=1)
// plot_mid = plot(50, title="Midline", color=color.gray, style=plot.style_line, linewidth=1)
// plot_os  = plot(osValue, title="Oversold", color=osCss, style=plot.style_line, linewidth=1)

// //------------------------------------------------------------------------------
// // Fill OB/OS Areas for Visual Clarity
// //------------------------------------------------------------------------------
// fill(plot_rsi, plot_ob, color=arsi > obValue ? obAreaCss : na)
// fill(plot_os, plot_rsi, color=arsi < osValue ? osAreaCss : na)