Strategi perdagangan kuantitatif multi-level berdasarkan divergensi tren Bollinger Band

BB EMA SMA stdev BBDIV Trend
Tanggal Pembuatan: 2024-12-27 15:52:41 Akhirnya memodifikasi: 2024-12-27 15:52:41
menyalin: 4 Jumlah klik: 457
1
fokus pada
1617
Pengikut

Strategi perdagangan kuantitatif multi-level berdasarkan divergensi tren Bollinger Band

Ringkasan

Strategi ini adalah sistem perdagangan kuantitatif bertingkat berdasarkan divergensi tren Bollinger Band dan perubahan bandwidth dinamis. Strategi ini membangun kerangka kerja pengambilan keputusan perdagangan yang lengkap dengan memantau perubahan dinamis dalam lebar Bollinger Band, terobosan harga, dan koordinasi rata-rata pergerakan EMA200. Strategi ini mengadopsi mekanisme pelacakan volatilitas adaptif, yang secara efektif dapat menangkap titik balik dalam tren pasar.

Prinsip Strategi

Inti dari strategi ini didasarkan pada elemen-elemen kunci berikut:

  1. Bollinger Bands dihitung menggunakan moving average 20 periode dan 2 kali deviasi standar
  2. Tentukan kekuatan tren dengan mengubah bandwidth pada tiga titik waktu berturut-turut
  3. Menggabungkan hubungan antara entitas K-line dan rasio bandwidth untuk menentukan efektivitas terobosan
  4. Menggunakan EMA200 sebagai filter tren jangka menengah hingga panjang
  5. Masuk ke pasar dan ambil posisi long ketika harga menembus upper track dan memenuhi syarat ekspansi bandwidth
  6. Ketika harga turun di bawah pita bawah dan memenuhi kondisi kontraksi bandwidth, tutup posisi

Keunggulan Strategis

  1. Sistem sinyal berwawasan ke depan dan dapat mendeteksi titik balik tren potensial sebelumnya
  2. Beberapa indikator teknis melakukan validasi silang, secara signifikan mengurangi sinyal palsu
  3. Indikator tingkat perubahan bandwidth memiliki kemampuan beradaptasi yang baik terhadap fluktuasi pasar
  4. Logika masuk dan keluar jelas dan mudah diterapkan secara terprogram
  5. Mekanisme pengendalian risiko sempurna dan dapat secara efektif mengendalikan penarikan

Risiko Strategis

  1. Perdagangan yang sering dapat terjadi di pasar yang bergejolak
  2. Lag mungkin terjadi ketika tren tiba-tiba berubah
  3. Optimasi parameter memiliki risiko overfitting
  4. Mungkin ada risiko tergelincir selama periode volatilitas pasar yang tinggi
  5. Efektivitas indikator bandwidth perlu dipantau secara tepat waktu

Arah optimasi strategi

  1. Memperkenalkan mekanisme optimasi parameter adaptif
  2. Tambahkan indikator tambahan seperti volume perdagangan untuk memverifikasi
  3. Optimalkan pengaturan kondisi stop loss dan take profit
  4. Meningkatkan kriteria penilaian kuantitatif kekuatan tren
  5. Tambahkan lebih banyak filter lingkungan pasar

Meringkaskan

Strategi ini membangun sistem perdagangan yang kuat melalui divergensi tren Bollinger Band dan perubahan bandwidth yang dinamis. Strategi ini berkinerja baik di pasar yang sedang tren, tetapi masih perlu ditingkatkan di pasar yang volatil dan optimalisasi parameter. Secara keseluruhan, strategi ini memiliki nilai praktis yang baik dan ruang untuk diperluas.

Kode Sumber Strategi
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("BBDIV_Strategy", overlay=true)

// Inputs for Bollinger Bands
length = input.int(20, title="BB Length")
mult = input.float(2.0, title="BB Multiplier")

// Calculate Bollinger Bands
basis = ta.sma(close, length)
deviation = mult * ta.stdev(close, length)
upperBB = basis + deviation
lowerBB = basis - deviation

// Calculate Bollinger Band width
bb_width = upperBB - lowerBB
prev_width = ta.valuewhen(not na(bb_width[1]), bb_width[1], 0)
prev_prev_width = ta.valuewhen(not na(bb_width[2]), bb_width[2], 0)

// Determine BB state
bb_state = bb_width > prev_width and prev_width > prev_prev_width ? 1 : bb_width < prev_width and prev_width < prev_prev_width ? -1 : 0

// Assign colors based on BB state
bb_color = bb_state == 1 ? color.green : bb_state == -1 ? color.red : color.gray

// Highlight candles closed outside BB
candle_size = high - low
highlight_color = (candle_size > bb_width / 2 and close > upperBB) ? color.new(color.green, 50) : (candle_size > bb_width / 2 and close < lowerBB) ? color.new(color.red, 50) : na

bgcolor(highlight_color, title="Highlight Candles")

// Plot Bollinger Bands
plot(upperBB, title="Upper BB", color=bb_color, linewidth=2, style=plot.style_line)
plot(lowerBB, title="Lower BB", color=bb_color, linewidth=2, style=plot.style_line)
plot(basis, title="Middle BB", color=color.blue, linewidth=1, style=plot.style_line)

// Calculate EMA 200
ema200 = ta.ema(close, 200)

// Plot EMA 200
plot(ema200, title="EMA 200", color=color.orange, linewidth=2, style=plot.style_line)

// Strategy logic
enter_long = highlight_color == color.new(color.green, 50)
exit_long = highlight_color == color.new(color.red, 50)

if (enter_long)
    strategy.entry("Buy", strategy.long)

if (exit_long)
    strategy.close("Buy")

// Display profit at close
if (exit_long)
    var float entry_price = na
    var float close_price = na
    var float profit = na

    if (strategy.opentrades > 0)
        entry_price := strategy.opentrades.entry_price(strategy.opentrades - 1)
        close_price := close
        profit := (close_price - entry_price) * 100 / entry_price * 2 * 10 // Assuming 1 pip = 0.01 for XAUUSD
        label.new(bar_index, high + (candle_size * 2), str.tostring(profit, format.mintick) + " USD", style=label.style_label_up, color=color.green)