Stratégie de sortie différée : l'art d'attendre

RSI ATR VOLUME PATTERN
Date de création: 2025-09-08 13:38:17 Dernière modification: 2025-09-08 13:38:17
Copier: 7 Nombre de clics: 236
2
Suivre
319
Abonnés

Stratégie de sortie différée : l’art d’attendre Stratégie de sortie différée : l’art d’attendre

Je ne sais pas ce qu’il en est de cette stratégie.

Savez-vous que la plupart des traders ont un défaut: s’ils voient un signal négatif, ils s’enfuient !😱 Mais cette stratégie va dans le sens inverse, elle vous dit: “Ne vous précipitez pas, attendez et voyez !”

C’est comme quand on est amoureux et qu’on se sépare à la suite d’une phrase ? trop d’impulsion ! Cette tactique attend les 3 lignes K (c’est réglable) pour voir si c’est vraiment une “séparation” ou si c’est juste une expression émotionnelle.

La logique de base: ne pas prendre de décisions impulsives

Conditions d’entrée

  • Découverte d’un modèle de rupture de haute basse
  • Confirmation de la ligne K (c’est la bonne direction pour le cours de clôture)
  • Système de notation multidimensionnelle: RSI dynamique + confirmation de la quantité de transaction + analyse de la volatilité
  • Pour être admis, vous devez avoir un minimum de 3,0 points (pour un maximum de 5,0).

La mise au point !Le système de notation est super intelligent, il prend en compte:

  • K intensité de la ligne (pourcentage d’entités)
  • Le volume des transactions a-t-il été augmenté ?
  • Le RSI est-il dans une fourchette raisonnable ?
  • Niveaux actuels de volatilité

La sagesse du retard

La stratégie traditionnelle: voir les signaux de défaite → jouer immédiatement Cette stratégie: voir le signal d’échec → attendre 3 lignes K → confirmer → faire une sortie rationnelle

Pourquoi ce retard ?

  1. Évitez les pièges de la fausse intrusionLes marchés sont souvent “trompés” et les retards peuvent filtrer le bruit
  2. Réduire la fréquence des transactionsRéduire les frais de procédure
  3. Augmenter le taux de réussiteLes tendances ont besoin de plus de temps pour se développer

️ Gestion des risques: Ne soyez pas indulgents quand il s’agit de rigueur

Le film a été réalisé par un groupe de cinéastes de la région de Khartoum, qui ont été invités à participer à l’événement.

  • Arrêt des pertesRésistance à l’action de l’ATR
  • Arrêtez de pleurer2 fois et demi ATR (modifiable)
  • Temps de transactionLes échanges de titres sont limités aux heures d’ouverture.
  • La clôture de la transactionIl n’y a pas de place pour les femmes dans la société.

La conception visuelle: à première vue

  • Le triangle vert: le plus souvent
  • 🔴 Le triangle rouge: un signal de vide ordinaire
  • Signaux de haute qualité (score ≥ 4,5)
  • Orange X: les premiers signaux d’échec (ignorés)
  • 🔴 Red X: retard du signal d’échec (exécution de la sortie)

Un guide pour éviter les fossesLe site de l’armée russe a publié un article dans lequel il explique que les “Falses Alertes” ont été délibérément ignorées.

Les scénarios applicables

Cette stratégie s’applique tout particulièrement à:

  • Une ville en ébranlement
  • Les traders qui ne veulent pas être torturés par les pertes fréquentes
  • Les investisseurs qui veulent améliorer la qualité des signaux
  • Pour les amateurs de day trading

Rappelez-vous: la patience est la meilleure arme pour un trader, et parfois il est plus sage d’attendre que d’agir immédiatement !

Code source de la stratégie
/*backtest
start: 2025-08-08 00:00:00
end: 2025-09-07 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDC"}]
*/

//@version=6
strategy("Delayed X Exit Strategy - Final Version", overlay=true)

// === INPUTS ===
// Strategy Settings
delayBars = input.int(3, "Delay X Exit (bars after entry)", minval=1, maxval=10, group="Exit Strategy")
showScores = input.bool(true, "Show Signal Scores", group="Display")
minScore = input.float(3.0, "Minimum Score to Trade", minval=1.0, maxval=5.0, step=0.1, group="Strategy")
volumePeriod = input.int(20, "Volume Average Period", group="Strategy")

// Risk Management
stopATRMult = input.float(1.5, "Stop Loss ATR Multiplier", minval=0.5, maxval=3.0, step=0.1, group="Risk Management")
targetATRMult = input.float(2.5, "Take Profit ATR Multiplier", minval=1.0, maxval=5.0, step=0.1, group="Risk Management")

