Stratégie quantitative élastique de survente RSI avec stop loss ATR dynamique

RSI SMA ATR TP SL
Date de création: 2024-11-29 16:18:55 Dernière modification: 2024-11-29 16:18:55
Copier: 0 Nombre de clics: 453
1
Suivre
1617
Abonnés

Stratégie quantitative élastique de survente RSI avec stop loss ATR dynamique

Aperçu

La stratégie est un système de trading quantitatif basé sur les signaux de survente RSI et les arrêts ATR dynamiques. La stratégie utilise des données au niveau de la ligne du jour, en combinaison avec les signaux de survente RSI et le filtrage de la tendance de la ligne moyenne sur 200 jours, pour capturer les opportunités de rebond lors d’une survente du marché.

Principe de stratégie

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

  1. Signaux d’entrée: lorsque le RSI ((5)) est inférieur à 30 et que le prix est au-dessus de la moyenne quotidienne de 200 jours, le système émet un signal de multiplication.
  2. Système de stop-loss: double système combinant un stop-loss dynamique de 1,5 fois l’ATR et un stop-loss fixe de 25%
  3. Objectif de profit: trois objectifs de 5%, 10% et 15% ont été fixés, avec une réduction de position de 33%, 66% et 100% respectivement lors de l’atteinte des objectifs.
  4. Gestion des positions: Il est recommandé d’utiliser la méthode Kelly pour les positions de 59,13% ou de conserver 75% des positions pour les transactions.

Avantages stratégiques

  1. Confirmation de double tendance: double vérification des tendances de survente et de ligne moyenne via le RSI, pour améliorer la probabilité de succès des transactions.
  2. Contrôle du risque flexible: l’arrêt ATR dynamique peut s’adapter aux fluctuations du marché et l’arrêt fixe est la dernière ligne de défense.
  3. Gestion des bénéfices intelligents: le triple objectif est accompagné d’une réduction progressive de la position, permettant de verrouiller une partie des bénéfices et de ne pas manquer le grand marché.
  4. La science de la gestion des fonds: optimiser les positions en utilisant les critères de Kelly pour trouver un équilibre entre les risques et les gains.

Risque stratégique

  1. Dépendance à la tendance: la stratégie peut souvent déclencher des arrêts de pertes dans les marchés en crise. Recommandation: Vous pouvez ajouter un filtre de faux signaux à l’indicateur de vibration.

  2. La marge de stop-loss est élevée: un stop-loss fixe de 25% peut entraîner des pertes excessives en une seule fois. Il est recommandé d’ajuster le taux de stop loss en fonction de la capacité de prise de risque de chacun.

  3. Risque de retrait: les bénéfices échelonnés pourraient être réduits prématurément dans un contexte de forte tendance. Recommandation: Vous pouvez modifier dynamiquement vos objectifs de profit ou conserver une partie de votre position pour suivre la tendance.

Orientation de l’optimisation de la stratégie

  1. Optimisation du signal :
  • Ajouter une confirmation de transaction
  • Combiné avec des indicateurs de tendance comme le MACD
  • Présentation des filtres de volatilité
  1. Optimisation du stop-loss:
  • Réalisation du taux d’arrêt dynamique
  • Augmentation du temps d’arrêt
  • Ajouter le filtre de la marge bénéficiaire
  1. Optimisation des bénéfices:
  • Mise en position dynamique de la cible basée sur ATR
  • Mise en œuvre de l’arrêt de suivi
  • Optimisation du ratio de réduction de la position

Résumer

La stratégie construit un système de négociation complet en combinant des signaux de survente RSI et des filtres de tendance à la même ligne, avec des objectifs d’arrêt ATR dynamiques et de triple profit. L’avantage de la stratégie réside dans la flexibilité du contrôle des risques et la gestion des bénéfices, mais elle nécessite toujours un ajustement optimisé en fonction de la situation réelle du marché et des préférences de risque personnelles.

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

// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA/4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © wielkieef

//@version=5
strategy("Simple RSI stock Strategy [1D] ", overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=75, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03)

// Rsi
oversoldLevel = input(30, title="Oversold Level")
overboughtLevel = input(70, title="Overbought Level")
rsi = ta.rsi(close, 5)
rsi_overbought = rsi > overboughtLevel  
rsi_oversold = rsi < oversoldLevel

// Sma 200
lenghtSMA = input(200, title = "SMA lenght")
sma200 = ta.sma(close, lenghtSMA)

// ATR stop-loss
atrLength = input.int(20, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier")
atrValue = ta.atr(atrLength)
var float long_stop_level = na
var float short_stop_level = na
var float tp1_level = na
var float tp2_level = na
var float tp3_level = na

// Strategy entry
long = (rsi_oversold ) and close > sma200 

// Take Profit levels
tp_1 = input.float(5.0, "TP 1", minval=0.1, step=0.1)
tp_2 = input.float(10.0, "TP 2", minval=0.2, step=0.1)
tp_3 = input.float(15.0, "TP 3", minval=0.3, step=0.1)

if long
    strategy.entry('Long', strategy.long)
    long_stop_level := close - atrMultiplier * atrValue
    tp1_level := strategy.position_avg_price * (1 + tp_1 / 100)
    tp2_level := strategy.position_avg_price * (1 + tp_2 / 100)
    tp3_level := strategy.position_avg_price * (1 + tp_3 / 100)

// basic SL - this code is from author RafaelZioni, modified by wielkieef
sl = input.float(25.0, 'Basic Stop Loss %', step=0.1)
per(procent) =>
    strategy.position_size != 0 ? math.round(procent / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)

// ATR SL
if (strategy.position_size > 0 and (close <= long_stop_level))
    strategy.close("Long")
    tp1_level := na
    tp2_level := na
    tp3_level := na
plot(long_stop_level, color=color.orange, linewidth=2, title="Long Stop Loss")

// TP levels
if (strategy.position_size > 0)
    if (not na(tp1_level) and close >= tp1_level)
        tp1_level := na
    if (not na(tp2_level) and close >= tp2_level)
        tp2_level := na
    if (not na(tp3_level) and close >= tp3_level)
        tp3_level := na

plot(strategy.position_size > 0 and not na(tp1_level) ? tp1_level : na, color=color.gray, style=plot.style_circles , linewidth=1, title="Take Profit 1")
plot(strategy.position_size > 0 and not na(tp2_level) ? tp2_level : na, color=color.gray, style=plot.style_circles , linewidth=1, title="Take Profit 2")
plot(strategy.position_size > 0 and not na(tp3_level) ? tp3_level : na, color=color.gray, style=plot.style_circles , linewidth=1, title="Take Profit 3")

// Strategy exit points for Take Profits
strategy.exit('TP 1', from_entry="Long", qty_percent=33, profit=per(tp_1), loss=per(sl))
strategy.exit('TP 2', from_entry="Long", qty_percent=66, profit=per(tp_2), loss=per(sl))
strategy.exit('TP 3', from_entry="Long", qty_percent=100, profit=per(tp_3), loss=per(sl))

// by wielkieef