Strategi Perdagangan Pembalikan Berdasarkan RSI Berbilang Tempoh

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

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:

  1. Mengira nilai RSI untuk tempoh 2, 7, dan 14 masing-masing.

  2. Apabila RSI-2 adalah di bawah 10, RSI-7 di bawah 20, dan RSI-14 di bawah 30, bahagian bawah dikenal pasti.

  3. Apabila RSI-2 melebihi 90, RSI-7 melebihi 80, dan RSI-14 melebihi 70, puncak diiktiraf.

  4. Menghasilkan isyarat beli/jual berdasarkan kesatuan RSI.

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

Lebih lanjut