Strategi perdagangan kuantitatif berdasarkan sinyal indikator RSI

Penulis:ChaoZhang, Tanggal: 2023-09-14 20:26:49
Tag:

Artikel ini menjelaskan secara rinci strategi perdagangan kuantitatif yang memanfaatkan indikator RSI untuk menghasilkan sinyal perdagangan.

I. Logika Strategi

Logika perdagangan utama adalah sebagai berikut:

  1. Menghitung indikator RSI(14) dan meluruskannya menggunakan EMA(28) untuk mendapatkan osilator yang diproses.

  2. Menghitung Bollinger Bands pada RSI diproses untuk mendapatkan band atas / bawah.

  3. Ketika RSI yang diproses melintasi di bawah garis masuk, sinyal beli dihasilkan.

  4. Ketika indikator memasuki zona overbought/oversold, sinyal posisi dekat dihasilkan.

Dengan cara ini, karakteristik RSI dapat dimanfaatkan untuk menangkap peluang pembalikan.

II. Keuntungan dari Strategi

Keuntungan terbesarnya adalah peningkatan ruang penyesuaian parameter dari pemrosesan indikator, yang memungkinkan kontrol yang lebih ketat atas frekuensi perdagangan dan mencegah overtrading.

Keuntungan lain adalah kriteria masuk yang intuitif berdasarkan nilai numerik indikator yang jelas.

Akhirnya, rentang overbought/oversold juga membantu pengambilan keuntungan dan pengendalian risiko tepat waktu per perdagangan.

III. Kemunduran Potensial

Namun, strategi ini juga memiliki risiko berikut:

Pertama, RSI berfokus pada perdagangan pembalikan, yang dapat menghasilkan sinyal palsu selama tren.

Kedua, penyesuaian parameter yang tidak tepat juga dapat menyebabkan optimasi yang berlebihan dan kegagalan untuk beradaptasi dengan perubahan kondisi pasar.

Akhirnya, tingkat kemenangan yang relatif rendah juga mengekspos strategi terhadap risiko penarikan.

IV. Ringkasan

Secara singkat, artikel ini terutama memperkenalkan strategi perdagangan kuantitatif menggunakan indikator RSI. Ini mengontrol frekuensi perdagangan melalui penyesuaian parameter dan memiliki aturan masuk / keluar yang jelas. Sementara mengoptimalkan parameter, risiko perdagangan pembalikan juga perlu dikelola. Secara keseluruhan, ini memberikan kerangka strategi RSI yang sederhana dan intuitif.


/*backtest
start: 2023-08-14 00:00:00
end: 2023-09-13 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//-----------------------------------------------------------------
//This simple strategy base on RSI, EMA, Bollinger Bands to get Buy and Sell Signal with detail as below:
//-----------------------------------------------------------------
//1.Define Oscillator Line
//+ Oscillator Line is smoothed by ema(28) of RSI(14) on H1 Timeframe
//2.Define Overbought and Oversold
//+ Apply Bollinger Bands BB(80,3) on Oscillator Line and calculate %b
//+ Overbought Zone marked above level 0.8
//+ Oversold Zone marked below level 0.2
//3.Buy Signal
//+ Entry Long Positon when %b crossover Point of Entry Long
//+ Deafault Point of Entry Long is 0.2
//+ Buy signal marked by Green dot
//4.Sell Signal
//+ Entry Short Position when %b crossunder Point of Entry Short
//+ Deafault Point of Entry Short is 0.8
//+ Sell signal marked by Red dot
//5.Exit Signal
//+ Exit Position (both Long and Short) when %b go into Overbought Zone or Oversold Zone
//+ Exit signal marked by Yellow dot
//-----------------------------------------------------------------
strategy(title="RSI %b Signal [H1 Backtesting]", overlay=false)

//RSI
rsi_gr="=== RSI ==="
rsi_len = input(14, title = "RSI",inline="set",group=rsi_gr)
smoothed_len = input(28, title = "EMA",inline="set",group=rsi_gr)
rsi=ta.ema(ta.rsi(close,rsi_len),smoothed_len)
//rsi's BOLLINGER BANDS
pb_gr="=== %b ==="
length = input(80, title = "Length",inline="set1",group=pb_gr)
rsimult = input(3.0, title = "Multiplier",inline="set1",group=pb_gr)
ovb = input(0.8, title = "Overbought",inline="set2",group=pb_gr)
ovs = input(0.2, title = "Oversold",inline="set2",group=pb_gr)
et_short = input(0.8, title = "Entry Short",inline="set3",group=pb_gr)
et_long = input(0.2, title = "Entry Long",inline="set3",group=pb_gr)
[rsibasis, rsiupper, rsilower] = ta.bb(rsi, length, rsimult)
//rsi's %B
rsipB = ((rsi - rsilower) / (rsiupper - rsilower))
plot(rsipB, title="rsi's %B", color=rsipB>math.min(ovb,et_short)?color.red:rsipB<math.max(ovs,et_long)?color.green:color.aqua, linewidth=1)

h1=hline(1,color=color.new(color.red,100))
h4=hline(ovb,color=color.new(color.red,100))
h0=hline(0,color=color.new(color.green,100))
h3=hline(ovs,color=color.new(color.green,100))
h5=hline(0.5,color=color.new(color.silver,0),linestyle=hline.style_dotted)

fill(h1,h4, title="Resistance", color=color.new(color.red,90))
fill(h0,h3, title="Support", color=color.new(color.green,90))

//Signal
rsi_buy=
           rsipB[1]<et_long
           and
           rsipB>et_long
rsi_sell=
           rsipB[1]>et_short
           and
           rsipB<et_short
rsi_exit=
           (rsipB[1]>ovs and rsipB<ovs)
           or
           (rsipB[1]<ovb and rsipB>ovb)
plotshape(rsi_buy?rsipB:na,title="Buy",style=shape.circle,color=color.new(color.green,0),location=location.absolute)
plotshape(rsi_sell?rsipB:na,title="Sell",style=shape.circle,color=color.new(color.red,0),location=location.absolute)
plotshape(rsi_exit?rsipB:na,title="Exit",style=shape.circle,color=color.new(color.yellow,0),location=location.absolute)
//Alert
strategy.entry("Long",strategy.long,when=rsi_buy)
strategy.close("Long",when=rsi_exit)
strategy.entry("Short",strategy.short,when=rsi_sell)
strategy.close("Short",when=rsi_exit)
//EOF

Lebih banyak