Strategi VRSI vs MARSI


Tanggal Pembuatan: 2024-02-02 17:21:09 Akhirnya memodifikasi: 2024-02-02 17:21:09
menyalin: 0 Jumlah klik: 970
1
fokus pada
1617
Pengikut

Strategi VRSI vs MARSI

Ringkasan

Strategi VRSI dan MARSI menggunakan moving averages untuk meluruskan RSI, menerapkan strategi dual indicator. Strategi ini menggunakan RSI harga dan RSI volume untuk menghasilkan sinyal perdagangan.

Prinsip Strategi

Strategi ini pertama-tama menghitung indikator RSI 9 periode harga (RSI) dan indikator RSI 9 periode volume transaksi (VRSI). Kemudian menghitung rata-rata bergerak sederhana 5 periode kedua indikator RSI (MARSI dan MAVRSI).

Sinyal perdagangan dihasilkan berdasarkan indikator MARSI. Di samping itu, indikator MAVRSI digunakan untuk menilai kekuatan pasar dan kemungkinan perubahan tren.

Sebagai contoh, dalam perdagangan beruntun, jika harga terus naik tetapi volume transaksi menurun, ini menandakan kekuatan beruntun mungkin melemah, maka persiapkan posisi kosong. Sebaliknya, dalam perdagangan kosong, jika harga terus turun tetapi volume transaksi meningkat, yang menandakan kekuatan kosong meningkat, Anda dapat terus memegang tiket.

Analisis Keunggulan

Strategi ini menggabungkan moving average dari dua indikator RSI untuk menangkap tren secara efektif, sementara menggunakan perubahan volume transaksi untuk menilai kekuatan pasar dan menghindari kebocoran. Strategi ini dapat lebih akurat menangkap irama pasar dibandingkan dengan indikator RSI tunggal.

Penggunaan moving average juga dapat memfilter beberapa noise, membuat sinyal lebih dapat diandalkan. Selain itu, pengaturan parameter yang berbeda seperti siklus RSI dan siklus moving average juga memungkinkan optimasi strategi.

Analisis risiko

Risiko utama dari strategi ini adalah bahwa ada kemungkinan terjadi deviasi antara indikator ganda. Ketika ada deviasi antara harga dan volume transaksi, sinyal perdagangan juga menjadi kurang dapat diandalkan. Ini memerlukan penilaian buatan tentang hubungan antara indikator.

Risiko lain adalah mudah dicurangi dalam situasi konsolidasi. Ketika harga berada di posisi horizontal, indikator RSI mudah bergoyang ke atas dan ke bawah yang memicu sinyal perdagangan yang tidak perlu. Ini memerlukan penyesuaian parameter atau menilai posisi mutlak indikator.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Menyesuaikan parameter RSI dan Moving Average untuk menemukan kombinasi optimal

  2. Menambahkan penilaian kondisional lainnya saat menghasilkan sinyal perdagangan, seperti sinyal reversal yang dipicu oleh indikator RSI di zona overbought dan oversold lebih dapat diandalkan

  3. Menambahkan strategi stop loss, mengatur stop loss bergerak atau stop loss indikator

  4. Kombinasi dengan indikator lain, seperti bentuk K-line, indikator volatilitas, dan lain-lain untuk menghindari terselubung

Meringkaskan

Strategi VRSI dan MARSI berhasil menggabungkan indikator RSI harga dan volume, dan perbandingan dan penilaian antara dua indikator dapat meningkatkan akurasi sinyal dan profitabilitas. Pengaturan parameter yang dioptimalkan dan strategi stop loss juga memungkinkan untuk operasi yang stabil. Secara keseluruhan, strategi ini memanfaatkan kombinasi antara indikator dan mendapatkan kinerja yang lebih baik daripada indikator RSI tunggal.

Kode Sumber Strategi
/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("VRSI-MARSI Strategy", shorttitle="(V/MA)RSI Str.", overlay=false, default_qty_type=strategy.percent_of_equity, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0, default_qty_value=5, initial_capital=100)

// RSI(close, ="RSI") and RSI(Volume, ="VRSI")
src = close, len = input(9, minval=1, title="Length RSI")
src2 = volume, len2 = input(9, minval=1, title="Length VRSI)")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
up2 = rma(max(change(src2), 0), len2)
down2 = rma(-min(change(src2), 0), len2)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsi2 = down2 == 0 ? 100 : up2 == 0 ? 0 : 100 - (100 / (1 + up2 / down2))

// MA(=Moving Average) of RSI(close, ="MARSI") and RSI(Volume, ="MAVRSI")
len3 = input(5, minval=1, title="Length MARSI")
marsi = sma(rsi, len3)
len4 = input(5, minval=1, title="Length MAVRSI")
marsi2 = sma(rsi2, len4)

// Plot: 
// Default plot of RSI and VRSI: not visible but can be made visible
// Default plot MARSI and MAVRSI: visible
p1 = plot(rsi, linewidth=2, transp=100, color=color.yellow, title="RSI")
p2 = plot(rsi2, linewidth=2, transp=100, color=color.orange, title="VRSI")
m1 = plot(marsi, color=(marsi>=0 ? (marsi[1] < marsi ? color.yellow : color.blue) : (marsi[1] < marsi ? color.yellow : color.blue) ), linewidth = 2, transp = 0, title="MARSI")
m2 = plot(marsi2, color=color.orange, linewidth = 2, transp = 0, title="MAVRSI")

// Color fill:
// Default color fill "RSI - VRSI": not visible but can be made visible
// Default color fill "MARSI - MAVRSI": visible
fill(p1,p2, color = rsi>rsi2 ? color.green : color.red, transp=100, title="BG RSI-VRSI")
fill(m1,m2, color = marsi>marsi2 ? color.green : color.red, transp=75, title="BG MARSI-MAVRSI")

// Lines:
h2=hline(20, color=color.green, linestyle=hline.style_dotted, title="Extreme Oversold Rsi")
h3=hline(30, color=color.black, linestyle=hline.style_dotted, title="Oversold Rsi")
h5=hline(50, color=color.yellow, linestyle=hline.style_dashed, title="Middle line")
h7=hline(70, color=color.black, linestyle=hline.style_dotted, title="Overbought Rsi")
h8=hline(80, color=color.red, linestyle=hline.style_dotted, title="Extreme Overbought Rsi")

// Color fill between Lines "20-30" and "70-80" represents the crossing of "MARSI" and "MAVRSI":
fill(h2, h3, color=(marsi2 > marsi ? color.red : color.green), transp=80, title="20-30 BG color X MARSI/MAVRSI")
fill(h7, h8, color=(marsi2 > marsi ? color.red : color.green), transp=80, title="70-80 BG color X MARSI/MAVRSI")

///Long Entry///
longCondition = marsi > marsi[1] 
if (longCondition)
    strategy.entry("Long", strategy.long)

///Long exit///
Xlong =input(true)
closeConditionLong = marsi < marsi[1] and Xlong
if (closeConditionLong)
    strategy.close("Long")

///Short Entry///
shortCondition = marsi < marsi[1] 
if (shortCondition)
    strategy.entry("Short", strategy.short)
    
///Short exit///
Xshort =input(true)
closeConditionShort = marsi > marsi[1] and Xshort
if (closeConditionShort)
    strategy.close("Short")