Strategi Mengikuti Trend Purata Pergerakan Hull


Tarikh penciptaan: 2023-09-16 18:41:33 Akhirnya diubah suai: 2023-09-16 18:41:33
Salin: 0 Bilangan klik: 696
1
fokus pada
1617
Pengikut

Gambaran keseluruhan

Hull Moving Average Trend Tracking Strategi adalah strategi perdagangan kuantitatif yang menggunakan Hull Moving Average untuk menentukan arah trend pasaran dan menghantar isyarat beli dan jual. Strategi ini dapat menangkap trend garis tengah dan panjang, membina kedudukan di peringkat permulaan trend, dan menghentikan posisi sebelum trend berbalik.

Prinsip

Strategi ini menggunakan Hull Moving Average dan Ordinary Moving Average untuk menentukan arah trend. Ia memberi isyarat untuk membeli apabila Hull MA jangka pendek melintasi Hull MA jangka panjang. Ia memberi isyarat untuk menjual apabila Hull MA jangka pendek melintasi Hull MA jangka panjang.

Rata-rata bergerak biasa digunakan untuk menentukan arah trend segera. Apabila EMA jangka pendek melintasi EMA jangka panjang, ia adalah bullish, dan apabila EMA jangka pendek melintasi EMA jangka panjang, ia adalah bearish.

Selain itu, strategi ini juga menggunakan saluran entiti K untuk menilai kadar turun naik pasaran, untuk mengelakkan perdagangan yang salah di pasaran yang bergolak. Hanya penembusan saluran harga yang boleh dipertimbangkan untuk meletakkan kedudukan.

Kelebihan

  • Hull Moving Average lebih sensitif terhadap perubahan harga dan dapat menangkap perubahan trend lebih awal.

  • Gabungan menggunakan Hull MA dan EMA, boleh menyaring isyarat palsu.

  • Menggunakan saluran K untuk menilai getaran dan mengelakkan perdagangan yang kerap dalam penyusunan semula.

  • Menggunakan kaedah trend tracking, ia mampu menangkap keuntungan dari trend garis tengah dan panjang secara berterusan.

Risiko

  • Rata-rata bergerak mempunyai keterlambatan dan mungkin terlepas titik masuk terbaik untuk pembalikan trend.

  • Ini adalah satu-satunya cara yang boleh digunakan untuk membetulkan keadaan.

  • Perdagangan yang lebih kecil dan mudah terjejas oleh kerugian tunggal.

  • Tidak boleh menggunakan gelombang pendek untuk keuntungan.

Cara untuk menangani masalah ini

  • Mengoptimumkan parameter kitaran purata bergerak, mengejar trend tindak balas tepat pada masanya.

  • Kaedah lain yang boleh digunakan untuk menilai getaran adalah RSI, BBANDS dan lain-lain.

  • Menggunakan pengurusan wang yang aktif untuk mengawal kadar kerugian tunggal.

  • Ia juga boleh membantu dengan menggunakan strategi lain untuk menangkap keuntungan jangka pendek.

ringkaskan

Hull Moving Average Trend Tracking Strategi Menggunakan gabungan Hull MA dan EMA, dapat mengesan trend garis tengah dengan berkesan. Mengekalkan keuntungan yang terkumpul dalam trend keuntungan, dan berhenti secepat mungkin sebelum trend berbalik. Ini adalah strategi perdagangan kuantitatif yang mudah dan praktikal yang disyorkan.

Kod sumber strategi
/*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)

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