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.
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:
Pengiraan nma, tempoh hullperiod
Hitung n2ma, kitaran adalah separuh daripada kitaran nma
Mengira perbezaan antara n2ma dan nma
Hull_Line ialah purata bergerak bagi selang selang selang selang selang selang selang selang selang selang selang selang selang selang selang selang selang selang
Isyarat beli apabila harga melintasi garis Hull
Isyarat jual apabila harga di bawah garis Hull
Jika harga berlainan dengan garis Hull, melangkau isyarat
Masuk dengan kedudukan peratusan tertentu, menghentikan kerugian dengan cara menghentikan kerugian
Strategi ini mempunyai kelebihan berikut:
Berdasarkan purata bergerak Hull, ia dapat menangkap trend dengan cepat, dan ia boleh dilihat sebagai satu trend yang bertolak ansur.
Penggunaan saluran Hull untuk menyaring isyarat palsu dan meningkatkan kualiti isyarat
Perbandingan pengeluaran dan keuntungan yang baik, sesuai untuk operasi garis pendek
Fleksibiliti dalam menyesuaikan parameter untuk menyesuaikan diri dengan keadaan pasaran yang berbeza
Menggunakan Reverse Stop Loss, boleh menghentikan kerugian tepat pada masanya, mengawal risiko
Risiko sistemik yang boleh dielakkan dalam tempoh tertentu yang digabungkan dengan kekesalan
Strategi ini mempunyai beberapa risiko:
Tidak boleh berdagang sepanjang masa dengan strategi trend
Apabila trend berbalik, ia akan menyebabkan kerugian yang lebih besar
Sistem purata bergerak terlewat, tidak dapat menangkap titik perubahan tepat pada masanya
Perdagangan dalam talian pendek yang kerap berlaku dan kos yang tinggi
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:
Menggunakan strategi hentian Martingale untuk mengawal kerugian tunggal
Parameter pengoptimuman, menguji kekuatan parameter dalam persekitaran pasaran yang berbeza
Menerusi indikator untuk menilai trend, mengelakkan kejatuhan dalam pembalikan
Meningkatkan tempoh pegangan dan mengurangkan kekerapan dagangan
Strategi ini juga boleh dioptimumkan dalam beberapa aspek:
Gabungan Indikator Kinerja untuk Menentukan Titik Permulaan Trend dan Pendahuluan Layout yang Lebih Baik
Menambah model pembelajaran mesin untuk membantu menentukan arah dan kekuatan trend
Menggunakan tetapan parameter yang menyesuaikan diri, menyesuaikan parameter mengikut pasaran masa nyata
Mengkonfigurasi sistem Hull pelbagai kitaran masa, konfigurasi kedudukan yang berbeza untuk kitaran yang berbeza
Kaedah untuk mengelakkan terjunan palsu yang tidak mencukupi dengan menggunakan indikator tenaga kuantiti dagangan
Menambah modul pengurusan kedudukan berdasarkan kadar turun naik untuk menyesuaikan kedudukan secara dinamik mengikut kadar turun naik
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.
/*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