Strategi Perdagangan Swing Purata Bergerak Hull

Penulis:ChaoZhang, Tarikh: 2023-10-07 15:24:31
Tag:

Ringkasan

Strategi ini adalah strategi perdagangan jangka pendek berdasarkan penunjuk Hull Moving Average. Strategi ini menggunakan salib emas dan salib mati garis Hull Moving Average untuk menjana isyarat perdagangan, yang tergolong dalam strategi trend-mengikut.

Logika Strategi

Strategi ini terutamanya berdasarkan kepada penunjuk Hull Moving Average. Garis Hull Moving Average terdiri daripada dua purata bergerak. Pertama ia mengira garisan purata bergerak median nma harga, dengan tempoh hullperiod. Kemudian ia mengira garisan purata bergerak pantas n2ma, dengan tempoh separuh nmas. Apabila n2ma melintasi di atas nma, isyarat beli dihasilkan. Apabila n2ma melintasi di bawah nma, isyarat jual dihasilkan.

Untuk menapis beberapa isyarat palsu, strategi juga memperkenalkan Hull Line (Hull_Line). Hull Line adalah hasil regresi linear perbezaan antara nma dan n2ma. Apabila terdapat perbezaan antara harga dan Hull Line, strategi akan melangkau isyarat perdagangan.

