Stratégie de stop loss ATR Momentum Z-score combinée au ratio risque-rendement pour optimiser le système de trading

ATR RR MA
Date de création: 2025-02-20 13:40:12 Dernière modification: 2025-02-27 17:41:05
Copier: 1 Nombre de clics: 398
2
Suivre
319
Abonnés

Stratégie de stop loss ATR Momentum Z-score combinée au ratio risque-rendement pour optimiser le système de trading Stratégie de stop loss ATR Momentum Z-score combinée au ratio risque-rendement pour optimiser le système de trading

Aperçu

La stratégie est un système de trading complet combinant plusieurs indicateurs techniques, principalement basé sur le score Z pour mesurer le volume de transactions et les valeurs anormales de la taille de l’entité de ligne K, et utilisant l’ATR pour définir un stop loss dynamique. Le système intègre également le ratio de risque/revenu (RR) pour optimiser les objectifs de profit, fournissant des signaux de trading fiables grâce à une analyse technique multidimensionnelle.

Principe de stratégie

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

  1. Analyse du score Z: calcul du décalage standard entre le volume de transactions et les entités de la ligne K, pour identifier l’activité anormale du marché
  2. Confirmation de tendance: confirmation de la direction de la tendance en analysant les hauts et les bas et les prix de clôture des lignes K adjacentes
  3. Stop ATR: utilisation d’une position de stop avec des valeurs ATR dynamiques pour un contrôle du risque plus flexible
  4. Risque/bénéfice: calcul automatique de l’objectif de profit sur la base du ratio RR défini
  5. Marquage visuel: marque les signaux de négociation et les niveaux de prix clés sur le graphique

Avantages stratégiques

  1. Confirmation de signaux multidimensionnels: amélioration de la fiabilité des signaux de négociation en combinant le volume, la dynamique des prix et la direction des tendances
  2. Gestion dynamique des risques: mieux s’adapter aux fluctuations du marché grâce à l’ATR
  3. Configuration flexible des paramètres: permet d’ajuster la valeur de la marge de Z-score, le coefficient ATR et le rapport risque/bénéfice
  4. Une heure d’entrée précise: identifier les opportunités clés en utilisant les anomalies du score Z
  5. Visualisation claire: les points d’entrée, les points de stop-loss et les objectifs de profit sont clairement marqués sur le graphique

Risque stratégique

  1. Sensitivité des paramètres: les réglages de la limite de Z-score et du multiplicateur ATR influencent directement la fréquence des transactions et le contrôle des risques
  2. dépendance au marché: moins de signaux de négociation peuvent être générés dans un environnement à faible volatilité
  3. Complexité de calcul: le calcul de multiples indicateurs peut entraîner des retards dans la génération du signal
  4. Risque de glissement: risque de décalage entre le prix d’exécution réel et le prix du signal dans un marché rapide
  5. Risque de fausse rupture: des signaux de rupture erronés peuvent être déclenchés lors d’une correction des marchés

Orientation de l’optimisation de la stratégie

  1. Filtrage des environnements de marché: ajout d’un filtre de taux de fluctuation du marché pour ajuster dynamiquement les paramètres dans différents environnements de marché
  2. Mécanisme de confirmation des signaux: introduire plus d’indicateurs techniques pour une vérification croisée, comme le RSI ou le MACD
  3. Optimisation de la gestion des positions: adaptation dynamique des positions en fonction de la volatilité et du risque du compte
  4. Analyse des périodes de temps multiples: confirmation des tendances à l’intégration de périodes de temps plus longues, amélioration du taux de réussite des transactions
  5. Optimisation du filtrage des signaux: ajout de conditions de filtrage supplémentaires pour réduire les faux signaux

Résumer

La stratégie construit un système de négociation complet en combinant l’analyse du Z-score, l’optimisation du rapport stop-loss ATR et risque-bénéfice. L’avantage du système réside dans la reconnaissance de signaux multidimensionnels et la gestion flexible des risques, mais il faut toujours tenir compte de l’impact des paramètres de réglage et de l’environnement du marché. La stratégie peut encore améliorer sa stabilité et son adaptabilité par l’orientation d’optimisation recommandée.

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

