Stratégie de trading de choc de tendance RSI à grille dynamique multi-périodes

RSI ATR MTF GRID DCA
Date de création: 2025-02-10 15:19:45 Dernière modification: 2025-02-10 15:19:45
Copier: 0 Nombre de clics: 591
1
Suivre
1617
Abonnés

Stratégie de trading de choc de tendance RSI à grille dynamique multi-périodes

Aperçu

Cette stratégie est une stratégie de type composite qui combine un indicateur RSI à plusieurs périodes et un système de négociation à grille dynamique. Elle identifie les conditions de survente et de survente du marché en analysant les valeurs de l’indicateur RSI à trois périodes différentes et utilise un système de grille dynamique basé sur l’ATR pour la gestion des positions. La stratégie comprend également des mécanismes de contrôle des risques tels que l’arrêt quotidien, la protection contre les retraits maximaux, qui permettent d’équilibrer efficacement les gains et les risques.

Principe de stratégie

La logique fondamentale de la stratégie comprend les éléments clés suivants :

  1. L’analyse multi-périodes - l’indicateur RSI surveille simultanément le cycle actuel, les périodes de 60 minutes et de 240 minutes, et déclenche une transaction uniquement lorsque les signaux de survente ou de survente apparaissent sur les trois périodes.
  2. Système de grille dynamique - Utilise l’ATR comme référence de volatilité et calcule dynamiquement l’espacement de la grille. Lorsque le prix se déplace dans une direction défavorable, augmentez la position selon le facteur multiplicateur défini.
  3. Gestion de la position - 1% du capital du compte est utilisé comme position de base, et la grille est contrôlée par le paramètre lot_multiplier.
  4. Contrôle des risques - y compris un objectif de couverture quotidienne, une protection de retrait maximale de 2% des intérêts du compte et un mécanisme de compensation de signal inversé.

Avantages stratégiques

  1. Confirmation de signaux multidimensionnels - réduire efficacement les faux signaux en analysant les indicateurs RSI sur plusieurs périodes de temps.
  2. Gestion flexible des positions - le système de grille dynamique est capable d’ajuster l’espacement de la grille en fonction des fluctuations du marché.
  3. Une bonne maîtrise des risques - un arrêt quotidien et un mécanisme de protection contre les retraits maximaux permettent de contrôler efficacement les risques.
  4. Hauteur personnalisable - offre plusieurs paramètres réglables pour faciliter les stratégies d’optimisation en fonction des différents environnements de marché.

Risque stratégique

  1. Risque de tendance - Dans un marché en forte tendance, la stratégie de grille peut faire face à des pertes continues. Il est recommandé d’ajouter un filtre de tendance.
  2. Risque de gestion des fonds - la présence de plusieurs grilles peut entraîner une utilisation excessive des fonds. Il est recommandé de contrôler strictement le nombre maximal de niveaux de grilles.
  3. Sensitivité des paramètres - la performance de la stratégie est sensible aux paramètres. Il est recommandé de faire des tests d’optimisation des paramètres.

Orientation de l’optimisation de la stratégie

  1. Détection de tendance améliorée - des indicateurs de tendance tels que les moyennes mobiles peuvent être ajoutés comme filtres.
  2. Ajustement des paramètres dynamiques - Ajustement automatique des seuils RSI et des paramètres de la grille en fonction des fluctuations du marché.
  3. Optimisation des arrêts de perte - un arrêt de perte indépendant peut être défini pour chaque grille.
  4. Filtrage temporel - Ajoutez un filtrage temporel pour éviter les périodes de faible liquidité.

Résumer

La stratégie crée un programme de trading équilibré en combinant une analyse RSI à plusieurs périodes et un système de trading à grille dynamique. Un mécanisme de contrôle des risques parfait et une configuration de paramètres flexible le rendent adapté à différents environnements de marché. La stabilité et la rentabilité de la stratégie peuvent également être encore améliorées grâce à la direction d’optimisation recommandée.

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

//@version=5
strategy("Multi-Timeframe RSI Grid Strategy with Arrows", overlay=true)

