Trend Mengikuti Strategi Berdasarkan Bollinger Bands, RSI dan Moving Average

Penulis:ChaoZhang, Tarikh: 2024-02-02 11:35:17
Tag:

img

Ringkasan

Strategi ini mengintegrasikan Bollinger Bands, Indeks Kekuatan Relatif (RSI) dan Purata Bergerak (MA) untuk mengenal pasti titik masuk dan keluar yang berpotensi di pasaran.

Logika Strategi

Strategi ini menggunakan dua Bollinger Band dengan parameter yang berbeza untuk membuat saluran harga. Parameter lalai adalah panjang 20 tempoh dan penyimpangan standard 2. Band atas dan bawah berfungsi sebagai tahap rintangan dan sokongan dinamik.

Indikator RSI mengukur kekuatan momentum harga. nilainya digunakan untuk menentukan sama ada keadaan overbought atau oversold wujud.

Purata bergerak 50 tempoh dimasukkan untuk mengenal pasti arah trend keseluruhan. Apabila harga di atas MA, ia mencadangkan trend menaik. Apabila harga di bawah MA, ia mencadangkan trend menurun.

Syarat kemasukan untuk perdagangan panjang adalah apabila RSI melebihi tahap overbought dan Bollinger Bands tidak menyusut. Untuk perdagangan pendek, adalah apabila RSI turun di bawah tahap oversold dan Bollinger Bands tidak menyusut.

Syarat keluar untuk perdagangan panjang adalah apabila RSI jatuh di bawah tahap overbought atau apabila harga ditutup di bawah 50-period MA. Untuk perdagangan pendek adalah apabila RSI meningkat di atas tahap oversold atau apabila harga ditutup di atas 50-period MA.

Kelebihan

  1. Menggabungkan Bollinger Bands, RSI dan MA mengelakkan penjanaan isyarat palsu dengan isyarat pengesahan silang.

  2. Bollinger Bands mengenal pasti paras tertinggi/rendah tempatan dan mengesahkan penembusan. RSI menapis penembusan palsu. MA menentukan trend keseluruhan. Isyarat disahkan.

  3. Parameter Bollinger Bands yang dioptimumkan menggunakan dua penyimpangan standard menggambarkan saluran harga dengan lebih tepat.

Risiko

  1. RSI juga neutral dan perdagangan harus dielakkan.

  2. RSI dan MA boleh menghasilkan isyarat yang salah semasa pasaran julat.

  3. Jurang harga tidak dapat ditangani dengan berkesan.

Peluang Peningkatan

  1. Mengoptimumkan parameter Bollinger Bands dan RSI untuk produk dan jangka masa yang berbeza.

  2. Tambah perintah stop loss yang mencetuskan secara automatik apabila harga melanggar paras berhenti.

  3. Tambah penapis trend seperti ADX untuk mengelakkan perdagangan yang tidak cekap semasa pasaran berkisar.

  4. Mengintegrasikan dengan sistem perdagangan automatik untuk melaksanakan isyarat secara automatik tanpa campur tangan manual.

Kesimpulan

Strategi ini menggabungkan kekuatan Bollinger Bands, RSI dan MA dengan parameter yang dioptimumkan untuk meningkatkan ketepatan isyarat. Ia boleh secara automatik menjana amaran perdagangan untuk pelaksanaan. Risiko utama berasal dari isyarat palsu semasa pasaran berkisar. Menambah penapis trend dapat mengurangkan perdagangan yang tidak cekap. Secara keseluruhan, dengan menggunakan pengoptimuman parameter dan mengintegrasikan beberapa penunjuk, strategi ini meningkatkan kualiti isyarat dan bernilai disahkan dalam pasaran langsung untuk digunakan.


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

//@version=5
strategy("Bollinger Bands, RSI, and MA Strategy", overlay=true)

// Define input variables
b_len = input(20, title="BB Length")
bb_mult = input(2.0, title="BB Standard Deviation")
bb_deviation1 = input(1.0, title="BB Deviation 1")
rsi_len = input(14, title="RSI Length")
overbought = input(70, title="Overbought RSI Level")
oversold = input(30, title="Oversold RSI Level")
ma_len = input(50, title="MA Length")
stop_loss_percent = input(1.0, title="Stop Loss Percentage")
source = input(close, title="Source")

// Calculate Bollinger Bands
bb_upper = ta.sma(source, b_len) + bb_mult * ta.stdev(source, b_len)
bb_lower = ta.sma(source, b_len) - bb_mult * ta.stdev(source, b_len)
bb_upper1 = ta.sma(source, b_len) + bb_deviation1 * ta.stdev(source, b_len)
bb_lower1 = ta.sma(source, b_len) - bb_deviation1 * ta.stdev(source, b_len)

// Calculate RSI
rsi = ta.rsi(source, rsi_len)

// Calculate Moving Average
ma = ta.sma(source, ma_len)

// Determine if Bollinger Bands are contracting
bb_contracting = ta.stdev(source, b_len) < ta.stdev(source, b_len)[1]

// Entry conditions
enterLong = rsi > overbought and not bb_contracting
enterShort = rsi < oversold and not bb_contracting

// Exit conditions
exitLong = close < ma
exitShort = close > ma

// Exit trades and generate alerts
if strategy.position_size > 0 and exitLong
    strategy.close("Long") // Exit the long trade
    alert("Long Exit", alert.freq_once_per_bar_close)
if strategy.position_size < 0 and exitShort
    strategy.close("Short") // Exit the short trade
    alert("Short Exit", alert.freq_once_per_bar_close)

// Strategy orders
if enterLong
    strategy.entry("Long", strategy.long)
if enterShort
    strategy.entry("Short", strategy.short)
if exitLong
    strategy.close("Long")
if exitShort
    strategy.close("Short")

// Plotting Bollinger Bands
plot(bb_upper, color=color.blue, title="BB Upper 2")
plot(bb_lower, color=color.blue, title="BB Lower 2")
plot(bb_upper1, color=color.red, title="BB Upper 1")
plot(bb_lower1, color=color.red, title="BB Lower 1")

// Plotting RSI
plot(rsi, color=color.orange, title="RSI")

// Plotting Moving Average
plot(ma, color=color.green, title="Moving Average")


Lebih lanjut