Hull Moving Average Trend Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2023-09-16 18:41:33
Tag:

Gambaran umum

Hull Moving Average Trend Following Strategy menggunakan Hull Moving Average untuk menentukan arah tren pasar dan menghasilkan sinyal beli dan jual.

Prinsip-prinsip

Strategi ini menggunakan rata-rata bergerak Hull dan rata-rata bergerak sederhana untuk menentukan arah tren. Ketika periode Hull MA yang lebih pendek melintasi di atas periode Hull MA yang lebih lama, itu menghasilkan sinyal beli. Ketika Hull MA yang lebih pendek melintasi di bawah yang lebih lama, itu menghasilkan sinyal jual.

Rata-rata bergerak sederhana menentukan arah tren real-time. Ketika EMA yang lebih pendek melintasi di atas EMA yang lebih panjang, itu menunjukkan tren naik. Ketika EMA yang lebih pendek melintasi di bawah EMA yang lebih panjang, itu menunjukkan tren menurun. Perdagangan hanya dilakukan ketika sinyal Hull MA dan EMA setuju pada bias bullish atau bearish.

Selain itu, strategi ini menggunakan saluran tubuh K-line untuk mengukur fluktuasi pasar dan menghindari perdagangan dalam konsolidasi.

Keuntungan

  • Hull MA lebih sensitif dalam mendeteksi perubahan harga dan pergeseran tren awal.

  • Menggunakan Hull MA dan EMA menghilangkan sinyal palsu.

  • Saluran K-line menghindari perdagangan yang berlebihan di pasar sampingan.

  • Mengikuti tren memungkinkan menangkap keuntungan berkelanjutan saat tren meluas.

Risiko

  • Rata-rata bergerak memiliki keterlambatan dan mungkin melewatkan titik masuk pembalikan tren optimal.

  • Deteksi konsolidasi yang tidak akurat dapat menyebabkan perdagangan yang buruk.

  • Frekuensi perdagangan yang rendah mengarah pada dampak besar dari perdagangan yang kehilangan tunggal.

  • Tidak mampu memanfaatkan osilasi jangka pendek.

Manajemen Risiko

  • Mengoptimalkan periode MA untuk generasi sinyal tren yang tepat waktu.

  • Gunakan indikator lain seperti RSI dan BBANDS untuk menentukan konsolidasi.

  • Melakukan manajemen modal yang agresif untuk membatasi persentase kerugian per perdagangan.

  • Mengintegrasikan strategi lain untuk memanfaatkan keuntungan jangka pendek.

Ringkasan

Hull moving average trend following strategy secara efektif melacak tren jangka menengah hingga panjang melalui penggunaan gabungan Hull MA dan EMA. Ini mengumpulkan keuntungan sepanjang tren keuntungan dan keluar lebih awal sebelum pembalikan. Ini adalah strategi perdagangan kuantum yang sederhana dan praktis yang layak direkomendasikan.


/*backtest
start: 2023-08-16 00:00:00
end: 2023-09-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

// strategy(title='HULLMiguel 2019/ Strategy v3', shorttitle='HULLMiguel_2019_Strategy', overlay=true, pyramiding=0, default_qty_value=1000, initial_capital=1000, currency=currency.USD)

//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance Channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=input(false, title="Bar Channel On/Off")
ul2=plot(channel2?last8h:last8h==nz(last8h[1])?last8h:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level top", offset=0)
ll2=plot(channel2?lastl8:lastl8==nz(lastl8[1])?lastl8:na, color=blue, linewidth=1, style=linebr, title="Candle body resistance level bottom", offset=0)
//fill(ul2, ll2, color=black, transp=95, title="Candle body resistance Channel")

//-----------------Support and Resistance 
RST = input(title='Support / Resistance length:',  defval=15) 
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)
RT2 = plot(RSTT, color=RSTT != RSTT[1] ? na : red, linewidth=1, offset=+0)
RB2 = plot(RSTB, color=RSTB != RSTB[1] ? na : green, linewidth=1, offset=0)

//--------------------Trend colour ema------------------------------------------------// 
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0
plot_color = direction > 0  ? lime: direction < 0 ? red : na
plot(ema0, title="EMA", style=line, linewidth=3, color = plot_color)

//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0
plot_color2 = direction2 > 0  ? green: direction2 < 0 ? red : na
plot(ema02, title="EMA Signal 2", style=line, linewidth=2, color = plot_color2)

//=============Hull MA//
show_hma = input(false, title="Display Hull MA Set:")
hma_src = input(close, title="Hull MA's Source:")
hma_base_length = input(16, minval=1, title="Hull MA's Base Length:")
hma_length_scalar = input(10, minval=0, title="Hull MA's Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
plot(not show_hma ? na : hullma(hma_src, hma_base_length+hma_length_scalar*6), color=black, linewidth=5, title="Hull MA")
dif_close_hull= (close-hullma(hma_src, hma_base_length+hma_length_scalar*6))/close
Percent_dif = (dif_close_hull/(hullma(hma_src, hma_base_length+hma_length_scalar*6)))
//direction3 = Percent_dif>0 ? +1 : Percent_dif<0 ? -1 : 0
//plot_color3 = direction3 > 0  ? lime: direction3 < 0 ? red : na
//plot(dif_close_hull, title="dif close hull", style=line, linewidth=6, color = plot_color3)

//============ signal Generator ==================================//
Piriod=input('720')
ch1 = security(syminfo.tickerid, Piriod, open)
ch2 = security(syminfo.tickerid, Piriod, close)
plot(ch1, title="EMA Signal 2", style=line, linewidth=1, color = blue)
//longCondition = crossover(security(tickerid, Piriod, close),security(tickerid, Piriod, open))
//plot((close-ema02)/ema02+close)
longCondition = direction > 0 and direction2> 0

if (longCondition)
    strategy.entry("BUY", strategy.long)
//shortCondition = crossunder(security(tickerid, Piriod, close),security(tickerid, Piriod, open))
shortCondition = direction < 0 and direction2 < 0

if (shortCondition)
    strategy.entry("SELL", strategy.short)

///////////////////////////////////////////////////////////////////////////////////////////

Lebih banyak