Strategi perdagangan mengikuti tren dan pembalikan Bollinger Bands multi-level

布林带 BB SMA 趋势跟踪 反转交易 移动止盈 技术分析 量化交易
Tanggal Pembuatan: 2025-04-01 10:16:29 Akhirnya memodifikasi: 2025-04-01 10:16:29
menyalin: 3 Jumlah klik: 398
2
fokus pada
319
Pengikut

Strategi perdagangan mengikuti tren dan pembalikan Bollinger Bands multi-level Strategi perdagangan mengikuti tren dan pembalikan Bollinger Bands multi-level

Ringkasan

Bollinger Bands adalah sistem perdagangan komprehensif yang didasarkan pada indikator Bollinger Bands. Strategi ini mengkombinasikan karakteristik trend tracking dan reversal trading untuk menangkap peluang pasar melalui interaksi harga dengan Bollinger Bands. Sistem ini dirancang dengan mekanisme keluar tiga tingkat, termasuk zona, penilaian rata-rata, dan berhenti bergerak, yang memungkinkan strategi untuk menangkap keuntungan maksimum dan secara efektif mengendalikan risiko.

Prinsip Strategi

Prinsip inti dari strategi ini adalah menggunakan Bollinger Bands sebagai zona acuan dinamis untuk fluktuasi harga, yang digabungkan dengan aturan masuk dan keluar yang dirancang dengan baik.

