Strategi crossover purata bergerak pembalikan trend yang tepat

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

img

Ringkasan

Strategi ini dinamakan Golden Cross Death Cross Strategy. Idea utamanya adalah untuk memanfaatkan isyarat yang kuat yang dihasilkan oleh salib emas dan salib kematian dari dua purata bergerak jangka masa yang berbeza untuk menangkap pembalikan trend di pasaran dan mendapat keuntungan dari pembelian rendah / penjualan tinggi.

Logika Strategi

Dalam strategi ini, kami mengira garis purata bergerak mudah (SMA) 50 tempoh dan 200 tempoh. Secara tradisinya, apabila SMA 50 hari melintasi di bawah SMA 200 hari, ia dipanggil salib kematian yang menandakan prospek penurunan. Dan apabila SMA 50 hari melintasi di atas SMA 200 hari, ia adalah salib emas yang menunjukkan kenaikan.

Logik dagangan adalah hanya untuk mengambil kedudukan berdasarkan isyarat ini - shorting pada death cross dan pergi panjang pada golden cross.

Di samping itu, strategi menyediakan julat tarikh yang boleh disesuaikan untuk backtest. jadi kita boleh memeriksa keberkesanan sebenar isyarat silang ini dalam tempoh yang berbeza.

Kelebihan

  1. Mengambil secara berkesan titik pembalikan trend untuk membuka kedudukan berhampiran kawasan utama
  2. Gabungan dua SMA dari tempoh yang berbeza menapis isyarat palsu
  3. Ciri pengujian belakang memeriksa prestasi sebenar di seluruh rejimen pasaran
  4. Grafik bersih secara visual memaparkan isyarat silang dan perubahan kedudukan

Risiko

  1. SMA melintasi pembalikan yang melampau dan tidak dapat meramalkan mereka
  2. Data ujian belakang mungkin berbeza dari prestasi langsung kerana kos dan slippage
  3. Pilihan parameter seperti tempoh SMA sangat mempengaruhi hasil
  4. Perlu menggabungkan asas dan teknikal, bukan hanya perdagangan mekanikal

Untuk menangani risiko, kita boleh mengoptimumkan parameter, menambah penapis, menguruskan risiko, perdagangan kertas strategi dan lain-lain untuk meminimumkan risiko.

Peluang Peningkatan

Cara utama untuk mengoptimumkan strategi ini termasuk:

  1. Ujian SMA gabungan tempoh yang berbeza
  2. Menambah penapis seperti jumlah, turun naik untuk mengelakkan whipsaws
  3. Memasukkan data ekonomi atau berita untuk penapis
  4. Melaksanakan mekanisme berhenti kehilangan seperti bergerak / berhenti masa
  5. Penilaian prestasi dalam tempoh penyimpanan yang berbeza

Dengan memeriksa kesan parameter, kita boleh menemui sistem silang purata bergerak yang lebih baik.

Kesimpulan

Strategi ini memanfaatkan penunjuk teknikal klasik silang purata bergerak untuk menangkap titik perubahan utama di pasaran. Dengan logik mudah dan ciri backtest yang mudah, ia dapat membantu dalam mengesan trend sebagai sebahagian daripada sistem yang lebih luas. Tetapi perdagangan dunia nyata masih memerlukan mempertimbangkan pelbagai faktor luaran, bukan hanya bergantung kepada isyarat secara buta.


/*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 lanjut