Artikel ini akan menerangkan secara terperinci mengenai satu strategi kuantitatif yang menggunakan RSI untuk membentuk isyarat perdagangan. Strategi ini menangani RSI dan menetapkan syarat masuk dan keluar untuk perdagangan terbuka.
I. Prinsip-prinsip Strategi
Logik perdagangan utama strategi ini adalah seperti berikut:
Hitung RSI ((14)), dan gunakan EMA ((28) untuk mengatasinya, dan dapatkan indikator getaran selepas diproses.
Blink band dikira pada indikator RSI yang telah diproses, untuk mendapatkan tren naik dan turun. Setting overbought and oversold zone.
Apabila diproses di bawah garis masuk RSI, ia menghasilkan isyarat beli; apabila di atas garis masuk, ia menghasilkan isyarat jual.
Apabila indikator memasuki julat overbought dan oversold, ia akan menghasilkan isyarat kedudukan terendah.
Dengan cara ini, ciri-ciri indikator RSI dapat digunakan untuk menangkap peluang pembalikan. Dan pemprosesan indikator untuk meningkatkan kualiti isyarat dan nilai rujukan.
Kedua, kelebihan strategi
Kelebihan utama strategi ini adalah bahawa proses pemprosesan penunjuk menambah ruang parameter, yang dapat mengawal kekerapan perdagangan dengan ketat dan mengelakkan perdagangan berlebihan.
Kelebihan lain ialah syarat kemasukan adalah mudah dan intuitif, dengan nilai penunjuk yang jelas untuk menilai masa dagangan.
Akhir sekali, penyetempatan dalam julat overbought dan oversold juga membantu untuk menghentikan kerugian dan mengawal risiko dalam satu transaksi.
Ketiga, potensi risiko
Tetapi strategi ini juga mempunyai risiko:
Pertama, RSI memberi tumpuan kepada perdagangan berbalik dan mudah menyebabkan isyarat yang salah dalam trend.
Kedua, parameter yang tidak betul juga boleh menyebabkan pengoptimuman yang berlebihan dan tidak dapat menyesuaikan diri dengan perubahan struktur pasaran.
Akhirnya, kemenangan yang rendah memerlukan tekanan kerugian.
Empat isi, ringkasan
Artikel ini memberi tumpuan kepada strategi perdagangan kuantitatif yang menggunakan indikator RSI. Ia mengendalikan frekuensi perdagangan dengan mengatur parameter, dan peraturan masuk dan keluar yang jelas.
/*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