Artikel ini menerangkan secara terperinci strategi perdagangan kuantitatif yang menggunakan penunjuk RSI pelbagai tempoh untuk mengenal pasti titik pembalikan.
I. Logik Strategi
Strategi ini menggunakan 3 kumpulan penunjuk RSI dengan parameter yang berbeza:
Mengira nilai RSI untuk tempoh 2, 7, dan 14 masing-masing.
Apabila RSI-2 adalah di bawah 10, RSI-7 di bawah 20, dan RSI-14 di bawah 30, bahagian bawah dikenal pasti.
Apabila RSI-2 melebihi 90, RSI-7 melebihi 80, dan RSI-14 melebihi 70, puncak diiktiraf.
Menghasilkan isyarat beli/jual berdasarkan kesatuan RSI.
Tetapkan parameter yang boleh diselaraskan untuk persetujuan penunjuk, mengawal frekuensi isyarat.
Dengan menganalisis penunjuk RSI merentasi tempoh secara kolektif, ketepatan titik pembalikan dapat ditingkatkan.
II. Kelebihan Strategi
Kelebihan terbesar adalah menggunakan analisis RSI jangka masa berbilang meningkatkan pengenalan titik utama dan menapis isyarat palsu.
Satu lagi kelebihan adalah fleksibiliti untuk menyesuaikan parameter persetujuan dan menyesuaikan diri dengan persekitaran pasaran yang berbeza.
Akhirnya, gabungan RSI juga menyediakan lebih banyak pilihan penyuntingan.
III. Risiko yang berpotensi
Walau bagaimanapun, terdapat risiko berikut:
Pertama, RSI sendiri mempunyai kelewatan dalam mengenal pasti pembalikan.
Kedua, pelbagai penunjuk memperkenalkan ketidaksamaan isyarat yang memerlukan peraturan yang jelas.
Akhirnya, perdagangan pembalikan mempunyai kadar kegagalan yang memerlukan persediaan psikologi.
IV. Ringkasan
Ringkasnya, artikel ini telah menerangkan strategi kuantitatif untuk mengenal pasti pembalikan berdasarkan analisis RSI pelbagai tempoh. Ia meningkatkan pengiktirafan titik perubahan pasaran dengan menilai sebulat suara RSI. Tetapi risiko seperti kelewatan dan isyarat yang salah perlu diurus. Secara keseluruhan ia menyediakan pendekatan optimalisasi strategi RSI yang fleksibel.
/*backtest start: 2023-09-06 00:00:00 end: 2023-09-13 00:00:00 period: 45m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's Triple RSI Top/Bottom v1.1", shorttitle = "3RSI Top/Bottom 1.1", 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") leverage = input(1, defval = 1, minval = 1, maxval = 100, title = "leverage") indi = input(3, defval = 3, minval = 1, maxval = 3, title = "Indicators") 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)) //Body body = abs(close - open) abody = sma(body, 10) //Signals acc = 10 - accuracy signalup1 = fastrsi < (5 + acc) ? 1 : 0 signalup2 = middlersi < (10 + acc * 2) ? 1 : 0 signalup3 = slowrsi < (15 + acc * 3) ? 1 : 0 signaldn1 = fastrsi > (95 - acc) ? 1 : 0 signaldn2 = middlersi > (90 - acc * 2) ? 1 : 0 signaldn3 = slowrsi > (85 - acc * 3) ? 1 : 0 up = signalup1 + signalup2 + signalup3 >= indi dn = signaldn1 + signaldn2 + signaldn3 >= indi exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 3 //Trading lot = strategy.position_size == 0 ? strategy.equity / close * leverage : lot[1] if up if strategy.position_size < 0 strategy.close_all() strategy.entry("Bottom", strategy.long, needlong == false ? 0 : lot) if dn if strategy.position_size > 0 strategy.close_all() strategy.entry("Top", strategy.short, needshort == false ? 0 : lot) if time > timestamp(toyear, tomonth, today, 23, 59) or exit strategy.close_all()