Sumber dimuat naik... memuat...

Bollinger Bands + RSI + Multi-MA Trend Strategy

Penulis:ChaoZhang, Tarikh: 2024-05-27 15:20:40
Tag:BBRSIMASMAMACD

img

Ringkasan

Strategi ini menggabungkan Bollinger Bands, RSI, pelbagai purata bergerak, dan penunjuk MACD untuk membina sistem dagangan yang lengkap. Pertama, ia menggunakan Bollinger Bands untuk menentukan turun naik harga dan kedudukan harga berbanding dengan jalur tengah untuk mengenal pasti trend. Pada masa yang sama, ia menggunakan penunjuk RSI untuk menilai keadaan overbought dan oversold dan mengesan pembalikan trend yang berpotensi menggunakan perbezaan RSI. Pelbagai purata bergerak digunakan untuk mengesan trend dan menentukan tahap sokongan dan rintangan. Akhirnya, penunjuk MACD juga digunakan untuk membantu menilai trend dan pembalikan berpotensi. Dengan mempertimbangkan indikator ini secara komprehensif, strategi merumuskan syarat kemasukan dan keluar untuk membina strategi dagangan yang lengkap.

Prinsip Strategi

  1. Menggunakan Bollinger Band 20 tempoh dengan 2 penyimpangan standard untuk menentukan trend berdasarkan kedudukan harga penutupan berbanding dengan band tengah.
  2. Mengira RSI 14 tempoh dan menggunakan persilangan RSI dengan tahap 30 dan 70 untuk mengenal pasti keadaan terlalu banyak dijual dan terlalu banyak dibeli, mengenali potensi pembalikan.
  3. Mengira purata bergerak mudah dengan tempoh 34, 89, 144, 233, 377, dan 610. mengesahkan trend melalui susunan kenaikan purata bergerak, yang juga boleh berfungsi sebagai tahap sokongan dan rintangan.
  4. Mengira penunjuk MACD berdasarkan parameter 12, 26, 9 dan menggunakan persilangan histogram MACD dengan paksi sifar untuk membantu menilai pembalikan trend.
  5. Mengkaji secara komprehensif penunjuk di atas untuk merumuskan logik kemasukan dan keluar:
    • Entry: Buka kedudukan panjang apabila harga penutupan berada di atas Bollinger Band tengah dan purata bergerak jangka pendek berada di atas purata bergerak jangka panjang.
    • Keluar: Tutup separuh kedudukan apabila harga penutupan jatuh di bawah Bollinger Band tengah, dan tutup semua kedudukan apabila purata bergerak jangka pendek jatuh di bawah purata bergerak jangka panjang.

Kelebihan Strategi

  1. Bollinger Bands boleh mengukur turun naik harga secara objektif, menyediakan asas untuk penentuan trend.
  2. Memperkenalkan penunjuk RSI membantu mengenal pasti keadaan overbought dan oversold dan menangkap peluang pembalikan trend yang berpotensi.
  3. Gabungan pelbagai purata bergerak membolehkan analisis yang lebih komprehensif mengenai keadaan trend di atas skala masa yang berbeza.
  4. Penunjuk MACD boleh berfungsi sebagai penilaian tambahan untuk trend dan pembalikan, meningkatkan kebolehpercayaan isyarat.
  5. Logik masuk dan keluar menggabungkan idea pengurusan kedudukan, secara beransur-ansur mengurangkan kedudukan untuk mengawal risiko apabila trend tidak pasti.

Risiko Strategi

  1. Dalam pasaran yang bergolak, Bollinger Bands dan sistem purata bergerak boleh menghasilkan isyarat yang kerap dan bertentangan.
  2. Indikator RSI dan MACD boleh kekal di zon overbought atau oversold untuk tempoh yang panjang semasa pasaran yang kuat, kehilangan kuasa ramalan mereka.
  3. Pilihan parameter (seperti tempoh Bollinger Band, tempoh purata bergerak, dan lain-lain) mempunyai subjektiviti tertentu, dan parameter yang berbeza boleh membawa kepada hasil yang berbeza.
  4. Kekurangan mekanisme stop-loss boleh meningkatkan risiko perdagangan individu.
  5. Strategi ini mungkin tidak dapat bertindak balas dengan segera terhadap peristiwa melampau seperti angsa hitam, yang mengakibatkan penarikan yang signifikan.

