
Strategi ini adalah sistem perdagangan pembalikan tren adaptif berdasarkan indikator Bollinger Bands. Ia menangkap peluang yang jenuh beli dan jenuh jual di pasar dengan memantau persilangan harga dan Bollinger Bands, dan melakukan perdagangan berdasarkan prinsip pengembalian rata-rata. Strategi ini mengadopsi manajemen posisi dinamis dan mekanisme pengendalian risiko dan berlaku untuk berbagai pasar dan periode waktu.
Logika inti dari strategi ini didasarkan pada poin-poin berikut:
Risiko pasar yang bergejolak - Perdagangan yang sering terjadi pada pasar yang tidak stabil dapat mengakibatkan kerugian. Solusi: Tambahkan filter tren dan hanya berdagang ketika trennya jelas.
Risiko breakout palsu - harga dapat berbalik dengan cepat setelah breakout. Solusi: Tambahkan sinyal konfirmasi, seperti volume atau indikator teknis lainnya.
Risiko sistematis - potensi kerugian besar dalam kondisi pasar yang ekstrem. Solusi: Tetapkan batas penarikan maksimum dan hentikan perdagangan secara otomatis saat ambang batas tercapai.
Strategi ini menggunakan indikator Bollinger Band untuk menangkap penyimpangan harga dan menggabungkannya dengan prinsip mean reversion untuk perdagangan. Mekanisme pengendalian risiko yang sempurna dan aturan perdagangan yang jelas membuatnya sangat praktis. Stabilitas dan profitabilitas strategi dapat lebih ditingkatkan melalui arahan pengoptimalan yang direkomendasikan. Strategi ini cocok untuk pedagang kuantitatif yang mencari keuntungan stabil.
/*backtest
start: 2025-01-09 00:00:00
end: 2025-01-16 00:00:00
period: 10m
basePeriod: 10m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=5
strategy("Bollinger Bands Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200)
// Inputs for Bollinger Bands
bbLength = input.int(20, title="Bollinger Bands Length")
bbStdDev = input.float(2.0, title="Bollinger Bands StdDev")
// Inputs for Risk Management
stopLossPerc = input.float(1.0, title="Stop Loss (%)", minval=0.1, step=0.1)
takeProfitPerc = input.float(2.0, title="Take Profit (%)", minval=0.1, step=0.1)
// Calculate Bollinger Bands
basis = ta.sma(close, bbLength)
bbStdev = ta.stdev(close, bbLength)
upper = basis + bbStdDev * bbStdev
lower = basis - bbStdDev * bbStdev
// Plot Bollinger Bands
plot(basis, color=color.blue, title="Middle Band")
plot(upper, color=color.red, title="Upper Band")
plot(lower, color=color.green, title="Lower Band")
// Entry Conditions
longCondition = ta.crossover(close, lower)
shortCondition = ta.crossunder(close, upper)
// Exit Conditions
exitLongCondition = ta.crossunder(close, basis)
exitShortCondition = ta.crossover(close, basis)
// Stop Loss and Take Profit Levels
longStopLoss = close * (1 - stopLossPerc / 100)
longTakeProfit = close * (1 + takeProfitPerc / 100)
shortStopLoss = close * (1 + stopLossPerc / 100)
shortTakeProfit = close * (1 - takeProfitPerc / 100)
// Execute Long Trades
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", from_entry="Long", stop=longStopLoss, limit=longTakeProfit)
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", from_entry="Short", stop=shortStopLoss, limit=shortTakeProfit)
// Close Positions on Exit Conditions
if (exitLongCondition and strategy.position_size > 0)
strategy.close("Long")
if (exitShortCondition and strategy.position_size < 0)
strategy.close("Short")
// 🔊 SOUND ALERTS IN BROWSER 🔊
if (longCondition)
alert("🔔 Long Entry Signal!", alert.freq_once_per_bar_close)
if (shortCondition)
alert("🔔 Short Entry Signal!", alert.freq_once_per_bar_close)
if (exitLongCondition)
alert("🔔 Closing Long Trade!", alert.freq_once_per_bar_close)
if (exitShortCondition)
alert("🔔 Closing Short Trade!", alert.freq_once_per_bar_close)