Strategi Perdagangan RSI Extremum Bertiga

Penulis:ChaoZhang, Tarikh: 2023-11-02 14:34:21
Tag:

img

Ringkasan

Strategi ini menggunakan tiga penunjuk RSI dengan tempoh yang berbeza untuk menentukan sama ada pasaran telah mencapai tahap terlalu banyak beli atau terlalu banyak jual, dan menghasilkan isyarat beli dan jual dengan sewajarnya.

Logika Strategi

Strategi ini menggunakan penunjuk RSI 2 tempoh, 7 tempoh, dan 14 tempoh secara serentak. Apabila ketiga-tiga penunjuk RSI menunjukkan isyarat overbought atau oversold pada masa yang sama, isyarat perdagangan dihasilkan.

Secara khusus, apabila RSI 2 tempoh di bawah 10, RSI 7 tempoh di bawah 20, dan RSI 14 tempoh di bawah 30, pasaran dianggap terlalu banyak dijual, dan isyarat beli dihasilkan.

Kod ini menggunakan parameter ketepatan untuk menyelaraskan nilai ambang overbought / oversold RSI. lalai adalah 3, dan nilai yang lebih rendah bermakna kriteria overbought / oversold yang lebih ketat.

Apabila isyarat beli atau jual dihasilkan, jika harga berbalik dan memecahkan harga pembukaan hari itu, kedudukan semasa akan ditutup untuk merealisasikan keuntungan atau mengurangkan kerugian.

Analisis Kelebihan

  • Menggunakan gabungan penunjuk RSI pelbagai tempoh dapat mengenal pasti keadaan overbought / oversold dengan lebih tepat dan menapis isyarat palsu.

  • Penyesuaian kriteria overbought/oversold dengan parameter yang berbeza membolehkan penyesuaian kepekaan strategi berdasarkan keadaan pasaran.

  • Melaksanakan hentian penjejakan harga terbuka membantu mengunci keuntungan dengan tepat pada masanya.

Analisis Risiko

  • Penunjuk RSI cenderung kepada perbezaan yang tidak berkesan dalam mengenal pasti pembalikan trend.

  • Untuk tempoh turun naik yang tinggi, parameter RSI perlu diselaraskan, jika tidak, ia mungkin mencetuskan berhenti terlalu kerap.

  • Sinyal RSI tiga kali berturut-turut jarang berlaku, yang mungkin kehilangan peluang perdagangan yang baik.

  • Parameter untuk kriteria overbought/oversold harus disesuaikan dan diuji di pasaran yang berbeza.

Arahan pengoptimuman

  • Pertimbangkan untuk menambah penunjuk lain untuk pengesahan, seperti Bollinger Bands, KDJ dll, untuk mengelakkan perbezaan RSI.

  • Mengoptimumkan parameter RSI secara automatik berdasarkan rejimen pasaran yang berbeza.

  • Uji keadaan keluar berhenti lain, seperti berhenti ATR.

  • Tambah penapis untuk mengelakkan perdagangan pada tempoh yang tidak sesuai.

Kesimpulan

Strategi ini mengenal pasti zon overbought / oversold menggunakan gabungan penunjuk RSI pelbagai tempoh, dan melaksanakan hentian penjejakan trend. Kelebihan termasuk meningkatkan ketepatan, hentian tepat pada masanya; Kelemahan termasuk perdagangan yang hilang, salah menilai RSI. Ujian pengoptimuman parameter disyorkan, bersama dengan menambah penunjuk pengesahan, untuk mencapai prestasi yang lebih baik.


/*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()

Lebih lanjut