
Strategi ini ialah sistem perdagangan pembalikan arah aliran adaptif berdasarkan penunjuk Bollinger Bands. Ia menangkap peluang terlebih beli dan terlebih jual dalam pasaran dengan memantau persilangan harga dan Bollinger Bands, dan berdagang berdasarkan prinsip pengembalian min. Strategi ini menggunakan pengurusan kedudukan dinamik dan mekanisme kawalan risiko dan boleh digunakan untuk pelbagai pasaran dan tempoh masa.
Logik teras strategi adalah berdasarkan perkara berikut:
Risiko pasaran yang tidak menentu - Perdagangan yang kerap dalam pasaran sisi boleh mengakibatkan kerugian. Penyelesaian: Tambahkan penapis arah aliran dan hanya berdagang apabila arah aliran itu jelas.
Risiko pecahan palsu - harga mungkin berbalik dengan cepat selepas pecahan. Penyelesaian: Tambahkan isyarat pengesahan, seperti kelantangan atau penunjuk teknikal lain.
Risiko sistematik - potensi kerugian besar di bawah keadaan pasaran yang melampau. Penyelesaian: Tetapkan had pengeluaran maksimum dan hentikan dagangan secara automatik apabila ambang dicapai.
Strategi ini menggunakan penunjuk Bollinger Band untuk menangkap sisihan harga dan menggabungkannya dengan prinsip pengembalian min untuk dagangan. Mekanisme kawalan risiko yang sempurna dan peraturan perdagangan yang jelas menjadikannya sangat praktikal. Kestabilan dan keuntungan strategi boleh dipertingkatkan lagi melalui arahan pengoptimuman yang disyorkan. Strategi ini sesuai untuk pedagang kuantitatif yang mencari pulangan yang 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)