Hull Moving Average Trend Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2023-09-19 16:40:00
Tag:

Gambaran umum

Strategi ini didasarkan pada indikator Hull Moving Average yang ditemukan oleh Alan Hull, yang termasuk dalam strategi trend following. Hull MA dapat mengurangi lag dari moving average dan merespons perubahan harga lebih cepat. Strategi ini menggunakan Hull MA untuk menentukan arah tren dan filter tambahan untuk menghasilkan sinyal perdagangan.

Prinsip Strategi

  1. Menghitung jangka pendek dan jangka panjang Hull MA. jangka pendek untuk arah perdagangan tertentu, jangka panjang untuk tren keseluruhan.

  2. Ketika periode pendek Hull MAs menyeberang, menentukan pembalikan tren. Filter dengan arah tren jangka panjang.

  3. Tambahkan harga penembusan melalui kondisi Hull MA untuk memastikan penembusan yang sukses.

  4. Tambahkan filter tingkat perubahan harga untuk menghindari entri breakout yang tidak diinginkan.

  5. Tetapkan stop loss dan ambil keuntungan untuk mengendalikan risiko.

Analisis Keuntungan

Dibandingkan dengan rata-rata bergerak sederhana, keuntungan dari strategi ini meliputi:

  1. Hull MA merespon perubahan harga lebih cepat, mampu menangkap perubahan tren tepat waktu.

  2. Struktur Dual Hull MA dapat menentukan tren pada jangka waktu panjang dan pendek.

  3. Filter price breakout dan change rate membantu menghindari breakout palsu.

  4. Stop loss dinamis dan mengambil keuntungan mengunci keuntungan dan mengontrol risiko.

Analisis Risiko

Risiko dari strategi ini:

  1. Pengaturan parameter yang tidak benar dapat melewatkan perubahan tren harga.

  2. Penilaian tren keseluruhan yang salah dapat menyebabkan perdagangan yang bertentangan dengan tren.

  3. Stop loss yang diatur terlalu lebar dapat menyebabkan kerugian besar.

  4. Perdagangan yang terlalu sering meningkatkan biaya transaksi dan risiko slippage.

Arahan Optimasi

Hal ini dapat dioptimalkan dalam aspek berikut:

  1. Mengoptimalkan periode Hull MA untuk menyeimbangkan sensitivitas dan kelancaran.

  2. Mengoptimalkan parameter masuk dan keluar untuk menemukan nilai optimal.

  3. Uji ketahanan parameter pada instrumen yang berbeda untuk meningkatkan kemampuan beradaptasi.

  4. Menggabungkan volume untuk menghindari risiko divergensi.

  5. Tambahkan kondisi untuk meningkatkan stabilitas.

Ringkasan

Secara keseluruhan, strategi ini memanfaatkan responsif Hull MA untuk mengikuti tren tepat waktu, dan memiliki profitabilitas yang kuat di bawah pengendalian 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)

Lebih banyak