Strategi Dagangan Pengayun Purata Pergerakan Hull


Tarikh penciptaan: 2023-10-07 15:24:31 Akhirnya diubah suai: 2023-10-07 15:24:31
Salin: 0 Bilangan klik: 1028
1
fokus pada
1617
Pengikut

Gambaran keseluruhan

Strategi ini adalah strategi perdagangan garis pendek berdasarkan petunjuk purata bergerak Hull. Strategi ini menggunakan purata bergerak Hull untuk membentuk isyarat beli dan jual yang tergolong dalam strategi mengikuti trend.

Prinsip Strategi

Strategi ini adalah berasaskan kepada Hull Moving Average, yang terdiri daripada dua rata-rata bergerak. Pertama, harga dihitung pada rata-rata bergerak pertengahan (nma) dengan tempoh hullperiod. Kemudian, harga dihitung pada rata-rata bergerak cepat (n2ma) dengan tempoh separuh nma.

Untuk menapis beberapa isyarat palsu, strategi ini juga memperkenalkan garis Hull ((Hull_Line). Garis Hull adalah hasil pengembalian linear yang dikira perbezaan antara nma dan n2ma. Apabila harga menyimpang dari garis Hull, strategi akan melangkau isyarat beli dan jual.

Secara khusus, peraturan strategi adalah seperti berikut:

  1. Pengiraan nma, tempoh hullperiod

  2. Hitung n2ma, kitaran adalah separuh daripada kitaran nma

  3. Mengira perbezaan antara n2ma dan nma

  4. Hull_Line ialah purata bergerak bagi selang selang selang selang selang selang selang selang selang selang selang selang selang selang selang selang selang selang

  5. Isyarat beli apabila harga melintasi garis Hull

  6. Isyarat jual apabila harga di bawah garis Hull

  7. Jika harga berlainan dengan garis Hull, melangkau isyarat

  8. Masuk dengan kedudukan peratusan tertentu, menghentikan kerugian dengan cara menghentikan kerugian

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Berdasarkan purata bergerak Hull, ia dapat menangkap trend dengan cepat, dan ia boleh dilihat sebagai satu trend yang bertolak ansur.

  2. Penggunaan saluran Hull untuk menyaring isyarat palsu dan meningkatkan kualiti isyarat

  3. Perbandingan pengeluaran dan keuntungan yang baik, sesuai untuk operasi garis pendek

  4. Fleksibiliti dalam menyesuaikan parameter untuk menyesuaikan diri dengan keadaan pasaran yang berbeza

  5. Menggunakan Reverse Stop Loss, boleh menghentikan kerugian tepat pada masanya, mengawal risiko

  6. Risiko sistemik yang boleh dielakkan dalam tempoh tertentu yang digabungkan dengan kekesalan

Analisis risiko

Strategi ini mempunyai beberapa risiko:

  1. Tidak boleh berdagang sepanjang masa dengan strategi trend

  2. Apabila trend berbalik, ia akan menyebabkan kerugian yang lebih besar

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

  4. Perdagangan dalam talian pendek yang kerap berlaku dan kos yang tinggi

  5. Penetapan parameter yang tidak betul boleh menyebabkan penurunan pendapatan di pasaran goyah

Mengenai risiko yang disebutkan di atas, langkah-langkah berikut boleh diambil untuk mengawalnya:

  1. Menggunakan strategi hentian Martingale untuk mengawal kerugian tunggal

  2. Parameter pengoptimuman, menguji kekuatan parameter dalam persekitaran pasaran yang berbeza

  3. Menerusi indikator untuk menilai trend, mengelakkan kejatuhan dalam pembalikan

  4. Meningkatkan tempoh pegangan dan mengurangkan kekerapan dagangan

Arah pengoptimuman

Strategi ini juga boleh dioptimumkan dalam beberapa aspek:

  1. Gabungan Indikator Kinerja untuk Menentukan Titik Permulaan Trend dan Pendahuluan Layout yang Lebih Baik

  2. Menambah model pembelajaran mesin untuk membantu menentukan arah dan kekuatan trend

  3. Menggunakan tetapan parameter yang menyesuaikan diri, menyesuaikan parameter mengikut pasaran masa nyata

  4. Mengkonfigurasi sistem Hull pelbagai kitaran masa, konfigurasi kedudukan yang berbeza untuk kitaran yang berbeza

  5. Kaedah untuk mengelakkan terjunan palsu yang tidak mencukupi dengan menggunakan indikator tenaga kuantiti dagangan

  6. Menambah modul pengurusan kedudukan berdasarkan kadar turun naik untuk menyesuaikan kedudukan secara dinamik mengikut kadar turun naik

ringkaskan

Hull Moving Average Oscillating Trading Strategy secara keseluruhannya adalah strategi pengesanan garis pendek yang sangat praktikal. Ia menggunakan sistem Hull Moving Average untuk menentukan arah trend untuk mencapai kemajuan. Ia mempunyai kualiti isyarat dan fleksibiliti parameter yang lebih tinggi berbanding dengan sistem purata bergerak tunggal.

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