Strategi mengikuti tren Bollinger Bands adaptif dan sistem manajemen risiko berlapis-lapis

BB EMA SL TP SMA
Tanggal Pembuatan: 2025-02-10 15:14:57 Akhirnya memodifikasi: 2025-02-10 15:14:57
menyalin: 3 Jumlah klik: 446
1
fokus pada
1617
Pengikut

Strategi mengikuti tren Bollinger Bands adaptif dan sistem manajemen risiko berlapis-lapis

Ringkasan

Strategi ini merupakan sistem pelacakan tren yang menggabungkan Bollinger Bands dan indikator EMA untuk mengoptimalkan kinerja perdagangan melalui mekanisme kontrol risiko bertingkat. Inti dari strategi ini adalah untuk menangkap tren pasar menggunakan bentuk regresi terobosan Bollinger Bands yang tergelincir, sambil menggabungkan filter tren EMA untuk meningkatkan keakuratan perdagangan. Sistem ini juga mencakup sistem manajemen risiko yang lengkap, termasuk pelacakan stop loss, stop loss tetap, target profit, dan mekanisme penutupan posisi berbasis waktu.

Prinsip Strategi

Strategi ini didasarkan pada beberapa elemen utama:

  1. Menggunakan standar deviasi (STDDEV) 1,5 dengan periodik 14 sebagai indikator sinyal perdagangan utama
  2. Saat salah satu garis K saat ini menembus harga close out dan garis K saat ini berbalik, memicu sinyal shorting
  3. Saat salah satu garis K saat ini mendekati harga yang lebih rendah dan garis K saat ini semakin kuat, sinyal multitasking akan dipicu
  4. Opsional menambahkan 80 siklus EMA sebagai filter tren, hanya membuka posisi jika arah tren konsisten
  5. Aktifkan Tracking Stop Loss saat harga melewati Bollinger Bands
  6. Anda dapat mengatur jumlah target stop loss dan profit yang tetap
  7. Mendukung mekanisme pelunasan otomatis berdasarkan jumlah baris K

Keunggulan Strategis

  1. Menggabungkan fitur trend tracking dan reversal trading, dapat stabil dalam berbagai kondisi pasar
  2. Sistem pengendalian risiko bertingkat menyediakan program manajemen dana yang komprehensif
  3. Pengaturan parameter yang fleksibel memungkinkan strategi untuk beradaptasi dengan kondisi pasar yang berbeda
  4. Filter EMA efektif mengurangi risiko terobosan palsu
  5. Mekanisme Tracking Stop Loss dapat mengunci keuntungan secara efektif
  6. Mekanisme penyaringan dimensi waktu menghindari risiko penjarahan jangka panjang

Risiko Strategis

  1. Sinyal breakout palsu yang sering terjadi dapat terjadi di pasar yang bergejolak
  2. Stop loss dengan jumlah tetap mungkin tidak cocok untuk semua kondisi pasar
  3. Filter EMA dapat menyebabkan kehilangan beberapa peluang perdagangan penting
  4. Pelacakan Stop Loss Mungkin Terlalu Cepat Dalam Pasar Bergolak
  5. Optimasi parameter dapat menyebabkan overfitting pada data historis

Arah optimasi strategi

  1. Memperkenalkan siklus Brin-Band yang adaptif, yang secara dinamis disesuaikan dengan fluktuasi pasar
  2. Mengembangkan sistem stop loss dinamis berbasis pengelolaan dana
  3. Menambahkan analisis volume transaksi untuk mengkonfirmasi efektivitas terobosan
  4. Sistem Optimasi Parameter yang Membuatnya Cerdas
  5. Tambahkan modul identifikasi lingkungan pasar untuk menggunakan parameter yang berbeda dalam kondisi pasar yang berbeda

Meringkaskan

Ini adalah sistem pelacakan tren yang dirancang dengan baik, yang memberikan sinyal perdagangan yang andal melalui kombinasi Brinks dan EMA, dan memastikan keamanan perdagangan melalui kontrol risiko bertingkat. Strategi ini sangat dapat dikonfigurasi dan dapat beradaptasi dengan gaya perdagangan dan lingkungan pasar yang berbeda. Meskipun ada beberapa risiko yang melekat, stabilitas dan profitabilitas strategi dapat ditingkatkan lebih lanjut dengan arah optimasi yang disarankan.

