Strategi ini dinamakan
Logik utama strategi ini adalah berdasarkan saluran Bollinger Bands, yang terdiri daripada garis tengah, band atas dan band bawah. Garis tengah adalah purata bergerak harga penutupan selama n hari. Garis atas dan bawah adalah penyimpangan di atas dan di bawah garis tengah. Apabila harga mendekati jalur atas, ia menunjukkan pasaran mungkin terlalu panas dan mungkin ada peluang pendek. Apabila harga mendekati jalur bawah, ia menunjukkan pasaran mungkin undervalued dan mungkin ada peluang panjang.
Strategi ini menggunakan dua Bollinger Band. Bollinger Band 1 sesuai untuk perdagangan panjang dan Bollinger Band 2 sesuai untuk perdagangan pendek. Parameter Bollinger Band 1 dioptimumkan dengan panjang 25 dan penyimpangan 2.9 kali. Parameter Bollinger Band 2 dioptimumkan dengan panjang 36 dan penyimpangan 3.2 kali. Apabila harga penutupan melintasi band bawah Bollinger Band 1, ia akan menghasilkan isyarat panjang. Apabila harga penutupan melintasi di bawah band atas Bollinger Band 2, ia akan menghasilkan isyarat pendek.
Berbanding dengan strategi Bollinger Bands tradisional, strategi ini mempunyai kelebihan berikut:
Ia merealisasikan perdagangan dua arah untuk kedua-dua sisi panjang dan pendek, yang boleh merebut peluang perdagangan di peringkat pasaran yang berbeza.
Kedua-dua set parameter Bollinger Bands diuji dengan teliti untuk menghasilkan isyarat perdagangan yang berkesan.
Risiko boleh dikawal. Kaedah stop loss bergerak dapat mengawal risiko satu sisi dengan berkesan.
Terdapat juga beberapa risiko berpotensi untuk strategi ini:
Risiko ketidakvaliditi Bollinger Bands. Bollinger Bands boleh menjadi tidak sah semasa turun naik pasaran yang melampau.
Risiko stop loss yang dipukul. Stop loss bergerak boleh dipukul untuk memperluaskan kerugian. Kita boleh meluaskan stop loss atau berhenti tepat pada masanya untuk mengelakkan risiko ini.
Risiko kekerapan perdagangan yang tinggi. Parameter yang terlalu sensitif boleh menyebabkan perdagangan yang kerap dan peningkatan kos perdagangan.
Masih ada ruang untuk mengoptimumkan lagi strategi ini:
Menggabungkan penunjuk lain untuk menapis isyarat dan mengelakkan perdagangan yang salah apabila Bollinger Bands gagal.
Sesuaikan parameter secara dinamik agar sesuai dengan ciri pasaran pada tempoh yang berbeza.
Mengoptimumkan kaedah stop loss dengan menggunakan trailing stop loss atau exponential moving stop loss untuk mengawal risiko dengan berkesan.
Gabungkan algoritma pembelajaran mesin untuk mengoptimumkan parameter secara automatik.
Ringkasnya, strategi ini secara keseluruhan mengoptimumkan perdagangan dua arah untuk kedua-dua sisi panjang dan pendek berdasarkan saluran Bollinger Bands berganda dan pengoptimuman parameter. Berbanding dengan strategi Bollinger Bands tradisional, ia mempunyai kelebihan perdagangan dua arah dan kawalan risiko. Ia sesuai untuk merebut peluang di peringkat pasaran yang berbeza dan mempunyai nilai praktikal tertentu. Tetapi risiko seperti kegagalan Bollinger Bands dan kehilangan berhenti masih wujud. Pengoptimuman dan pengesahan lanjut diperlukan sebelum produksi.
/*backtest start: 2022-12-01 00:00:00 end: 2023-12-07 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/ // © exlux99 //@version=4 strategy("BB NDX strategy", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, calc_on_every_tick = true, commission_type = strategy.commission.percent, commission_value = 0.01) source = close length = input(25, minval=1, title="Length BB long") mult = input(2.9, minval=0.001, maxval=50, step=0.1, title="MULT BB long") length2 = input(36, minval=1, title="Length BB short") mult2 = input(3.2, minval=0.001, maxval=50, step=0.1, title="MULT BB short") basis = sma(source, length) dev = mult * stdev(source, length) dev2 = mult2 * stdev(source, length2) upper = basis + dev2 lower = basis - dev buyEntry = crossover(source, lower) sellEntry = crossunder(source, upper) longEntry=input(true) shortEntry=input(true) g(v, p) => round(v * (pow(10, p))) / pow(10, p) risk = input(100) leverage = input(1.0, step = 0.5) c = g((strategy.equity * leverage / open) * (risk / 100), 4) tplong=input(0.065, step=0.005, title="Take profit % for long") sllong=input(0.04, step=0.005, title="Stop loss % for long") tpshort=input(0.025, step=0.005, title="Take profit % for short") slshort=input(0.04, step=0.005, title="Stop loss % for short") if(longEntry) strategy.entry("long",1,c,when=buyEntry) strategy.exit("short_tp/sl", "long", profit=close * tplong / syminfo.mintick, loss=close * sllong / syminfo.mintick, comment='LONG EXIT', alert_message = 'closeshort') strategy.close("long",when=sellEntry) if(shortEntry) strategy.entry("short",0,c,when=sellEntry) strategy.exit("short_tp/sl", "short", profit=close * tpshort / syminfo.mintick, loss=close * slshort / syminfo.mintick, comment='SHORT EXIT', alert_message = 'closeshort') strategy.close("short",when=buyEntry)