Strategi crossover rata-rata bergerak yang tepat

Penulis:ChaoZhang, Tanggal: 2024-01-22 12:14:29
Tag:

img

Gambaran umum

Strategi ini disebut Golden Cross Death Cross Strategy. Ide utamanya adalah untuk memanfaatkan sinyal kuat yang dihasilkan oleh salib emas dan salib kematian dari dua rata-rata bergerak dari kerangka waktu yang berbeda untuk menangkap pembalikan tren di pasar dan mendapatkan keuntungan dari pembelian rendah / penjualan tinggi.

Logika Strategi

Dalam strategi ini, kami menghitung garis SMA (Simple Moving Average) 50 periode dan 200 periode. Secara tradisional, ketika SMA 50 hari melintasi di bawah SMA 200 hari, itu disebut death cross yang menandakan prospek bearish. Dan ketika SMA 50 hari melintasi di atas SMA 200 hari, itu adalah golden cross yang menunjukkan bullishness.

Logika trading adalah hanya untuk mengambil posisi berdasarkan sinyal ini - shorting di death cross dan pergi panjang di golden cross.

Selain itu, strategi menyediakan rentang tanggal yang dapat disesuaikan untuk backtest. sehingga kita dapat memeriksa efektivitas sebenarnya dari sinyal silang ini selama periode yang berbeda.

Keuntungan

  1. Secara efektif menangkap titik pembalikan tren untuk membuka posisi di dekat area kunci
  2. Kombinasi dua SMA dari periode yang berbeda menyaring sinyal palsu
  3. Fitur backtesting memeriksa kinerja aktual di seluruh rezim pasar
  4. Grafik bersih secara visual menampilkan sinyal silang dan perubahan posisi

Risiko

  1. SMA melintasi keterlambatan pembalikan ekstrim dan tidak dapat memprediksi mereka
  2. Data backtest mungkin berbeda dari kinerja langsung karena biaya dan slippage
  3. Pemilihan parameter seperti periode SMA sangat mempengaruhi hasil
  4. Perlu menggabungkan dasar-dasar dan teknis, bukan hanya perdagangan mekanis

Untuk mengatasi risiko, kita dapat mengoptimalkan parameter, menambahkan filter, mengelola risiko, perdagangan kertas strategi dll untuk meminimalkan risiko.

Peluang Peningkatan

Cara utama untuk mengoptimalkan strategi ini meliputi:

  1. Pengujian SMA dari kombinasi periode yang berbeda
  2. Menambahkan filter seperti volume, volatilitas untuk menghindari whipsaws
  3. Menggabungkan data ekonomi atau berita untuk filter
  4. Mengimplementasikan mekanisme stop loss seperti bergerak / waktu berhenti
  5. Evaluasi kinerja selama periode penyimpanan yang berbeda

Dengan memeriksa dampak parameter, kita dapat menemukan sistem crossover rata-rata bergerak yang lebih baik.

Kesimpulan

Strategi ini memanfaatkan indikator teknis klasik penyeberangan rata-rata bergerak untuk menangkap titik infleksi utama di pasar. Dengan logika sederhana dan fitur backtest yang nyaman, ini dapat membantu dalam melacak tren sebagai bagian dari sistem yang lebih luas.


/*backtest
start: 2024-01-14 00:00:00
end: 2024-01-21 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("[S_R__9] - Death and Golden Cross", overlay=true)

// Specific Time Date Range For Backtest
startDate = input.int(title='Start Date', defval=1, minval=1, maxval=31, group='DATE CONFIG')
startMonth = input.int(title='Start Month', defval=1, minval=1, maxval=12, group='DATE CONFIG')
startYear = input.int(title='Start Year', defval=2023, minval=1800, maxval=2100, group='DATE CONFIG')

endDate = input.int(title='End Date', defval=31, minval=1, maxval=31, group='DATE CONFIG')
endMonth = input.int(title='End Month', defval=12, minval=1, maxval=12, group='DATE CONFIG')
endYear = input.int(title='End Year', defval=2023, minval=1800, maxval=2100, group='DATE CONFIG')

SPECIFIC_DATE = input.bool(title='USE SPECIFIC DATE ?', defval=false, group='DATE CONFIG')

inDateRange = SPECIFIC_DATE ? time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0) and time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0) : true

// Calculate 50 SMA and 200 SMA
sma50 = ta.sma(close, 50)
sma200 = ta.sma(close, 200)

// Detect a Death Cross (50 SMA crossing below 200 SMA)
deathCross = ta.crossunder(sma50, sma200)
// Detect a Golden Cross (50 SMA crossing above 200 SMA)
goldenCross = ta.crossover(sma50, sma200)

// Strategy Execution
if (inDateRange)
    if (deathCross)
        strategy.entry("Death Cross long", strategy.short)

    if (goldenCross)
        strategy.entry("Golden Cross short", strategy.long)

// Plot SMAs
plot(sma50, color=color.red, title="50 SMA")
plot(sma200, color=color.blue, title="200 SMA")

// Plotting Death Cross signal
plotshape(series=deathCross and inDateRange, title="Death Cross Signal", location=location.belowbar, color=color.red, style=shape.labeldown, text="DEATH CROSS")

// Plotting Golden Cross signal
plotshape(series=goldenCross and inDateRange, title="Golden Cross Signal", location=location.abovebar, color=color.green, style=shape.labelup, text="GOLDEN CROSS")


Lebih banyak