Kode Sumber Strategi
/*backtest
start: 2025-01-10 00:00:00
end: 2025-02-08 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("AI Bollinger Bands Strategy with SL, TP, and Bars Till Close", overlay=true)

// Input parameters
bb_length           = input.int(14, title="Bollinger Bands Length", minval=1)
bb_stddev           = input.float(1.5, title="Bollinger Bands Standard Deviation", minval=0.1)
use_ema             = input.bool(true, title="Use EMA Filter")
ema_length          = input.int(80, title="EMA Length", minval=1)
use_trailing_stop   = input.bool(true, title="Use Trailing Stop")
use_sl              = input.bool(true, title="Use Stop Loss")
use_tp              = input.bool(false, title="Use Take Profit")
sl_dollars          = input.float(300.0, title="Stop Loss (\$)", minval=0.0)
tp_dollars          = input.float(1000.0, title="Take Profit (\$)", minval=0.0)
use_bars_till_close = input.bool(true, title="Use Bars Till Close")
bars_till_close     = input.int(10, title="Bars Till Close", minval=1)
// New input to toggle indicator plotting
plot_indicators     = input.bool(true, title="Plot Bollinger Bands and EMA on Chart")

// Calculate Bollinger Bands and EMA
basis      = ta.sma(close, bb_length)
upper_band = basis + bb_stddev * ta.stdev(close, bb_length)
lower_band = basis - bb_stddev * ta.stdev(close, bb_length)
ema        = ta.ema(close, ema_length)

// Plot Bollinger Bands and EMA conditionally
plot(plot_indicators  ? basis : na, color=color.blue, linewidth=2, title="Basis (SMA)")
plot(plot_indicators ? upper_band : na, color=color.red, linewidth=2, title="Upper Band")
plot(plot_indicators  ? lower_band : na, color=color.green, linewidth=2, title="Lower Band")
plot(plot_indicators   ? ema   : na, color=color.orange, linewidth=2, title="EMA")

// EMA conditions
ema_long_condition  = ema > ema[1]
ema_short_condition = ema < ema[1]

// Entry conditions
sell_condition = close[1] > upper_band[1] and close[1] > open[1] and close < open
if sell_condition and (not use_ema or ema_short_condition)
    strategy.entry("Sell", strategy.short)

buy_condition = close[1] < lower_band[1] and close > open
if buy_condition and (not use_ema or ema_long_condition)
    strategy.entry("Buy", strategy.long)

// Trailing stop logic
if use_trailing_stop
    if strategy.position_size > 0 and close >= basis
        strategy.exit("Trailing Stop Long", from_entry="Buy", stop=low)
    if strategy.position_size < 0 and close <= basis
        strategy.exit("Trailing Stop Short", from_entry="Sell", stop=high)

// Stop Loss and Take Profit logic
if use_sl or use_tp
    if strategy.position_size > 0
        long_entry = strategy.position_avg_price
        long_sl    = long_entry - sl_dollars
        long_tp    = long_entry + tp_dollars
        if use_sl and close <= long_sl
            strategy.close("Buy", comment="Long SL Hit")
        if use_tp and close >= long_tp
            strategy.close("Buy", comment="Long TP Hit")
    if strategy.position_size < 0
        short_entry = strategy.position_avg_price
        short_sl    = short_entry + sl_dollars
        short_tp    = short_entry - tp_dollars
        if use_sl and close >= short_sl
            strategy.close("Sell", comment="Short SL Hit")
        if use_tp and close <= short_tp
            strategy.close("Sell", comment="Short TP Hit")

// Bars Till Close logic
var int bars_since_entry = na
if strategy.position_size != 0
    bars_since_entry := na(bars_since_entry) ? 0 : bars_since_entry + 1
else
    bars_since_entry := na

if use_bars_till_close and not na(bars_since_entry) and bars_since_entry >= bars_till_close
    strategy.close("Buy", comment="Bars Till Close Hit")
    strategy.close("Sell", comment="Bars Till Close Hit")

// Plot buy/sell signals
plotshape(sell_condition and (not use_ema or ema_short_condition), title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")
plotshape(buy_condition and (not use_ema or ema_long_condition), title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")