
Strategi ini didasarkan pada sinyal silang dari Hull Moving Average (HMA). Hull Moving Average adalah indikator teknis yang dirancang untuk mengurangi keterlambatan rata-rata bergerak, dikembangkan oleh Alan Hull. Strategi ini menggunakan dua garis HMA dengan periode yang berbeda, menghasilkan sinyal beli ketika HMA dengan periode yang lebih pendek melintasi HMA dengan periode yang lebih lama dari bawah ke atas, dan sebaliknya menghasilkan sinyal jual.
Proses perhitungan HMA adalah sebagai berikut:
Hull Moving Average memiliki keterlambatan yang lebih kecil dibandingkan dengan Simple Moving Average dan Weighted Moving Average, sehingga dapat bereaksi lebih cepat terhadap perubahan harga, meningkatkan sensitivitas strategi.
Sinyal yang dihasilkan oleh dua garis HMA yang berperiode berbeda dapat secara efektif menyaring beberapa suara dan sinyal palsu, meningkatkan keandalan sinyal.
Parameter dapat disesuaikan, dengan menyesuaikan parameter siklus HMA, dapat disesuaikan dengan pasar dan varietas perdagangan yang berbeda.
Hull Moving Average adalah indikator yang tertinggal, yang dapat memberikan sinyal yang salah pada tahap awal pembalikan tren.
Pilihan parameter yang tidak tepat dapat menyebabkan kinerja strategi yang buruk. Periode yang terlalu panjang dapat menyebabkan reaksi strategi yang lambat, dan periode yang terlalu pendek dapat menyebabkan terlalu banyak sinyal palsu.
Seperti semua strategi yang didasarkan pada satu indikator, strategi ini dapat berkinerja buruk di pasar yang bergoyang, menghasilkan lebih banyak sinyal palsu dan perdagangan yang merugikan.
Faktor-faktor teknis atau fundamental lainnya dapat dipertimbangkan untuk diperkenalkan sebagai syarat penyaringan, seperti volume transaksi, indikator tren, dan lain-lain, untuk lebih mengkonfirmasi efektivitas sinyal silang HMA.
Untuk optimasi parameter, metode seperti algoritma genetik, pencarian grid, dan lain-lain dapat digunakan untuk mengoptimalkan parameter pada data historis untuk menemukan kombinasi parameter yang paling cocok untuk pasar saat ini.
Menambahkan mekanisme stop loss dan stop loss ke dalam strategi untuk mengontrol risiko dan keuntungan dari satu transaksi.
Mengingat tren pasar, Anda dapat menilai indikator dengan memasukkan tren pasar, berdagang di pasar yang sedang tren, dan menghindari pasar yang bergoyang.
Strategi crossover rata-rata bergerak Hull adalah strategi perdagangan yang sederhana dan mudah digunakan, yang dapat menangkap perubahan harga dengan cepat dan tepat waktu melalui sifat responsif HMA. Namun, seperti semua strategi, ia juga memiliki keterbatasan, kinerjanya dipengaruhi oleh jenis pasar dan pilihan parameter. Dalam aplikasi praktis, ia dapat dikombinasikan dengan metode analisis lainnya untuk mengkonfirmasi sinyal lebih lanjut.
/*backtest
start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//Basic Hull Ma Pack tinkered by InSilico
strategy("RKTD BETA - Hull Suite by InSilico", overlay=true)
//INPUT
src = input(close, title="Source")
modeSwitch = input("Ehma", title="Hull Variation", options=["Hma", "Thma", "Ehma"])
length = input(200, title="Length(180-200 for floating S/R , 55 for swing entry)")
lengthMult = input(1.0, title="Length multiplier (Used to view higher timeframes with straight band)")
useHtf = input(false, title="Show Hull MA from X timeframe? (good for scalping)")
htf = input("240", title="Higher timeframe", type=input.resolution)
switchColor = input(true, "Color Hull according to trend?")
candleCol = input(false,title="Color candles based on Hull's Trend?")
visualSwitch = input(true, title="Show as a Band?")
thicknesSwitch = input(1, title="Line Thickness")
transpSwitch = input(40, title="Band Transparency",step=5)
// Alert Messages
longAlertMessage = '{"base": "BTC", "quote": "USDT", "price": ' + tostring(close) + ', "action": "long", "orderType": "market", "close":true}'
shortAlertMessage = '{"base": "BTC", "quote": "USDT", "price": ' + tostring(close) + ', "action": "short", "orderType": "market", "close":true}'
//FUNCTIONS
//HMA
HMA(_src, _length) => wma(2 * wma(_src, _length / 2) - wma(_src, _length), round(sqrt(_length)))
//EHMA
EHMA(_src, _length) => ema(2 * ema(_src, _length / 2) - ema(_src, _length), round(sqrt(_length)))
//THMA
THMA(_src, _length) => wma(wma(_src,_length / 3) * 3 - wma(_src, _length / 2) - wma(_src, _length), _length)
//SWITCH
Mode(modeSwitch, src, len) =>
modeSwitch == "Hma" ? HMA(src, len) :
modeSwitch == "Ehma" ? EHMA(src, len) :
modeSwitch == "Thma" ? THMA(src, len/2) : na
//OUT
_hull = Mode(modeSwitch, src, int(length * lengthMult))
HULL = useHtf ? security(syminfo.ticker, htf, _hull) : _hull
MHULL = HULL[0]
SHULL = HULL[2]
//COLOR
hullColor = switchColor ? (HULL > HULL[2] ? #00ff00 : #ff0000) : #ff9800
//PLOT
///< Frame
Fi1 = plot(MHULL, title="MHULL", color=hullColor, linewidth=thicknesSwitch, transp=50)
Fi2 = plot(visualSwitch ? SHULL : na, title="SHULL", color=hullColor, linewidth=thicknesSwitch, transp=50)
alertcondition(crossover(MHULL, SHULL), title="Hull trending up.", message="Hull trending up.")
alertcondition(crossover(SHULL, MHULL), title="Hull trending down.", message="Hull trending down.")
///< Ending Filler
fill(Fi1, Fi2, title="Band Filler", color=hullColor, transp=transpSwitch)
///BARCOLOR
barcolor(color = candleCol ? (switchColor ? hullColor : na) : na)
// Define Buy and Sell Conditions based on crossovers
buyCondition = crossover(MHULL, SHULL)
sellCondition = crossunder(MHULL, SHULL)
// Plotting the Hull Moving Average (HMA)
plot(MHULL, title="MHULL", color=hullColor, linewidth=thicknesSwitch)
plot(SHULL, title="SHULL", color=hullColor, linewidth=thicknesSwitch, transp=transpSwitch)
fill(Fi1, Fi2, title="Band Filler", color=hullColor, transp=transpSwitch)
// Execute Strategy based on Buy and Sell Conditions
strategy.entry("Buy", strategy.long, when=buyCondition, alert_message=longAlertMessage)
strategy.entry("Sell", strategy.short, when=sellCondition, alert_message=shortAlertMessage)
// Additional elements like bar coloring remain unchanged
barcolor(color = candleCol ? (switchColor ? hullColor : na) : na)