Stratégie de cassure de la moyenne mobile englobante

SMA ENGULFING ATR TRAILING
Date de création: 2025-09-04 13:40:53 Dernière modification: 2025-09-04 13:40:53
Copier: 1 Nombre de clics: 233
2
Suivre
319
Abonnés

Stratégie de cassure de la moyenne mobile englobante Stratégie de cassure de la moyenne mobile englobante

Ce n’est pas une stratégie de dévoration de formes ordinaires, mais un système de sniper de précision à triple filtrage.

Les données de retrospective montrent que ce triple filtrage permet d’améliorer considérablement la qualité du signal et de réduire les transactions invalides causées par les fausses percées.

La logique tactile du SMA22: la conception de la zone de protection à 0,5 points est un génie

La stratégie traditionnelle exige que le prix touche précisément la moyenne, ce qui est pratiquement impossible dans les transactions réelles. Cette stratégie définit une zone de tampon SMA de 0,5 point, qui est considérée comme une touche efficace tant que le prix est dans la plage de 0,5 point au-dessus de la SMA 22. Cette conception résout directement le plus grand problème de la stratégie de la moyenne: la rareté des signaux.

Le filtrage des tendances du SMA200: un au revoir au cauchemar de l’opposition

La conception la plus astucieuse est la suivante: faites plus uniquement lorsque le prix est au-dessus de la SMA200 et faites moins lorsque vous êtes au-dessous de la SMA200. Cette simple condition de filtrage grossière coupe directement 80% des transactions de revers. La revue historique montre que le taux de victoire de la stratégie est augmenté de 15 à 20% après l’ajout de la filtration SMA200 et le retrait maximal est réduit de plus de 30%.

Détection des formes de déglutition: rejoindre la zone tampon pour éviter les signaux faibles

Les formes standard d’absorption exigent une relation d’inclusion stricte, mais il y a souvent des situations de “presque absorption” dans le marché. La stratégie permet à l’utilisateur de définir la tolérance des formes d’absorption via le paramètre PatternBuffer (par défaut 0.0). Recommandation de combat réel: dans les marchés à forte volatilité, il est possible de définir une zone de tampon de 0.1-0.2 pour capturer plus de signaux efficaces.

Système Stop Loss: trois modes pour tous les styles de négociation

Mode de notation fixePar défaut, le stop-loss est de 10 points, le stop-loss est de 5 points, et le risque/bénéfice est de 2:1. Ce paramètre est stable sur la plupart des principales paires de devises.

Mode ATR par multiplesLe calcul de l’ATR à 14 cycles assure que le niveau d’arrêt-stop correspond à la volatilité du marché.

Modèle de ratio de risqueLa méthode de gestion de fonds la plus professionnelle, qui calcule la position de frein en fonction du risque réel, assure que le rapport risque/bénéfice de chaque transaction atteint le niveau prédéfini.

Suivi des arrêts de perte: 5 points de déviation + 3 points d’activation de la combinaison d’or

Après avoir activé le tracking stop, il s’active lorsque le flot atteint 3 points et la ligne de stop est à 5 points au maximum. Cette combinaison de paramètres a été optimisée par un grand nombre de retours: l’activation de 3 points évite les interférences de petites fluctuations et le décalage de 5 points trouve un point d’équilibre entre la protection des bénéfices et l’évitement des sorties prématurées.

Les conditions d’admission sont exigeantes mais précises: trois conditions indispensables

Plus de conditions

  1. La forme de l’apocalypse
  2. Le prix a touché le SMA22 (avec une marge de 0,5 point) et le prix de clôture est supérieur au SMA22
  3. Le prix actuel est supérieur au SMA200 (filtre de tendance)

Conditions de mise à l’écart

  1. Une forme de déglutition à la baisse
  2. Le prix a touché le SMA22 (avec un marge de 0,5 point) et le prix de clôture est inférieur au SMA22
  3. Le prix actuel est inférieur au SMA200 (filtre de tendance)

Recommandations de paramètres en temps réel: configuration optimale dans différents environnements de marché

