Hull Moving Average Trend Tracking adalah strategi perdagangan kuantitatif yang menggunakan Hull Moving Average untuk menentukan arah tren pasar dan mengirimkan sinyal beli dan jual. Strategi ini mampu menangkap tren garis tengah dan panjang, membangun posisi di awal tren, dan menghentikan posisi sebelum tren berbalik.
Strategi ini menggunakan Hull Moving Average dan Ordinary Moving Average untuk menentukan arah tren. Ini adalah sinyal beli ketika Hull MA periode pendek melewati Hull MA periode panjang. Ini adalah sinyal jual ketika Hull MA periode pendek melewati Hull MA periode panjang.
Rata-rata bergerak biasa digunakan untuk menentukan arah tren saat ini. Ketika EMA berjangka pendek melintasi EMA berjangka panjang, itu adalah bullish. Ketika EMA berjangka pendek melintasi EMA berjangka panjang, itu adalah bearish.
Selain itu, strategi ini juga menggunakan saluran entitas K-line untuk menilai volatilitas pasar, menghindari kesalahan perdagangan di pasar yang bergoyang. Hanya ketika harga menembus saluran, maka pertimbangan untuk membangun posisi.
Hull Moving Average lebih sensitif terhadap perubahan harga dan dapat menangkap perubahan tren lebih awal.
Kombinasi menggunakan Hull MA dan EMA, dapat memfilter sinyal palsu.
Menggunakan saluran K untuk menilai getaran, untuk menghindari perdagangan yang sering terjadi dalam pencatatan.
Menggunakan metode pelacakan tren untuk terus menangkap keuntungan dari tren garis tengah dan panjang.
Rata-rata bergerak memiliki keterlambatan dan mungkin kehilangan titik masuk terbaik untuk membalikkan tren.
Ini adalah salah satu indikator yang dapat digunakan untuk mengevaluasi pergerakan.
Jumlah transaksi yang lebih sedikit, lebih rentan terhadap kerugian tunggal.
Tidak dapat memanfaatkan gelombang gelombang pendek secara efektif.
Mengoptimalkan parameter periodik dari moving averages, mengejar tren reaksi tepat waktu.
Indikator lain yang dapat digunakan untuk menilai getaran, seperti RSI, BBANDS, dll.
Menggunakan manajemen dana yang aktif untuk mengendalikan rasio kerugian tunggal.
Selain itu, ada beberapa strategi lain yang dapat digunakan untuk menangkap keuntungan jangka pendek.
Strategi pelacakan tren rata-rata bergerak Hull, melalui penggunaan kombinasi Hull MA dan EMA, dapat secara efektif melacak tren garis tengah. Mengambil keuntungan terus-menerus dalam tren yang menguntungkan, dan berhenti secepat mungkin sebelum tren berbalik. Ini adalah strategi perdagangan kuantitatif yang sederhana dan praktis yang disarankan.
/*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)
///////////////////////////////////////////////////////////////////////////////////////////