Strategi ini adalah strategi perdagangan terobosan dual-track berdasarkan Bollinger Bands. Ini menggunakan rel atas dan bawah Bollinger Bands sebagai sinyal beli dan jual, dan menetapkan titik stop loss untuk mengendalikan risiko.
Strategi ini menggunakan rel atas dan bawah Bollinger Bands. Bollinger Bands terdiri dari moving average dan dua saluran standar deviasi yang sesuai dengannya. Sinyal jual dihasilkan ketika harga menyentuh atau menembus rel atas Bollinger Bands; Sinyal beli dihasilkan ketika harga menyentuh atau menembus rel bawah Bollinger Bands. Selain itu, strategi ini juga menetapkan titik stop loss. Ketika harga lebih rendah dari persentase tertentu dari moving average, stop loss akan diidentifikasi.
Secara khusus, strategi ini menghitung moving average dan dua kali standar deviasi dari siklus yang ditentukan (seperti 20 hari) untuk memetakan Bollinger Bands. Rel atas adalah moving average ditambah dua kali standar deviasi, dan rel bawah adalah moving average dikurangi dua kali standar deviasi. Ketika harga penutupan lebih besar dari atau sama dengan rel atas, sinyal jual dikeluarkan; ketika harga penutupan kurang dari atau sama dengan rel bawah, sinyal beli dikeluarkan. Selain itu, jika harga lebih rendah dari persentase tertentu (seperti 1%) dari moving average, sinyal stop loss dikeluarkan.
Strategi ini memanfaatkan karakteristik Bollinger Bands untuk mengeluarkan sinyal perdagangan ketika terjadi fluktuasi harga yang abnormal, sehingga menangkap peluang untuk pembalikan harga.
Dibandingkan dengan strategi terobosan dual-track yang sederhana, strategi ini menambahkan mekanisme stop-loss. Ini dapat secara efektif mengendalikan kerugian yang disebabkan oleh sinyal yang salah secara individual. Pengaturan titik stop loss juga relatif wajar, dekat dengan moving average, menghindari stop loss yang berlebihan yang menyebabkan terlalu banyak kerugian.
Risiko terbesar dari strategi ini adalah bahwa Bollinger Bands sendiri tidak dapat menjamin keabsahan sinyal perdagangan. Ketika situasi khusus terjadi di pasar, harga dapat berfluktuasi tajam dan tidak normal, dalam hal ini sinyal perdagangan yang dikeluarkan oleh Bollinger Bands mungkin salah. Hal ini cenderung menyebabkan kerugian yang cukup besar.
Selain itu, pengaturan titik stop loss juga bisa terlalu agresif atau konservatif, yang akan mempengaruhi pendapatan akhir.
Strategi dapat dioptimalkan dalam aspek berikut:
Uji kombinasi parameter yang berbeda, seperti nilai siklus rata-rata bergerak yang berbeda, pengganda penyimpangan standar, persentase stop loss, dll., untuk menemukan parameter yang optimal;
Meningkatkan indikator lain untuk menilai dan membentuk kondisi filter ganda untuk menghindari sinyal yang salah;
Mengoptimalkan strategi stop loss, seperti menggunakan stop loss bergerak, batch stop loss alih-alih stop loss sederhana;
Mengkonfirmasi sinyal perdagangan dengan menggabungkan Bollinger Bands dari siklus waktu yang berbeda untuk menghindari terjebak.
Secara keseluruhan, strategi ini adalah kombinasi praktis dari pelacakan tren dan strategi terobosan dual-track. Ini dapat memanfaatkan peluang untuk pembalikan ketika fluktuasi harga meningkat, dan menetapkan stop loss untuk mengendalikan risiko. Dengan cara pengoptimalan parameter, peningkatan penyaringan sinyal, strategi stop loss yang dioptimalkan, dll., Stabilitas dan profitabilitas strategi dapat ditingkatkan lebih lanjut.
/*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))