Hull Moving Average Crossover Strategi

Penulis:ChaoZhang, Tarikh: 2024-03-22 14:57:10
Tag:

img

Ringkasan

Strategi ini adalah berdasarkan isyarat silang Hull Moving Average (HMA). Hull Moving Average adalah penunjuk teknikal yang dibangunkan oleh Alan Hull, yang bertujuan untuk mengurangkan kelewatan purata bergerak tradisional. Strategi ini menggunakan dua HMA dengan tempoh yang berbeza. Isyarat beli dihasilkan apabila HMA jangka pendek melintasi di atas HMA jangka panjang, dan isyarat jual dihasilkan apabila sebaliknya berlaku.

Prinsip

  1. Pengiraan Purata Bergerak Hull (HMA)

HMA dikira seperti berikut:

  • Pertama, mengira Purata Bergerak Bertimbang (WMA) harga dengan tempoh separuh parameter input length
  • Kemudian, mengira WMA WMA sebelumnya dengan tempoh panjang
  • Gunakan formula: HMA = 2 * WMA ((panjang/2) - WMA ((panjang)
  • Mengira WMA hasil di atas lagi dengan tempoh akar persegi panjang untuk mendapatkan HMA akhir
  1. Menghasilkan Isyarat Dagangan
  • Apabila harga penutupan melintasi di atas HMA, isyarat beli dihasilkan
  • Apabila harga penutupan melintasi di bawah HMA, isyarat jual dihasilkan
  1. Pelaksanaan Perdagangan Berdasarkan Isyarat
  • Isyarat beli: Buka kedudukan panjang
  • Isyarat jual: Buka kedudukan pendek

Kelebihan

  1. Berbanding dengan Purata Bergerak Sederhana dan Purata Bergerak Bertimbang, Purata Bergerak Hull mempunyai kelewatan yang lebih rendah, oleh itu ia dapat bertindak balas dengan lebih cepat terhadap perubahan harga, meningkatkan daya respon strategi.

  2. Dengan menggunakan persilangan dua HMA dengan tempoh yang berbeza untuk menghasilkan isyarat, banyak bunyi bising dan isyarat palsu dapat disaring dengan berkesan, meningkatkan kebolehpercayaan isyarat.

  3. Parameternya boleh disesuaikan. Dengan menyesuaikan parameter tempoh HMA, strategi boleh disesuaikan dengan pasaran dan instrumen perdagangan yang berbeza.

Risiko

  1. Hull Moving Average adalah penunjuk yang ketinggalan, yang boleh menghasilkan isyarat palsu pada peringkat awal pembalikan trend.

  2. Pemilihan parameter yang tidak sesuai boleh membawa kepada prestasi strategi yang buruk. Jika tempohnya terlalu lama, strategi akan lambat dalam bertindak balas; jika tempohnya terlalu pendek, ia boleh membawa kepada isyarat palsu yang berlebihan.

  3. Seperti semua strategi berdasarkan satu petunjuk, strategi ini mungkin tidak berfungsi dengan baik di pasaran sampingan, menghasilkan lebih banyak isyarat palsu dan kehilangan perdagangan.

Arahan pengoptimuman

  1. Pertimbangkan untuk memperkenalkan penunjuk teknikal atau faktor asas lain sebagai penapis, seperti jumlah dagangan, penunjuk trend, dan lain-lain, untuk mengesahkan lagi kesahihan isyarat silang HMA.

  2. Untuk pengoptimuman parameter, kaedah seperti algoritma genetik dan carian grid boleh digunakan untuk mencari kombinasi parameter optimum pada data sejarah yang paling sesuai dengan pasaran semasa.

  3. Menggabungkan mekanisme stop-loss dan mengambil keuntungan ke dalam strategi untuk mengawal risiko dan pulangan setiap perdagangan.

  4. Pertimbangkan trend pasaran. Dengan memperkenalkan penunjuk untuk menilai trend pasaran, seseorang boleh berdagang di pasaran trend dan mengelakkan pasaran sampingan.

Ringkasan

Strategi Hull Moving Average Crossover adalah strategi perdagangan yang mudah dan mudah digunakan. Dengan ciri tindak balas cepat HMA, ia dapat menangkap perubahan harga dengan cara yang tepat pada masanya. Walau bagaimanapun, seperti semua strategi, ia juga mempunyai keterbatasan dan prestasi akan dipengaruhi oleh jenis pasaran dan pemilihan parameter. Dalam aplikasi praktikal, ia boleh digabungkan dengan kaedah analisis lain untuk mengesahkan isyarat lebih lanjut. Pada masa yang sama, langkah-langkah kawalan risiko yang munasabah, seperti stop-loss dan mengambil keuntungan, pengurusan kedudukan, dll., juga merupakan bahagian yang sangat diperlukan untuk operasi stabil strategi.


/*backtest
start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//Basic Hull Ma Pack tinkered by InSilico 
strategy("RKTD BETA - Hull Suite by InSilico", overlay=true)

//INPUT
src = input(close, title="Source")
modeSwitch = input("Ehma", title="Hull Variation", options=["Hma", "Thma", "Ehma"])
length = input(200, title="Length(180-200 for floating S/R , 55 for swing entry)")
lengthMult = input(1.0, title="Length multiplier (Used to view higher timeframes with straight band)")

useHtf = input(false, title="Show Hull MA from X timeframe? (good for scalping)")
htf = input("240", title="Higher timeframe", type=input.resolution)

switchColor = input(true, "Color Hull according to trend?")
candleCol = input(false,title="Color candles based on Hull's Trend?")
visualSwitch  = input(true, title="Show as a Band?")
thicknesSwitch = input(1, title="Line Thickness")
transpSwitch = input(40, title="Band Transparency",step=5)

// Alert Messages
longAlertMessage = '{"base": "BTC", "quote": "USDT", "price": ' + tostring(close) + ', "action": "long", "orderType": "market", "close":true}'
shortAlertMessage = '{"base": "BTC", "quote": "USDT", "price": ' + tostring(close) + ', "action": "short", "orderType": "market", "close":true}'

//FUNCTIONS
//HMA
HMA(_src, _length) =>  wma(2 * wma(_src, _length / 2) - wma(_src, _length), round(sqrt(_length)))
//EHMA    
EHMA(_src, _length) =>  ema(2 * ema(_src, _length / 2) - ema(_src, _length), round(sqrt(_length)))
//THMA    
THMA(_src, _length) =>  wma(wma(_src,_length / 3) * 3 - wma(_src, _length / 2) - wma(_src, _length), _length)
    
//SWITCH
Mode(modeSwitch, src, len) =>
      modeSwitch == "Hma"  ? HMA(src, len) :
      modeSwitch == "Ehma" ? EHMA(src, len) : 
      modeSwitch == "Thma" ? THMA(src, len/2) : na

//OUT
_hull = Mode(modeSwitch, src, int(length * lengthMult))
HULL = useHtf ? security(syminfo.ticker, htf, _hull) : _hull
MHULL = HULL[0]
SHULL = HULL[2]

//COLOR
hullColor = switchColor ? (HULL > HULL[2] ? #00ff00 : #ff0000) : #ff9800

//PLOT
///< Frame
Fi1 = plot(MHULL, title="MHULL", color=hullColor, linewidth=thicknesSwitch, transp=50)
Fi2 = plot(visualSwitch ? SHULL : na, title="SHULL", color=hullColor, linewidth=thicknesSwitch, transp=50)
alertcondition(crossover(MHULL, SHULL), title="Hull trending up.", message="Hull trending up.")
alertcondition(crossover(SHULL, MHULL), title="Hull trending down.", message="Hull trending down.")
///< Ending Filler
fill(Fi1, Fi2, title="Band Filler", color=hullColor, transp=transpSwitch)
///BARCOLOR
barcolor(color = candleCol ? (switchColor ? hullColor : na) : na)

// Define Buy and Sell Conditions based on crossovers
buyCondition = crossover(MHULL, SHULL)
sellCondition = crossunder(MHULL, SHULL)

// Plotting the Hull Moving Average (HMA)
plot(MHULL, title="MHULL", color=hullColor, linewidth=thicknesSwitch)
plot(SHULL, title="SHULL", color=hullColor, linewidth=thicknesSwitch, transp=transpSwitch)
fill(Fi1, Fi2, title="Band Filler", color=hullColor, transp=transpSwitch)

// Execute Strategy based on Buy and Sell Conditions
strategy.entry("Buy", strategy.long, when=buyCondition, alert_message=longAlertMessage)
strategy.entry("Sell", strategy.short, when=sellCondition, alert_message=shortAlertMessage)

// Additional elements like bar coloring remain unchanged
barcolor(color = candleCol ? (switchColor ? hullColor : na) : na)


Lebih lanjut