Strategi mengikuti tren persilangan rata-rata bergerak dikombinasikan dengan stop loss SMA dan mekanisme masuk kembali

EMA SMA
Tanggal Pembuatan: 2025-02-21 13:49:09 Akhirnya memodifikasi: 2025-02-27 16:59:13
menyalin: 1 Jumlah klik: 388
2
fokus pada
319
Pengikut

Strategi mengikuti tren persilangan rata-rata bergerak dikombinasikan dengan stop loss SMA dan mekanisme masuk kembali Strategi mengikuti tren persilangan rata-rata bergerak dikombinasikan dengan stop loss SMA dan mekanisme masuk kembali

Ringkasan

Strategi ini adalah sistem perdagangan pelacakan tren yang menggabungkan indeks moving average (EMA) dan simple moving average (SMA). Strategi ini terutama menggunakan EMA50 dan EMA150 untuk menghasilkan sinyal perdagangan, sekaligus menggunakan SMA150 sebagai garis stop loss, dan menyertakan mekanisme re-entry setelah stop loss. Desain ini dapat menangkap tren jangka menengah dan jangka panjang dan dapat mengontrol risiko secara efektif.

Prinsip Strategi

Logika inti dari strategi ini mencakup elemen-elemen kunci berikut:

  1. Sinyal masuk: Ketika EMA50 ke atas melewati EMA150, menghasilkan sinyal multitasking; Ketika EMA50 ke bawah melewati EMA150, menghasilkan sinyal blanko.
  2. Mekanisme Stop Loss: Memicu posisi Stop Loss saat harga turun di bawah SMA 150.
  3. Mekanisme re-entry: Setelah memicu stop loss, jika harga kembali menembus EMA150, re-entry dilakukan lebih banyak; Jika EMA50 kembali menembus EMA150, re-entry dilakukan kosong.
  4. Eksekusi perdagangan: Strategi melakukan perdagangan dalam jangka waktu yang ditentukan dan mempertimbangkan komisi 0,1% dan slippage 3 poin.

Keunggulan Strategis

  1. Trend Tracking: Menggunakan kombinasi garis rata-rata dari periode yang berbeda untuk menangkap tren pasar secara efektif.
  2. Pengendalian risiko yang baik: menetapkan kondisi stop loss yang jelas untuk menghindari kerugian yang terlalu besar.
  3. Fleksibilitas mekanisme re-entry: memungkinkan re-entry ketika kondisi pasar membaik, meningkatkan peluang keuntungan.
  4. Pengaturan parameter yang masuk akal: Periode EMA50 dan EMA150 dipilih untuk menyeimbangkan sensitivitas dan stabilitas.
  5. Pertimbangkan biaya transaksi yang sebenarnya: Termasuk komisi dan slip point, lebih dekat dengan lingkungan transaksi yang sebenarnya.

Risiko Strategis

  1. Risiko pasar yang bergoyang: Di pasar yang bergoyang di lateral mungkin sering menghasilkan sinyal pecah palsu.
  2. Risiko keterbelakangan: Indikator rata-rata bergerak sendiri memiliki keterbelakangan, mungkin kehilangan waktu terbaik untuk masuk.
  3. Risiko re-entry: Dalam pasar yang sangat bergejolak, mekanisme re-entry dapat menyebabkan kerugian beruntun.
  4. Risiko manajemen dana: Strategi tidak mencakup program manajemen posisi khusus.
  5. Ketergantungan pada kondisi pasar: Performa strategi dapat bervariasi dalam siklus pasar yang berbeda.

