Hull Moving Average Swing Trading Strategi

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

Gambaran umum

Strategi ini adalah strategi perdagangan jangka pendek yang didasarkan pada indikator Hull Moving Average. Strategi ini menggunakan salib emas dan salib mati dari garis Hull Moving Average untuk menghasilkan sinyal perdagangan, yang merupakan bagian dari strategi trend-following.

Logika Strategi

Strategi ini terutama didasarkan pada indikator Hull Moving Average. Garis Hull Moving Average terdiri dari dua rata-rata bergerak. Pertama menghitung garis rata-rata bergerak median nma dari harga, dengan periode hullperiod. Kemudian menghitung garis rata-rata bergerak cepat n2ma, dengan periode setengah dari nmas. Ketika n2ma melintasi di atas nma, sinyal beli dihasilkan. Ketika n2ma melintasi di bawah nma, sinyal jual dihasilkan.

Untuk menyaring beberapa sinyal palsu, strategi juga memperkenalkan Hull Line (Hull_Line). Hull Line adalah hasil regresi linier dari perbedaan antara nma dan n2ma. Ketika ada divergensi antara harga dan Hull Line, strategi akan melewatkan sinyal perdagangan.

Secara khusus, aturan strategi adalah sebagai berikut:

  1. Menghitung nma, dengan periode hullperiod

  2. Hitung n2ma, dengan periode setengah dari periode nma

  3. Hitung perbedaan diferensi antara n2ma dan nma

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

  5. Ketika harga melintasi di atas Hull Line, sinyal beli dihasilkan

  6. Ketika harga melintasi di bawah Hull Line, sinyal jual dihasilkan

  7. Jika ada perbedaan antara harga dan Hull Line, skip sinyal

  8. Masuk dengan persentase tertentu dari posisi, mengadopsi stop loss keluar

Analisis Keuntungan

Keuntungan dari strategi ini meliputi:

  1. Berdasarkan Hull Moving Average, dapat dengan cepat menangkap tren dan mengikuti tren

  2. Gunakan Hull Line untuk menyaring sinyal palsu dan meningkatkan kualitas sinyal

  3. Rasio risiko-manfaat yang baik dan penarikan, cocok untuk perdagangan jangka pendek

  4. Pengaturan parameter yang fleksibel, dapat disesuaikan dengan lingkungan pasar yang berbeda

  5. Mengadopsi pembalikan stop loss, dapat menghentikan kerugian dalam waktu dan risiko kontrol

  6. Menggabungkan musim untuk menghindari risiko sistemik dalam periode waktu tertentu

Analisis Risiko

Strategi ini juga memiliki beberapa risiko:

  1. Tren mengikuti strategi, tidak dapat diperdagangkan sepanjang hari

  2. Kerugian yang lebih besar ketika tren berbalik

  3. Ketinggalan rata-rata bergerak, tidak dapat menangkap titik balik tepat waktu

  4. Frekuensi perdagangan yang tinggi mengarah pada biaya perdagangan yang lebih tinggi

  5. Pengaturan parameter yang tidak tepat dapat menyebabkan penurunan profitabilitas di pasar yang terikat rentang

Untuk mengendalikan risiko ini, kita dapat mengambil langkah-langkah berikut:

  1. Mengadopsi strategi stop loss martingale untuk mengendalikan kerugian tunggal

  2. Mengoptimalkan parameter dan pengujian ketahanan dalam lingkungan pasar yang berbeda

  3. Menggabungkan indikator penilaian tren untuk menghindari mengejar tren selama pembalikan

  4. Meningkatkan waktu penyimpanan untuk mengurangi frekuensi perdagangan

Arahan Optimasi

Strategi ini juga dapat dioptimalkan dalam aspek berikut:

  1. Gabungkan indikator momentum untuk menemukan titik awal tren untuk masuk yang lebih baik

  2. Menambahkan model pembelajaran mesin untuk membantu menilai arah tren dan kekuatan

  3. Mengadopsi pengaturan parameter adaptif untuk menyesuaikan parameter berdasarkan dinamika pasar real-time

  4. Mengkonfigurasi sistem Hull multi-timeframe, dengan ukuran posisi yang berbeda untuk jangka waktu yang berbeda

  5. Menggabungkan indikator volume untuk menghindari pecah palsu dengan momentum yang tidak cukup

  6. Menambahkan model ukuran posisi berbasis volatilitas untuk menyesuaikan ukuran posisi secara dinamis berdasarkan volatilitas

Ringkasan

Hull Moving Average Swing Trading Strategy adalah strategi yang efisien untuk mengikuti tren jangka pendek secara keseluruhan. Sistem ini menggunakan Hull Moving Average untuk menentukan arah tren untuk tujuan mengikuti tren. Dibandingkan dengan sistem moving average tunggal, memiliki kualitas sinyal yang lebih tinggi dan fleksibilitas Parameter. Keuntungan dari strategi ini terletak pada cepat menangkap perubahan tren dengan penurunan yang relatif kecil. Kelemahannya adalah ketidakmampuan untuk mengatasi pembalikan tren.


/*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 banyak