Strategi ini adalah momentum berikutan sistem perdagangan berdasarkan penunjuk Bollinger Bands. Ia mengenal pasti peluang penembusan yang berpotensi dengan memantau hubungan antara harga dan Bollinger Band atas dan menutup kedudukan apabila harga jatuh di bawah Bollinger Band yang lebih rendah. Bollinger Bands terdiri daripada tiga baris: jalur tengah (purata bergerak), jalur atas dan jalur bawah (dikira daripada sisihan piawai). Strategi ini menyokong pelbagai jenis purata bergerak dan boleh melaraskan parameter mengikut keutamaan pedagang.
Logik teras strategi adalah berdasarkan perkara berikut:
Ini ialah strategi mengikut arah aliran berdasarkan Bollinger Bands, yang menangkap arah aliran pasaran dengan memerhatikan hubungan antara harga dan Bollinger Bands. Strategi ini direka bentuk secara munasabah dan mempunyai kebolehlarasan yang baik dan mekanisme pengurusan risiko. Melalui arahan pengoptimuman yang disyorkan, kestabilan dan keuntungan strategi boleh dipertingkatkan lagi. Strategi ini amat sesuai untuk pasaran dengan turun naik yang lebih besar, tetapi pedagang dikehendaki melaraskan parameter dan langkah kawalan risiko berdasarkan 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")