Secara khusus, peraturan strategi adalah seperti berikut:

  1. Mengira nma, dengan tempoh hullperiod

  2. Mengira n2ma, dengan tempoh separuh daripada tempoh nma

  3. Mengira perbezaan antara n2ma dan nma

  4. Moving average the diff with period sqrt ((hullperiod), dan mendapatkan Hull Line Hull_Line

  5. Apabila harga melintasi di atas Hull Line, isyarat beli dihasilkan

  6. Apabila harga melintasi di bawah Hull Line, isyarat jual dihasilkan

  7. Jika terdapat perbezaan antara harga dan Hull Line, salurkan isyarat

  8. Masuk dengan peratusan tertentu dari kedudukan, mengambil keluar stop loss

Analisis Kelebihan

Kelebihan strategi ini termasuk:

  1. Berdasarkan Hull Moving Average, ia boleh dengan cepat menangkap trend dan mengikuti trend

  2. Gunakan Hull Line untuk menapis isyarat palsu dan meningkatkan kualiti isyarat

  3. Nisbah risiko-balasan yang baik dan penggunaan, sesuai untuk perdagangan jangka pendek

  4. Penyesuaian parameter yang fleksibel, dapat disesuaikan dengan persekitaran pasaran yang berbeza

  5. Mengambil pembalikan stop loss, boleh menghentikan kerugian dalam masa dan kawalan risiko

  6. Menggabungkan bermusim untuk mengelakkan risiko sistem dalam tempoh masa tertentu

Analisis Risiko

Strategi ini juga mempunyai beberapa risiko:

  1. Trend mengikut strategi, tidak boleh berdagang sepanjang hari

  2. Kerugian yang lebih besar apabila trend berbalik

  3. Kelewatan purata bergerak, tidak dapat menangkap titik perubahan tepat pada masanya

  4. Frekuensi perdagangan yang tinggi membawa kepada kos perdagangan yang lebih tinggi

  5. Tetapan parameter yang tidak sesuai boleh membawa kepada keuntungan yang lebih rendah di pasaran terikat julat

Untuk mengawal risiko ini, kita boleh mengambil langkah-langkah berikut:

  1. Mengambil strategi stop loss martingale untuk mengawal kerugian tunggal

  2. Mengoptimumkan parameter dan pengujian ketahanan dalam persekitaran pasaran yang berbeza

  3. Gabungkan penunjuk penilaian trend untuk mengelakkan mengejar trend semasa pembalikan

  4. Meningkatkan masa memegang untuk mengurangkan kekerapan dagangan

Arahan pengoptimuman

Strategi ini juga boleh dioptimumkan dalam aspek berikut:

  1. Gabungkan penunjuk momentum untuk mencari titik permulaan trend untuk kemasukan yang lebih baik

  2. Tambah model pembelajaran mesin untuk membantu menilai arah trend dan kekuatan

  3. Mengambil tetapan parameter adaptif untuk menyesuaikan parameter berdasarkan dinamik pasaran masa nyata

  4. Mengkonfigurasi sistem badan pelbagai jangka masa, dengan saiz kedudukan yang berbeza untuk jangka masa yang berbeza

  5. Gabungkan penunjuk jumlah untuk mengelakkan pecah palsu dengan momentum yang tidak mencukupi

  6. Tambah model saiz kedudukan berasaskan turun naik untuk menyesuaikan saiz kedudukan secara dinamik berdasarkan turun naik

Ringkasan

Hull Moving Average Swing Trading Strategy adalah strategi trend berikut jangka pendek yang cekap secara keseluruhan. Ia menggunakan sistem Hull Moving Average untuk menentukan arah trend untuk tujuan mengikuti trend. Berbanding dengan sistem purata bergerak tunggal, ia mempunyai kualiti isyarat yang lebih tinggi dan fleksibiliti Parameter. Kelebihan strategi ini terletak pada dengan cepat menangkap perubahan trend dengan penurunan yang agak kecil. Kelemahannya adalah ketidakupayaan untuk mengatasi pembalikan trend.


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

//@version=4
//                               Hull Moving Average Swing Trader by SEASIDE420
strategy("Hull Moving Average Swing Trader", shorttitle="HMA_Swing_Trader", default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0)
hullperiod = input(title="HullMA Period", type=input.integer, defval=210, minval=1)
price = input(open, type=input.source, title="Price data")
FromMonth = input(defval=1, title="From Month", minval=1, maxval=12)
FromDay = input(defval=1, title="From Day", minval=1, maxval=31)
FromYear = input(defval=2020, title="From Year", minval=2017)
ToMonth = input(defval=1, title="To Month", minval=1, maxval=12)
ToDay = input(defval=1, title="To Day", minval=1, maxval=31)
ToYear = input(defval=9999, title="To Year", minval=2017)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() => true
n2ma = 2 * wma(price, round(hullperiod / 2))
nma = wma(price, hullperiod)
diff = n2ma - nma
sqn = round(sqrt(hullperiod))
n2ma1 = 2 * wma(price[1], round(hullperiod / 2))
nma1 = wma(price[1], hullperiod)
diff1 = n2ma1 - nma1
n1 = wma(diff, sqn)
n2 = wma(diff1, sqn)
Hull_Line = n1 / n1 * n2
Hull_retracted = if n1 > n2
    Hull_retracted = Hull_Line - 2
else
    Hull_retracted = Hull_Line + 2
c1 = Hull_retracted + n1 - price
c2 = Hull_retracted - n2 + price
c4 = n1 > n2 ? color.green : color.red
c2p = plot(c2, color=color.black, linewidth=1)
c3p = plot(price, color=color.black, linewidth=1)
fill(c3p, c2p, color=c4, transp=75)
//plot(cross(c1, c2) ? c1 : na, style=plot.style_circles, color=c4, linewidth=4)
if price < c2
    strategy.close("BUY", when=window())
if price > c2
    strategy.close("SELL", when=window())
if price > c2 and price[1] > c1
    strategy.entry("BUY", strategy.long, when=window())
if price < c1 and price[1] < c2
    strategy.entry("SELL", strategy.short, when=window())  //        /L'-, 
//                               ,'-.      `   ````                 /  L '-, 
//     .                    _,--dMMMM\        `   ` ` '`..         /       '-, 
//     :             _,--,  )MMMMMMMMM),.      `     ,<>          /_      '-,' 
//     ;     ___,--. \MM(    `-'   )M//MM\          ,',.;      .-'* ;     .' 
//     |     \MMMMMM) \MM\       ,dM//MMM/     ___ < ,; `.      )`--'    / 
//     |      \MM()M   MMM)__   /MM(/MP'  ___, \  \ `  `. `.   /__,    ,' 
//     |       MMMM/   MMMMMM( /MMMMP'__, \     | /      `. `-,_\     / 
//     |       MM     /MMM---' `--'_ \     |-'  |/         `./ .\----.___ 
//     |      /MM'   `--' __,-  \""   |-'  |_,               `.__) . .F. )-. 
//     |     `--'       \   \    |-'  |_,     _,-/            J . . . J-'-. `-., 
//     |         __  \`. |   |   |         \    / _           |. . . . \   `-.  F 
//     |   ___  /  \  | `|   '      __  \   |  /-'            F . . . . \     '` 
//     |   \  \ \  /  |        __  /  \  |  |,-'        __,- J . . . . . \ 
//     |    | /  |/     __,-  \  ) \  /  |_,-     __,--'     |. .__.----,' 
//     |    |/    ___     \    |'.  |/      __,--'           `.-;;;;;;;;;\ 
//     |     ___  \  \     |   |  `   __,--'                  /;;;;;;;;;;;;. 
//     |     \  \  |-'\    '    __,--'                       /;;;;;;;;;;;;;;\ 
// \   |      | /  |      __,--'                             `--;;/     \;-'\ 
//  \  |      |/    __,--'                                   /  /         \  \ 
//   \ |      __,--'                                        /  /           \  \ 
//    \|__,--'                                          _,-;M-K,           ,;-;\ 
//                                                     <;;;;;;;;           '-;;;; 
//                                                                                  :D


Lebih lanjut