// Time Filters - US Market Hours Only
startHour = input.int(9, "Start Trading Hour", minval=0, maxval=23, group="Time Filter")
endHour = input.int(16, "End Trading Hour", minval=0, maxval=23, group="Time Filter")
startMinute = input.int(30, "Start Trading Minute", minval=0, maxval=59, group="Time Filter")

// === TIME FILTER - MARKET HOURS ONLY ===
currentHour = hour(time, "America/New_York") 
currentMinute = minute(time, "America/New_York")
marketOpen = (currentHour == startHour and currentMinute >= startMinute) or (currentHour > startHour and currentHour < endHour)
inTradingHours = marketOpen

// --- Original Pattern Detection ---
lowPoint      = ta.lowest(low, 3)
prevLowPoint  = ta.lowest(low[3], 3)
isHigherLow   = low == lowPoint and low > prevLowPoint
bullConfirm   = isHigherLow and close > open

highPoint     = ta.highest(high, 3)
prevHighPoint = ta.highest(high[3], 3)
isLowerHigh   = high == highPoint and high < prevHighPoint
bearConfirm   = isLowerHigh and close < open

// --- Pattern Failures (X signals) ---
failHigherLow = isHigherLow[1] and low < low[1]
failLowerHigh = isLowerHigh[1] and high > high[1]

// Track entry information for delayed exit logic
var int entryBar = na
var string entryDirection = na
var float entryPrice = na

// === ENHANCED SCORING SYSTEM ===
rsi = ta.rsi(close, 14)
atr = ta.atr(14)
avgVolume = ta.sma(volume, volumePeriod)

// Scoring components (optimized for delayed exits)
bullCandleStrength = bullConfirm ? (close > open and (close - open) / (high - low) > 0.6 ? 1 : 0.5) : 0
bearCandleStrength = bearConfirm ? (close < open and (open - close) / (high - low) > 0.6 ? 1 : 0.5) : 0
volumeConfirm = volume > avgVolume * 1.2 ? 1 : (volume > avgVolume ? 0.5 : 0)
bullMomentum = bullConfirm ? (rsi > 25 and rsi < 65 ? 1 : (rsi < 75 ? 0.5 : 0)) : 0
bearMomentum = bearConfirm ? (rsi > 35 and rsi < 75 ? 1 : (rsi > 25 ? 0.5 : 0)) : 0
currentRange = high - low
volatilityScore = currentRange > atr * 0.7 ? 1 : 0.5

// Pattern quality (more lenient for delayed exits)
recentBullSignals = ta.barssince(bullConfirm)
recentBearSignals = ta.barssince(bearConfirm)
bullPatternQuality = bullConfirm ? (na(recentBearSignals) or recentBearSignals > 2 ? 1 : 0.5) : 0
bearPatternQuality = bearConfirm ? (na(recentBullSignals) or recentBullSignals > 2 ? 1 : 0.5) : 0

// Calculate total scores
bullScore = bullConfirm ? bullCandleStrength + volumeConfirm + bullMomentum + volatilityScore + bullPatternQuality : 0
bearScore = bearConfirm ? bearCandleStrength + volumeConfirm + bearMomentum + volatilityScore + bearPatternQuality : 0

// === TRADE SIGNALS ===
longSignal = bullConfirm and bullScore >= minScore and inTradingHours
shortSignal = bearConfirm and bearScore >= minScore and inTradingHours

// === STRATEGY ENTRIES ===
if longSignal and strategy.position_size == 0
    strategy.entry("LONG", strategy.long, qty=1)
    entryBar := bar_index
    entryDirection := "LONG"
    entryPrice := close
    
if shortSignal and strategy.position_size == 0
    strategy.entry("SHORT", strategy.short, qty=1)
    entryBar := bar_index
    entryDirection := "SHORT"
    entryPrice := close

// === DELAYED EXIT LOGIC ===
// Only consider X exits if they occur delayBars+ after entry
shouldExitOnDelayedFailure = false
barsAfterEntry = na(entryBar) ? 0 : bar_index - entryBar

if strategy.position_size != 0 and not na(entryBar) and barsAfterEntry >= delayBars
    // Check for pattern failure that matches our position direction
    if strategy.position_size > 0 and failHigherLow
        shouldExitOnDelayedFailure := true
    if strategy.position_size < 0 and failLowerHigh  
        shouldExitOnDelayedFailure := true

// Execute delayed failure exits
if shouldExitOnDelayedFailure
    if strategy.position_size > 0
        strategy.close("LONG", comment="Delayed X Exit")
    if strategy.position_size < 0
        strategy.close("SHORT", comment="Delayed X Exit")
    entryBar := na
    entryDirection := na
    entryPrice := na

