
Strategi ini digunakan untuk menentukan sama ada pasaran telah mencapai kawasan terhad untuk overbought dan oversold dengan memerhatikan tiga RSI yang berbeza pada masa yang sama. Ia memberi isyarat untuk membeli dan menjual.
Strategi ini menggunakan 2 kitaran, 7 kitaran dan 14 kitaran RSI pada masa yang sama. Apabila tiga RSI pada masa yang sama menunjukkan isyarat overbought atau oversold, isyarat perdagangan dikeluarkan.
Khususnya, apabila RSI 2 kitaran kurang daripada 10, RSI 7 kitaran kurang daripada 20, RSI 14 kitaran kurang daripada 30, menganggap pasaran berada dalam keadaan oversold, mengeluarkan isyarat beli. Apabila RSI 2 kitaran lebih besar daripada 90, RSI 7 kitaran lebih besar daripada 80, RSI 14 kitaran lebih besar daripada 70, menganggap pasaran berada dalam keadaan oversold, mengeluarkan isyarat jual.
Kod menggunakan parameter akurasi untuk mengubah nilai rendah penilaian RSI yang lebih baik, dengan asumsi bahawa 3, nilai yang lebih kecil, penilaian yang lebih baik dan lebih ketat. ❚strategy.long dan strategy.short digunakan untuk mengawal sama ada perdagangan dilakukan dengan arah yang sesuai.
Apabila isyarat beli atau jual dikeluarkan, jika harga berbalik menembusi harga pembukaan hari itu, maka posisi semasa akan dipadamkan dan trend tracking stop loss akan dilaksanakan.
Dengan menggabungkan indikator RSI pelbagai kitaran, anda boleh menilai lebih tepat keadaan pasaran yang terlalu banyak membeli dan terlalu banyak menjual, menapis isyarat palsu.
Dengan menggunakan parameter yang berbeza untuk menyesuaikan keadaan penilaian overbought dan oversold, anda boleh menyesuaikan kepekaan strategi mengikut pasaran.
Menerapkan harga bukaan untuk menjejaki hentian kerugian, dapat menghentikan kerugian tepat pada masanya, dan mengunci keuntungan.
Indeks RSI mudah tersesat dan kurang berkesan dalam menilai perubahan trend pasaran.
Ia perlu disesuaikan dengan keadaan yang bergelombang tinggi, atau ia akan sering mati.
Triple RSI kurang berlaku pada masa yang sama, dan mungkin kehilangan peluang perdagangan yang lebih baik.
Parameter untuk penilaian overbought dan oversold harus diselaraskan dengan sewajarnya, dan disyorkan untuk menguji keberkesanan data di pasaran yang berbeza.
Anda boleh pertimbangkan untuk memasukkan indikator lain untuk pengesahan, seperti Brinline, KDJ, dan lain-lain, untuk mengelakkan RSI menyimpang.
Parameter RSI boleh dioptimumkan secara automatik mengikut jenis situasi yang berbeza.
Kaedah lain yang boleh diuji adalah dengan menghentikan dan keluarkan keadaan, seperti menghentikan ATR.
Anda boleh menambah syarat untuk penyaringan masa untuk mengelakkan masa yang tidak sesuai.
Strategi ini menggunakan kombinasi indikator RSI pelbagai kitaran untuk menilai kawasan overbought dan oversold, dan menerapkan trend tracking stop loss. Kelebihannya adalah dapat meningkatkan ketepatan penilaian, dan menghentikan kerugian tepat pada masanya. Kekurangannya adalah mudah kehilangan, indikator RSI mudah disalahpahami.
/*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()