Strategi ini adalah strategi perdagangan terobosan dua trek berdasarkan Bollinger Bands. Ia menggunakan rel atas dan bawah Bollinger Bands sebagai isyarat beli dan jual, dan menetapkan titik stop loss untuk mengawal risiko.
Strategi ini menggunakan rel atas dan bawah Bollinger Bands. Bollinger Bands terdiri daripada purata bergerak dan dua saluran penyimpangan standard yang sesuai dengannya. Isyarat jual dihasilkan apabila harga menyentuh atau memecahkan rel atas Bollinger Bands; Isyarat beli dihasilkan apabila harga menyentuh atau memecahkan rel bawah Bollinger Bands. Di samping itu, strategi ini juga menetapkan titik stop loss. Apabila harga lebih rendah daripada peratusan tertentu dari purata bergerak, stop loss akan dikenal pasti.
Secara khusus, strategi ini mengira purata bergerak dan dua kali penyimpangan standard kitaran yang ditentukan (seperti 20 hari) untuk merangka Bollinger Bands. Rel atas adalah purata bergerak ditambah dua kali penyimpangan standard, dan rel bawah adalah purata bergerak dikurangkan dua kali penyimpangan standard. Apabila harga penutupan lebih besar daripada atau sama dengan rel atas, isyarat jual dikeluarkan; apabila harga penutupan kurang daripada atau sama dengan rel bawah, isyarat beli dikeluarkan. Di samping itu, jika harga lebih rendah daripada peratusan tertentu (seperti 1%) dari purata bergerak, isyarat stop loss dikeluarkan.
Strategi ini menggunakan ciri-ciri Bollinger Bands untuk mengeluarkan isyarat perdagangan apabila turun naik harga yang tidak normal berlaku, dengan itu menangkap peluang untuk pembalikan harga.
Berbanding dengan strategi terobosan dua trek yang mudah, strategi ini menambah mekanisme stop-loss. Ini dapat mengawal kerugian yang disebabkan oleh isyarat salah individu dengan berkesan. Tetapan titik stop loss juga agak munasabah, dekat dengan purata bergerak, mengelakkan kerugian berhenti yang berlebihan yang menyebabkan terlalu banyak kerugian.
Risiko terbesar strategi ini adalah bahawa Bollinger Bands sendiri tidak dapat menjamin kesahihan isyarat perdagangan. Apabila keadaan khas berlaku di pasaran, harga mungkin turun naik dengan tajam dan tidak normal, dalam hal ini isyarat perdagangan yang dikeluarkan oleh Bollinger Bands mungkin salah. Ini mungkin menyebabkan kerugian yang besar.
Di samping itu, penetapan titik stop loss juga boleh terlalu agresif atau konservatif, yang akan menjejaskan pendapatan akhir.
Strategi ini boleh dioptimumkan dalam aspek berikut:
Uji kombinasi parameter yang berbeza, seperti nilai kitaran purata bergerak yang berbeza, pengganda penyimpangan standard, peratusan kehilangan berhenti, dan lain-lain, untuk mencari parameter yang optimum;
Meningkatkan penunjuk lain untuk menilai dan membentuk pelbagai keadaan penapis untuk mengelakkan isyarat yang salah;
Mengoptimumkan strategi stop loss, seperti menggunakan stop loss bergerak, batch stop loss dan bukannya stop loss mudah;
Memastikan isyarat dagangan dengan menggabungkan Bollinger Band dari kitaran masa yang berbeza untuk mengelakkan terperangkap.
Secara keseluruhan, strategi ini adalah gabungan praktikal dari pengesanan trend dan strategi terobosan dua jalur. Ia boleh merebut peluang untuk pembalikan apabila turun naik harga meningkat, dan menetapkan kerugian berhenti untuk mengawal risiko. Melalui pengoptimuman parameter, penapisan isyarat yang meningkat, strategi kerugian berhenti yang dioptimumkan, dan lain-lain, kestabilan dan keuntungan strategi dapat ditingkatkan lagi.
/*backtest start: 2024-01-28 00:00:00 end: 2024-02-04 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger Bands Strategy by Royce Mars", 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(2.0, minval=0.001, maxval=50, title="StdDev") stopLossPercent = input.float(1.0, title="Stop Loss Percent", minval=0.1, maxval=10, step=0.1) 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 // Buy and Sell Conditions buyCondition = close <= lower sellCondition = close >= upper // Stop Loss Condition stopLossCondition = close < basis * (1 - stopLossPercent / 100) // Strategy Execution strategy.entry("Buy", strategy.long, when=buyCondition) strategy.close("Buy", when=sellCondition or stopLossCondition) strategy.entry("Sell", strategy.short, when=sellCondition) strategy.close("Sell", when=buyCondition) // Plotting on the Chart plotshape(buyCondition, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar) plotshape(sellCondition or stopLossCondition, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar) // Plotting the Bollinger Bands plot(basis, "Basis", color=color.orange) p1 = plot(upper, "Upper Band", color=color.blue) p2 = plot(lower, "Lower Band", color=color.blue) fill(p1, p2, title="Background", color=color.rgb(33, 150, 243, 95))