//@version=5
strategy("admbrk | Candle Color & Price Alarm with ATR Stop", overlay=true, initial_capital=50, default_qty_type=strategy.cash, default_qty_value=200, commission_type=strategy.commission.percent, commission_value=0.05, pyramiding=3)

// **Risk/Reward ratio (RR) as input**
rr = input.float(2.0, title="Risk/Reward Ratio (RR)", step=0.1)

// **Z-score calculation function**
f_zscore(src, len) =>
    mean = ta.sma(src, len)     
    std = ta.stdev(src, len)
    (src - mean) / std

// **Z-score calculations**
len = input(20, "Z-Score MA Length")
z1 = input.float(1.5, "Threshold z1", step=0.1)
z2 = input.float(2.5, "Threshold z2", step=0.1)

z_volume = f_zscore(volume, len)
z_body = f_zscore(math.abs(close - open), len)

i_src = input.string("Volume", title="Source", options=["Volume", "Body size", "Any", "All"])

float z = na
if i_src == "Volume"
    z := z_volume
else if i_src == "Body size"
    z := z_body
else if i_src == "Any"
    z := math.max(z_volume, z_body)
else if i_src == "All"
    z := math.min(z_volume, z_body)

// **Determine trend direction**
green = close >= open
red = close < open

// **Long and Short signals**
longSignal = barstate.isconfirmed and red[1] and low < low[1] and green
shortSignal = barstate.isconfirmed and green[1] and high > high[1] and red

long = longSignal and (z >= z1)
short = shortSignal and (z >= z1)

// **ATR calculation (for ATR Stop)**
atrLength = input.int(14, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Stop Multiplier")
atrValue = ta.atr(atrLength)

// **ATR-based stop-loss calculation**
long_atr_stop = close - atrValue * atrMultiplier
short_atr_stop = close + atrValue * atrMultiplier

// **Stop-loss setting (set to the lowest/highest wick of the last two bars)**
long_sl = ta.lowest(low, 2)  // Long stop-loss (lowest of the last 2 bars)
short_sl = ta.highest(high, 2) // Short stop-loss (highest of the last 2 bars)

// **Take-profit calculation (with RR)**
long_tp = close + (close - long_sl) * rr
short_tp = close - (short_sl - close) * rr

triggerAlarm(symbol)=>
    status = close
    var string message = na
    alarmMessageJSON = syminfo.ticker + message +"\\n" + "Price: " + str.tostring(status) 
    
if long
    // Open Long position
    strategy.entry("Long", strategy.long)
    strategy.exit("Long Exit", from_entry="Long", stop=math.max(long_sl, long_atr_stop), limit=long_tp)
    

if short
    // Open Short position
    strategy.entry("Short", strategy.short)
    strategy.exit("Short Exit", from_entry="Short", stop=math.min(short_sl, short_atr_stop), limit=short_tp)
    

// **Coloring the candles (BUY = Green, SELL = Red)**
barcolor(long ? color.green : short ? color.red : na)

// **Add entry/exit markers on the chart**
plotshape(long, title="BUY Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small, text="BUY")
plotshape(short, title="SELL Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small, text="SELL")

// **Plot TP and SL markers on exits**
exitLong = strategy.position_size < strategy.position_size[1] and strategy.position_size[1] > 0
exitShort = strategy.position_size > strategy.position_size[1] and strategy.position_size[1] < 0

plotshape(exitLong, title="Long Exit", location=location.abovebar, color=color.blue, style=shape.labeldown, size=size.tiny, text="TP/SL")
plotshape(exitShort, title="Short Exit", location=location.belowbar, color=color.orange, style=shape.labelup, size=size.tiny, text="TP/SL")

// **Add alerts**
alertcondition(long, title="Long Signal", message="Long signal triggered!")
alertcondition(short, title="Short Signal", message="Short signal triggered!")