Strategi Trading Nifty Berdasarkan Indikator RSI

Penulis:ChaoZhang, Tanggal: 2024-01-25 12:23:39
Tag:

img

Gambaran umum

Strategi ini merancang strategi investasi kuantitatif untuk perdagangan indeks Nifty berdasarkan indikator Relative Strength Index (RSI).

Prinsip Strategi

Strategi ini menetapkan RSI 2 periode sebagai sinyal perdagangan. Ini pergi panjang ketika RSI melintasi di atas 20, dan menutup posisi ketika RSI melintasi di bawah 70. Ini menangkap peluang penyesuaian jangka pendek dari indeks.

Logika adalah: ketika RSI di bawah 20, itu menunjukkan status oversold, menyiratkan aset diremehkan dan rebound di depan. Ketika RSI melintasi di atas 20, pergi panjang. Ketika RSI di atas 70, itu menunjukkan status overbought, menyiratkan aset di atas nilai dan callback di depan. Ketika RSI melintasi di bawah 70, posisi tutup.

Analisis Keuntungan

Sebagai strategi yang mengidentifikasi peluang overbought / oversold jangka pendek dengan indikator, keuntungan utama adalah:

  1. Prinsipnya sederhana dan jelas, mudah dimengerti dan divalidasi
  2. Beberapa parameter indikator, mudah dioptimalkan dan disesuaikan
  3. Mengupayakan jangka pendek keuntungan yang berlebihan, selaras dengan filosofi perdagangan scalping
  4. Periode waktu perdagangan yang dapat disesuaikan, menyesuaikan dengan harapan yang berbeda

Analisis Risiko

Risiko utama dari strategi ini meliputi:

  1. Tidak mampu menangkap tren jangka panjang, cenderung melewatkan langkah besar
  2. Tidak ada mekanisme stop loss untuk mengontrol kerugian secara efektif
  3. Perdagangan yang sering mempengaruhi periode kepemilikan, menimbulkan lebih banyak biaya transaksi

Untuk mengendalikan risiko yang disebutkan di atas, optimasi dapat dilakukan dalam aspek berikut:

  1. Menggabungkan indikator tren untuk mengidentifikasi pergerakan jangka panjang
  2. Mengadopsi Walk Forward Analysis untuk mencegah overfit
  3. Atur titik stop loss untuk stop loss yang tepat waktu
  4. Sesuaikan parameter perdagangan dengan tepat untuk mengontrol frekuensi perdagangan

Arahan Optimasi

Aspek utama untuk mengoptimalkan strategi:

  1. Mengoptimalkan parameter RSI untuk menemukan kombinasi parameter yang optimal
  2. Menggabungkan rata-rata bergerak dll untuk menilai tren jangka panjang
  3. Tambahkan modul ukuran posisi untuk mengoptimalkan alokasi posisi
  4. Tambahkan hak cipta kuantitatif untuk menyesuaikan parameter secara otomatis

Kesimpulan


/*backtest
start: 2023-01-18 00:00:00
end: 2024-01-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("RSI Strategy", overlay=true,pyramiding = 1000)
rsi_period = 2
rsi_lower = 20
rsi_upper = 70

rsi_value = rsi(close, rsi_period)
buy_signal = crossover(rsi_value, rsi_lower)
sell_signal = crossunder(rsi_value, rsi_upper)
current_date1 =  input(defval=timestamp("01 Nov 2009 00:00 +0000"), title="stary Time", group="Time Settings")

current_date =  input(defval=timestamp("01 Nov 2023 00:00 +0000"), title="End Time", group="Time Settings")
investment_amount = 100000.0
start_time = input(defval=timestamp("01 Dec 2018 00:00 +0000"), title="Start Time", group="Time Settings") 
end_time = input(defval=timestamp("30 Nov 2023 00:00 +0000"), title="End Time", group="Time Settings")

in_time = time >= start_time and time <= end_time
// Variable to track accumulation.
var accumulation = 0.0
out_time = time >= end_time 

if (buy_signal )
    strategy.entry("long",strategy.long,qty= 1) 
    accumulation += 1
if (out_time)
    strategy.close(id="long")

plotshape(series=buy_signal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup)
plotshape(series=sell_signal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown)

plot(rsi_value, title="RSI", color=color.blue)
hline(rsi_lower, title="Lower Level", color=color.red)



plot(strategy.opentrades, style=plot.style_columns, 
     color=#2300a1, title="Profit first entry")
plot(strategy.openprofit, style=plot.style_line, 
     color=#147a00, title="Profit first entry")
// plot(strategy.position_avg_price, style=plot.style_columns, 
//      color=#ca0303, title="Profit first entry")
// log.info(strategy.position_size * strategy.position_avg_price)


Lebih banyak