Smart-Money-Konzept-Trendstrategie


Erstellungsdatum: 2025-12-04 15:57:27 zuletzt geändert: 2025-12-04 15:57:27
Kopie: 4 Klicks: 178
2
konzentrieren Sie sich auf
413
Anhänger

Smart-Money-Konzept-Trendstrategie Smart-Money-Konzept-Trendstrategie

SMC, FVG, BOS, OB, EMA

Das ist keine einfache technische Analyse, das ist eine institutionelle Transaktionsmentalität.

Traditionelle technische Analysen sind überholt. Diese SMC-Strategie kopiert direkt die Denkweise von Institutionshändlern: Suche nach Liquiditäts-Spitzen, Identifizierung von Auftragsblöcken und Erfassung von Marktstrukturstörungen. Die Retrospektive zeigt, dass die Verwendung eines 15-Minuten-Zyklus für den BTC/EUR-Paar, kombiniert mit einem 1-Stunden-Trendfilter für die EMA200, die risikobereinigte Rendite deutlich über der traditionellen Indikatorstrategie liegt.

Der Schlüssel liegt in den mehrfachen Bestätigungsmechanismen: Fair Value Gap ((FVG) + Market Structure Disruption ((BOS) + Liquidity Hunt + Fibonacci 50% Rabatt/Premium Zone. Es ist kein Stapel von technischen Indikatoren, sondern eine genaue Interpretation der Marktmikrostruktur.

2 Euro Fix-Risiko, aber das Gewinnpotenzial ist dreimal so hoch wie das Risiko

Das Risiko-Management wirkt unmittelbar und grob: Jeder Handel ist mit einem Risiko von 2 Euro fixiert, unabhängig davon, wie stark die Marktfluktuation ist. Die Stop-Loss-Distanz wird automatisch berechnet, um das Risiko konstant zu halten. Die Gewinn-Loss-Ratio ist auf 1:3 gesperrt, was bedeutet, dass eine Gewinn-Loss-Balance bei einer Gewinn-Loss-Rate von 33,4% erreicht wird.

Minimalposition 0.00001 BTC, maximalposition 0.01 BTC, perfekt für die Größe des Einzelhandelskapitals. Es wird kein unnötiges Risiko eingegangen, weil die Position zu groß ist, und es werden keine Chancen verpasst, weil die Position zu klein ist. Diese Art der Kapitalverwaltung ist stabiler als das traditionelle Prozentsatzrisikomodell.

Trendfilter sind entscheidend, 87,5% der Falschsignale werden direkt gefiltert

Ein einfaches SMC-Signal ist anfällig für häufige Fehltritte in einem schwankenden Markt. Diese Strategie enthält die 1-stündige EMA200 als Trendfilter: Die Mehrkopfsignale werden nur ausgeführt, wenn der 15-minütige Preis eine Stunde über der EMA200 liegt, und umgekehrt die Hohlkopfsignale.

Diese Konstruktion schränkt die Anwendbarkeit der Strategie direkt von “ganzmarkt” auf “trendmarkt” ein und erhöht die Signalqualität erheblich, obwohl die Handelsfrequenz reduziert wird. Während der Quervergleiche wird die Strategie automatisch gestoppt, um zu vermeiden, dass Geld in unwirksamen Schwankungen verbraucht wird.

Die Logik der Identifizierung von Bestellblöcken: Die Preisgedächtnis der Agentur

Der Auftragsblock ist kein Resistenzstützpunkt, sondern ein Preisbereich, in dem institutionelle Großkapital aktiv war. Die Strategie identifiziert den effektiven Auftragsblock anhand der folgenden Bedingungen:

Mehrere Bestellblöcke: Die vorherige K-Linie ist negativ + Vorhandensein von Aufwärts-FVG + Preise brechen vorläufige Schwankungstiefpunkte + Vorhandensein von nach unten liegender Liquidität + Derzeitige Preise liegen in der Fibonacci-Reduzierungsregion unter 50%.

Blank-Order-Platz: Die erste K-Linie ist die Sonnenlinie + Es gibt eine abwärts gerichtete FVG + Der Preis schwankt nach unten bis zu einem vorläufigen Höchststand + Es gibt eine Aufwärtsliquidität + Der aktuelle Preis befindet sich in einer Fibonacci-Premiumzone von mehr als 50%.

Jede Bedingung hat ihre eigene Logik: Die Y/Z-Linie zeigt die Richtungspannung, die FVG zeigt das Liquiditätsungleichgewicht, die BOS bestätigt die Strukturänderung, die Liquiditätsjagd bestätigt die Beteiligung der Agentur, die Rabatt-/Premiumzone bietet die beste Eintrittszeit.

Mobilität der Jagd: 0,1% der Fangkapazität verringert die Jagd

90% der Einzelhändlerstopps in den Märkten sind auf offensichtliche Unterstützungs- und Widerstandsplätze gesetzt. Institutionelle Fonds treiben die Preise bewusst in diese Bereiche und lösen nach einer großen Anzahl von Stop-Points Reverse-Operationen aus. Die Strategie erkennt diese Liquiditätsjagd durch eine Preiskapazität von 0,1% an.

Wenn die niedrigsten Preise innerhalb von 7 Perioden 0,1% unter dem aktuellen Tiefpunkt liegen, wird eine untere Liquidität bestätigt. Diese Konstruktion vermeidet zu sensible Fehleinschätzungen und sorgt dafür, dass echte Liquiditätsjagden nicht übersehen werden.

Swing-Point-Bestätigung: 4 Zyklenverzögerung gegen Signalsicherheit

Die Strategie verwendet eine Schwingungslänge von 4 Zyklen zur Bestätigung von Höhen und Tiefen, was bedeutet, dass 4 K-Linien für die Bestätigung eines Schwingungspunktes benötigt werden. Diese Verzögerung ist ein notwendiger Preis: Eine zu kurze Bestätigungszeit erzeugt eine große Anzahl von falschen Schwingungspunkten, eine zu lange Bestätigungszeit verpasst die Wirksamkeit.

4 Zyklen entsprechen einer Bestätigungszeit von 1 Stunde auf einem 15-Minuten-Diagramm, was sowohl die Effektivität der Schwingungspunkte als auch die Verzögerung von Marktveränderungen gewährleistet. Dieser Parameter wurde nach umfangreichen Rückmessungen optimiert und ist der optimale Ausgleichspunkt für Effizienz und Genauigkeit.

Das ist kein Heiliges Glas, es muss streng umgesetzt werden.

Die historische Rückspielung ist kein Vorbild für zukünftige Erträge, und jede Strategie hat die Möglichkeit, wiederholte Verluste zu verzeichnen. Die SMC-Strategie ist in starken Trendmärkten gut, aber die Signalqualität fällt in turbulenten Märkten. Selbst mit einem Trendfilter ist es nicht möglich, falsche Durchbrüche und Markträusch vollständig zu vermeiden.

Die Strategie erfordert strenge psychologische Qualitäten: Sie muss den Verlust von 2 Euro pro Stück akzeptieren, sie muss entschieden sein, wenn ein Signal erscheint, und sie muss geduldig sein, wenn kein Signal erscheint.

Es wird empfohlen, mindestens 3 Monate vor dem Einstieg in den Handel mit Simulationen zu handeln, um sicherzustellen, dass die Strategielogik und die Risiken vollständig verstanden werden. Denken Sie daran: Die Marktstruktur verändert sich, und keine Strategie kann für immer wirksam sein.

Strategiequellcode
/*backtest
start: 2024-12-04 00:00:00
end: 2025-12-02 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy(title="Stratégie SMC V18.2 (BTC/EUR FINAL R3 - Tendance)", shorttitle="SMC-BTC-FINAL-Tendance", overlay=true,
     currency=currency.EUR, // <--- CHANGÉ EN EUR
     initial_capital=1000, // Capital initial de 1000 euros pour coller à votre compte démo
     pyramiding=0, 
     default_qty_type=strategy.cash, 
     default_qty_value=1) 

// --- PARAMÈTRES ADAPTÉS POUR BTC (M15) ---
i_max_lot_size = input.float(0.01, title="Lot Max (Quantité Max BTC)", minval=0.00001, step=0.001)
i_min_lot_size = input.float(0.00001, title="Lot Min Réel (Exigence Broker)", minval=0.00001, step=0.00001) 
i_swing_length = input.int(4, title="Long. Swing (BOS) pour BTC", minval=2) // ADAPTÉ M15
i_ob_opacity = input.int(80, title="Opacité OB", minval=0, maxval=100)
i_liq_tolerance = input.float(0.1, title="Tolérance Liq. (%) pour BTC", minval=0.01, step=0.01)
i_liq_search = input.int(7, title="Long. Recherche Liq.", minval=5) // ADAPTÉ M15

// --- PARAMÈTRES DE FILTRE DE TENDANCE (H1/EMA 200 PAR DÉFAUT) ---
i_tf_tendance = input.string("60", title="Timeframe Tendance (ex: 60 pour H1)", options=["30", "60", "120", "240"]) // ADAPTÉ H1
i_ema_length = input.int(200, title="Longueur EMA Tendance", minval=1)

// --- GESTION DU RISQUE DÉDIÉE ---
float risk_amount = 2.0 // Risque de 2.00 EUROS par transaction
float min_sl_distance = 0.0001 

// --- VARIABLES SMC ---
var float obHigh = na
var float obLow = na
var bool obIsBullish = false 
var box currentBox = na          
var float last_swing_low = na
var float last_swing_high = na
var label active_label = na      
var bool signal_entry_long = false
var bool signal_entry_short = false
var float entry_sl_level = na
var float entry_tp_level = na
var float entry_qty_to_risk = na 
var bool signal_persistant_long = false
var bool signal_persistant_short = false

// --- FONCTION DE FILTRE DE TENDANCE (EMA sur TF supérieur) ---
f_get_ema_hl() => 
    request.security(syminfo.tickerid, i_tf_tendance, ta.ema(close, i_ema_length))

ema_tendance = f_get_ema_hl()

// PLOT de l'EMA pour la visualisation (Titre corrigé)
plot(ema_tendance, color=color.new(color.white, 20), title="EMA Tendance (Filtre)", linewidth=2)


// --- RÉINITIALISATION ---
if not na(active_label)
    label.delete(active_label)
active_label := na 

signal_entry_long := false 
signal_entry_short := false 
entry_qty_to_risk := na 


// Mise à jour des Swings Highs/Lows
sh_confirmed = ta.barssince(high == ta.highest(i_swing_length * 2 + 1)) == i_swing_length
sl_confirmed = ta.barssince(low == ta.lowest(i_swing_length * 2 + 1)) == i_swing_length

// Initialisation des swings 
if na(last_swing_high)
    last_swing_high := ta.highest(200)
if na(last_swing_low)
    last_swing_low := ta.lowest(200)

if sh_confirmed
    last_swing_high := high[i_swing_length]
if sl_confirmed
    last_swing_low := low[i_swing_length]

float fib_0_5_level = not na(last_swing_high) and not na(last_swing_low) ? (last_swing_high + last_swing_low) / 2 : na

// PLOT DE DÉBOGAGE: Visualisation des derniers swings
plot(last_swing_high, color=color.new(color.fuchsia, 50), style=plot.style_line, linewidth=2, title="Last Swing High")
plot(last_swing_low, color=color.new(color.lime, 50), style=plot.style_line, linewidth=2, title="Last Swing Low")


// --- FONCTIONS DE DÉTECTION (unchanged) ---
fvg_bullish() => high[1] < low[3]
fvg_bearish() => low[1] > high[3]

f_has_liquidity(direction) =>
    result = false
    price_to_search = direction ? low : high 
    
    search_price = direction ? ta.lowest(i_liq_search) : ta.highest(i_liq_search)

    tolerance = close * i_liq_tolerance / 100 
    
    if direction 
        result := search_price < price_to_search - tolerance
    else 
        result := search_price > price_to_search + tolerance
        
    result

// --- LOGIQUE DE DÉCLENCHEMENT DE L'ORDRE BLOCK (unchanged) ---
is_bullish_ob() =>
    isBearCandle = close[1] < open[1] 
    hasFVG = fvg_bullish() 
    isBOS = not na(last_swing_low) and close > last_swing_low 
    hasLiquiditySupport = f_has_liquidity(true)
    isDiscount = not na(fib_0_5_level) and close < fib_0_5_level

    isBearCandle and hasFVG and isBOS and hasLiquiditySupport and isDiscount

is_bearish_ob() =>
    isBullCandle = close[1] > open[1] 
    hasFVG = fvg_bearish() 
    isBOS = not na(last_swing_high) and close < last_swing_high 
    hasLiquiditySupport = f_has_liquidity(false)
    isPremium = not na(fib_0_5_level) and close > fib_0_5_level

    isBullCandle and hasFVG and isBOS and hasLiquiditySupport and isPremium

// --- CRÉATION / MISE À JOUR DE L'OB ACTIF (unchanged) ---
if na(obHigh) or strategy.position_size == 0
    if is_bullish_ob() or is_bearish_ob()
        obIsBullish := is_bullish_ob()
        obHigh := high[1]
        obLow := low[1]

// --- GESTION DE LA MITIGATION ET VALIDATION ---
if not na(obHigh) 
    
    float mitigation_buffer = 0.00005 * close 

    isTouched = obIsBullish ? low <= obHigh + mitigation_buffer : high >= obLow - mitigation_buffer
    isInvalidatedBull = obIsBullish and close < obLow
    isInvalidatedBear = not obIsBullish and close > obHigh
    
    // L'OB est touché ET nous ne sommes pas déjà en position
    if isTouched and strategy.position_size == 0
        
        // --- CALCULS ET SIGNAL ---
        var float sl_level = obIsBullish ? obLow : obHigh
        var float rr_distance_usd = math.abs(close - sl_level) 
        float safe_rr_distance = math.max(rr_distance_usd, min_sl_distance)
        
        float desired_risk_amount = risk_amount 
        
        float calculated_qty = desired_risk_amount / safe_rr_distance
        
        // LOGIQUE POUR GÉRER LOT MAX/MIN
        float minimum_lot_for_market = i_min_lot_size 
        
        entry_qty_to_risk := math.max(calculated_qty, minimum_lot_for_market)
        
        entry_qty_to_risk := math.min(entry_qty_to_risk, i_max_lot_size) 
        
        entry_sl_level := sl_level
        
        // TP FIXE : R:R 1:3
        entry_tp_level := obIsBullish ? close + safe_rr_distance * 3 : close - safe_rr_distance * 3 
        
        // VÉRIFICATION DU LOT MINIMUM 
        if entry_qty_to_risk >= minimum_lot_for_market
            if obIsBullish
                signal_entry_long := true
            else
                signal_entry_short := true



// --- EXÉCUTION DE LA STRATÉGIE ---

// Persistance du signal
if signal_entry_long and strategy.position_size == 0
    signal_persistant_long := true

if signal_entry_short and strategy.position_size == 0
    signal_persistant_short := true

// EXÉCUTION AVEC FILTRE DE TENDANCE
if strategy.position_size == 0
    
    // EXÉCUTION LONG
    if signal_persistant_long and not na(entry_qty_to_risk)
        // FILTRE LONG : Prix M15 au-dessus de l'EMA de tendance H1
        if close > ema_tendance
            strategy.entry("LongEntry", strategy.long, qty=entry_qty_to_risk, comment="OB Long Actif")
            strategy.exit("ExitLong", from_entry="LongEntry", stop=entry_sl_level, limit=entry_tp_level) 
        signal_persistant_long := false 

    // EXÉCUTION SHORT
    if signal_persistant_short and not na(entry_qty_to_risk)
        // FILTRE SHORT : Prix M15 en dessous de l'EMA de tendance H1
        if close < ema_tendance
            strategy.entry("ShortEntry", strategy.short, qty=entry_qty_to_risk, comment="OB Short Actif")
            strategy.exit("ExitShort", from_entry="ShortEntry", stop=entry_sl_level, limit=entry_tp_level)
        signal_persistant_short := false 

// S'assurer que le signal actif est effacé après l'entrée/sortie
if strategy.position_size != 0
    signal_persistant_long := false
    signal_persistant_short := false