Strategi Pelarian SMA yang Membelenggu

SMA ENGULFING ATR TRAILING
Tarikh penciptaan: 2025-09-04 13:40:53 Akhirnya diubah suai: 2025-09-04 13:40:53
Salin: 1 Bilangan klik: 233
2
fokus pada
319
Pengikut

Strategi Pelarian SMA yang Membelenggu Strategi Pelarian SMA yang Membelenggu

Ini bukan strategi melangsa bentuk biasa, tetapi sistem penembak tepat tiga penapis.

Tidak lagi menggunakan strategi sampah satu isyarat. SHUBHAM V7a memfilterkan tiga syarat yang sempurna untuk membentuk satu sistem perdagangan yang benar-benar berkesan. Data retrospeksi menunjukkan bahawa mekanisme penapisan tiga ini dapat meningkatkan kualiti isyarat dengan ketara dan mengurangkan perdagangan tidak sah yang disebabkan oleh penembusan palsu.

SMA22 Logik Sentuh: reka bentuk zon pelindung 0.5 adalah genius

Strategi tradisional memerlukan harga untuk menyentuh garis purata dengan tepat, yang hampir mustahil dalam perdagangan sebenar. Strategi ini menetapkan zon penampan SMA sebanyak 0.5 mata, dan sentuhan yang berkesan hanya berlaku jika harga berada dalam lingkungan 0.5 mata di bawah SMA 22. Reka bentuk ini secara langsung menyelesaikan masalah terbesar strategi garis purata: signal jarang.

Penapisan Trend SMA200: Berpisah Dengan Perdagangan Berlawanan

Reka bentuk yang paling bijak di sini: hanya melakukan lebih banyak apabila harga berada di atas SMA200, dan melakukan lebih banyak apabila berada di bawah SMA200. Syarat penapisan kasar yang mudah ini secara langsung memotong 80% daripada perdagangan berlawanan.

Pengiktirafan bentuk menelan: masuk ke zon perlindungan untuk mengelakkan isyarat lemah

Bentuk penelan standard memerlukan hubungan pengelompokan yang ketat, tetapi keadaan “hampir menelan” sering berlaku di pasaran. Strategi membolehkan pengguna menetapkan toleransi bentuk penelan melalui parameter PatternBuffer ((default 0.0).

Sistem Stop Loss: Tiga mod yang merangkumi semua gaya perdagangan

Mod penarafan tetap: sesuai untuk peniaga garis pendek, default stop stop 10 poin, stop loss 5 poin, ganjaran risiko 2: 1. Tetapan ini stabil di kebanyakan pasangan mata wang utama.

Mod ATR ganda: penyesuaian dinamik lebih saintifik, default stop loss 2x ATR, stop loss 1x ATR ❚ Pengiraan ATR 14 kitaran memastikan tahap stop loss dan volatiliti pasaran. ❚

Model nisbah risikoPengurusan dana yang paling profesional, mengira kedudukan berhenti berdasarkan risiko sebenar, memastikan nisbah risiko / keuntungan setiap perdagangan mencapai tahap yang ditetapkan.

Tracking Stop Loss: Perpindahan 5 mata + 3 mata gabungan emas yang diaktifkan

Setelah mengaktifkan Tracking Stop, ia akan diaktifkan apabila float mencapai 3 dan jarak garis stop adalah 5 dari titik maksimum. Kombinasi parameter ini telah dioptimumkan melalui banyak pengulangan: pengaktifan 3 mengelakkan gangguan dari turun naik kecil, dan penyingkiran 5 mencari titik keseimbangan antara melindungi keuntungan dan mengelakkan penarikan awal.

Syarat kemasukan ketat tetapi tepat: Tiga syarat yang perlu dipenuhi

Tambahan syarat

  1. Muncul untuk melihat bagaimana ia boleh dimakan.
  2. Harga menyentuh SMA22 (termasuk 0.5 mata penampan) dan harga penutupan lebih tinggi daripada SMA22
  3. Harga semasa lebih tinggi daripada SMA200 (penapis trend)

Syarat kosong

  1. Penurunan harga dalam bentuk penurunan
  2. Harga menyentuh SMA22 (dengan 0.5 titik perlindungan) dan harga penutupan di bawah SMA22
  3. Harga semasa di bawah SMA200 (penapis trend)

Cadangan parameter pertempuran: konfigurasi optimum untuk keadaan pasaran yang berbeza

Pasaran trend: Zon penampan SMA ditetapkan sebagai 0.3, dan titik pengaktifan berhenti kehilangan diletakkan sebagai 5, untuk mengikuti trend dengan lebih baik.

Pasaran Bergolak: Disyorkan untuk menutup tracking stop loss, menggunakan stop loss yang tetap, zon penampan SMA boleh dikurangkan dengan 0.8 .

Pasaran yang bergolakMod perkalian ATR: Performa terbaik, stop loss ditetapkan pada 2.5 kali ganda ATR, stop loss 1.5 kali ganda ATR.

Kelemahan strategi: Kesan buruk dalam keadaan ini

Tempoh penyusunan mendatar: Apabila SMA22 dan SMA200 terlalu dekat, penapis trend tidak berfungsi dan mudah menghasilkan isyarat palsu.

Tempoh yang bergolakDalam keadaan yang melampau, format ini boleh menjadi palsu dan disyorkan untuk ditangguhkan.

Tempoh kurang kebolehliruan“Kalau tidak, ia akan menjejaskan keuntungan strategi dan mengelakkan penggunaan sebelum dan selepas pasaran dibuka”.

Pengurusan risiko: Pelaksanaan ketat untuk keuntungan jangka panjang

Strategi ini mempunyai kemungkinan kerugian berturut-turut, terutamanya pada masa peralihan pasaran. Ulasan sejarah menunjukkan kerugian berturut-turut maksimum sebanyak 5-7 keping, oleh itu risiko tunggal tidak boleh melebihi 2% dari dana akaun. Prestasi sejarah strategi tidak mewakili pendapatan masa depan, dan perubahan persekitaran pasaran mungkin mempengaruhi keberkesanan strategi.

Disyorkan untuk digunakan bersama dengan pengurusan dana: Hentikan perdagangan selepas 3 kerugian berturut-turut, menilai semula keadaan pasaran. Pada masa yang sama, perbezaan prestasi antara pelbagai jenis sangat besar, memerlukan pengoptimuman parameter untuk jenis perdagangan tertentu.

Kod 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)