Artikel ini menjelaskan secara rinci strategi perdagangan kuantitatif yang memanfaatkan indikator RSI multi-periode untuk mengidentifikasi titik pembalikan.
I. Logika Strategi
Strategi ini menggunakan 3 kelompok indikator RSI dengan parameter yang berbeda:
Menghitung nilai RSI untuk periode 2, 7, dan 14 masing-masing.
Ketika RSI-2 di bawah 10, RSI-7 di bawah 20, dan RSI-14 di bawah 30, sebuah dasar diidentifikasi.
Ketika RSI-2 di atas 90, RSI-7 di atas 80, dan RSI-14 di atas 70, puncak diidentifikasi.
Menghasilkan sinyal beli/jual berdasarkan suara bulat RSI.
Setel parameter yang dapat disesuaikan untuk konsensus indikator, mengontrol frekuensi sinyal.
Dengan menganalisis indikator RSI di seluruh periode secara kolektif, akurasi titik pembalikan dapat ditingkatkan.
II. Keuntungan dari Strategi
Keuntungan terbesarnya adalah menggunakan analisis RSI jangka waktu ganda meningkatkan identifikasi titik kunci dan menyaring sinyal palsu.
Keuntungan lain adalah fleksibilitas untuk menyesuaikan parameter konsensus dan beradaptasi dengan lingkungan pasar yang berbeda.
Akhirnya, kombinasi RSI juga memberikan lebih banyak pilihan penyesuaian.
III. Potensi Risiko
Namun, ada risiko berikut:
Pertama, RSI sendiri memiliki keterlambatan yang melekat dalam mengidentifikasi pembalikan.
Kedua, beberapa indikator membawa ambiguitas sinyal yang membutuhkan aturan yang jelas.
Akhirnya, perdagangan reversal memiliki tingkat kegagalan yang membutuhkan persiapan psikologis.
IV. Ringkasan
Dalam kesimpulan, artikel ini telah menjelaskan strategi kuantitatif untuk mengidentifikasi pembalikan berdasarkan analisis RSI multi-periode. Ini meningkatkan pengakuan titik balik pasar dengan menilai unanimitas RSI. Tetapi risiko seperti ketinggalan dan sinyal yang salah perlu dikelola. Secara keseluruhan, ini memberikan pendekatan optimasi 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()