Arah optimasi strategi

  1. Masukkan indikator volatilitas: ATR atau Bollinger Bands dapat ditambahkan untuk menyesuaikan posisi stop loss agar stop loss lebih adaptif.
  2. Pengelolaan posisi yang lebih baik: disarankan untuk memasukkan sistem manajemen posisi dinamis berdasarkan volatilitas.
  3. Optimalkan kondisi masuk kembali: dapat dikombinasikan dengan indikator berayun seperti RSI untuk meningkatkan akurasi sinyal masuk kembali.
  4. Meningkatkan filter lingkungan pasar: Menambahkan indikator kekuatan tren, mengurangi frekuensi perdagangan di pasar yang cenderung rendah.
  5. Mengembangkan parameter adaptasi: Periode rata-rata dapat disesuaikan secara dinamis sesuai dengan fluktuasi pasar.

Meringkaskan

Ini adalah strategi pelacakan tren yang dirancang dengan baik, menangkap tren melalui persimpangan linier, dan dilengkapi dengan mekanisme kontrol risiko yang baik. Keunggulan utama strategi adalah kemampuan sistem untuk melacak tren dan desain manajemen risiko, tetapi dalam aplikasi praktis perlu memperhatikan dampak lingkungan pasar terhadap kinerja strategi.

Kode Sumber Strategi
/*backtest
start: 2024-02-22 00:00:00
end: 2025-02-19 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/

//@version=6
strategy("EMA 50 and EMA 150 with SMA150 Stop-loss and Re-Entry #ganges", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3)



// EMA and SMA Calculations
ema50 = ta.ema(close, 50)
ema150 = ta.ema(close, 150)
sma150 = ta.sma(close, 150)

// Conditions for Buy, Sell, and Stop-Loss
ema50CrossAboveEMA150 = ta.crossover(ema50, ema150)  // Buy signal
ema50CrossBelowEMA150 = ta.crossunder(ema50, ema150) // Sell signal
priceCrossAboveEMA150 = ta.crossover(close, ema150) // Price crosses EMA 150 from below
priceCloseBelowSMA150 = close < sma150              // Stop-loss for long positions



// Track stop-loss hit state
var bool stopLossHit = false

// Strategy Logic
// Buy Logic: EMA 50 crosses EMA 150 from below
if ema50CrossAboveEMA150 
    strategy.entry("Buy Signal", strategy.long, qty=1)
    stopLossHit := false // Reset stop-loss state when a new buy position is opened

// Sell Logic: EMA 50 crosses EMA 150 from above
if ema50CrossBelowEMA150 
    strategy.entry("Sell Signal", strategy.short, qty=1)
    stopLossHit := false // Reset stop-loss state when a new sell position is opened

// Stop-Loss for Long Positions: Close if price falls below SMA 150
if strategy.position_size > 0 and priceCloseBelowSMA150
    strategy.close("Buy Signal")
    stopLossHit := true // Mark stop-loss hit

// Re-Entry Logic After Stop-Loss
if stopLossHit 
    if priceCrossAboveEMA150 // Re-buy logic: PRICE crosses EMA 150 from below
        strategy.entry("Re-Buy Signal", strategy.long, qty=1)
        stopLossHit := false // Reset stop-loss state after re-entry
    if ema50CrossBelowEMA150 // Re-sell logic: EMA 50 crosses EMA 150 from above
        strategy.entry("Re-Sell Signal", strategy.short, qty=1)
        stopLossHit := false // Reset stop-loss state after re-entry

// Plot EMA and SMA Lines
plot(ema50, color=color.blue, title="EMA 50")
plot(ema150, color=color.red, title="EMA 150")
plot(sma150, color=color.orange, title="SMA 150")


// // Calculate Recent All-Time High
// highestHigh = ta.highest(high, 500) // Lookback period of 500 bars
// percentageFall = ((highestHigh - close) / highestHigh) * 100

// // Display Percentage Fall on the Most Recent Candle Only
// isLastBar = bar_index == ta.max(bar_index)
// if isLastBar
//     labelText = str.tostring(percentageFall, "#.##") + "% Fall from ATH"
//     labelPosition = high + ta.atr(14) * 2 // Positioning label above the candle
//     label.new(bar_index, labelPosition, labelText, color=color.red, textcolor=color.white, size=size.small, style=label.style_label_down)