Strategi ini adalah sistem perdagangan penjejakan momentum berdasarkan penunjuk Bollinger Bands. Ia mengenal pasti peluang pecah yang berpotensi dengan memantau hubungan antara harga dan Bollinger Band atas, dan menutup kedudukan apabila harga pecah di bawah band bawah. Bollinger Bands terdiri daripada tiga garis: band tengah (rata-rata bergerak), band atas dan bawah (dihitung menggunakan penyimpangan standard). Strategi ini menyokong pelbagai jenis purata bergerak dan membolehkan penyesuaian parameter berdasarkan pilihan peniaga.
Logik teras strategi ini adalah berdasarkan perkara berikut:
Ini adalah strategi trend-mengikuti berdasarkan Bollinger Bands, menangkap trend pasaran dengan memerhatikan hubungan antara harga dan band. Strategi ini direka dengan baik dengan kemampuan beradaptasi dan mekanisme pengurusan risiko yang baik. Melalui arah pengoptimuman yang dicadangkan, kestabilan dan keuntungan strategi dapat ditingkatkan lagi. Ia sangat sesuai untuk pasaran yang tidak menentu, tetapi peniaga perlu menyesuaikan parameter dan langkah kawalan risiko mengikut keadaan sebenar.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-04 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="Demo GPT - Bollinger Bands Strategy", overlay=true, initial_capital=100000, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3) // Inputs length = input.int(20, minval=1, title="Length") maType = input.string("SMA", "Basis MA Type", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"]) src = input(close, title="Source") mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev") offset = input.int(0, "Offset", minval=-500, maxval=500) startDate = input(timestamp('01 Jan 2018 00:00 +0000'), title="Start Date") endDate = input(timestamp('31 Dec 2069 23:59 +0000'), title="End Date") // Moving Average Function ma(source, length, _type) => switch _type "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) "SMMA (RMA)" => ta.rma(source, length) "WMA" => ta.wma(source, length) "VWMA" => ta.vwma(source, length) // Calculations basis = ma(src, length, maType) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev // Plotting plot(basis, "Basis", color=#2962FF, offset=offset) p1 = plot(upper, "Upper", color=#F23645, offset=offset) p2 = plot(lower, "Lower", color=#089981, offset=offset) fill(p1, p2, title="Background", color=color.rgb(33, 150, 243, 95)) // Strategy Logic inTradeWindow = true longCondition = close > upper and inTradeWindow exitCondition = close < lower and inTradeWindow if (longCondition) strategy.entry("Long", strategy.long, qty=1) if (exitCondition) strategy.close("Long")