Strategi perdagangan kuantitatif pelbagai peringkat berdasarkan perbezaan arah aliran Bollinger Band

BB EMA SMA stdev BBDIV Trend
Tarikh penciptaan: 2024-12-27 15:52:41 Akhirnya diubah suai: 2024-12-27 15:52:41
Salin: 4 Bilangan klik: 457
1
fokus pada
1617
Pengikut

Strategi perdagangan kuantitatif pelbagai peringkat berdasarkan perbezaan arah aliran Bollinger Band

Gambaran keseluruhan

Strategi ini ialah sistem perdagangan kuantitatif berbilang peringkat berdasarkan perbezaan arah aliran Bollinger Band dan perubahan lebar jalur dinamik. Strategi ini membina rangka kerja membuat keputusan perdagangan yang lengkap dengan memantau perubahan dinamik dalam lebar Bollinger Band, penembusan harga dan penyelarasan purata bergerak EMA200. Strategi ini menggunakan mekanisme penjejakan turun naik adaptif, yang boleh menangkap titik perubahan dalam arah aliran pasaran dengan berkesan.

Prinsip Strategi

Teras strategi adalah berdasarkan elemen utama berikut:

  1. Bollinger Bands dikira menggunakan purata bergerak 20 tempoh dan 2 kali sisihan piawai
  2. Tentukan kekuatan aliran dengan menukar lebar jalur pada tiga titik masa berturut-turut
  3. Menggabungkan hubungan antara entiti K-line dan nisbah lebar jalur untuk menentukan keberkesanan kejayaan
  4. Menggunakan EMA200 sebagai penapis arah aliran jangka sederhana hingga panjang
  5. Masuk ke pasaran dan pergi membeli apabila harga menembusi landasan atas dan memenuhi syarat pengembangan lebar jalur
  6. Apabila harga jatuh di bawah jalur bawah dan memenuhi syarat penguncupan lebar jalur, tutup kedudukan

Kelebihan Strategik

  1. Sistem isyarat berpandangan ke hadapan dan boleh mengesan potensi titik perubahan arah aliran lebih awal
  2. Pengesahan silang berbilang penunjuk teknikal, mengurangkan isyarat palsu dengan ketara
  3. Penunjuk kadar perubahan lebar jalur mempunyai kebolehsesuaian yang baik terhadap turun naik pasaran
  4. Logik masuk dan keluar adalah jelas dan mudah untuk dilaksanakan secara pemrograman
  5. Mekanisme kawalan risiko adalah sempurna dan boleh mengawal pengeluaran dengan berkesan

Risiko Strategik

  1. Dagangan yang kerap mungkin berlaku dalam pasaran yang tidak menentu
  2. Lag mungkin berlaku apabila trend tiba-tiba berubah
  3. Pengoptimuman parameter mempunyai risiko overfitting
  4. Mungkin terdapat risiko tergelincir semasa tempoh turun naik pasaran yang tinggi
  5. Keberkesanan penunjuk lebar jalur perlu dipantau tepat pada masanya

Arah pengoptimuman strategi

  1. Memperkenalkan mekanisme pengoptimuman parameter penyesuaian
  2. Tambah penunjuk tambahan seperti volum dagangan untuk mengesahkan
  3. Optimumkan tetapan keadaan henti rugi dan ambil untung
  4. Meningkatkan kriteria pertimbangan kuantitatif kekuatan aliran
  5. Tambahkan lebih banyak penapis persekitaran pasaran

ringkaskan

Strategi ini membina sistem perdagangan yang teguh melalui perbezaan arah aliran Bollinger Band dan perubahan lebar jalur dinamik. Strategi ini menunjukkan prestasi yang baik dalam pasaran arah aliran, tetapi masih perlu dipertingkatkan dalam pasaran yang tidak menentu dan pengoptimuman parameter. Secara keseluruhan, strategi ini mempunyai nilai praktikal yang baik dan ruang untuk pengembangan.

Kod 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)