
HullMA adalah strategi pelacakan tren yang didasarkan pada persilangan dua rata-rata bergerak. Strategi ini menggunakan WMA yang berbobot untuk membangun sistem rata-rata bergerak ganda dan menghasilkan sinyal perdagangan saat mereka bersilang.
HullMA cross-trend strategi menggunakan tiga garis WMA dengan periode yang berbeda, termasuk wma1, wma2 dan wma3. Wma2 dan wma3 membangun sistem rata-rata bergerak ganda, dengan sinyal bullish ketika wma2 melewati wma3 dan sinyal bearish ketika wma2 melewati wma3.
Strategi ini menggunakan Hull Moving Average untuk memperkuat penilaian sinyal secara tambahan. Secara khusus, ia menghitung diferensial dua kali n2ma dan nma dari rata-rata bergerak bertimbangan 2 hari, dan mengukur perubahan dalam nilai diferensial. Sinyal bullish dikonfirmasi hanya jika diferensial naik, dan sinyal bearish dikonfirmasi hanya jika diferensial turun.
Strategi ini menggabungkan penilaian harga. Hanya jika harga lebih tinggi dari harga hari sebelumnya, sinyal bullish akan dikonfirmasi untuk menghasilkan lebih banyak pesanan. Hanya jika harga lebih rendah dari harga hari sebelumnya, sinyal bearish akan dikonfirmasi untuk menghasilkan pesanan.
Strategi tren crossover HullMA dengan crossover dua rata-rata bergerak dan penilaian harga dapat secara efektif menyingkirkan sinyal palsu, yang merupakan keunggulan terbesarnya. Selain itu, strategi ini menggunakan tiga rata-rata bergerak dengan periode yang berbeda untuk menangkap berbagai tingkat tren, yang dapat masuk ke pasar pada awal tren.
HullMA crossover sebagai salah satu strategi trend-following yang cenderung menghasilkan lebih banyak transaksi dan slippage loss dalam situasi konsolidasi. Selain itu, crossover dua rata-rata bergerak terlalu sensitif dan mungkin mengirimkan sinyal yang salah di sideways.
Strategi tren silang HullMA dengan dua rata-rata bergerak dapat dioptimalkan dari beberapa aspek berikut:
Mengoptimalkan parameter moving average untuk menemukan kombinasi optimal
Meningkatkan filter seperti volume transaksi atau volatilitas, untuk mengecualikan terobosan palsu
Meningkatkan kualitas sinyal, dikombinasikan dengan indikator lain sebagai penilaian tambahan
Parameter siklus rata-rata bergerak yang dioptimalkan secara dinamis
HullMA crossover adalah strategi yang stabil dan dapat diandalkan untuk trend tracking secara keseluruhan. Ini menggabungkan crossover dan harga untuk menghasilkan sinyal berkualitas tinggi. Dengan pengoptimalan parameter dan penyaringan tambahan, Anda dapat mengurangi lebih jauh sinyal yang salah sehingga Anda mendapatkan kinerja strategi yang lebih baik.
/*backtest
start: 2023-02-25 00:00:00
end: 2024-02-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("ZendicatoR", overlay=true)
dt = input(defval=0.0010, title="Decision Threshold", type=float, step=0.0001)
keh=input(title="Double HullMA Cross",defval=7, minval=1)
che1=input(title="MA 1",defval=34,minval=1)
che2=input(title="MA 2",defval=144,minval=1)
che3=input(title="MA 3",defval=377,minval=1)
amnt=input(title="TP ($)",defval=4200,minval=1)
wma1=wma(close,che1)
wma2=wma(close,che2)
wma3=wma(close,che3)
tms=10000000000000
A=request.security(syminfo.tickerid, 'D', close)*tms
B=request.security(syminfo.tickerid, 'D', close[1])*tms
C=A>B?green:red
D=wma2>wma3?green:red
plot(wma1,style=line,color=C,linewidth=4)
p1=plot(wma2,style=line,color=D)
p2=plot(wma3,style=line,color=D)
fill(p1, p2, color=D, transp=75)
n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma,sqn=round(sqrt(keh))
n2ma1=2*wma(close[2],round(keh/2))
nma1=wma(close[2],keh)
diff1=n2ma1-nma1,sqn1=round(sqrt(keh))
n1=wma(diff,sqn)*tms
n2=wma(diff1,sqn)*tms
closelong = A*tms<B*tms and n2*tms>n1*tms and strategy.openprofit>amnt
if (closelong)
strategy.close("Long")
closeshort = A*tms>B*tms and n1*tms>n2*tms and strategy.openprofit>amnt
if (closeshort)
strategy.close("Short")
longCondition = A*tms>B*tms and n1*tms>n2*tms
if (longCondition)
strategy.entry("Long",strategy.long)
shortCondition = A*tms<B*tms and n1*tms<n2*tms
if (shortCondition)
strategy.entry("Short",strategy.short)