// === STANDARD STOP/TARGET EXITS ===
// Only use stop/target if we haven't exited on delayed failure
if strategy.position_size > 0 and not shouldExitOnDelayedFailure  // Long position
    stopLevel = strategy.position_avg_price - (atr * stopATRMult)
    targetLevel = strategy.position_avg_price + (atr * targetATRMult)
    strategy.exit("LONG_EXIT", "LONG", stop=stopLevel, limit=targetLevel)

if strategy.position_size < 0 and not shouldExitOnDelayedFailure  // Short position  
    stopLevel = strategy.position_avg_price + (atr * stopATRMult)
    targetLevel = strategy.position_avg_price - (atr * targetATRMult)
    strategy.exit("SHORT_EXIT", "SHORT", stop=stopLevel, limit=targetLevel)

// Reset entry tracking when position closes
if strategy.position_size == 0 and not na(entryBar)
    entryBar := na
    entryDirection := na
    entryPrice := na

// End of day exit
if not inTradingHours and strategy.position_size != 0
    strategy.close_all(comment="EOD")
    entryBar := na
    entryDirection := na
    entryPrice := na

// === VISUAL ELEMENTS ===

// Main entry signals
plotshape(longSignal, "Long Entry", shape.triangleup, location.belowbar, 
          color=color.new(color.lime, 0), size=size.normal)
plotshape(shortSignal, "Short Entry", shape.triangledown, location.abovebar, 
          color=color.new(color.red, 0), size=size.normal)

// Premium signals (score >= 4.5)
premiumLong = longSignal and bullScore >= 4.5
premiumShort = shortSignal and bearScore >= 4.5

plotshape(premiumLong, "Premium Long", shape.flag, location.belowbar, 
          color=color.new(color.aqua, 0), size=size.large)
plotshape(premiumShort, "Premium Short", shape.flag, location.abovebar, 
          color=color.new(color.fuchsia, 0), size=size.large)

// Pattern failures - Orange for early (ignored), Red for delayed (actionable)
earlyFailure = (failHigherLow or failLowerHigh) and not na(entryBar) and barsAfterEntry < delayBars
actionableFailure = (failHigherLow or failLowerHigh) and not na(entryBar) and barsAfterEntry >= delayBars

plotshape(earlyFailure, "Early X (Ignored)", shape.xcross, location.abovebar, 
          color=color.new(color.orange, 0), size=size.small)
plotshape(actionableFailure, "Delayed X (Exit)", shape.xcross, location.abovebar, 
          color=color.new(color.red, 0), size=size.normal)

// Entry confirmation arrows
plotarrow(longSignal ? 1 : shortSignal ? -1 : 0, 
          colorup=color.new(color.green, 30), colordown=color.new(color.red, 30))

// === ENHANCED POSITION VISUALIZATION ===
var line stopLine = na
var line targetLine = na  
var label positionLabel = na
var label delayLabel = na

if strategy.position_size != 0
    
    // Draw position lines and labels
    if strategy.position_size > 0  // Long position
        stopPrice = strategy.position_avg_price - (atr * stopATRMult)
        targetPrice = strategy.position_avg_price + (atr * targetATRMult)
        
        // Show delay status
        delayText = barsAfterEntry < delayBars ? 
                   "X Ignored (" + str.tostring(barsAfterEntry) + "/" + str.tostring(delayBars) + ")" : 
                   "X Active (" + str.tostring(barsAfterEntry) + " bars)"
        delayLabel := label.new(bar_index, high + (atr * 2), delayText, 
                              color=barsAfterEntry < delayBars ? color.orange : color.red, 
                              textcolor=color.white, size=size.small)
    
    if strategy.position_size < 0  // Short position
        stopPrice = strategy.position_avg_price + (atr * stopATRMult)
        targetPrice = strategy.position_avg_price - (atr * targetATRMult)

        
        // Show delay status  
        delayText = barsAfterEntry < delayBars ? 
                   "X Ignored (" + str.tostring(barsAfterEntry) + "/" + str.tostring(delayBars) + ")" : 
                   "X Active (" + str.tostring(barsAfterEntry) + " bars)"
        delayLabel := label.new(bar_index, low - (atr * 2), delayText, 
                              color=barsAfterEntry < delayBars ? color.orange : color.red, 
                              textcolor=color.white, size=size.small)


// === ALERTS ===
alertcondition(longSignal, title="Long Entry", message="LONG Entry Signal Triggered")
alertcondition(shortSignal, title="Short Entry", message="SHORT Entry Signal Triggered")
alertcondition(shouldExitOnDelayedFailure, title="Delayed X Exit", message="Pattern Failure Exit - Delayed Strategy")
alertcondition(premiumLong, title="Premium Long", message="PREMIUM LONG Signal - High Probability Setup")
alertcondition(premiumShort, title="Premium Short", message="PREMIUM SHORT Signal - High Probability Setup")