Memperkuat strategi kuantitatif Bollinger mean reversion

BB EMA ATR SMA stdev
Tanggal Pembuatan: 2024-11-18 16:07:05 Akhirnya memodifikasi: 2024-11-18 16:07:05
menyalin: 7 Jumlah klik: 549
1
fokus pada
1617
Pengikut

Memperkuat strategi kuantitatif Bollinger mean reversion

Ringkasan

Strategi ini adalah sistem perdagangan regresi rata-rata berbasis Bollinger Bands yang mengoptimalkan efek perdagangan dengan menggabungkan filter tren dan stop loss dinamis. Strategi ini menggunakan prinsip statistik untuk melakukan perdagangan ketika harga menyimpang dari rata-rata, sekaligus meningkatkan tingkat kemenangan dan mengelola risiko melalui indikator teknis.

Prinsip Strategi

Strategi ini didasarkan pada beberapa komponen utama:

  1. Menggunakan pita Bollinger 20 siklus sebagai sumber sinyal utama, bandwidth adalah 2 kali standar deviasi
  2. Memperkenalkan 50 siklus EMA sebagai filter tren untuk memastikan arah perdagangan konsisten dengan tren jangka menengah
  3. Menggunakan 14 siklus ATR untuk mengatur stop loss dan profit target secara dinamis, meningkatkan rasio risiko / keuntungan
  4. Harga terbuka saat menyentuh rel bawah dan berada di atas EMA, terbuka saat menyentuh rel atas dan berada di bawah EMA
  5. Menggunakan ATR dua kali lipat sebagai target keuntungan, dan ATR dua kali lipat sebagai stop loss

Keunggulan Strategis

  1. Menggabungkan keuntungan dari Regression Mean Value dan Trend Following, meningkatkan keandalan transaksi
  2. Pengaturan stop loss dan profit yang dinamis, sesuai dengan perubahan volatilitas pasar
  3. Aturan masuk dan keluar yang jelas, mengurangi penilaian subjektif
  4. Rasio risiko / keuntungan tetap 2: 1, mendukung keuntungan stabil jangka panjang
  5. Komposisi indikator teknis mengurangi dampak dari sinyal palsu

Risiko Strategis

  1. Di pasar yang sedang tren, Anda mungkin akan melewatkan hal-hal besar.
  2. Transaksi mungkin sering terjadi jika selisih horizontal terlalu sempit.
  3. Stop loss mungkin tergelincir saat pasar berubah
  4. Parameter perlu terus dipantau dan disesuaikan untuk beradaptasi dengan perubahan pasar.
  5. Biaya transaksi dapat mempengaruhi pengembalian strategi

Arah optimasi strategi

  1. Tambahkan indikator volume sebagai konfirmasi tambahan
  2. Memperkenalkan filter volatilitas pasar untuk menghindari periode fluktuasi tinggi
  3. Mekanisme adaptasi parameter optimasi
  4. Menambahkan verifikasi silang untuk lebih banyak indikator teknis
  5. Meningkatkan Sistem Manajemen Uang

Meringkaskan

Ini adalah strategi yang menggabungkan analisis teknis klasik dengan metode kuantitatif modern. Strategi ini memiliki kepraktisan yang baik melalui pengakuan multi-indikator dan pengendalian risiko yang ketat.

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

//@version=5
strategy("Optimized Bollinger Mean Reversion", overlay=true)

// Bollinger Band Settings
length = input.int(20, title="BB Length")
src = input(close, title="Source")
mult = input.float(2.0, title="BB Multiplier")

// Bollinger Bands Calculation
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev

// Plot the Bollinger Bands
plot(basis, color=color.blue)
p1 = plot(upper, color=color.red)
p2 = plot(lower, color=color.red)
fill(p1, p2, color=color.rgb(41, 98, 255, 90))

// Trend Filter - 50 EMA
ema_filter = ta.ema(close, 50)

// ATR for Dynamic Stop Loss/Take Profit
atr_value = ta.atr(14)

// Buy condition - price touches lower band and above 50 EMA
buy_condition = ta.crossover(close, lower) and close > ema_filter

// Sell condition - price touches upper band and below 50 EMA
sell_condition = ta.crossunder(close, upper) and close < ema_filter

// Strategy Execution
if (buy_condition)
    strategy.entry("Buy", strategy.long)

if (sell_condition)
    strategy.entry("Sell", strategy.short)

// Exit with dynamic ATR-based stop loss and take profit
strategy.exit("Take Profit/Stop Loss", from_entry="Buy", limit=2*atr_value, stop=1*atr_value)
strategy.exit("Take Profit/Stop Loss", from_entry="Sell", limit=2*atr_value, stop=1*atr_value)