Logika masuk dibagi menjadi dua bagian:

  1. Buat banyak kondisi: masuk lebih banyak ketika harga naik melintasi Brin Band bawah rel ((Crossover Lower Band), atau harga menyentuh bawah rel bawah dan kemudian rebound ((yaitu harga minimum di bawah rel bawah tetapi harga penutupan lebih tinggi dari rel bawah).
  2. Kondisi untuk melakukan shorting: masukkan shorting ketika harga melintasi Bollinger Bands ke bawah ke atas track (Crossunder Upper Band), atau ketika harga menyentuh track di atas dan kemudian kembali ke bawah (yaitu, harga tertinggi lebih tinggi dari track atas tetapi harga closeout lebih rendah dari track atas).

Logika Keluar dirancang dengan tiga lapisan perlindungan:

  1. Lapisan pertama ((penghakiman zona): Mulai dari garis K akar X setelah masuk, keluar saat harga penutupan memasuki zona tertentu di Brin. Secara khusus, ketika melakukan over, jika harga jatuh ke zona pertama 13 antara rel bawah dan garis rata-rata, maka posisi kosong; ketika melakukan short, jika harga naik ke zona pertama 13 antara rel atas dan garis rata-rata, maka posisi kosong.
  2. Lapisan kedua ((Median crossing): dimulai dari garis Y akar K setelah masuk, jika harga penutupan melintasi 20 periode median ((MA20), maka posisi kosong。
  3. Layer 3 ((Moving Stop): Melanjutkan pergerakan ketika harga menembus batas lain dari Bollinger Bands, dan secara otomatis keluar dari pasar setelah keuntungan Z% ditarik kembali, mengunci sebagian besar keuntungan.

Parameter Brinband dapat disesuaikan secara fleksibel, termasuk periode rata-rata linear (default 20) dan perkalian standar deviasi (default 2.0) [2]. Pengaturan pertandingan juga dapat disesuaikan sesuai dengan karakteristik pasar, termasuk X (default 3), Y (default 10) dan persentase penarikan stopover seluler Z (default 30%).

Keunggulan Strategis

  1. Menangkap berbagai peluang pasar: Strategi ini mencakup pelacakan tren dan logika perdagangan reverse sekaligus, dapat menemukan peluang perdagangan di berbagai lingkungan pasar. Ketika pasar berada dalam keadaan goyah, Anda dapat memanfaatkan bouncing / rebound setelah harga menyentuh tepi Brin; Ketika pasar mulai bergerak dalam tren, Anda dapat mengikuti tren dengan sinyal harga untuk menembus tepi Brin.

  2. Kontrol risiko multi-tingkat: Strategi dapat melindungi dana dalam situasi yang berbeda dengan merancang tiga tingkat mekanisme yang berbeda. Pengadilan regional tingkat pertama dapat dengan cepat mengidentifikasi kesalahan arah perdagangan; tingkat kedua melintasi garis rata yang sesuai dengan perubahan tren jangka menengah; dan tingkat ketiga menghentikan bergerak untuk melindungi keuntungan yang telah diperoleh setelah keuntungan besar.

  3. Fleksibilitas parameter: Strategi menyediakan beberapa parameter yang dapat disesuaikan, sehingga pedagang dapat mengoptimalkan sistem sesuai dengan karakteristik pasar dan siklus waktu yang berbeda. Panjang dan kelipatan Brin bisa disesuaikan untuk menyesuaikan dengan volatilitas pasar, parameter waktu kondisi keluar ((X dan Y) dan rasio stop-and-go mundur bergerak ((Z) dapat diatur sesuai dengan preferensi risiko pedagang.

  4. Keunggulan visualisasi: Blink dan garis referensi tengah yang baru ditampilkan langsung di grafik, yang memungkinkan trader untuk menganalisis posisi harga dan area dukungan / resistensi potensial secara intuitif, meningkatkan efisiensi pengambilan keputusan.

  5. Struktur kode yang jelas: kode kebijakan terorganisir dengan teratur, spesifikasi penamaan variabel, komentar rinci, mudah dipahami dan dipertahankan. Logika masuk dan keluar terpisah dengan jelas, mudah diperluas dan dioptimalkan.

Risiko Strategis

  1. Kurangnya mekanisme stop loss yang jelas: Strategi saat ini tidak mengandung kondisi stop loss dalam arti tradisional, yang dapat menyebabkan kerugian yang lebih besar dalam kondisi pasar yang ekstrim. Disarankan bagi pedagang untuk secara manual menambahkan stop loss tetap atau logika stop loss dinamis berbasis ATR berdasarkan kemampuan risiko pribadi.

  2. Terlalu banyak bergantung pada Brinband: Dalam pasar yang berfluktuasi tinggi atau kurang likuiditas, Brinband dapat terlalu lebar atau terlalu sempit, menyebabkan penurunan kualitas sinyal. Disarankan untuk menguji pengaturan parameter Brinband yang berbeda dalam lingkungan pasar yang berbeda.

  3. Sensitivitas parameter: kinerja strategi mungkin sensitif terhadap pengaturan parameter, seperti panjang pita Brin, perkalian selisih standar, dan parameter waktu dalam kondisi pertandingan. Pilihan parameter yang tidak tepat dapat menyebabkan overtrading atau kehilangan peluang penting.

  4. Kondisi pemicu stop-loss bergerak tetap: Dalam kode saat ini, kondisi pemicu stop-loss bergerak ditetapkan untuk jarak 2x risiko tetap, yang mungkin tidak berlaku untuk semua lingkungan pasar. Dalam pasar yang terlalu berfluktuasi, mungkin menyebabkan stop-loss diatur terlalu jauh dan tidak dapat melindungi keuntungan secara efektif.

  5. Risiko simetrisitas kondisional multispace: Strategi menggunakan logika masuk dan keluar yang simetris terhadap arah multispace, tetapi di pasar nyata, perilaku turun dan turun seringkali tidak simetris (misalnya, pasar saham biasanya turun lebih cepat dari naik). Disarankan untuk mempertimbangkan pengaturan parameter yang berbeda untuk arah multispace.

Arah optimasi strategi

  1. Menambahkan mekanisme stop cerdas: Anda dapat memperkenalkan stop dinamis berdasarkan ATR (Average True Range) atau pengaturan jarak stop berdasarkan bandwidth Brin, sehingga stop lebih sesuai dengan fluktuasi pasar yang sebenarnya. Ini dapat diimplementasikan dengan menambahkan parameter stop dalam fungsi strategy.entry, atau menggunakan parameter stop_loss dari fungsi strategy.exit.

  2. Optimalkan kondisi penyaringan entry: Pertimbangkan untuk menambahkan indikator konfirmasi tren, seperti indikator bergerak arah ((DMI) atau indeks relatif kuat ((RSI), untuk menyaring sinyal berkualitas rendah. Misalnya, terima sinyal pelacakan tren hanya ketika ADX> 25, atau terima sinyal reversal hanya di area RSI overbought / oversold.

  3. Pengaturan parameter adaptif: Desain parameter Brin dan parameter kondisi keluar dalam bentuk adaptif, menyesuaikan secara otomatis sesuai dengan volatilitas pasar. Misalnya, Anda dapat menghitung tingkat fluktuasi selama N siklus terakhir dan secara dinamis menyesuaikan ganda standar perbedaan Brin.

  4. Peningkatan mekanisme penghentian bergerak: memungkinkan kondisi pemicu dan jarak pelacakan penghentian bergerak yang dapat disesuaikan, bukan tetap 2 kali jarak risiko. Pertimbangkan untuk menyesuaikan persentase penarikan kembali penghentian bergerak sesuai dengan karakteristik fluktuasi periode waktu yang berbeda.

  5. Tambahkan filter waktu: Masukkan filter waktu perdagangan, menghindari periode fluktuasi tinggi sebelum buka dan tutup pasar, atau tambahkan filter waktu perdagangan terbaik untuk pasar tertentu.

  6. Analisis multi-siklus: Mengintegrasikan kerangka analisis multi-siklus yang mengharuskan arah tren siklus yang lebih tinggi untuk konsisten dengan arah perdagangan saat ini, untuk meningkatkan kualitas sinyal. Misalnya, menerima sinyal multi pada grafik 4 jam hanya jika garis matahari berputar ke atas.

  7. Pengelolaan modal yang optimal: menambahkan logika perhitungan posisi berdasarkan volatilitas, meningkatkan posisi di lingkungan yang rendah dan mengurangi posisi di lingkungan yang tinggi, untuk menyeimbangkan risiko dan keuntungan.

Meringkaskan

Strategi perdagangan multi-level Brin-belt trend tracking dan reversal adalah sistem perdagangan yang dirancang secara menyeluruh, dengan karakteristik dinamis indikator Brin-belt, yang dikombinasikan dengan aturan keluar multi-level, untuk mengelola risiko secara efektif sambil menangkap peluang pasar. Keunggulan terbesar dari strategi ini adalah fleksibilitas dan kemampuan beradaptasi, dapat menemukan peluang perdagangan di berbagai lingkungan pasar, dan menyesuaikan diri dengan berbagai jenis perdagangan dan periode waktu dengan parameter.

Meskipun ada beberapa titik risiko dalam strategi, seperti kurangnya mekanisme penghentian kerugian yang jelas dan sensitivitas parameter, orientasi pengoptimalan yang diusulkan dalam artikel ini, seperti peningkatan penghentian cerdas, pengoptimalan kondisi penyaringan masuk, pengaturan parameter adaptif, dan lain-lain, dapat meningkatkan stabilitas dan profitabilitas strategi.

Bagi trader, disarankan untuk melakukan pengembalian yang cukup sebelum diterapkan secara nyata dan menyesuaikan parameter sesuai dengan karakteristik pasar tertentu. Pada saat yang sama, strategi ini digunakan sebagai bagian dari sistem perdagangan yang lengkap, yang dikombinasikan dengan analisis teknis dan fundamental lainnya, untuk membuat keputusan perdagangan yang komprehensif.

Kode Sumber Strategi
/*backtest
start: 2024-04-01 00:00:00
end: 2025-03-31 00:00:00
period: 6d
basePeriod: 6d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Bollinger Bands Strategy", overlay=true)

// 輸入參數
length = input.int(20, "BB Length", minval=1, group="布林帶設定")
mult = input.float(2.0, "BB Multiplier", minval=0.001, maxval=50, group="布林帶設定")
X = input.int(3, "Exit Condition 1 Bars (X)", minval=1, group="出場設定")
Y = input.int(10, "Exit Condition 2 Bars (Y)", minval=1, group="出場設定")
Z = input.float(30.0, "Trail Profit Retreat Z%", minval=1.0, maxval=100.0, step=1.0, group="出場設定")

// 計算布林帶
source = close
basis = ta.sma(source, length)          // 20 期均線
dev = mult * ta.stdev(source, length)   // 標準差
upper = basis + dev                     // 上緣
lower = basis - dev                     // 下緣
mid1 = upper - (upper - basis)/3
mid2 = lower + (basis - lower)/3

// 繪製布林帶
plot(basis, "Basis", color=color.gray)
plot(upper, "Upper", color=color.blue)
plot(lower, "Lower", color=color.blue)
plot(mid1,"mid1",color = color.yellow)
plot(mid2,"mid2",color = color.yellow)
//fill(upper, lower, color=color.new(color.blue, 90), title="BB Fill")

// 進場條件
longEntry = ta.crossover(source, lower) or (low < lower and close > lower)
shortEntry = ta.crossunder(source, upper) or (high > upper and close < upper)

// 進場執行
if (longEntry)
    strategy.entry("Long", strategy.long)

if (shortEntry)
    strategy.entry("Short", strategy.short)

// 出場條件變數
var float longEntryPrice = na
var float shortEntryPrice = na
var int longBarsSinceEntry = 0
var int shortBarsSinceEntry = 0

// 更新持倉狀態
if (strategy.position_size > 0)  // 做多持倉
    if (na(longEntryPrice))      // 記錄進場價格和起始計數
        longEntryPrice := strategy.position_avg_price
        longBarsSinceEntry := 0
    longBarsSinceEntry := longBarsSinceEntry + 1

if (strategy.position_size < 0)  // 做空持倉
    if (na(shortEntryPrice))
        shortEntryPrice := strategy.position_avg_price
        shortBarsSinceEntry := 0
    shortBarsSinceEntry := shortBarsSinceEntry + 1

// 做多出場條件
if (strategy.position_size > 0)
    // 條件 1:第 X 根 K 線後,收盤價 < lower + (basis - lower) / 3
    longExitLevel1 = lower + (basis - lower) / 3
    if (longBarsSinceEntry >= X and close < longExitLevel1)
        strategy.close("Long", comment="Long Exit Condition 1")
    
    // 條件 2:第 Y 根 K 線後,收盤價 < basis
    if (longBarsSinceEntry >= Y and close < basis)
        strategy.close("Long", comment="Long Exit Condition 2")
    
    // 條件 3:移動停利(收盤價 > upper 觸發)
    distanceLong = longEntryPrice - lower
    trailPriceLong = longEntryPrice + (distanceLong * 2)  // 假設 2 倍風險距離作為觸發點,可調整
    trailOffsetLong = distanceLong * (1 - Z / 100)
    strategy.exit("Long Trail", "Long", trail_price=trailPriceLong, trail_offset=trailOffsetLong)

// 做空出場條件
if (strategy.position_size < 0)
    // 條件 1:第 X 根 K 線後,收盤價 > upper - (upper - basis) / 3
    shortExitLevel1 = upper - (upper - basis) / 3
    if (shortBarsSinceEntry >= X and close > shortExitLevel1)
        strategy.close("Short", comment="Short Exit Condition 1")
    
    // 條件 2:第 Y 根 K 線後,收盤價 > basis
    if (shortBarsSinceEntry >= Y and close > basis)
        strategy.close("Short", comment="Short Exit Condition 2")
    
    // 條件 3:移動停利(收盤價 < lower 觸發)
    distanceShort = upper - shortEntryPrice
    trailPriceShort = shortEntryPrice - (distanceShort * 2)  // 假設 2 倍風險距離作為觸發點,可調整
    trailOffsetShort = distanceShort * (1 - Z / 100)
    strategy.exit("Short Trail", "Short", trail_price=trailPriceShort, trail_offset=trailOffsetShort)

// 清除變數(當持倉結束時)
if (strategy.position_size == 0)
    longEntryPrice := na
    shortEntryPrice := na
    longBarsSinceEntry := 0
    shortBarsSinceEntry := 0