Stratégie de trading de suivi de tendance basée sur l'ATR et le RSI


Date de création: 2023-10-09 15:18:10 Dernière modification: 2023-10-09 15:18:10
Copier: 0 Nombre de clics: 1027
1
Suivre
1617
Abonnés

Aperçu

Cette stratégie est basée sur l’amplitude réelle moyenne ((ATR) et l’indice de force relative (RSI) pour concevoir un système de trading avec une fonction de suivi de la tendance. Le système peut identifier automatiquement la direction de la tendance et dispose d’une fonction d’arrêt et de perte.

Principe de stratégie

  1. Calculer l’ATR et le RSI. L’ATR reflète la fluctuation moyenne des prix au cours de la période la plus récente. Le RSI reflète le rapport de force entre les deux parties.

  2. L’ATR est considéré comme une période de forte volatilité lorsqu’il est supérieur à sa moyenne mobile.

  3. Lorsque le RSI est supérieur à la ligne de survente, faites plus; lorsque le RSI est inférieur à la zone de survente, faites moins.

  4. Après avoir effectué un plus, multipliez le point élevé par le rapport fixe pour suivre le stop loss. Après avoir effectué un short, multipliez le point bas par le rapport fixe pour suivre le stop loss.

  5. Le taux de profit est à l’arrêt.

Analyse des avantages

  1. Le suivi des pertes peut maximiser les pertes et réduire les pertes.

  2. Le RSI peut être un bon indicateur de la force de la hausse et évite de répéter des positions sur des positions de choc.

  3. L’ATR est un indicateur de volatilité qui permet de filtrer les mouvements de choc et de négocier uniquement sur les tendances.

  4. Le seuil de marge peut bloquer une partie de la marge.

Analyse des risques

  1. L’ATR et le RSI sont des indicateurs de retard qui peuvent entraîner un décalage du point d’entrée. Les paramètres peuvent être optimisés de manière appropriée pour rendre le système plus sensible.

  2. Le stop-loss est plus optimisé que le stop-loss fixe et doit être réglé avec précaution en fonction des résultats de la rétroanalyse.

  3. Dans des conditions de grand cyclone, l’ATR peut être plus élevé que la moyenne mobile pendant une longue période, ce qui entraîne une sur-échange. D’autres conditions de filtrage peuvent être ajoutées.

Direction d’optimisation

  1. Optimiser les paramètres ATR et RSI pour rendre le système plus sensible

  2. Il est important d’ajouter des indicateurs comme la MA pour juger de la direction de la tendance et éviter de se tromper sur les chocs.

  3. Essayez le ratio de stop-loss dynamique plutôt que le réglage fixe.

  4. Considérer l’ajout de mesures de contrôle des volumes de transactions.

Résumer

Cette stratégie intègre les avantages des deux indicateurs ATR et RSI et conçoit un système de trading de suivi de tendance simple et pratique. La stabilité du système peut être encore améliorée par l’optimisation des paramètres et l’ajout de conditions de filtrage.

Code source de la stratégie
/*backtest
start: 2023-09-08 00:00:00
end: 2023-10-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © liwei666
//@version=5
// # ========================================================================= #
// #                   |   Strategy  |
// # ========================================================================= #
strategy(
 title                = "ATR_RSI_Strategy v2[liwei666]",
 shorttitle           = "ATR_RSI_Strategy",
 overlay              =  true,
 max_lines_count                 =  500, 
 max_labels_count                =  500, 
 max_boxes_count                 =  500,
 max_bars_back = 5000,
 initial_capital = 10000,
 default_qty_type=strategy.percent_of_equity, 
 default_qty_value=50, commission_type=strategy.commission.percent, pyramiding=1, 
 commission_value=0.05
 )
// # ========================================================================= #
// #                   |   Strategy  |
// # ========================================================================= #

atr_length = input.int(26, "atr_length", minval = 6, maxval = 100, step=1)
atr_ma_length = input.int(45, "atr_ma_length", minval = 6, maxval = 100, step=1)
rsi_length = input.int(15, "rsi_length", minval = 6, maxval = 100, step=1)
rsi_entry = input.int(10, "rsi_entry", minval = 6, maxval = 100, step=1)
atr_ma_norm_min = input.float(0.3, "atr_ma_norm_min", minval = 0.1, maxval = 0.5, step=0.1)
atr_ma_norm_max = input.float(0.7, "atr_ma_norm_max", minval = 0.5, maxval = 1, step=0.1)
trailing_percent= input.float(1.5, "trailing_percent", minval = 0.1, maxval = 2, step=0.1)

var rsi_buy = 50 + rsi_entry
var rsi_sell = 50 - rsi_entry

sma_norm_h_45() => 
    source = high
    n = 45
    sma = ta.sma(source, n) 
    sma_norm = (sma - ta.lowest(sma, n)) / (ta.highest(sma,n) - ta.lowest(sma, n))
    sma_norm

atr_value = ta.atr(atr_length)
atr_ma = ta.sma(atr_value, atr_ma_length) 
rsi_value = ta.rsi(close, length = rsi_length) 
atr_ma_norm = atr_ma / close * 100
sma_norm = sma_norm_h_45()

var intra_trade_high = 0.0
var intra_trade_low = 0.0

if strategy.position_size == 0
    intra_trade_high := high
    intra_trade_low := low

    if atr_ma_norm >= atr_ma_norm_min and atr_ma_norm <= atr_ma_norm_max
        if atr_value > atr_ma
            if rsi_value > rsi_buy
                strategy.entry("B1", strategy.long, limit = close + 5 )
            else if rsi_value < rsi_sell
                strategy.entry("S1", strategy.short, limit = close - 5 )
else if strategy.position_size > 0
    intra_trade_high := math.max(intra_trade_high, high)
    intra_trade_low := low

    long_tp = intra_trade_high * (1 - trailing_percent / 100)
    strategy.exit("Exit B1", from_entry="B1", stop = long_tp, limit = strategy.position_avg_price * 1.03)

else if strategy.position_size < 0
    intra_trade_high := high
    intra_trade_low := math.min(intra_trade_low, low) 

    short_tp = intra_trade_low * (1 + trailing_percent / 100)
    strategy.exit("Exit S1", from_entry="S1", stop = short_tp, limit = strategy.position_avg_price * 0.94)