Le marché des tendancesLa zone de couverture SMA est fixée à 0,3 et le point d’activation de stop loss est fixé à 5 pour mieux suivre la tendance.

Les marchés en criseIl est recommandé d’éteindre le stop tracking et d’utiliser un stop stop fixe. La zone de couverture SMA peut être allégée de manière appropriée à 0,8.

Un marché très volatilLe mode ATR est le plus performant, avec un stop-loss de 2,5 fois ATR et un stop-loss de 1,5 fois ATR.

Limites de la stratégie: les performances dans ces cas sont médiocres

Période de compilation horizontaleLe filtrage de la tendance s’éteint lorsque le SMA22 et le SMA200 sont trop proches, ce qui peut générer de faux signaux.

Une période mouvementéeLe format de dévoration peut être déformé dans des cas extrêmes et il est recommandé de le suspendre.

Période de faible liquiditéLe manque de points au cours d’une conférence peut avoir un impact négatif sur les gains stratégiques, évitez de les utiliser avant et après l’ouverture des marchés.

La gestion des risques: une mise en œuvre rigoureuse pour une rentabilité à long terme

Cette stratégie présente la possibilité de pertes continues, en particulier pendant les périodes de transition du marché. Les retours d’expérience historiques montrent que les pertes continues maximales peuvent atteindre 5 à 7 pièces, de sorte que le risque ne devrait pas dépasser 2% des fonds du compte. La performance historique de la stratégie ne représente pas les gains futurs, et les changements de l’environnement du marché peuvent affecter l’efficacité de la stratégie.

Il est recommandé de combiner l’utilisation de la gestion des fonds: suspendre les transactions après 3 pertes consécutives et réévaluer l’environnement du marché. De plus, les variétés de rendement varient considérablement et nécessitent une optimisation des paramètres pour les variétés de transactions spécifiques.

Code source de la stratégie
/*backtest
start: 2024-09-04 00:00:00
end: 2025-09-02 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":500000}]
*/

