Strategi Trading Reversal Berdasarkan Multi-Periode RSI

Penulis:ChaoZhang, Tanggal: 2023-09-14 20:42:55
Tag:

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:

  1. Menghitung nilai RSI untuk periode 2, 7, dan 14 masing-masing.

  2. Ketika RSI-2 di bawah 10, RSI-7 di bawah 20, dan RSI-14 di bawah 30, sebuah dasar diidentifikasi.

  3. Ketika RSI-2 di atas 90, RSI-7 di atas 80, dan RSI-14 di atas 70, puncak diidentifikasi.

  4. Menghasilkan sinyal beli/jual berdasarkan suara bulat RSI.

  5. 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()

Lebih banyak