Strategi trend konsep wang pintar


Tarikh penciptaan: 2025-12-04 15:57:27 Akhirnya diubah suai: 2025-12-04 15:57:27
Salin: 4 Bilangan klik: 178
2
fokus pada
413
Pengikut

Strategi trend konsep wang pintar Strategi trend konsep wang pintar

SMC, FVG, BOS, OB, EMA

Ini bukan analisis teknikal biasa, ini adalah pemikiran transaksi di peringkat institusi.

Analisis teknikal tradisional telah ketinggalan zaman. Strategi SMC ini secara langsung menyalin pola pemikiran pedagang institusi: mencari titik pengambilan kecairan, mengenal pasti blok pesanan, menangkap kerosakan struktur pasaran. Data retrospektif menunjukkan bahawa penggunaan kitaran 15 minit pada pasangan BTC / EUR, dengan penapis trend EMA200 selama 1 jam, memberikan pulangan yang jauh lebih baik setelah disesuaikan dengan risiko daripada strategi penunjuk tradisional.

Kuncinya adalah mekanisme pengesahan berganda: jurang nilai adil ((FVG) + kerosakan struktur pasaran ((BOS) + pengambilalihan kecairan + Fibonacci 50% diskaun / zon premium. Ini bukan tumpukan petunjuk teknikal, tetapi tafsiran yang tepat mengenai struktur mikro pasaran.

Risiko tetap 2 Euro, tetapi potensi keuntungan 3 kali ganda daripada risiko

Pengurusan risiko secara langsung dan kasar berkesan: Setiap perdagangan tetap menanggung risiko 2 euro, tidak kira betapa besarnya turun naik pasaran. Jarak hentian terhenti dikira secara automatik, memastikan risiko tetap. Nisbah keuntungan dan kerugian dikunci pada 1: 3, yang bermaksud bahawa kemenangan 33.4% dapat mencapai keseimbangan keuntungan dan kerugian, dan apa-apa kemenangan yang lebih tinggi daripada angka ini adalah keuntungan bersih.

Kedudukan minimum 0.00001 BTC, kedudukan maksimum 0.01 BTC, sesuai dengan saiz modal runcit. Tidak akan mengambil risiko yang tidak perlu kerana kedudukan yang terlalu besar, dan tidak akan kehilangan peluang kerana kedudukan yang terlalu kecil.

Penapis trend adalah kunci kejayaan, 87.5% isyarat palsu ditapis secara langsung

Isyarat SMC semata-mata mudah tersilap dalam pasaran yang bergolak. Strategi ini memasukkan EMA200 1 jam sebagai penapis trend: isyarat multihead dijalankan hanya apabila harga 15 minit berada 1 jam di atas EMA200, sebaliknya isyarat kosong dijalankan.

Reka bentuk ini secara langsung menyempitkan kebolehgunaan strategi dari “semua pasaran” ke “pasaran tren”, walaupun mengurangkan frekuensi perdagangan, tetapi meningkatkan kualiti isyarat dengan ketara. Strategi ini secara automatik menghentikan perdagangan semasa penyusunan melintang, untuk mengelakkan pemusnahan wang dalam turun naik yang tidak berkesan.

Logik pengiktirafan blok pesanan: ingatan harga yang ditinggalkan oleh agensi

Blok pesanan bukan menyokong rintangan, tetapi kawasan harga di mana dana besar institusi pernah aktif. Strategi mengenal pasti blok pesanan yang berkesan dengan syarat berikut:

Blok pesanan berbilang kepala: Barisan K terdahulu adalah garis negatif + Terdapat FVG ke atas + Harga menembusi titik rendah pergerakan awal + Terdapat kecairan ke bawah + Harga semasa berada di kawasan diskaun di bawah 50% Fibonacci.

Blok pesanan kosong: Garis K terdahulu adalah Garis Matahari + Terdapat FVG ke bawah + Harga turun ke paras tertinggi sebelum turun + Terdapat kecairan ke atas + Harga semasa berada di kawasan premium Fibonacci 50% atau lebih.

Setiap syarat mempunyai logiknya: sinis / yang menunjukkan tekanan arah, FVG menunjukkan ketidakseimbangan kecairan, BOS mengesahkan perubahan struktur, penglibatan agensi pengesahan perburuan kecairan, zon diskaun / premium menyediakan masa masuk yang terbaik.

Pergerakan berburu: 0.1% ketidakseimbangan tangkapan yang merosakkan perburuan

90% daripada penutupan runcit di pasaran ditetapkan pada tahap rintangan sokongan yang jelas. Dana institusi secara sengaja mendorong harga untuk menyentuh kawasan-kawasan ini, mencetuskan tindakan balas selepas banyak pesanan penutupan. Strategi untuk mengenal pasti tindakan perburuan kecairan ini adalah dengan selisih harga 0.1%.

Apabila harga terendah dalam tempoh 7 kitaran lebih rendah daripada 0.1% daripada paras terendah semasa, dipastikan terdapat kecairan di bawah. Reka bentuk ini mengelakkan kesalahan penilaian yang terlalu sensitif, sambil memastikan bahawa penangkapan kecairan sebenar tidak akan dilupakan.

Pengesahan titik ayunan: 4 kitaran kelewatan untuk kebolehpercayaan isyarat

Strategi ini menggunakan 4 kitaran panjang pergerakan untuk mengesahkan titik tinggi dan rendah, yang bermaksud anda perlu menunggu 4 garis K untuk mengesahkan satu titik pergerakan. Penangguhan ini adalah kos yang diperlukan: tempoh pengesahan yang terlalu pendek akan menghasilkan banyak titik pergerakan palsu, dan tempoh pengesahan yang terlalu lama akan kehilangan keberkesanan.

4 kitaran pada carta 15 minit bersamaan dengan masa pengesahan 1 jam, yang menjamin keberkesanan titik ayunan dan tidak terlalu terlewat dengan perubahan pasaran. Parameter ini, yang telah dioptimumkan dengan banyak pengulangan, adalah titik keseimbangan terbaik untuk kecekapan dan ketepatan.

Petunjuk Risiko Ketat: Ini Bukan Piala Suci dan Perlu Dilakukan Dengan Ketat

Pemantauan semula sejarah tidak mewakili keuntungan masa depan, dan strategi apa pun mempunyai kemungkinan kerugian berturut-turut. Strategi SMC berprestasi dalam pasaran yang sedang berkembang pesat, tetapi kualiti isyarat akan menurun dalam pasaran yang bergolak.

Strategi memerlukan kualiti psikologi yang ketat: anda mesti menerima kerugian 2 euro, anda mesti bertindak tegas apabila isyarat muncul, anda mesti bersabar apabila tidak ada isyarat.

Perdagangan simulasi sekurang-kurangnya 3 bulan sebelum perdagangan sebenar disyorkan untuk memastikan pemahaman sepenuhnya tentang logik strategi dan ciri-ciri risiko. Ingat: struktur pasaran berubah, dan tidak ada strategi yang boleh berfungsi selama-lamanya.

Kod sumber strategi
/*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