Strategi ini menggunakan Bollinger Bands untuk menentukan arah trend semasa dan purata bergerak eksponensial untuk hentikan kerugian dan mengambil pengurusan keuntungan untuk menangkap trend dengan berkesan.
Strategi ini mula-mula mengira garis tengah, band atas dan band bawah Bollinger Bands. Garis tengah adalah purata bergerak mudah harga penutupan selama n hari. Garis atas dan bawah bergeser ke atas dan ke bawah oleh dua penyimpangan standard dari garis tengah. Apabila harga penutupan di atas band atas, ia menunjukkan trend menaik. Apabila harga penutupan di bawah band bawah, ia menunjukkan trend menurun.
Strategi ini menilai arah trend semasa dengan membandingkan hubungan antara harga penutupan dan jalur atas/bawah Bollinger Bands. Jika harga penutupan menembusi jalur atas, pergi panjang. Jika harga penutupan menembusi jalur bawah, pergi pendek.
Di samping itu, purata bergerak eksponensial diperkenalkan sebagai hentian untuk menghentikan kerugian dan mengambil keuntungan. Khususnya, jika harga bergerak ke bawah selepas pergi lama, garis stop loss akan bergerak ke bawah dengan sewajarnya, secara beransur-ansur mengetatkan jarak stop loss untuk memaksimumkan kunci keuntungan. Jika harga terus meningkat, garis stop loss juga akan bergerak ke atas untuk membiarkan keuntungan berjalan. Mekanisme stop loss berfungsi sebaliknya untuk kedudukan pendek.
Strategi yang menggabungkan Bollinger Bands untuk arah trend dan EMA untuk pengurusan stop loss/take profit mempunyai kelebihan berikut:
Menggunakan Bollinger Bands dapat menentukan arah trend dengan berkesan dan bertindak balas dengan cepat terhadap pecah.
Stop loss / mengambil keuntungan berasaskan EMA boleh memaksimumkan kunci keuntungan sambil mengawal risiko.
Strategi ini mempunyai beberapa parameter yang mudah dilaksanakan - hanya satu untuk BB dan satu untuk EMA, sangat mudah.
Ia boleh digunakan secara meluas untuk produk yang berbeza dengan daya adaptasi yang kuat.
Strategi ini juga mempunyai beberapa risiko untuk diperhatikan:
Menembusi jalur BB atas / bawah tidak dapat sepenuhnya mengelakkan risiko pecah palsu.
Tetapan parameter EMA memerlukan ujian yang teliti mengikut produk tertentu. Tempoh EMA yang terlalu pendek boleh meningkatkan masa stop loss. Terlalu lama akan mengurangkan keberkesanan trailing.
Pemoptimuman berlebihan perlu dielakkan. terlalu banyak kombinasi parameter BB dan EMA boleh membawa kepada pemasangan berlebihan.
Untuk menangani risiko dan arah pengoptimuman, perkara berikut boleh dipertimbangkan:
Tambah jumlah atau MACD dan lain-lain untuk menapis isyarat pecah palsu.
Mengoptimumkan tempoh EMA melalui ujian untuk mencari parameter yang paling sesuai untuk produk tertentu.
Cuba untuk mengekalkan parameter BB dan EMA yang stabil sebanyak mungkin untuk mengelakkan risiko overfit dari optimalisasi berlebihan.
Pertimbangkan untuk menggunakan RSI dan lain-lain untuk menentukan penyesuaian kedudukan dalam trend jangka menengah.
Strategi ini mengintegrasikan menggunakan Bollinger Bands untuk menentukan trend dan EMA untuk pengurusan stop loss / take profit untuk membentuk sistem penjejakan trend yang agak lengkap. Ia dapat dengan cepat menangkap arah trend dan mengunci keuntungan dengan terus menyesuaikan garis stop loss. Secara keseluruhan, strategi ini agak mudah, praktikal dan dapat disesuaikan, bernilai ujian dan pengoptimuman lanjut. Tetapi tetapan parameter dan kawalan risiko perlu diperhatikan untuk mengelakkan salah menilai dan terlalu mengoptimumkan. Menggabungkan dengan penunjuk teknikal lain untuk peningkatan lebih lanjut akan menjadi arah ke hadapan.
/*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")