Strategi RSI Reversal Breakout

Penulis:ChaoZhang, Tanggal: 2023-10-08 14:16:57
Tag:

Gambaran umum

Strategi Reversal Breakout RSI adalah strategi yang mengidentifikasi situasi overbought dan oversold menggunakan indikator RSI dan mengambil perdagangan kontra-trend ketika harga melanggar rata-rata bergerak.

Logika Strategi

Strategi ini terutama didasarkan pada logika berikut:

  1. RSI di bawah 25 dianggap oversold; RSI di atas 80 dianggap overbought.

  2. Gunakan EMA 200 hari untuk menentukan arah tren secara keseluruhan. Harga yang melanggar EMA dianggap sinyal uptrend, dan melanggar di bawah EMA merupakan sinyal downtrend.

  3. Ketika RSI menunjukkan sinyal oversold dan harga pecah di atas EMA, pergi panjang untuk uptrend. Ini adalah sinyal pembalikan yang khas, menunjukkan harga bangkit kembali dari zona oversold.

  4. Ketika RSI menunjukkan sinyal overbought dan harga pecah di bawah EMA, pergi pendek untuk downtrend. juga sinyal pembalikan, menunjukkan harga mulai menarik kembali dari zona overbought.

  5. Dengan trading reversals, kita berharap untuk menangkap awal dari tren baru sebelum dimulai.

Secara khusus, aturan masuk adalah untuk pergi panjang ketika RSI < 25 dan harga pecah di atas band atas; pergi pendek ketika RSI > 80 dan harga pecah di bawah band bawah. Keluar ketika harga tertinggi hari ini pecah di bawah harga tertinggi hari sebelumnya.

Keuntungan

Strategi RSI Reversal Breakout memiliki keuntungan berikut:

  1. Menangkap peluang pembalikan: Mengidentifikasi overbought / oversold dengan RSI memungkinkan menangkap pembalikan harga, yang merupakan kunci untuk menghasilkan alpha.

  2. Perdagangan dengan tren: Mengintegrasikan EMA memastikan perdagangan selaras dengan tren utama.

  3. Pengendalian risiko: Perdagangan reversal membatasi periode kepemilikan posisi, mengendalikan risiko.

  4. Parameter yang fleksibel: Periode RSI dan periode EMA dapat disesuaikan dengan perubahan rezim pasar, meningkatkan kemampuan beradaptasi.

  5. Frekuensi perdagangan yang tepat: Sinyal pembalikan terjadi pada frekuensi sedang, menghindari overtrading saat tetap aktif.

  6. Kesederhanaan: Peraturan-peraturan ini sederhana dan mudah diterapkan dalam perdagangan langsung.

Risiko dan Manajemen

Strategi ini juga memiliki risiko berikut:

  1. Risiko pembalikan gagal: Harga dapat melanjutkan tren asli setelah sinyal pembalikan, yang mengarah pada kerugian.

  2. Risiko tren yang tidak jelas: EMA tidak bekerja dengan baik ketika tidak ada tren yang jelas.

  3. Risiko optimasi: RSI dan EMA memiliki dampak besar pada kinerja. Harus secara ekstensif menguji berbagai nilai untuk menemukan yang optimal.

  4. Risiko overfitting: Performance chasing selama optimasi dapat menyebabkan overfitting.

  5. Risiko overtrading: Sinyal pembalikan yang terlalu sering menyebabkan perdagangan yang berlebihan.

Peningkatan

Strategi ini dapat ditingkatkan lagi dalam hal berikut:

  1. Evaluasi kualitas saham: Terapkan strategi hanya untuk saham berkualitas tinggi berdasarkan dasar-dasar.

  2. Masukkan indikator lain: Tambahkan MACD, KD dll untuk mengkonfirmasi sinyal pembalikan dan meningkatkan keandalan.

  3. Penyesuaian parameter dinamis: Sesuaikan parameter RSI dan EMA secara dinamis berdasarkan perubahan kondisi pasar.

  4. Optimalkan waktu masuk: atur aturan masuk yang baik untuk menunggu konfirmasi pembalikan.

  5. Strategi mengambil keuntungan: Tetapkan tingkat mengambil keuntungan yang tepat untuk menghindari mengembalikan keuntungan.

  6. Pertimbangkan biaya transaksi: Penilaian dampak dari slippage dan komisi.

  7. Pertimbangkan volatilitas: Fokus hanya pada saham volatilitas tinggi untuk membuat strategi lebih kuat.

Kesimpulan

Strategi Reversal Breakout RSI menggabungkan sinyal tren dan pembalikan untuk menangkap pembalikan awal dan peluang besar. Frekuensi perdagangan yang moderat membantu pengendalian risiko. Optimasi yang tepat pada waktu masuk, pengambilan keuntungan, dan pemilihan parameter dapat lebih meningkatkan kinerja. Dengan optimasi yang baik, strategi ini dapat menjadi pendekatan perdagangan kuantitatif yang efektif.


/*backtest
start: 2022-10-01 00:00:00
end: 2023-10-07 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © jocker.soad

//@version=4
// strategy("My Script", overlay=true, initial_capital=10000, default_qty_value=100)
min = input(title="Valor minimo de entrada", defval=25)
qtdAtivos = input(title="Quantidade de ações", defval=1)

// overBuyLine = hline(80)
// overSellLine = hline(min)

var comprado = false
var valorComprado = 0.0
var qtdDiasComprado = 0
var valorLucro = 0.0

valueRsi = rsi(close, 2)
valueSma = sma(close, 200)
valueEma = ema(close, 200)
lastHighPrice = high[2]

buyValidation = valueRsi <= min
sellValidation = close >= lastHighPrice



// plot(lastHighPrice, trackprice=true, offset=-99999, color=color.olive, linewidth=3, style=plot.style_area)
// plot(valueRsi)
// plot(valueSma)
// plot(valueEma)
// plotshape(sellValidation, style=shape.triangledown, color=color.blue)
// plotshape(comprado, style=shape.triangledown, color=color.blue)

startDate = input(title="Inicio Dia", type=input.integer, defval=1, minval=1, maxval=31)
startMonth = input(title="Inicio Mes", type=input.integer, defval=1, minval=1, maxval=12)
startYear = input(title="Inicio Ano", type=input.integer, defval=2018, minval=1800, maxval=2100)

endDate = input(title="Final Dia", type=input.integer, defval=1, minval=1, maxval=31)
endMonth = input(title="Final Mes", type=input.integer, defval=12, minval=1, maxval=12)
endYear = input(title="Final Ano", type=input.integer,  defval=2020, minval=1800, maxval=2100)

inDateRange = true

if inDateRange

    if close >= valueEma
    
        if comprado == false and buyValidation
            qtdDiasComprado := 0
            comprado := true
            valorComprado := close
            strategy.order("buy", true, qtdAtivos, when=buyValidation)
        
        if sellValidation and comprado == true
            comprado := false
            valorLucro := valorLucro + (close - valorComprado)
            valorComprado := 0
            strategy.order("sell", false, qtdAtivos, when=sellValidation)
        
        if comprado == true and sellValidation == false
            qtdDiasComprado := qtdDiasComprado + 1

// plot(valorLucro, color=color.lime)




Lebih banyak