
Strategi ini berdasarkan pada Bollinger Bands, menghasilkan isyarat perdagangan dengan cara harga menembusi Bollinger Bands ke arah bawah. Apabila harga menembusi ke arah atas, lakukan lebih banyak, dan apabila ia menembusi ke arah bawah, kosong.
Strategi BB Breakout adalah strategi perdagangan berdasarkan indikator Bollinger Bands, dengan menangkap peluang harga untuk menembusi Bollinger Bands dan turun ke bawah. Strategi ini mempunyai kelebihan bahawa isyaratnya jelas, mudah dilaksanakan, dan mempunyai langkah-langkah kawalan risiko tertentu. Tetapi strategi ini juga mempunyai beberapa batasan, seperti frekuensi perdagangan yang mungkin terlalu tinggi, isyarat lag, dan sebagainya. Oleh itu, dalam aplikasi praktikal, anda boleh mempertimbangkan untuk memperbaiki strategi dari segi pengesahan isyarat, pengoptimuman stop loss, pengoptimuman parameter, dan sebagainya, untuk meningkatkan kestabilan dan keuntungan strategi.
/*backtest
start: 2023-06-08 00:00:00
end: 2024-06-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("BB Strategy", overlay=true)
// Input parameters
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, title="Offset")
// 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)
// Calculate Bollinger Bands
basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
// Plot Bollinger Bands
plot(basis, "Basis", color=color.blue, offset=offset)
p1 = plot(upper, "Upper", color=color.red, offset=offset)
p2 = plot(lower, "Lower", color=color.green, offset=offset)
fill(p1, p2, title="Background", color=color.rgb(33, 150, 243, 95))
// Strategy logic
longCondition = ta.crossover(close, upper)
shortCondition = ta.crossunder(close, lower)
// Strategy entries and exits
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
if (shortCondition and strategy.position_size > 0)
strategy.close("Long")
if (longCondition and strategy.position_size < 0)
strategy.close("Short")