Strategi ini didasarkan pada indikator Hull Moving Average untuk membangun tren mengikuti sistem perdagangan.
Strategi ini menggunakan Hull Moving Average sebagai indikator teknis utama. Hull Moving Average diusulkan oleh trader Amerika Alan Hull pada tahun 2005.
Secara khusus, Hull Moving Average berisi dua rata-rata - satu adalah MA moving average n) periode n, yang lainnya adalah MA moving average n/2) periode n/2. Perbedaan antara kedua moving average membentuk kurva perbedaan Hull.
Ketika kurva Hull miring ke atas, rata-rata bergerak periode yang lebih pendek melintasi di atas periode yang lebih lama, memberikan sinyal panjang.
Strategi ini menetapkan periode n dari kurva Hull menjadi 16. Ini menghitung MA 8-periode (n/2=8), MA 16-periode, dan perbedaan antara mereka untuk mendapatkan kurva Hull. Kemudian mengambil MA 4-periode (akar kuadrat dari n=4) dari kurva Hull itu sendiri. Ketika kurva Hull melintasi ke atas, itu panjang. Ketika kurva Hull melintasi ke bawah, itu pendek.
Dibandingkan dengan rata-rata bergerak biasa, rata-rata bergerak Hull memiliki keuntungan berikut:
Dengan menggunakan fungsi akar kuadrat, kurva Hull merangkul tindakan harga lebih dekat dan lebih cepat untuk menangkap pembalikan tren.
Kurva Hull dapat menyaring beberapa kebisingan dan menghindari perdagangan yang tidak perlu.
Kurva Hull hanya membutuhkan satu parameter n, sehingga pengoptimalan lebih mudah.
Nilai n dari kurva Hull dapat disesuaikan untuk pasar yang berbeda dan disesuaikan agar sesuai dengan instrumen yang berbeda.
Sistem Hull kuat dan menghindari pemilihan manual, mematuhi konsistensi sistem perdagangan mekanis.
Meskipun memiliki keuntungan dibandingkan sistem rata-rata bergerak, sistem Hull masih membawa risiko berikut:
Sebagai strategi mengejar tren, sistem Hull cenderung berhenti keluar selama perubahan tren drastis.
Potensi overtrading: Respon cepat dari kurva Hull dapat meningkatkan frekuensi perdagangan dan menyebabkan overtrading.
Memiliki hanya satu parameter n dapat menyebabkan risiko kurva yang cocok dari overoptimization.
Efektivitas yang bervariasi antara instrumen. Sistem Hull bekerja kurang baik untuk instrumen dengan volatilitas tinggi. Parameter perlu disesuaikan.
Berdasarkan keterbatasan di atas, strategi rata-rata bergerak Hull dapat ditingkatkan dalam aspek berikut:
Tambahkan filter dengan indikator tambahan untuk menghindari persilangan palsu. MACD, KD dll dapat membantu mengukur tren.
Tambahkan strategi stop loss untuk mengendalikan kerugian perdagangan tunggal, misalnya dengan trailing stop atau take profit stop.
Optimalkan pilihan parameter n untuk mencegah overoptimization.
Gunakan model pembelajaran mesin seperti RNN untuk secara dinamis mengoptimalkan nilai parameter.
Mengoptimalkan parameter secara terpisah untuk instrumen yang berbeda menggunakan pemasangan pembelajaran mesin.
Optimalkan ukuran posisi untuk mengurangi frekuensi perdagangan.
Strategi Hull Moving Average adalah strategi trend berikut yang khas. Meskipun memiliki keuntungannya dibandingkan dengan MAs, ia masih menghadapi masalah seperti overoptimization dan overtrading. Kita dapat meningkatkan strategi melalui optimasi parameter, stop loss, ukuran posisi dll. Sistem Hull sederhana dan praktis.
/*backtest start: 2023-10-25 00:00:00 end: 2023-11-01 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy(title = "Noro's HullMA Strategy", shorttitle = "HullMA str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") n = input(title = "HullMA period", defval=16) fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //HullMA n2ma=2*wma(close,round(n/2)) nma=wma(close,n) diff=n2ma-nma sqn=round(sqrt(n)) n2ma1=2*wma(close[1],round(n/2)) nma1=wma(close[1],n) diff1=n2ma1-nma1 sqn1=round(sqrt(n)) n1=wma(diff,sqn) n2=wma(diff1,sqn) c=n1>n2?green:red ma=plot(n1,color=c) //Trading lot = 0.0 lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1] if n1 > n2 strategy.entry("Long", strategy.long, needlong == false ? 0 : lot) if n1 < n2 strategy.entry("Short", strategy.short, needshort == false ? 0 : lot) if true strategy.close_all()