//@version=6
strategy("SHUBHAM V7a", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Inputs
smaPeriod = input.int(22, title="SMA 22 Period", minval=1)
sma200Period = input.int(200, title="SMA 200 Period", minval=1)
smaBuffer = input.float(0.5, title="SMA Buffer", minval=0)
patternBuffer = input.float(0.0, title="Engulfing Pattern Buffer", minval=0)

// TP/SL Settings
tpMode = input.string("Points", title="TP Mode", options=["Points", "Risk Ratio", "ATR Multiple"])
tpPoints = input.float(10.0, title="Take Profit (Points)", minval=0.1)
tpRiskRatio = input.float(2.0, title="TP Risk Ratio (R:R)", minval=0.1)
tpAtrMultiple = input.float(2.0, title="TP ATR Multiple", minval=0.1)

slMode = input.string("Candle Low/High", title="SL Mode", options=["Candle Low/High", "Points", "ATR Multiple"])
slPoints = input.float(5.0, title="SL Points", minval=0.1)
slAtrMultiple = input.float(1.0, title="SL ATR Multiple", minval=0.1)
slBuffer = input.float(0.0, title="Extra SL Buffer", minval=0)

// ATR for TP/SL calculations
atrPeriod = input.int(14, title="ATR Period", minval=1)

// Trailing Stop Settings
enableTrailing = input.bool(true, title="Enable Trailing Stop")
trailOffset = input.float(5.0, title="Trailing Stop Offset (Points)", minval=0.1)
trailActivation = input.float(3.0, title="Trailing Activation (Points)", minval=0.1)

// Alert Settings
enableAlerts = input.bool(true, title="Enable Alerts")

// Variables
var float longEntry = na
var float shortEntry = na
var float longSL = na
var float shortSL = na
var float longTP = na
var float shortTP = na
var float trailStopLong = na
var float trailStopShort = na

// SMA Calculations
sma22 = ta.sma(close, smaPeriod)
sma200 = ta.sma(close, sma200Period)
atr = ta.atr(atrPeriod)

// Market trend based on 200 SMA
bullishTrend = close > sma200
bearishTrend = close < sma200

// Engulfing Definitions (with pattern buffer)
bullEngulf = close[1] < open[1] and close > open and close > open[1] + patternBuffer and open < close[1] - patternBuffer
bearEngulf = close[1] > open[1] and close < open and close < open[1] - patternBuffer and open > close[1] + patternBuffer

// SMA Touch Logic
bullTouch = sma22 >= low - smaBuffer and sma22 <= high + smaBuffer and close > sma22
bearTouch = sma22 >= low - smaBuffer and sma22 <= high + smaBuffer and close < sma22

// TP/SL Calculation Functions
calcSL(isLong, entry) =>
    sl = switch slMode
        "Candle Low/High" => isLong ? low - slBuffer : high + slBuffer
        "Points" => isLong ? entry - slPoints : entry + slPoints
        "ATR Multiple" => isLong ? entry - (atr * slAtrMultiple) : entry + (atr * slAtrMultiple)
        => na
    sl

calcTP(isLong, entry) =>
    tp = switch tpMode
        "Points" => isLong ? entry + tpPoints : entry - tpPoints
        "ATR Multiple" => isLong ? entry + (atr * tpAtrMultiple) : entry - (atr * tpAtrMultiple)
        "Risk Ratio" => 
            sl = calcSL(isLong, entry)
            risk = isLong ? entry - sl : sl - entry
            isLong ? entry + (risk * tpRiskRatio) : entry - (risk * tpRiskRatio)
        => na
    tp

// Final Conditions - Adding 200 SMA trend filter
bullCond = bullEngulf and bullTouch and bullishTrend
bearCond = bearEngulf and bearTouch and bearishTrend

// Determine position status using strategy.position_size
inLong = strategy.position_size > 0
inShort = strategy.position_size < 0
flat = strategy.position_size == 0

// Reset variables when flat
if flat
    longEntry := na
    shortEntry := na
    longSL := na
    shortSL := na
    longTP := na
    shortTP := na
    trailStopLong := na
    trailStopShort := na

// Entry Logic - Enhanced TP/SL calculation
if bullCond and flat
    longEntry := close
    longSL := calcSL(true, close)
    longTP := calcTP(true, close)
    trailStopLong := enableTrailing ? longSL : na
    
    strategy.entry("BUY", strategy.long)
    if enableTrailing
        strategy.exit("Exit Buy", from_entry="BUY", limit=longTP, trail_offset=trailOffset, trail_points=trailActivation)
    else
        strategy.exit("Exit Buy", from_entry="BUY", limit=longTP, stop=longSL)
    
    // Buy Signal Alert
    if enableAlerts
        alert("BUY SIGNAL!\nSymbol: " + syminfo.ticker + "\nPrice: " + str.tostring(close, "#.####") + "\nSMA22: " + str.tostring(sma22, "#.####") + "\nSMA200: " + str.tostring(sma200, "#.####") + "\nTP: " + str.tostring(longTP, "#.####") + "\nSL: " + str.tostring(longSL, "#.####") + "\nR:R = " + str.tostring((longTP - close) / (close - longSL), "#.##"), alert.freq_once_per_bar)

if bearCond and flat
    shortEntry := close
    shortSL := calcSL(false, close)
    shortTP := calcTP(false, close)
    trailStopShort := enableTrailing ? shortSL : na
    
    strategy.entry("SELL", strategy.short)
    if enableTrailing
        strategy.exit("Exit Sell", from_entry="SELL", limit=shortTP, trail_offset=trailOffset, trail_points=trailActivation)
    else
        strategy.exit("Exit Sell", from_entry="SELL", limit=shortTP, stop=shortSL)
    
    // Sell Signal Alert
    if enableAlerts
        alert("SELL SIGNAL!\nSymbol: " + syminfo.ticker + "\nPrice: " + str.tostring(close, "#.####") + "\nSMA22: " + str.tostring(sma22, "#.####") + "\nSMA200: " + str.tostring(sma200, "#.####") + "\nTP: " + str.tostring(shortTP, "#.####") + "\nSL: " + str.tostring(shortSL, "#.####") + "\nR:R = " + str.tostring((close - shortTP) / (shortSL - close), "#.##"), alert.freq_once_per_bar)

// Manual trailing stop calculation
if inLong and enableTrailing and not na(longEntry)
    profitPoints = high - longEntry
    if profitPoints >= trailActivation
        newTrailStop = high - trailOffset
        trailStopLong := na(trailStopLong) ? newTrailStop : math.max(trailStopLong, newTrailStop)

if inShort and enableTrailing and not na(shortEntry)
    profitPoints = shortEntry - low
    if profitPoints >= trailActivation
        newTrailStop = low + trailOffset
        trailStopShort := na(trailStopShort) ? newTrailStop : math.min(trailStopShort, newTrailStop)

// Plots with enhanced trend visualization
plot(sma22, color=color.orange, title="SMA 22", linewidth=2)
plot(sma200, color=bullishTrend ? color.lime : color.red, title="SMA 200", linewidth=3)

// Clear trend visualization
bgcolor(bullishTrend ? color.new(color.green, 92) : color.new(color.red, 92), title="Trend Background")
barcolor(bullCond ? color.lime : bearCond ? color.red : na)

// Trend direction indicators
plotshape(bullishTrend and not bullishTrend[1], title="Uptrend Start", style=shape.labelup, 
          location=location.belowbar, color=color.green, size=size.small, text="📈 UPTREND", textcolor=color.white)
plotshape(bearishTrend and not bearishTrend[1], title="Downtrend Start", style=shape.labeldown, 
          location=location.abovebar, color=color.red, size=size.small, text="📉 DOWNTREND", textcolor=color.white)

// SMA cross signals
sma22AboveSma200 = sma22 > sma200
plotshape(sma22AboveSma200 and not sma22AboveSma200[1], title="Golden Cross", style=shape.triangleup, 
          location=location.bottom, color=color.yellow, size=size.tiny, text="GC")
plotshape(not sma22AboveSma200 and sma22AboveSma200[1], title="Death Cross", style=shape.triangledown, 
          location=location.top, color=color.purple, size=size.tiny, text="DC")

// Entry Price Lines
plot(inLong ? longEntry : na, color=color.blue, style=plot.style_line, linewidth=1, title="Long Entry")
plot(inShort ? shortEntry : na, color=color.purple, style=plot.style_line, linewidth=1, title="Short Entry")

// Take Profit Lines
plot(inLong ? longTP : na, color=color.green, style=plot.style_line, linewidth=2, title="Long TP")
plot(inShort ? shortTP : na, color=color.green, style=plot.style_line, linewidth=2, title="Short TP")

// Stop Loss Lines (Fixed or Trailing)
plot(inLong and not enableTrailing ? longSL : na, color=color.red, style=plot.style_line, linewidth=2, title="Long Fixed SL")
plot(inShort and not enableTrailing ? shortSL : na, color=color.red, style=plot.style_line, linewidth=2, title="Short Fixed SL")

// Trailing Stop Lines
plot(inLong and enableTrailing ? trailStopLong : na, color=color.orange, style=plot.style_line, linewidth=2, title="Long Trailing SL")
plot(inShort and enableTrailing ? trailStopShort : na, color=color.orange, style=plot.style_line, linewidth=2, title="Short Trailing SL")

// Buy/Sell Signal Arrows with enhanced visibility
plotshape(bullCond, title="Buy Signal", style=shape.triangleup, location=location.belowbar, 
          color=color.new(color.green, 0), size=size.large)
plotshape(bearCond, title="Sell Signal", style=shape.triangledown, location=location.abovebar, 
          color=color.new(color.red, 0), size=size.large)

// Buy/Sell Labels with R:R info
plotshape(bullCond, title="Buy Label", style=shape.labelup, location=location.belowbar, 
          color=color.new(color.green, 0), size=size.normal, text="🚀 BUY", textcolor=color.white)
plotshape(bearCond, title="Sell Label", style=shape.labeldown, location=location.abovebar, 
          color=color.new(color.red, 0), size=size.normal, text="🔻 SELL", textcolor=color.white)