Strategi perdagangan kuantitatif berdasarkan RSI regresi linier

Penulis:ChaoZhang, Tanggal: 2024-01-24 11:35:19
Tag:

img

Gambaran umum

Strategi ini dirancang berdasarkan indikator RSI regresi linier. Ini menghasilkan sinyal beli dan jual dengan menghitung crossover antara RSI regresi linier dan EMA. Strategi ini juga menyediakan dua opsi untuk logika beli yang dapat dipilih sesuai kebutuhan.

Logika Strategi

Strategi ini pertama-tama menghitung regresi linier 200 periode, kemudian menghitung RSI 21 periode berdasarkan hasil regresi linier. Setelah itu, EMA 50 periode dihitung. Ketika RSI melintasi EMA, sinyal beli dihasilkan. Ketika RSI melintasi di bawah EMA, sinyal jual dipicu untuk menutup posisi.

Strategi ini menawarkan dua jenis logika pembelian:

  1. Beli saat RSI melintasi EMA
  2. Beli ketika RSI berada di atas EMA dan juga di atas garis overbought

Logika pembelian yang tepat dapat dipilih berdasarkan kondisi pasar.

Analisis Keuntungan

Strategi ini menggabungkan kekuatan RSI regresi linier dan EMA, yang secara efektif menyaring beberapa kebisingan harga dan menghasilkan sinyal perdagangan yang lebih dapat diandalkan.

RSI regresi linier lebih baik menangkap tren, dan EMA membantu mengidentifikasi titik balik.

Strategi ini menyediakan dua logika pembelian opsional untuk fleksibilitas yang lebih besar untuk beradaptasi dengan tahap pasar yang berbeda.

Analisis Risiko

Risiko utama dari strategi ini terletak pada potensi perubahan hubungan antara RSI dan EMA, yang dapat menyebabkan sinyal perdagangan yang salah.

Selain itu, sifat keterlambatan RSI dan EMA sebagai indikator juga dapat menyebabkan keterlambatan tertentu dalam masuk dan keluar, gagal menangkap titik balik dengan sempurna.

Untuk mengurangi risiko, parameter seperti panjang RSI dan EMA dapat dioptimalkan untuk koordinasi yang lebih baik antara keduanya.

Arah Peningkatan

Strategi dapat ditingkatkan dari aspek berikut:

  1. Mengoptimalkan panjang regresi linier RSI dan EMA untuk menemukan kombinasi parameter terbaik
  2. Tambahkan indikator lain seperti MACD, Bollinger Bands dll untuk peningkatan kualitas sinyal
  3. Menggabungkan metrik volatilitas untuk menyesuaikan ukuran posisi
  4. Menggunakan teknik pembelajaran mesin untuk mengoptimalkan parameter secara otomatis

Kesimpulan

Strategi ini mendesain strategi reversi rata-rata berdasarkan RSI regresi linier dan EMA, mengidentifikasi peluang pembalikan dalam kisaran dengan melihat persilangan RSI-EMA. Ini juga menyediakan dua logika pembelian opsional untuk fleksibilitas untuk beradaptasi dengan pasar yang berbeda. Secara keseluruhan, dengan menggabungkan beberapa indikator, strategi dapat secara efektif menemukan peluang pembalikan. Dengan penyesuaian parameter dan filter tambahan, ia memiliki potensi untuk kinerja yang lebih baik.


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

//@version=4
strategy("Linear RSI")

startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0)
end   = timestamp(input(9999, "End Year"),   input(1, "Month"),   input(1, "Day"),   0, 0)
_testPeriod() => true

//inputs
length = input(defval=200, minval=1, title="LR length")
length2 = input(defval=21, minval=1, title="RSI length")
ema_fast = input(defval=50, minval=1, title="EMA")
lag = 0

overBought = input(50)
overSold = input(50)


//rsi
src = close
Lr = linreg(src, length, lag)
rsi = rsi(Lr, length2)
ema = ema(rsi, ema_fast)

plot(rsi, color = rsi > overBought ? color.green : rsi < overSold ? color.red : color.silver)
plot(overBought, color=color.purple)
plot(overSold, color=color.purple)
plot(ema, color=color.blue)

first_type = input(true, title="Use first logic?")
second_type =  input(false, title="Use second logic?")

long_condition = (first_type ? crossover(rsi, ema) and _testPeriod() : false) or (second_type ? rsi > ema and rsi > overBought and _testPeriod() : false)
strategy.entry('BUY', strategy.long, when=long_condition)  
 
short_condition = crossunder(rsi, ema)
strategy.close('BUY', when=short_condition)

Lebih banyak