Strategi ini membangun saluran harga berdasarkan indikator Bollinger Bands dan indikator Momentum Oscillating Moving Average, menghasilkan sinyal perdagangan ketika harga menembus batas atas atau bawah saluran.
Strategi ini membangun saluran harga menggunakan Bollinger middle band dan Momentum Oscillating Moving Average. Band tengah mengadopsi 21-periode Bollinger middle band. Band atas dan bawah membentang ke atas dan ke bawah untuk rentang persentase masing-masing. Momentum Oscillating Moving Average membentang atau menyusut di dekat tingkat overbought atau oversold berdasarkan band tengah. Ketika harga menembus band atas, pergi panjang. Ketika harga menembus band bawah, pergi pendek.
Secara khusus, Bollinger middle band dihitung sebagai:
Middle Band = Moving Average of N-period closing price
Band atas dan band bawah dihitung sebagai berikut:
Upper Band = Middle Band + WidthDev * N-period Bollinger standard deviation
Lower Band = Middle Band - WidthDev * N-period Bollinger standard deviation
Di mana WidthDev mewakili rentang persentase yang diperpanjang ke atas dan ke bawah.
Momentum Oscillating Moving Average membentang atau menyusut berdasarkan band tengah sesuai dengan aturan tertentu. Ketika pasar menjadi overbought atau oversold, ia membentang lebih jauh dari band tengah untuk memberikan lebih banyak peluang untuk pergi panjang atau pergi pendek. Ketika pasar tenang, ia berkontraksi menuju band tengah.
Singkatnya, strategi ini menggambarkan saluran harga menggunakan Bollinger Bands dan menentukan waktu masuk menggunakan Momentum Oscillating Moving Average, mewujudkan perdagangan breakout.
Mencerminkan volatilitas pasar Bollinger Band dapat mencerminkan volatilitas pasar dan perubahan tren secara real time. Band atas dan bawah beradaptasi berdasarkan perubahan volatilitas.
Mengurangi sinyal palsu Efek peregangan Momentum Oscillating Moving Average dapat secara efektif mengurangi sinyal palsu yang dihasilkan oleh Bollinger Bands. Dengan memperluas lebar saluran BB dan memperpanjang periode penahan, keuntungan yang lebih besar dapat diperoleh.
Saatnya menangkap pembalikan tren Penyambungan antara BB band atas dan bawah dan Momentum Oscillating Moving Average memberikan waktu dan harga yang menguntungkan untuk menghasilkan sinyal perdagangan, yang dapat secara efektif menangkap penyesuaian bull dan bear utama dan menangkap pembalikan tren tepat waktu.
Parameter BB yang tidak benar Pengaturan parameter BB yang tidak benar seperti periode perhitungan dan pengganda standar deviasi dapat menyebabkan jarak antara band terlalu lebar atau terlalu sempit, menghasilkan sinyal palsu yang berlebihan dan merusak stabilitas strategi.
Amplitudo osilasi yang berlebihan Amplitudo osilasi yang terlalu besar dari Momentum Oscillating Moving Average dapat mengakibatkan titik stop loss terlalu jauh, meningkatkan risiko kerugian.
Pengembalian yang tertunda
Ketika pasar berosilasi atau tidak memiliki tren, sinyal perdagangan dari BB dan Momentum Oscillating Moving Average mungkin tertinggal, gagal mencerminkan perubahan harga dalam waktu, menyebabkan risiko pembalikan tertunda.
Mengoptimalkan parameter BB Uji periode yang berbeda, pengganda deviasi standar untuk menemukan kombinasi parameter optimal yang memberikan frekuensi sinyal yang lebih baik dan lebih sedikit sinyal palsu.
Mengoptimalkan Parameter Momentum Oscillating Moving Average Uji amplitudo dan periode osilasi yang berbeda untuk menemukan parameter yang lebih baik menangkap tren dan mengurangi lag sinyal.
Tambahkan kondisi filter Tambahkan filter seperti volume perdagangan berdasarkan sinyal silang untuk mengecualikan sinyal perdagangan yang tidak efisien.
Kombinasi strategi Menggabungkan strategi ini dengan strategi stop loss lainnya atau strategi pembelajaran mesin untuk lebih mengendalikan risiko dan meningkatkan stabilitas.
Strategi ini menggabungkan kekuatan adaptif Bollinger Bands dan Momentum Oscillating Moving Average, mencapai integrasi tren mengikuti dan menangkap pembalikan tren. Dengan menyeimbangkan volatilitas pasar dan fleksibilitas sinyal perdagangan, ia mewujudkan perdagangan breakout yang stabil dan efektif. Optimasi parameter dan pengendalian risiko juga penting untuk menguji dan menyesuaikan sesuai dengan lingkungan pasar yang bervariasi.
/*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