Stratégie de swing trading intelligente et dynamique avec RSI

RSI SMA EMA VWMA WMA SMMA BB RMA
Date de création: 2024-12-12 11:32:55 Dernière modification: 2024-12-12 11:32:55
Copier: 0 Nombre de clics: 495
1
Suivre
1617
Abonnés

Stratégie de swing trading intelligente et dynamique avec RSI

Aperçu

La stratégie est un système de trading intelligent basé sur un indice relativement faible (RSI) combinant plusieurs moyennes mobiles et indicateurs de bandes de Brent. Elle permet de négocier en temps opportun en identifiant les zones de survente et de survente du marché. Le cœur de la stratégie est la confirmation de la tendance par les signaux de rupture et de reprise du RSI, en combinaison avec différents types de moyennes mobiles.

Principe de stratégie

La stratégie utilise le RSI à 14 cycles comme indicateur central pour générer des signaux de trading en surveillant l’intersection des deux niveaux clés du RSI avec 3070. Lorsque le RSI franchit le niveau 30 vers le haut, le système considère que le marché est passé d’une survente à une hausse, déclenchant un signal plus; lorsque le RSI descend au-dessous de 70, le système juge que le marché est passé d’une survente à une baisse, déclenchant un signal de plafonnement.

Avantages stratégiques

  1. Signal clair: les signaux de sur-achat et de sur-vente du RSI sont clairs, faciles à comprendre et à exécuter
  2. Risques maîtrisés: contrôler efficacement les risques en définissant des conditions d’entrée et de sortie claires
  3. Flexible: prend en charge plusieurs types de ligne moyenne, avec une flexibilité de commutation en fonction des conditions du marché
  4. Adaptabilité: les bandes de bourse peuvent s’adapter automatiquement aux fluctuations du marché
  5. Facilité d’optimisation: les paramètres sont adaptables et peuvent être facilement optimisés en fonction des différentes conditions du marché

Risque stratégique

  1. Risque de fausse rupture fréquente dans les marchés à basse volatilité
  2. Le risque d’une reprise de la tendance: une liquidation prématurée risque de manquer la grande tendance
  3. Sensitivité des paramètres: les paramètres différents peuvent entraîner des différences importantes dans les performances de la stratégie
  4. Effets de dérapage: un dérapage plus important est possible dans les marchés moins liquides
  5. Risque systémique: les pertes continues peuvent survenir dans des conditions de marché extrêmes

Orientation de l’optimisation de la stratégie

  1. Introduction d’indicateurs de trafic: la validité du signal est confirmée par le trafic
  2. Ajout d’un filtre de tendance: en combinaison avec des jugements de tendance sur des périodes plus longues, évitez le trading à contre-courant
  3. Optimisation des mécanismes de stop loss: introduction de stop loss dynamique et amélioration de l’efficacité de l’utilisation des fonds
  4. Amélioration de la gestion des positions: ajustement de la taille des positions en fonction de la dynamique de la volatilité du marché
  5. Augmentation de l’indicateur de l’humeur du marché: amélioration de l’exactitude du signal en combinaison avec d’autres indicateurs techniques

Résumer

La stratégie est conçue pour prendre en compte les risques, l’optimisation des paramètres et la combinaison d’indicateurs pour s’adapter aux différents environnements du marché. Il est recommandé aux traders de faire une vérification complète des retours avant de l’utiliser sur le terrain et d’ajuster les paramètres en fonction des caractéristiques spécifiques du marché.

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

//@version=5
strategy(title="Demo GPT - Relative Strength Index", shorttitle="RSI Strategy", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value=0.1, slippage=3)

// Inputs
rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
calculateDivergence = input.bool(false, title="Calculate Divergence", group="RSI Settings",  tooltip="Calculating divergences is needed in order for divergence alerts to fire.")

// RSI Calculation
change = ta.change(rsiSourceInput)
up = ta.rma(math.max(change, 0), rsiLengthInput)
down = ta.rma(-math.min(change, 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))

// RSI Plots
rsiPlot = plot(rsi, "RSI", color=#7E57C2)
rsiUpperBand = hline(70, "RSI Upper Band", color=#787B86)
midline = hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
rsiLowerBand = hline(30, "RSI Lower Band", color=#787B86)
fill(rsiUpperBand, rsiLowerBand, color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")
plot(50, color=na, editable=false, display=display.none)

// Moving Averages
maTypeInput = input.string("SMA", "Type", options=["None", "SMA", "SMA + Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Moving Average")
maLengthInput = input.int(14, "Length", group="Moving Average")
bbMultInput = input.float(2.0, "BB StdDev", minval=0.001, maxval=50, step=0.5, group="Moving Average")
enableMA = maTypeInput != "None"
isBB = maTypeInput == "SMA + Bollinger Bands"

// MA Calculation
ma(source, length, MAtype) =>
    switch MAtype
        "SMA" => ta.sma(source, length)
        "SMA + Bollinger Bands" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

smoothingMA = enableMA ? ma(rsi, maLengthInput, maTypeInput) : na
smoothingStDev = isBB ? ta.stdev(rsi, maLengthInput) * bbMultInput : na
plot(smoothingMA, "RSI-based MA", color=color.yellow, display=enableMA ? display.all : display.none)
bbUpperBand = plot(smoothingMA + smoothingStDev, title="Upper Bollinger Band", color=color.green, display=isBB ? display.all : display.none)
bbLowerBand = plot(smoothingMA - smoothingStDev, title="Lower Bollinger Band", color=color.green, display=isBB ? display.all : display.none)
fill(bbUpperBand, bbLowerBand, color=isBB ? color.new(color.green, 90) : na, title="Bollinger Bands Background Fill", display=isBB ? display.all : display.none)

// Trade Logic
longCondition = ta.crossover(rsi, 30)
exitCondition = ta.crossunder(rsi, 70)

// Start Date & End Date
startDate = input(timestamp("2018-01-01 00:00"), "Start Date", group="Date Range")
endDate = input(timestamp("2069-12-31 23:59"), "End Date", group="Date Range")
inDateRange = true

// Execute Trades
if (longCondition and inDateRange)
    strategy.entry("Long", strategy.long)

if (exitCondition and inDateRange)
    strategy.close("Long")