Strategi ini menggunakan Bollinger Bands untuk menentukan arah tren saat ini dan rata-rata bergerak eksponensial untuk stop loss dan mengambil manajemen keuntungan untuk menangkap tren secara efektif.
Strategi ini pertama-tama menghitung garis tengah, band atas dan band bawah Bollinger Bands. Garis tengah adalah rata-rata bergerak sederhana dari harga penutupan selama n hari. Band atas dan bawah bergeser ke atas dan ke bawah dengan dua penyimpangan standar dari garis tengah. Ketika harga penutupan berada di atas band atas, itu menunjukkan tren naik. Ketika harga penutupan berada di bawah band bawah, itu menunjukkan tren turun.
Strategi ini menilai arah tren saat ini dengan membandingkan hubungan antara harga penutupan dan band atas/bawah Bollinger Bands. Jika harga penutupan menembus band atas, pergi panjang. Jika harga penutupan menembus band bawah, pergi pendek.
Selain itu, rata-rata bergerak eksponensial diperkenalkan sebagai trailing stop untuk stop loss dan take profit. Secara khusus, jika harga bergerak ke bawah setelah pergi panjang, garis stop loss akan bergerak ke bawah sesuai, secara bertahap memperketat jarak stop loss untuk memaksimalkan kunci keuntungan.
Strategi yang menggabungkan Bollinger Bands untuk arah tren dan EMA untuk manajemen stop loss/take profit memiliki keuntungan berikut:
Menggunakan Bollinger Bands dapat secara efektif menentukan arah tren dan bereaksi dengan cepat terhadap breakout.
Stop loss/take profit berbasis EMA dapat memaksimalkan penguncian keuntungan sambil mengendalikan risiko.
Strategi ini memiliki beberapa parameter yang mudah diterapkan - hanya satu untuk BB dan satu untuk EMA, sangat sederhana.
Hal ini dapat secara luas diterapkan pada produk yang berbeda dengan kemampuan beradaptasi yang kuat.
Strategi ini juga memiliki beberapa risiko yang perlu dicatat:
Menembus pita BB atas/bawah tidak dapat sepenuhnya menghindari risiko pecah palsu.
Pengaturan parameter EMA membutuhkan pengujian yang cermat sesuai dengan produk tertentu. Periode EMA yang terlalu pendek dapat meningkatkan waktu stop loss. Terlalu lama akan mengurangi efektivitas trailing.
Optimalisasi yang berlebihan harus dihindari. terlalu banyak kombinasi dari BB dan EMA parameter dapat menyebabkan overfit.
Untuk mengatasi risiko dan arah optimalisasi, hal berikut dapat dipertimbangkan:
Tambahkan volume atau MACD dll untuk menyaring sinyal pecah palsu.
Mengoptimalkan periode EMA melalui pengujian untuk menemukan parameter yang paling cocok untuk produk tertentu.
Cobalah untuk menjaga BB dan EMA parameter stabil sebanyak mungkin untuk menghindari risiko overfit dari over-optimization.
Pertimbangkan untuk menggunakan RSI dll untuk menentukan penyesuaian posisi dalam tren jangka menengah.
Strategi ini mengintegrasikan menggunakan Bollinger Bands untuk menentukan tren dan EMA untuk manajemen stop loss / take profit untuk membentuk sistem pelacakan tren yang relatif lengkap. Ini dapat dengan cepat menangkap arah tren dan mengunci keuntungan dengan terus menyesuaikan garis stop loss. Secara keseluruhan, strategi ini relatif sederhana, praktis dan dapat disesuaikan, layak diuji dan dioptimalkan lebih lanjut. Tetapi pengaturan parameter dan pengendalian risiko perlu dicatat untuk mencegah penilaian yang salah dan terlalu dioptimalkan. Menggabungkan dengan indikator teknis lainnya untuk perbaikan lebih lanjut akan menjadi arah ke depan.
/*backtest start: 2022-11-10 00:00:00 end: 2023-11-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © zxcv55602 //@version=4 strategy(shorttitle=" BB+EMA", title="Bollinger Bands", overlay=true) date1 = input(title="Start Date", type=input.time, defval=timestamp("2020-01-01T00:00:00")) date2 = input(title="Stop Date", type=input.time, defval=timestamp("2030-01-01T00:00:00")) length = input(40, minval=1) src = input(close, title="Source") mult = input(2.0,title="StdDev",step=0.1) basis = sma(src, length) dev = mult * stdev(src, length) upper = basis + dev lower = basis - dev //offset = input(0, "Offset", minval = -500, maxval = 500) offset=0 stopcon=input(title="stopcon/lot", type=input.bool, defval=true) lot1=input(title="lot",defval=1) stoploss=input(title="stopcon",defval=1000) emacon=input(title="emacon", type=input.bool, defval=true) ema_value=input(title="value",defval=30, minval=2,step=1) plot(basis, "Basis", color=#FF6D00, offset = offset) p1 = plot(upper, "Upper", color=color.new(color.blue,50), offset = offset) p2 = plot(lower, "Lower", color=color.new(color.blue,50), offset = offset) ema1=ema(close,ema_value) plot(ema1, "SMA", color=#2962FF) period() => true //----------- if period() if strategy.opentrades==0 and ema1<upper if close>upper lot_L=stoploss/((close-lower)/2) strategy.entry("OP_L",strategy.long,qty=stopcon==true?lot_L:lot1,stop=emacon==true?max(basis,ema1):basis) if strategy.opentrades==0 and ema1>lower if close<lower lot_S=stoploss/((upper-close)/2) strategy.entry("OP_S",strategy.short,qty=stopcon==true?lot_S:lot1,stop=emacon==true?min(basis,ema1):basis) if strategy.position_size>0 strategy.exit("OP_L",stop=emacon==true?max(basis,ema1):basis,comment="exit_L") if strategy.position_size<0 strategy.exit("OP_S",stop=emacon==true?min(basis,ema1):basis,comment="exit_S")