Strategi pembalikan berdasarkan indikator RSI multi-periode


Tanggal Pembuatan: 2023-09-14 20:42:55 Akhirnya memodifikasi: 2023-09-14 20:42:55
menyalin: 1 Jumlah klik: 735
1
fokus pada
1617
Pengikut

Artikel ini akan membahas strategi perdagangan kuantitatif yang menggunakan indikator RSI multi-siklus untuk menentukan titik balik. Strategi ini menganalisis beberapa indikator RSI sekaligus untuk mengidentifikasi pembentukan titik balik pasar.

  1. Prinsip Strategi

Strategi ini menggunakan 3 set indikator RSI dengan parameter yang berbeda, dengan logika seperti berikut:

  1. RSI dihitung untuk siklus 2, siklus 7, dan siklus 14.

  2. Ketika RSI-2 lebih kecil dari 10, RSI-7 lebih kecil dari 20, dan RSI-14 lebih kecil dari 30, dianggap sebagai pembentukan dasar;

  3. Ketika RSI-2 lebih besar dari 90, RSI-7 lebih besar dari 80, dan RSI-14 lebih besar dari 70, dianggap sebagai puncak terbentuk.

  4. Berdasarkan konsistensi RSI, menghasilkan sinyal beli dan jual.

  5. Parameter yang diperlukan untuk keseragaman indikator dapat di-pre-set untuk mengontrol frekuensi sinyal.

Dengan demikian, analisis agregat dari indikator RSI multi-periode dapat meningkatkan akurasi penilaian titik balik.

Kedua, keunggulan strategi

Keuntungan terbesar dari strategi ini adalah penggunaan indikator RSI multi-siklus untuk analisis agregat, yang dapat meningkatkan akurasi penilaian pada titik-titik penting, untuk menyingkirkan sinyal palsu.

Keuntungan lainnya adalah dapat menyesuaikan parameter konsistensi, mengontrol frekuensi perdagangan, dan beradaptasi dengan lingkungan pasar yang berbeda.

Akhirnya, kombinasi RSI periode yang berbeda juga memberikan lebih banyak ruang parameter untuk dioptimalkan.

Ketiga, potensi risiko

Namun, strategi ini juga memiliki risiko:

Pertama, penilaian RSI terhadap reversal harga sendiri memiliki masalah keterlambatan.

Kedua, sulit untuk menilai sinyal dari kombinasi multi-indikator, dan aturan penyaringan yang jelas diperlukan.

Akhirnya, reversal trading sendiri memiliki tingkat kegagalan tertentu, yang membutuhkan persiapan mental.

Empat isi, ringkasan

Artikel ini menjelaskan strategi perdagangan kuantitatif yang didasarkan pada identifikasi titik balik dari indikator RSI multi-siklus. Ini meningkatkan kemampuan untuk mengidentifikasi titik balik pasar dengan menilai konsistensi indikator RSI.

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