Triple RSI Extremum Strategi Perdagangan

Penulis:ChaoZhang, Tanggal: 2023-11-02 14:34:21
Tag:

img

Gambaran umum

Strategi ini menggunakan tiga indikator RSI dengan periode yang berbeda untuk menentukan apakah pasar telah mencapai tingkat overbought atau oversold yang sangat tinggi, dan menghasilkan sinyal beli dan jual yang sesuai.

Logika Strategi

Strategi ini menggunakan indikator RSI 2 periode, 7 periode, dan 14 periode secara bersamaan. Ketika ketiga indikator RSI menunjukkan sinyal overbought atau oversold pada saat yang sama, sinyal perdagangan dihasilkan.

Secara khusus, ketika RSI 2 periode di bawah 10, RSI 7 periode di bawah 20, dan RSI 14 periode di bawah 30, pasar dianggap oversold, dan sinyal beli dihasilkan.

Kode ini menggunakan parameter akurasi untuk menyesuaikan nilai ambang overbought/oversold dari RSI. Standarnya adalah 3, dan nilai yang lebih rendah berarti kriteria overbought/oversold yang lebih ketat.

Ketika sinyal beli atau jual dihasilkan, jika harga berbalik dan menembus harga pembukaan hari itu, posisi saat ini akan ditutup untuk mewujudkan keuntungan atau mengurangi kerugian.

Analisis Keuntungan

  • Menggunakan kombinasi indikator RSI multi-periode dapat lebih akurat mengidentifikasi kondisi overbought/oversold dan menyaring sinyal palsu.

  • Pengaturan kriteria overbought/oversold dengan parameter yang berbeda memungkinkan penyesuaian sensitivitas strategi berdasarkan kondisi pasar.

  • Mengimplementasikan harga yang terbuka untuk melacak berhenti membantu mengunci keuntungan secara tepat waktu.

Analisis Risiko

  • Indikator RSI rentan terhadap divergensi yang tidak efektif dalam mengidentifikasi pembalikan tren.

  • Untuk periode volatilitas tinggi, parameter RSI perlu disesuaikan, jika tidak, hal itu dapat memicu berhenti terlalu sering.

  • Sinyal RSI tiga kali berturut-turut jarang terjadi, yang dapat kehilangan peluang perdagangan yang baik.

  • Parameter untuk kriteria overbought/oversold harus disesuaikan dan diuji di pasar yang berbeda.

Arahan Optimasi

  • Pertimbangkan untuk menambahkan indikator lain untuk konfirmasi, seperti Bollinger Bands, KDJ dll, untuk menghindari divergensi RSI.

  • Otomatis mengoptimalkan parameter RSI berdasarkan rezim pasar yang berbeda.

  • Uji kondisi stop exit lainnya, seperti stop ATR.

  • Tambahkan filter untuk menghindari perdagangan selama periode yang tidak cocok.

Kesimpulan

Strategi ini mengidentifikasi zona overbought/oversold menggunakan kombinasi indikator RSI multi-periode, dan menerapkan trend tracking stops. Keuntungan termasuk peningkatan akurasi, stop out tepat waktu; Kelemahan termasuk perdagangan yang hilang, penilaian RSI yang salah. pengujian optimasi parameter dianjurkan, bersama dengan menambahkan indikator konfirmasi, untuk mencapai kinerja yang lebih baik.


/*backtest
start: 2023-10-25 00:00:00
end: 2023-10-28 10:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Noro's Triple RSI Top/Bottom", shorttitle = "3RSI Top/Bottom", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
accuracy = input(3, defval = 3, minval = 1, maxval = 10, title = "accuracy")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")


//RSI-2
fastup = rma(max(change(close), 0), 2)
fastdown = rma(-min(change(close), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//RSI-7
middleup = rma(max(change(close), 0), 7)
middledown = rma(-min(change(close), 0), 7)
middlersi = middledown == 0 ? 100 : middleup == 0 ? 0 : 100 - (100 / (1 + middleup / middledown))

//RSI-14
slowup = rma(max(change(close), 0), 14)
slowdown = rma(-min(change(close), 0), 14)
slowrsi = slowdown == 0 ? 100 : slowup == 0 ? 0 : 100 - (100 / (1 + slowup / slowdown))

//Signals
acc = 10 - accuracy
up = fastrsi < (5 + acc) and middlersi < (10 + acc * 2) and slowrsi < (15 + acc * 3)
dn = fastrsi > (95 - acc) and middlersi > (90 - acc * 2) and slowrsi > (85 - acc * 3)
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size > 0 and close > open)

//Trading
if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Bottom", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Top", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

Lebih banyak