Tren Mengikuti Strategi Berdasarkan Bollinger Bands, RSI dan Moving Average

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

img

Gambaran umum

Strategi ini mengintegrasikan Bollinger Bands, Relative Strength Index (RSI) dan Moving Average (MA) untuk mengidentifikasi titik masuk dan keluar potensial di pasar.

Logika Strategi

Strategi ini menggunakan dua Bollinger Band dengan parameter yang berbeda untuk membuat saluran harga. Parameter default adalah panjang 20 periode dan standar deviasi 2. Band atas dan bawah berfungsi sebagai tingkat resistance dan support yang dinamis.

Indikator RSI mengukur kekuatan momentum harga. nilainya digunakan untuk menentukan apakah kondisi overbought atau oversold ada.

Rata-rata bergerak 50 periode dimasukkan untuk mengidentifikasi arah tren keseluruhan. Ketika harga di atas MA, itu menunjukkan tren naik. Ketika harga di bawah MA, itu menunjukkan tren turun.

Kondisi masuk untuk perdagangan panjang adalah ketika RSI berada di atas level overbought dan Bollinger Bands tidak berkontraksi.

Kondisi keluar untuk perdagangan panjang adalah ketika RSI turun di bawah level overbought atau ketika harga ditutup di bawah 50-period MA. Untuk perdagangan pendek adalah ketika RSI naik di atas level oversold atau ketika harga ditutup di atas 50-period MA.

Keuntungan

  1. Menggabungkan Bollinger Bands, RSI dan MA menghindari menghasilkan sinyal palsu dengan sinyal yang divalidasi silang.

  2. Bollinger Bands mengidentifikasi titik tinggi/rendah lokal dan mengkonfirmasi breakout. RSI menyaring breakout palsu. MA menentukan tren keseluruhan. Sinyal diverifikasi.

  3. Parameter Bollinger Bands yang dioptimalkan menggunakan dua standar deviasi menggambarkan saluran harga dengan lebih akurat.

Risiko

  1. RSI juga netral dan trading harus dihindari.

  2. RSI dan MA dapat menghasilkan sinyal yang salah selama pasar range.

  3. Kesenjangan harga tidak dapat ditangani secara efektif.

Peluang Peningkatan

  1. Mengoptimalkan parameter Bollinger Bands dan RSI untuk produk dan jangka waktu yang berbeda.

  2. Tambahkan perintah stop loss yang diaktifkan secara otomatis ketika harga melanggar level stop.

  3. Tambahkan filter tren seperti ADX untuk menghindari perdagangan yang tidak efisien selama pasar berkisar.

  4. Mengintegrasikan dengan sistem perdagangan otomatis untuk mengeksekusi sinyal secara otomatis tanpa intervensi manual.

Kesimpulan

Strategi ini menggabungkan kekuatan Bollinger Bands, RSI dan MA dengan parameter yang dioptimalkan untuk meningkatkan akurasi sinyal. Ini dapat secara otomatis menghasilkan peringatan perdagangan untuk eksekusi. Risiko utama berasal dari sinyal palsu selama pasar berkisar. Menambahkan filter tren dapat mengurangi perdagangan yang tidak efisien. Secara keseluruhan, dengan menggunakan optimasi parameter dan mengintegrasikan beberapa indikator, strategi ini meningkatkan kualitas sinyal dan layak divalidasi di pasar 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 banyak