Strategi Breakout SMA Engulfing

SMA ENGULFING ATR TRAILING
Tanggal Pembuatan: 2025-09-04 13:40:53 Akhirnya memodifikasi: 2025-09-04 13:40:53
menyalin: 1 Jumlah klik: 233
2
fokus pada
319
Pengikut

Strategi Breakout SMA Engulfing Strategi Breakout SMA Engulfing

Ini bukan strategi penelan bentuk biasa, tetapi sistem sniper presisi dengan tiga filter.

SHUBHAM V7a memfilterkan tiga kondisi, yaitu absorbansi, SMA22 touch, dan SMA200 trend, menjadi satu sistem perdagangan yang benar-benar efektif. Data retrospektif menunjukkan bahwa mekanisme pemfilteran tiga kali ini dapat meningkatkan kualitas sinyal secara signifikan dan mengurangi perdagangan tidak valid yang disebabkan oleh terobosan palsu.

SMA22 Touch Logic: Desain Buffer Zone 0,5 Points adalah Genius

Strategi tradisional mengharuskan harga untuk menyentuh garis rata-rata dengan tepat, yang hampir tidak mungkin terjadi dalam perdagangan nyata. Strategi ini mengatur zona penyangga SMA 0,5 poin, yang dianggap efektif ketika harga menyentuh dalam kisaran 0,5 poin di bawah SMA 22. Desain ini secara langsung mengatasi titik nyeri terbesar dari strategi rata-rata: sinyal langka.

Filter Trend SMA200: Pesamannya Berpisah dari Perdagangan Berlawanan

Desain yang paling cerdas di sini: hanya melakukan lebih banyak ketika harga berada di atas SMA200, dan melakukan lebih banyak ketika berada di bawah SMA200. Kondisi penyaringan kasar sederhana ini langsung memotong 80% dari perdagangan berlawanan.

Identifikasi pola penelan: masuk ke zona penyangga untuk menghindari sinyal lemah

Pola penelan standar membutuhkan hubungan inklusi yang ketat, tetapi sering terjadi situasi “hampir penelan” di pasar. Strategi memungkinkan pengguna untuk mengatur toleransi pola penelan melalui parameter PatternBuffer ((default 0.0).

Sistem Stop Loss: Tiga model yang mencakup semua gaya perdagangan

Modus poin tetap: Cocok untuk trader short line, default stop loss 10 poin, stop loss 5 poin, risk/reward rasio 2: 1. Pengaturan ini stabil di sebagian besar pasangan mata uang utama.

Modus ATR: Dinamika penyesuaian lebih ilmiah, default stop stop 2x ATR, stop loss 1x ATR ≠ 14 siklus ATR perhitungan memastikan stop loss stop stop level dengan volatilitas pasar ≠

Model proporsi risikoPengelolaan dana yang paling profesional, menghitung posisi berhenti berdasarkan risiko aktual, memastikan bahwa rasio risiko / keuntungan dari setiap perdagangan mencapai tingkat yang ditentukan.

Tracking Stop Loss: 5 poin deviasi + 3 poin kombinasi emas yang diaktifkan

Setelah mengaktifkan tracking stop, mulai aktif ketika float mencapai 3, dan stop line jarak maksimum adalah 5 poin. Kombinasi parameter ini dioptimalkan dengan banyak pengulangan: 3 poin aktifitas menghindari gangguan dari fluktuasi kecil, dan 5 poin deflection menemukan titik keseimbangan antara melindungi keuntungan dan menghindari keluar terlalu awal.

Syarat Masuk: 3 Syarat yang Wajib Dipenuhi

Ada banyak syarat.

  1. Muncul untuk melihat bentuk yang menelan
  2. Harga menyentuh SMA22 (dengan 0.5 poin buffer) dan harga penutupan lebih tinggi dari SMA22
  3. Harga saat ini lebih tinggi dari SMA200 (filter tren)

Kondisi kosong

  1. Munculnya Trend Depresi
  2. Harga menyentuh SMA22 (dengan buffer 0,5 poin) dan harga penutupan di bawah SMA22
  3. Harga saat ini lebih rendah dari SMA200 (filter tren)

Rekomendasi parameter pertempuran nyata: konfigurasi optimal untuk berbagai lingkungan pasar

Pasar tren: Zona penyangga SMA ditetapkan pada 0,3, dan titik aktif stop loss yang dilacak ditetapkan pada 5, untuk lebih mengikuti tren.

Pasar Bergoyang: Disarankan untuk menutup tracking stop loss, menggunakan stop loss yang tetap, dan area buffer SMA dapat dilepas sesuai dengan 0.8 .

Pasar yang Bergolak: Modus ATR perkalian berkinerja terbaik, stop loss ditetapkan 2,5 kali ATR, stop loss 1,5 kali ATR.

Keterbatasan strategi: Performa buruk dalam situasi ini

Periode penyusunan horisontalJika SMA 22 dan SMA 200 terlalu dekat, filter tren akan gagal dan mudah menghasilkan sinyal palsu.

Periode yang sangat bergejolakDi bawah ini adalah beberapa contoh yang dapat digunakan untuk memaksimalkan penggunaan aplikasi ini:

Periode likuiditas rendah“Kalau tidak, itu akan berdampak buruk pada keuntungan strategi, jadi hindari penggunaan sebelum dan sesudah pasar dibuka”.

Manajemen Risiko: Pelaksanaan yang Tepat Untuk Keuntungan Jangka Panjang

Strategi ini memiliki kemungkinan kerugian berturut-turut, terutama pada periode konversi pasar. Retrospeksi historis menunjukkan kerugian berturut-turut maksimum sebesar 5-7 koin, sehingga risiko tunggal tidak boleh melebihi 2% dari dana akun. Kinerja historis strategi tidak mewakili pendapatan masa depan, dan perubahan lingkungan pasar dapat mempengaruhi efektivitas strategi.

Disarankan untuk digunakan bersama dengan pengelolaan dana: Hentikan perdagangan setelah 3 kerugian berturut-turut, menilai kembali kondisi pasar. Selain itu, perbedaan kinerja antara varietas yang berbeda sangat besar, dan perlu mengoptimalkan parameter untuk varietas perdagangan tertentu.

Kode Sumber Strategi
/*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)