Strategi ini membina saluran harga berdasarkan penunjuk Bollinger Bands dan penunjuk Momentum Oscillating Moving Average, menghasilkan isyarat perdagangan apabila harga memecahkan sempadan atas atau bawah saluran. Dengan menggabungkan kemampuan penyesuaian Bollinger Bands dan fleksibiliti pengayun momentum, ia dapat bertindak balas tepat pada masanya terhadap perubahan trend pasaran.
Strategi ini membina saluran harga menggunakan Bollinger Middle Band dan Momentum Oscillating Moving Average. Band tengah menggunakan Bollinger Middle Band 21-period. Band atas dan bawah membentang ke atas dan ke bawah untuk julat peratusan masing-masing. Momentum Oscillating Moving Average membentang atau menyusut berhampiran tahap overbought atau oversold berdasarkan band tengah. Apabila harga menembusi band atas, pergi panjang. Apabila harga menembusi band bawah, pergi pendek.
Khususnya, jalur tengah Bollinger dikira sebagai:
Middle Band = Moving Average of N-period closing price
Garis atas dan bawah dikira sebagai:
Upper Band = Middle Band + WidthDev * N-period Bollinger standard deviation
Lower Band = Middle Band - WidthDev * N-period Bollinger standard deviation
Di mana WidthDev mewakili julat peratusan meluas ke atas dan ke bawah.
Momentum Oscillating Moving Average membesar atau menyusut berdasarkan band tengah mengikut peraturan tertentu. Apabila pasaran menjadi terlalu banyak dibeli atau terlalu banyak dijual, ia meluas lebih jauh dari band tengah untuk memberikan lebih banyak peluang untuk pergi panjang atau pergi pendek. Apabila pasaran tenang, ia berkurangan ke arah band tengah.
Ringkasnya, strategi ini menggambarkan saluran harga menggunakan Bollinger Bands dan menentukan masa kemasukan menggunakan Momentum Oscillating Moving Average, mewujudkan perdagangan breakout.
Mencerminkan turun naik pasaran Bollinger Bands boleh mencerminkan turun naik pasaran dan perubahan trend dalam masa nyata.
Mengurangkan isyarat palsu Kesan regangan Momentum Oscillating Moving Average dapat mengurangkan isyarat palsu yang dihasilkan oleh Bollinger Bands. Dengan memperluaskan lebar saluran BB dan memanjangkan tempoh penahan, keuntungan yang lebih besar boleh diperoleh.
Tempoh yang tepat menangkap pembalikan trend Penyambungan antara jalur atas dan bawah BB dan Purata Bergerak Osilasi Momentum menyediakan masa dan harga yang menguntungkan untuk menghasilkan isyarat perdagangan, yang dapat menangkap penyesuaian bull dan bear utama dengan berkesan dan memahami pembalikan trend tepat pada masanya.
Parameter BB yang tidak betul Tetapan parameter BB yang tidak betul seperti tempoh pengiraan dan pengganda penyimpangan standard boleh menyebabkan jarak antara jalur terlalu luas atau terlalu sempit, menghasilkan isyarat palsu yang berlebihan dan melemahkan kestabilan strategi.
Amplituda gelora yang berlebihan Amplituda getaran yang terlalu besar dari Momentum Oscillating Moving Average boleh menyebabkan titik stop loss terlalu jauh, meningkatkan risiko kerugian.
Pembaharuan yang tertunda
Apabila pasaran berosilasi atau tanpa trend, isyarat dagangan dari BB dan Momentum Oscillating Moving Average mungkin terlambat, gagal mencerminkan perubahan harga dalam masa, menyebabkan risiko pembalikan yang tertunda.
Mengoptimumkan parameter BB Uji tempoh yang berbeza, pengganda penyimpangan standard untuk mencari kombinasi parameter optimum yang memberikan frekuensi isyarat yang lebih baik dan lebih sedikit isyarat palsu.
Mengoptimumkan Parameter Momentum Oscillating Moving Average Uji amplitudo dan tempoh osilasi yang berbeza untuk mencari parameter yang lebih baik menangkap trend dan mengurangkan kelewatan isyarat.
Tambah keadaan penapis Tambah penapis seperti jumlah dagangan berdasarkan isyarat silang untuk mengecualikan isyarat dagangan yang tidak cekap.
Gabungan strategi Gabungkan strategi ini dengan strategi stop loss atau strategi pembelajaran mesin lain untuk mengawal risiko dan meningkatkan kestabilan.
Strategi ini menggabungkan kekuatan Bollinger Bands adaptif dan Momentum Oscillating Moving Average, mencapai integrasi trend mengikuti dan menangkap pembalikan trend. Dengan menyeimbangkan turun naik pasaran dan fleksibiliti isyarat perdagangan, ia merealisasikan perdagangan pecah yang stabil dan berkesan. Pengoptimuman parameter dan kawalan risiko juga penting untuk menguji dan menyesuaikan mengikut persekitaran pasaran yang berbeza.
/*backtest start: 2022-12-29 00:00:00 end: 2024-01-04 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // Hull Cloud v2 by SEASIDE420 strategy("Hull Moving Average Cloud v2", shorttitle="hull_cloud_v2", overlay=true, commission_type=strategy.commission.percent, commission_value=0.075, default_qty_type=strategy.percent_of_equity, max_bars_back=200, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0) hullperiod=input(title="HullMA Period",defval=210, minval=1) Width=input(title="Cloud Width",defval=200, minval=2) price=input(ohlc4,title="Price data") FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2017, title = "From Year", minval = 2017) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) window() => true n2ma=2*wma(price,round(hullperiod/2)) nma=wma(price,hullperiod) diff=n2ma-nma sqn=round(sqrt(hullperiod)) n2ma1=2*wma(price[1],round(hullperiod/2)) nma1=wma(price[1],hullperiod) diff1=n2ma1-nma1 n1=wma(diff,sqn) n2=wma(diff1,sqn) Hull_Line=n1-n1[1]/n2[1] Hull_retracted=if(n1>n2) Hull_retracted=Hull_Line-Width else Hull_retracted=Hull_Line+Width c1=(Hull_retracted*n1)/price[1] c2=(Hull_retracted*n2)/price[1] c4=c1>c2?green:red c2p=plot(c2, color=black, linewidth=1) c3p=plot(price, color=black, linewidth=1) fill(c3p, c2p, color=c4, transp=75) plot(cross(c1, c2) ? c1 : na, style = circles,color=c4, linewidth = 4) if (price<c2) strategy.close("BUY", when=window()) if (price>c2) strategy.close("SELL", when=window()) if (price[1]>c2 and price[1]>c1) strategy.entry("BUY",strategy.long, when=window()) if (price[1]<c1 and price[1]<c2) strategy.entry("SELL",strategy.short, when=window())// /L'-, // ,'-. ` ```` / L '-, // . _,--dMMMM\ ` ` ` '`.. / '-, // : _,--, )MMMMMMMMM),. ` ,<> /_ '-,' // ; ___,--. \MM( `-' )M//MM\ ,',.; .-'* ; .' // | \MMMMMM) \MM\ ,dM//MMM/ ___ < ,; `. )`--' / // | \MM()M MMM)__ /MM(/MP' ___, \ \ ` `. `. /__, ,' // | MMMM/ MMMMMM( /MMMMP'__, \ | / `. `-,_\ / // | MM /MMM---' `--'_ \ |-' |/ `./ .\----.___ // | /MM' `--' __,- \"" |-' |_, `.__) . .F. )-. // | `--' \ \ |-' |_, _,-/ J . . . J-'-. `-., // | __ \`. | | | \ / _ |. . . . \ `-. F // | ___ / \ | `| ' __ \ | /-' F . . . . \ '` // | \ \ \ / | __ / \ | |,-' __,- J . . . . . \ // | | / |/ __,- \ ) \ / |_,- __,--' |. .__.----,' // | |/ ___ \ |'. |/ __,--' `.-;;;;;;;;;\ // | ___ \ \ | | ` __,--' /;;;;;;;;;;;;. // | \ \ |-'\ ' __,--' /;;;;;;;;;;;;;;\ // \ | | / | __,--' `--;;/ \;-'\ // \ | |/ __,--' / / \ \ // \ | __,--' / / \ \ // \|__,--' _,-;M-K, ,;-;\ // <;;;;;;;; '-;;;; // :D