Ini adalah strategi perdagangan jangka pendek berdasarkan indikator Relative Strength Index (RSI). Ini memanfaatkan RSI untuk mengidentifikasi tingkat overbought dan oversold dan menggabungkan penyaringan lilin untuk menghindari sinyal palsu, memasuki posisi panjang dan pendek pada titik pembalikan. Strategi ini bertujuan untuk menangkap peluang pembalikan rata-rata setelah kondisi overbought atau oversold yang ekstrim.
Pertama, indikator RSI dihitung berdasarkan harga penutupan dengan periode yang ditetapkan pada 7. Tingkat overbought ditetapkan pada 70 dan tingkat oversold ditetapkan pada 30. Sinyal beli dihasilkan ketika RSI melintasi di atas 30 dan sinyal jual dihasilkan ketika RSI melintasi di bawah 70.
Untuk menyaring sinyal palsu, ukuran tubuh candlestick perlu berkembang menjadi 1-3 kali dari kisaran normal ketika sinyal perdagangan dipicu.
Ketika RSI tetap di bawah 30 selama 5 bar berturut-turut, sinyal panjang dihasilkan. Jika lilin berikutnya menunjukkan tubuh bullish diperluas lebih dari 4 kali, posisi panjang akan dieksekusi. Ketika RSI tetap di atas 70 selama 5 bar berturut-turut, sinyal pendek dihasilkan. Jika lilin berikutnya menunjukkan tubuh bearish diperluas lebih dari 4 kali, posisi pendek akan dieksekusi.
Untuk mengunci keuntungan, posisi akan ditutup ketika arah lilin saat ini konsisten dengan arah posisi dan tubuh memperluas 2 kali.
RSI sangat baik dalam mengidentifikasi kondisi overbought dan oversold. Ketika saham mencapai tingkat ekstrem, ada kemungkinan tinggi penarikan, dan tingkat ekstrem sering menyiratkan pembalikan yang akan datang. Strategi ini mampu menangkap peluang tersebut pada titik balik.
Perdagangan murni berdasarkan sinyal RSI dapat menghasilkan banyak sinyal palsu. Strategi ini menggabungkan ekspansi tubuh lilin sebagai filter, memasuki posisi ketika tubuh yang diperbesar muncul di sekitar titik pembalikan, menghindari whipsaws dari pasar yang kacau.
Membutuhkan 1-5 bar RSI berturut-turut di zona overbought atau oversold bertindak sebagai konfirmasi, menghindari sinyal palsu dari bar abnormal sesekali dan meningkatkan keandalan sinyal.
Multiplikator ekspansi tubuh dapat disesuaikan untuk produk yang berbeda. Untuk saham dengan ayunan besar, kriteria dapat dikurangi, sementara untuk saham dengan kisaran sempit, dapat diperketat. Ini memungkinkan penyesuaian yang fleksibel untuk produk perdagangan yang berbeda.
Pengaturan parameter memiliki beberapa keterbatasan yang melekat. Produk dan periode waktu yang berbeda mungkin memerlukan penyesuaian parameter. Menggunakan pengaturan tetap dapat menyebabkan masalah overfit.
RSI sendiri memiliki beberapa sifat yang tertinggal. dikombinasikan dengan ekspansi tubuh keluar posisi dini. sehingga akurasi menangkap dasar atau atas yang tepat umumnya tidak sangat tinggi.
Dalam pasar yang berkisar, RSI dapat memicu sinyal beli dan jual yang sering, menghasilkan periode pemegang yang panjang. Parameter harus disesuaikan atau strategi harus dihentikan sementara dalam kasus seperti itu.
Sebagai strategi perdagangan jangka pendek, strategi ukuran posisi yang tepat harus dikombinasikan, seperti stop loss bergerak, mengambil keuntungan, dll, untuk mengunci keuntungan dan mengendalikan risiko.
Kombinasi parameter RSI yang berbeda dapat diuji, seperti periode, tingkat overbought/oversold, dan filter candlestick, untuk menemukan parameter yang dioptimalkan untuk produk yang berbeda.
Stop loss bergerak atau persentase dapat ditambahkan untuk mengunci keuntungan atau mengatur stop loss berdasarkan nilai ATR atau saluran Donchain dll.
Kondisi berdasarkan MACD, KDJ dan indikator lainnya dapat ditambahkan untuk menghindari sinyal yang salah dari breakout yang tidak valid.
Gunakan moving average untuk mengukur bias tren. hanya mempertimbangkan sinyal perdagangan yang selaras dengan tren. strategi dapat dihentikan selama pasar yang terikat rentang. indikator kekuatan tren juga dapat digunakan sebagai filter.
Singkatnya, strategi pembalikan RSI ini adalah strategi perdagangan jangka pendek yang khas dengan pro dan kontra sendiri. Keuntungan utama terletak pada menangkap pullback setelah ekstrem sementara risiko utama berasal dari presisi sinyal yang rendah dan periode penahan yang panjang dalam kisaran. Kita dapat meningkatkan strategi dengan menyesuaikan parameter, menambahkan filter, mengoptimalkan stop, dll, untuk beradaptasi dengan lebih banyak produk dan kondisi pasar, dan mencapai hasil yang lebih stabil.
/*backtest start: 2022-11-08 00:00:00 end: 2023-11-14 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "Noro's FRSI Strategy v1.21", shorttitle = "FRSI str 1.21", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, commission_type = strategy.commission.percent, commission_value = 0.0) //Settings rsiperiod = input(7, defval = 7, minval = 2, maxval = 50, title = "RSI Period") limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit") rsisrc = input(close, defval = close, title = "RSI Price") rb = input(1, defval = 1, minval = 1, maxval = 5, title = "RSI Bars") sps = 0 fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2038, defval = 2018, 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") //Fast RSI fastup = rma(max(change(rsisrc), 0), rsiperiod) fastdown = rma(-min(change(rsisrc), 0), rsiperiod) fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown)) //Limits bar = close > open ? 1 : close < open ? -1 : 0 uplimit = 100 - limit dnlimit = limit //RSI Bars ur = fastrsi > uplimit dr = fastrsi < dnlimit uprsi = rb == 1 and ur ? 1 : rb == 2 and ur and ur[1] ? 1 : rb == 3 and ur and ur[1] and ur[2] ? 1 : rb == 4 and ur and ur[1] and ur[2] and ur[3] ? 1 : rb == 5 and ur and ur[1] and ur[2] and ur[3] and ur[4] ? 1 : 0 dnrsi = rb == 1 and dr ? 1 : rb == 2 and dr and dr[1] ? 1 : rb == 3 and dr and dr[1] and dr[2] ? 1 : rb == 4 and dr and dr[1] and dr[2] and dr[3] ? 1 : rb == 5 and dr and dr[1] and dr[2] and dr[3] and dr[4] ? 1 : 0 //Body body = abs(close - open) emabody = ema(body, 30) //Signals up = bar == -1 and sps == 0 and dnrsi and body > emabody / 4 dn = bar == 1 and sps == 0 and uprsi and body > emabody / 4 exit = bar == 1 and fastrsi > dnlimit and body > emabody / 2 //Trading if up strategy.entry("Long", strategy.long, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00))) sps := 1 if time > timestamp(toyear, tomonth, today, 00, 00) or exit strategy.close_all() sps := 0