Momentum Breakout Backtesting Dukungan Resistensi Strategi

Penulis:ChaoZhang, Tanggal: 2024-02-22 16:07:14
Tag:

img

Gambaran umum

Strategi ini terutama menggunakan harga tinggi, rendah dan dekat hari perdagangan sebelumnya sebagai level support dan resistance untuk hari ini.

Prinsip Strategi

Kode ini pertama-tama mendefinisikan fungsi menghitungSupportResistance untuk menghitung level support dan resistance, yang mengekstrak harga tertinggi, terendah dan penutupan hari perdagangan sebelumnya sebagai level support dan resistance hari ini.

Kemudian dalam logika utama, fungsi ini dipanggil untuk mendapatkan tiga tingkat harga ini dan memetakan mereka.

Dalam logika backtesting, jika harga penutupan lebih rendah dari level terendah hari sebelumnya sementara harga saat ini lebih tinggi dari level terendah yang membentuk breakout, itu akan menjadi long.

Melalui model breakout ini, penilaian tren dan generasi sinyal perdagangan dilaksanakan.

Keuntungan

  1. Menggunakan data hari perdagangan sebelumnya untuk membangun level support dan resistance hari ini, menghindari masalah optimasi parameter

  2. Tingkat support dan resistance berasal dari data perdagangan pasar riil, dengan beberapa nilai referensi

  3. Model backtesting yang sederhana dan mudah dipahami dan diterapkan

  4. Tampilan visual dari level support dan resistance membentuk persepsi harga

  5. Pemantauan real-time dari breakout, menangkap peluang perdagangan tepat waktu

Risiko

  1. Tingkat support dan resistance berubah dari waktu ke waktu, sulit untuk menentukan validitas

  2. Tidak dapat memprediksi arah tren, risiko kehilangan pembalikan

  3. Mudah terpengaruh oleh kebocoran palsu, risiko masuk dini

  4. Tidak dapat menentukan keberlanjutan penyusutan, kemungkinan stop loss awal

  5. Kegagalan dukungan dan resistensi individu lebih mungkin di bawah fluktuasi pasar yang besar

Pengendalian:

  1. Gabungkan lebih banyak faktor untuk menilai validitas breakout

  2. Memperluas rentang stop loss yang tepat untuk menangkap tren

  3. Posisi terbuka dalam batch, mengurangi dampak dari fluktuasi individu

Optimisasi

  1. Tambahkan lebih banyak data historis seperti 5 hari, 10 hari garis untuk menentukan tingkat

  2. Masukkan indikator lain seperti volume untuk menilai validitas breakout

  3. Set stop loss berdasarkan volatilitas aktual

  4. Mengoptimalkan manajemen modal, mengendalikan kerugian tunggal

Ringkasan

Secara keseluruhan ini adalah strategi breakout yang khas, sederhana dan intuitif. Dengan membangun dukungan dan resistensi hari saat ini dengan data hari sebelumnya dan backtesting breakout dari level-level tersebut untuk panjang/pendek. Pro mudah dipahami dan langsung memvisualisasikan level; kontra adalah risiko breakout palsu dan ketidakpastian keberlanjutan. Langkah selanjutnya adalah meningkatkan validitas breakout, mengendalikan risiko, mengoptimalkan manajemen modal dll.


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

//@version=5
strategy("Support and Resistance with Backtesting", overlay=true)

// Function to calculate support and resistance levels
calculateSupportResistance() =>
    highPrevDay = request.security(syminfo.tickerid, "D", high[1], lookahead=barmerge.lookahead_on)
    lowPrevDay = request.security(syminfo.tickerid, "D", low[1], lookahead=barmerge.lookahead_on)
    closePrevDay = request.security(syminfo.tickerid, "D", close[1], lookahead=barmerge.lookahead_on)
    [highPrevDay, lowPrevDay, closePrevDay]

// Call the function to get support and resistance levels
[supResHigh, supResLow, supResClose] = calculateSupportResistance()

// Plotting support and resistance levels
plot(supResHigh, color=color.red, linewidth=2, title="Previous Day High")
plot(supResLow, color=color.green, linewidth=2, title="Previous Day Low")
plot(supResClose, color=color.blue, linewidth=2, title="Previous Day Close")

// Backtesting logic
backtestCondition = close[1] < supResLow and close > supResLow
strategy.entry("Long", strategy.long, when=backtestCondition)

// Plotting buy/sell arrows for backtesting
plotarrow(backtestCondition ? 1 : na, colorup=color.green, offset=-1, transp=0)


Lebih banyak