// Input parameters
rsi_length = input.int(14, "RSI Length")
oversold = input.int(30, "Oversold Level")
overbought = input.int(70, "Overbought Level")
higher_tf1 = input.string("60", "Higher Timeframe 1")
higher_tf2 = input.string("240", "Higher Timeframe 2")
grid_factor = input.float(1.2, "Grid Multiplication Factor", step=0.1)
lot_multiplier = input.float(1.5, "Lot Multiplication Factor", step=0.1)
max_grid = input.int(5, "Maximum Grid Levels")
daily_target = input.float(4.0, "Daily Profit Target (%)", step=0.5)
atr_length = input.int(14, "ATR Length")

// Calculate RSI values
current_rsi = ta.rsi(close, rsi_length)
higher_tf1_rsi = request.security(syminfo.tickerid, higher_tf1, ta.rsi(close, rsi_length))
higher_tf2_rsi = request.security(syminfo.tickerid, higher_tf2, ta.rsi(close, rsi_length))

// Grid system variables
var int grid_level = 0
var float last_entry_price = na
var float base_size = strategy.equity * 0.01 / close
var float daily_profit_target = strategy.equity * (daily_target / 100)
var bool target_reached = false

// ATR for grid spacing
atr = ta.atr(atr_length)
grid_space = atr * grid_factor

// Daily reset
new_day = ta.change(time("D"))
if new_day
    daily_profit_target := strategy.equity * (daily_target / 100)
    target_reached := false
    grid_level := 0
    last_entry_price := na

// Trading conditions
buy_condition = current_rsi < oversold and higher_tf1_rsi < oversold and higher_tf2_rsi < oversold
sell_condition = current_rsi > overbought and higher_tf1_rsi > overbought and higher_tf2_rsi > overbought

// Reverse signal detection
reverse_long_to_short = sell_condition and strategy.position_size > 0
reverse_short_to_long = buy_condition and strategy.position_size < 0

// Close all trades on reverse signals
if reverse_long_to_short or reverse_short_to_long
    strategy.close_all()
    grid_level := 0
    last_entry_price := na

// Grid management logic
if strategy.position_size == 0
    grid_level := 0
    last_entry_price := na

if strategy.position_size > 0 and not reverse_long_to_short
    if close < last_entry_price - grid_space and grid_level < max_grid and not target_reached
        strategy.entry("Long Grid " + str.tostring(grid_level), strategy.long, qty=base_size * math.pow(lot_multiplier, grid_level))
        grid_level += 1
        last_entry_price := close

if strategy.position_size < 0 and not reverse_short_to_long
    if close > last_entry_price + grid_space and grid_level < max_grid and not target_reached
        strategy.entry("Short Grid " + str.tostring(grid_level), strategy.short, qty=base_size * math.pow(lot_multiplier, grid_level))
        grid_level += 1
        last_entry_price := close

// Initial entry
if buy_condition and strategy.position_size == 0 and not target_reached
    strategy.entry("Long", strategy.long, qty=base_size)
    grid_level := 1
    last_entry_price := close

if sell_condition and strategy.position_size == 0 and not target_reached
    strategy.entry("Short", strategy.short, qty=base_size)
    grid_level := 1
    last_entry_price := close

// Profit target check
current_profit = strategy.netprofit + strategy.openprofit
if current_profit >= daily_profit_target and not target_reached
    strategy.close_all()
    target_reached := true

// Drawdown protection
if strategy.openprofit < -(0.02 * strategy.equity)  // 2% drawdown protection
    strategy.close_all()
    grid_level := 0
    last_entry_price := na

// Plot Buy and Sell Arrows
plotshape(series=buy_condition and strategy.position_size == 0, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small)
plotshape(series=sell_condition and strategy.position_size == 0, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.small)

// Plotting RSI
plot(current_rsi, "Current RSI", color=color.blue)
plot(higher_tf1_rsi, "HTF1 RSI", color=color.red)
plot(higher_tf2_rsi, "HTF2 RSI", color=color.green)
hline(oversold, "Oversold", color=color.gray)
hline(overbought, "Overbought", color=color.gray)