Arahan Pengoptimuman Strategi

  1. Melakukan pengoptimuman yang lebih sistematik untuk parameter untuk setiap penunjuk, seperti tempoh dan lebar Bollinger Bands, tempoh dan ambang RSI, dll.
  2. Memperkenalkan lebih banyak isyarat pengesahan, seperti perubahan dalam jumlah dagangan, untuk meningkatkan kebolehpercayaan isyarat.
  3. Memasukkan mekanisme stop-loss dan mengambil keuntungan ke dalam syarat masuk dan keluar untuk mengawal risiko perdagangan individu dengan lebih baik.
  4. Pertimbangkan untuk memperkenalkan mekanisme penyesuaian kedudukan untuk menyesuaikan kedudukan dengan fleksibel di bawah keadaan pasaran yang berbeza dan meningkatkan nisbah risiko-balasan.
  5. Merancang rancangan kecemasan untuk peristiwa yang melampau, seperti lindung nilai berdasarkan indeks VIX atau pemotongan faktor Alpha secara dinamik.

Ringkasan

Strategi ini membina sistem dagangan yang agak komprehensif dari pelbagai dimensi, termasuk pengenalan trend, penilaian overbought dan oversold, analisis skala masa berbilang, dan kawalan kedudukan. Walau bagaimanapun, strategi ini memerlukan pengoptimuman lanjut dalam menangani pasaran yang bergolak dan peristiwa melampau, dan ia tidak mempunyai pengoptimuman parameter yang lebih sistematik dan kawalan risiko. Pada masa akan datang, strategi ini dapat terus meningkat dari segi penapisan isyarat yang lebih halus, penyesuaian berat dinamik, dan tindak balas terhadap peristiwa melampau. Melalui pengoptimuman backtesting berterusan dan pengesahan perdagangan langsung, strategi ini berpotensi berkembang menjadi strategi perdagangan kuantitatif yang kukuh dan mampan.


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

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

// Bollinger Bands
length = input.int(20, title="BB Length")
mult = input.float(2.0, title="BB Mult")
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper_band = basis + dev
lower_band = basis - dev

// RSI
rsi_length = input.int(14, title="RSI Length")
rsi_oversold = input.int(30, title="RSI Oversold", minval=0, maxval=100)
rsi_overbought = input.int(70, title="RSI Overbought", minval=0, maxval=100)
rsi = ta.rsi(close, rsi_length)

// RSI Divergence
rsi_divergence_bottom = ta.crossunder(rsi, rsi_oversold)
rsi_divergence_peak = ta.crossunder(rsi_overbought, rsi)

// Moving Averages
ma34 = ta.sma(close, 34)
ma89 = ta.sma(close, 89)
ma144 = ta.sma(close, 144)
ma233 = ta.sma(close, 233)
ma377 = ta.sma(close, 377)
ma610 = ta.sma(close, 610)

// MACD Calculation
[macd_line, signal_line, _] = ta.macd(close, 12, 26, 9)
macd_histogram = macd_line - signal_line

// MACD Divergence
macd_divergence_bottom = ta.crossunder(macd_histogram, 0)
macd_divergence_peak = ta.crossover(macd_histogram, 0)

// Conditions for Buy and Sell
basis_gt_ma34 = basis > ma34
ma34_gt_ma89 = ma34 > ma89

// Entry condition
buy_condition = basis_gt_ma34 and ma34_gt_ma89 
sell_condition =  basis <ma34

// Calculate position size
position_size = 1.0  // 100% capital initially

// Update position size based on conditions
if (sell_condition)
    position_size := 0.5  // Sell half of the position
if (not basis_gt_ma34)
    position_size := 0.0  // Sell all if basis < ma34

// Entry and exit strategy
if (buy_condition)
    strategy.entry("Buy", strategy.long, qty=position_size)
if (sell_condition)
    strategy.close("Buy")

// Plot Bollinger Bands and Moving Averages
bb_fill_color = basis > basis[1] ? color.new(color.blue, 90) : color.new(color.blue, 10)
plot(basis, color=color.blue, title="Basis")
plot(upper_band, color=color.red, title="Upper Band")
plot(lower_band, color=color.green, title="Lower Band")
fill(plot1=plot(upper_band), plot2=plot(lower_band), color=bb_fill_color, title="BB Fill")
plot(ma34, color=color.orange, title="MA34")
plot(ma89, color=color.purple, title="MA89")
plot(ma144, color=color.gray, title="MA144")
plot(ma233, color=color.blue, title="MA233")
plot(ma377, color=color.red, title="MA377")
plot(ma610, color=color.green, title="MA610")

// Plot RSI Divergence
plotshape(series=rsi_divergence_bottom, style=shape.triangleup, location=location.abovebar, color=color.green, size=size.small)
plotshape(series=rsi_divergence_peak, style=shape.triangledown, location=location.belowbar, color=color.red, size=size.small)

// Plot MACD Histogram Divergence
plotshape(series=macd_divergence_bottom, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(series=macd_divergence_peak, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)


Berkaitan

Lebih lanjut