Strategi Dagangan Kuantitatif Berdasarkan Isyarat Indikator RSI

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

Artikel ini menerangkan secara terperinci strategi perdagangan kuantitatif yang menggunakan penunjuk RSI untuk menjana isyarat perdagangan.

I. Logik Strategi

Logik perdagangan utama adalah seperti berikut:

  1. Mengira penunjuk RSI(14) dan meluruskannya menggunakan EMA(28) untuk mendapatkan pengayun yang diproses.

  2. Mengira Bollinger Bands pada RSI yang diproses untuk mendapatkan band atas / bawah. Tetapkan zon overbought / oversold.

  3. Apabila RSI yang diproses melintasi di bawah garis masuk, isyarat beli dihasilkan. Apabila ia melintasi di atas, isyarat jual dihasilkan.

  4. Apabila penunjuk memasuki zon overbought/oversold, isyarat kedudukan dekat dihasilkan.

Dengan cara ini, ciri-ciri RSI dapat digunakan untuk menangkap peluang pembalikan. Pemprosesan penunjuk juga meningkatkan kualiti isyarat dan nilai rujukan.

II. Kelebihan Strategi

Kelebihan terbesarnya adalah ruang penyesuaian parameter yang meningkat dari pemprosesan penunjuk, yang membolehkan kawalan yang lebih ketat terhadap kekerapan perdagangan dan mencegah perdagangan berlebihan.

Satu lagi kelebihan adalah kriteria kemasukan intuitif berdasarkan nilai nombor yang jelas dari penunjuk.

Akhirnya, julat overbought/oversold juga membantu mengambil keuntungan tepat pada masanya dan kawalan risiko setiap perdagangan.

III. Kelemahan Potensial

Walau bagaimanapun, strategi ini juga mempunyai risiko berikut:

Pertama, RSI memberi tumpuan kepada perdagangan pembalikan, yang boleh menghasilkan isyarat palsu semasa trend.

Kedua, penyesuaian parameter yang tidak betul juga boleh membawa kepada pengoptimuman berlebihan dan kegagalan menyesuaikan diri dengan keadaan pasaran yang berubah.

Akhirnya, kadar kemenangan yang agak rendah juga mendedahkan strategi kepada risiko pengambilan.

IV. Ringkasan

Ringkasnya, artikel ini terutamanya memperkenalkan strategi perdagangan kuantitatif menggunakan penunjuk RSI. Ia mengawal kekerapan perdagangan melalui penyesuaian parameter dan mempunyai peraturan masuk / keluar yang jelas. Semasa mengoptimumkan parameter, risiko perdagangan pembalikan juga perlu diurus. Secara keseluruhan, ia menyediakan kerangka strategi RSI yang mudah 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 lanjut