Strategi ini didasarkan pada indikator Bollinger Bands, dengan ide utama adalah menunggu harga kembali ke dalam Bollinger Bands setelah harga menerobos Bollinger Bands ke arah atas atau ke bawah, dan kemudian membangun posisi yang sama dengan arah terobosan pada titik balik. Strategi ini memanfaatkan karakteristik harga yang sering terjadi di daerah ekstrim untuk menangkap titik balik pasar dengan kombinasi kondisi dari Bollinger Bands Breakout dan Kembali, dengan harapan untuk mendapatkan tingkat kemenangan yang lebih tinggi.
Strategi perdagangan Bollinger Bands adalah strategi perdagangan kuantitatif yang sederhana dan praktis. Strategi ini memanfaatkan respons harga terhadap situasi ekstrem, membangun kondisi pembukaan posisi terbuka melalui alat Bollinger Bands, mampu menangkap titik awal dan akhir tren hingga batas tertentu, mengendalikan perdagangan yang sering terjadi. Strategi ini juga memiliki masalah seperti pemilihan parameter, kinerja buruk di bawah tren yang bergolak, dan kurangnya pemahaman tren.
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-27 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(shorttitle="BB", title="Bollinger Bands", overlay=true)
length = input.int(20, minval=1)
maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = input.float(1.7, minval=0.001, maxval=50, title="StdDev")
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)
basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))
break_up = close > upper
break_down = close < lower
inside = close > lower and close < upper
sell_condition = break_up[1] and inside
buy_condition = break_down[1] and inside
// Conditions to close trades
close_sell_condition = close > basis
close_buy_condition = close < basis
trade_condition = sell_condition or buy_condition
// Tracking the high of the breakout candle
var float peak = na
if (not trade_condition)
peak := close
if (break_up and peak < high)
peak := high
if (break_down and peak > low)
peak := low
// Entering positions
if (buy_condition)
strategy.entry("Buy", strategy.long)
if (sell_condition)
strategy.entry("Sell", strategy.short)
// Exiting positions when close crosses the basis
if (strategy.position_size > 0 and close_sell_condition) // If in a long position and close crosses above basis
strategy.close("Buy")
if (strategy.position_size < 0 and close_buy_condition) // If in a short position and close crosses below basis
strategy.close("Sell")