Strategi ini berdasarkan kepada penunjuk Hull Moving Average yang dicipta oleh Alan Hull, yang tergolong dalam strategi trend berikut. Hull MA boleh mengurangkan lag purata bergerak dan bertindak balas terhadap perubahan harga dengan lebih cepat. Strategi ini menggunakan Hull MA untuk menentukan arah trend dan penapis tambahan untuk menjana isyarat perdagangan.
Mengira jangka pendek dan jangka panjang Hull MA. jangka pendek untuk arah perdagangan tertentu, jangka panjang untuk trend keseluruhan.
Apabila tempoh pendek Hull MAs menyeberang, menentukan pembalikan trend. penapis dengan arah trend jangka panjang.
Tambah harga penembusan melalui keadaan Hull MA untuk memastikan penembusan berjaya.
Tambah penapis kadar perubahan harga untuk mengelakkan kemasukan pecah yang tidak diingini.
Tetapkan stop loss dan ambil keuntungan untuk mengawal risiko.
Berbanding dengan purata bergerak mudah, kelebihan strategi ini termasuk:
Hull MA bertindak balas terhadap perubahan harga lebih cepat, mampu menangkap perubahan trend tepat pada masanya.
Struktur MA Hull Dual boleh menentukan trend pada kedua-dua jangka masa yang panjang dan pendek.
Penapis harga dan penapis kadar perubahan membantu mengelakkan penembusan palsu.
Stop loss dinamik dan mengambil keuntungan mengunci keuntungan dan mengawal risiko.
Risiko strategi ini:
Tetapan parameter yang tidak betul boleh terlepas perubahan trend harga.
Penghakiman trend keseluruhan yang salah boleh menyebabkan perdagangan kontra-trend.
Stop loss yang ditetapkan terlalu luas boleh menyebabkan kerugian besar.
Perdagangan yang terlalu kerap meningkatkan kos transaksi dan risiko tergelincir.
Ia boleh dioptimumkan dalam aspek berikut:
Mengoptimumkan tempoh Hull MA untuk mengimbangi kepekaan dan kelancaran.
Mengoptimumkan parameter masuk dan keluar untuk mencari nilai optimum.
Uji ketahanan parameter di instrument yang berbeza untuk meningkatkan kebolehsesuaian.
Menggabungkan jumlah untuk mengelakkan risiko perbezaan.
Tambah keadaan untuk meningkatkan kestabilan.
Secara keseluruhannya, strategi ini memanfaatkan daya tanggap Hull MA untuk mengikuti trend tepat pada masanya, dan mempunyai keuntungan yang kuat di bawah kawalan risiko.
/*backtest start: 2023-09-11 00:00:00 end: 2023-09-12 22:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //SeaSide420 strategy("SS420FX", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=720, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0) q=input(title="HullMA Short",defval=14) z=input(title="HullMA Long",defval=14) dt = input(defval=0.0010, title="Decision Threshold", type=float, step=0.0001) SL = input(defval=-50000.00, title="Stop Loss in $", type=float, step=1) TP = input(defval=100000.00, title="Target Point in $", type=float, step=1) ot=1 n2ma=2*wma(close,round(q/2)) nma=wma(close,q) diff=n2ma-nma sqn=round(sqrt(q)) n2ma1=2*wma(close[1],round(q/2)) nma1=wma(close[1], q) diff1=n2ma1-nma1 sqn1=round(sqrt(q)) n1=wma(diff,sqn) n2=wma(diff1,sqn) z2ma=2*wma(close[11],round(z/2)) zma=wma(close[11],z) ziff=n2ma-nma zqn=round(sqrt(z)) z2ma1=2*wma(close[12],round(z/2)) zma1=wma(close[12], z) ziff1=n2ma1-nma1 zqn1=round(sqrt(z)) z1=wma(diff,sqn) z2=wma(diff1,sqn) z1e=z1>z2?green:black z2e=z1>z2?black:red z3e=z1>z2?green:red n1e=plot(z1, title="HMA1", color=z1e, linewidth=2, offset=2) n2e=plot(z2, title="HMA2", color=z2e, linewidth=2, offset=2) fill(n1e, n2e, color=z3e, transp=80) confidence=(security(syminfo.tickerid, 'D', close)-security(syminfo.tickerid, 'D', close[1]))/security(syminfo.tickerid, 'D', close[1]) closelong = n1<n2 and close<n2 and confidence<dt or strategy.openprofit<SL or strategy.openprofit>TP if (closelong) strategy.close("Long") closeshort = n1>n2 and close>n2 and confidence>dt or strategy.openprofit<SL or strategy.openprofit>TP if (closeshort) strategy.close("Short") longCondition = n1>n2 and z1>z2 and strategy.opentrades<ot and confidence>dt and close>n1 if (longCondition) strategy.entry("Long",strategy.long) shortCondition = n1<n2 and z1<z2 and strategy.opentrades<ot and confidence<dt and close<n1 if (shortCondition) strategy.entry("Short",strategy.short)