
Strategi ini menggunakan kombinasi dua kitaran Hull Moving Average (HMA) untuk membina sistem perdagangan yang lengkap untuk mengesan trend. Secara khusus, strategi ini menggunakan HMA 200 sebagai petunjuk isyarat masuk, manakala HMA 150 digunakan untuk menghasilkan isyarat hentian dinamik. Ia mencetuskan isyarat beli atau jual apabila harga menembusi HMA 200 dan melakukan hentian apabila harga mempunyai hubungan silang tertentu dengan HMA 150.
Inti strategi ini adalah berdasarkan Hull Moving Average (HMA) pada dua tempoh yang berbeza: HMA 200 dan HMA 150. HMA adalah satu indikator purata bergerak yang lebih maju, yang dapat mengurangkan keterbelakangan secara ketara berbanding dengan purata bergerak tradisional sambil mengekalkan kelancaran. Logik masuk strategi ini adalah berdasarkan pada hubungan silang harga dengan garis HMA 200 yang lebih perlahan: ia menghasilkan isyarat beli apabila HMA 200 melintasi harga setapak; ia menghasilkan isyarat jual apabila HMA 200 melintasi harga setapak.
Logik hentian menggunakan HMA 150 yang lebih cepat sebagai titik rujukan dinamik: untuk kedudukan berbilang, hentian akan dicetuskan apabila harga menembusi HMA 150 ke bawah; untuk kedudukan kosong, hentian akan dicetuskan apabila harga menembusi HMA 150 ke atas. Reka bentuk ini membolehkan tahap hentian disesuaikan dengan dinamik pasaran, dan bukannya menggunakan sasaran keuntungan tetap.
Kode ini mewujudkan fungsi jangka masa yang boleh dikonfigurasi, dengan menetapkan tarikh permulaan dan akhir tahun, pedagang boleh melakukan analisis prestasi strategi untuk tempoh sejarah tertentu, untuk menilai dengan lebih tepat bagaimana strategi berfungsi dalam keadaan pasaran yang berbeza. Strategi ini juga mengandungi komponen visual, yang secara langsung memaparkan garis HMA, isyarat masuk dan isyarat berhenti di carta, untuk memudahkan pedagang memahami keadaan pasaran dan keputusan strategi secara langsung.
Mengurangkan ketinggalan zamanHMA mempunyai keterlambatan yang lebih rendah berbanding purata bergerak tradisional, yang membolehkan isyarat masuk dan keluar lebih tepat pada masanya, dapat bertindak balas lebih cepat terhadap perubahan pasaran, dan mengurangkan potensi kos peluang.
Reka bentuk keseimbangan dua kitaranStrategi menggunakan HMA dengan kitaran yang berlainan untuk masuk dan berhenti, membentuk pendekatan yang seimbang - kitaran yang lebih panjang (~ 200) digunakan untuk mengenal pasti arah trend dengan mantap, dan kitaran yang lebih pendek (~ 150) digunakan untuk perlindungan keuntungan yang lebih sensitif, mencapai matlamat berganda untuk menangkap trend dan mengunci keuntungan.
Sistem perdagangan automatik sepenuhnyaStrategi mempunyai peraturan masuk dan keluar yang jelas, boleh dilaksanakan secara automatik, mengurangkan gangguan emosi manusia, meningkatkan disiplin perdagangan. Isyarat visual pada carta juga membantu membuat keputusan strategi.
Fleksibiliti pengesananJulat tarikh yang boleh dikonfigurasi membolehkan peniaga menguji strategi untuk tempoh sejarah tertentu, membantu menganalisis prestasi strategi dalam keadaan pasaran yang berbeza, mengoptimumkan tetapan parameter.
Logikanya jelas.Logik teras strategi mudah dan mudah difahami dan diubah suai, mudah untuk disesuaikan dan diperluaskan oleh peniaga mengikut keperluan mereka sendiri, sesuai untuk digunakan oleh peniaga di semua peringkat.
Trend Mengikuti KelebihanSebagai strategi trend-following, ia dapat memperoleh keuntungan yang lebih besar dalam pasaran trend yang kuat, terutamanya dalam persekitaran pasaran yang terus bergerak satu arah.
Perkembangan pasaran yang kurang baikSeperti semua strategi trend-following, ia mungkin tidak berfungsi dengan baik dalam pasaran yang berputar atau bergolak, yang boleh menyebabkan isyarat palsu dan perdagangan yang merugikan.
Kekurangan mekanisme kawalan kerugianStrategi semasa tidak mempunyai mekanisme berhenti terintegrasi, yang boleh menyebabkan penarikan balik yang besar apabila trend berbalik tetapi belum mencetuskan keadaan berhenti. Dalam aplikasi praktikal, pertimbangkan untuk menambah peraturan berhenti yang sesuai untuk mengehadkan kerugian maksimum dalam satu perdagangan.
Batasan parameter tetapTempoh HMA ((200 dan 150) adalah tetap dan mungkin tidak sesuai untuk semua pasaran atau bingkai masa. Jenis perdagangan yang berbeza dan tempoh masa mungkin memerlukan tetapan parameter yang berbeza untuk hasil terbaik.
Keluar awal daripada trend yang kuatDalam trend yang kuat, mekanisme hentian berdasarkan HMA 150 boleh menyebabkan keluar awal dari perdagangan yang menguntungkan, kehilangan sebahagian keuntungan. Ini adalah konflik yang wujud antara kaedah hentian dinamik dan kesinambungan trend.
Kekurangan pengurusan kedudukanStrategi ini tidak mengandungi penyesuaian saiz kedudukan atau fungsi pengurusan risiko, semua dagangan menggunakan peratusan dana yang sama, yang boleh menyebabkan pendedahan risiko yang berlebihan dalam beberapa kes.
Kebergantungan satu indikatorStrategi hanya bergantung pada petunjuk HMA, tanpa menggunakan petunjuk teknikal lain atau penapis untuk mengesahkan isyarat, yang mungkin meningkatkan risiko isyarat palsu.
Menyertai mekanisme halangan kerugianMempunyai peraturan hentian kerugian yang dinamik atau tetap, seperti hentian berdasarkan ATR, peratusan hentian atau hentian berdasarkan tahap sokongan / rintangan, untuk mengehadkan risiko kerugian maksimum dalam satu perdagangan. Ini penting untuk melindungi keselamatan dana, terutamanya dalam keadaan perubahan trend yang tiba-tiba.
Reka bentuk parameter beradaptasi: Mengubah kitaran HMA berdasarkan turun naik pasaran atau dinamika ciri-ciri pasaran lain, membolehkan strategi menyesuaikan diri dengan keadaan pasaran yang berbeza. Sebagai contoh, menggunakan kitaran yang lebih lama apabila turun naiknya tinggi, menggunakan kitaran yang lebih pendek apabila turun naiknya rendah.
Menambah penapis persekitaran pasaran: Mekanisme untuk mengesan pasaran separa atau pasaran trend, mengelakkan perdagangan atau menyesuaikan parameter strategi di pasaran separa. Indikator seperti ADX, lebar jalur Brin boleh digunakan untuk menilai keadaan pasaran.
Analisis jumlah transaksi yang disatukanMenambahkan indikator jumlah dagangan untuk mengesahkan kekuatan trend, melaksanakan isyarat hanya jika jumlah dagangan menyokong, mengurangkan perdagangan rugi yang disebabkan oleh pecah palsu.
Menerapkan pengurusan kedudukan pintarMengubah saiz kedudukan berdasarkan turun naik, saiz akaun atau parameter risiko untuk memastikan keseimbangan risiko dan pertumbuhan dana yang stabil dalam jangka masa panjang. Sebagai contoh, melaksanakan pengiraan saiz kedudukan berdasarkan ATR atau kaedah peratusan risiko tetap.
Analisis pelbagai kerangka masa: Menambah analisis trend pada jangka masa yang lebih tinggi, melakukan perdagangan hanya jika trend pada jangka masa yang lebih tinggi selaras, meningkatkan kualiti isyarat dan kadar kejayaan.
Mencapai Tracking Stop Loss: Menggantikan paras penutupan tetap dengan paras penutupan pengesanan, yang membolehkan keuntungan terus meningkat sambil melindungi keuntungan, terutama dalam trend yang kuat. Penutupan pengesanan boleh dilakukan berdasarkan petunjuk HMA, ATR atau peratusan pengunduran.
Strategi pergerakan rata-rata Hull dua kitaran menyediakan satu kaedah yang intuitif dan berkesan untuk mengesan trend dengan strategi perdagangan kuantitatif berhenti dinamik yang menggabungkan mekanisme berhenti dinamik. Dengan memanfaatkan ciri-ciri Hull Moving Average yang rendah pada dua kitaran yang berbeza, strategi ini mencapai keseimbangan antara menangkap trend dan melindungi keuntungan.
Walau bagaimanapun, strategi ini juga mempunyai beberapa batasan, termasuk prestasi yang kurang baik di pasaran segmen, kekurangan mekanisme berhenti dan parameter tetap. Dengan melaksanakan langkah-langkah pengoptimuman yang disyorkan, seperti menambah peraturan berhenti, penyesuaian parameter yang sesuai, penapisan persekitaran pasaran dan pengurusan kedudukan pintar, strategi ini dapat berkembang menjadi sistem perdagangan yang lebih mantap yang sesuai untuk pelbagai persekitaran pasaran.
Pada akhirnya, strategi dua kitaran ini berdasarkan Hull Moving Average memberikan asas yang kukuh kepada peniaga kuantitatif yang boleh disesuaikan dan diperluaskan lagi mengikut keutamaan risiko peribadi dan matlamat perdagangan. Dalam aplikasi praktikal, peniaga harus sentiasa ingat pentingnya pengurusan risiko dan melakukan pengesahan perdagangan yang mencukupi dan simulasi sebelum berdagang secara nyata.
/*backtest
start: 2024-06-03 00:00:00
end: 2025-06-02 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
//@strategy HMA 200/150 Trading Strategy
//@description A trend-following strategy using HMA 200 for entry signals and HMA 150 for take profit signals. Buys when price closes above HMA 200, sells when price closes below HMA 200. Take profit for buys when price closes below HMA 150, and for sells when price closes above HMA 150. Includes date range inputs for backtesting.
//@author [TrendBlazeX]
strategy("HMA 200/150 Trading Strategy", overlay=true, margin_long=100, margin_short=100)
// Input for backtest period
var start_year = input.int(2023, "Start Year", minval=1900, maxval=2100, group="Backtest Period")
var start_month = input.int(1, "Start Month", minval=1, maxval=12, group="Backtest Period")
var start_day = input.int(1, "Start Day", minval=1, maxval=31, group="Backtest Period")
var end_year = input.int(2025, "End Year", minval=1900, maxval=2100, group="Backtest Period")
var end_month = input.int(12, "End Month", minval=1, maxval=12, group="Backtest Period")
var end_day = input.int(31, "End Day", minval=1, maxval=31, group="Backtest Period")
// Convert dates to timestamps
start_timestamp = timestamp(start_year, start_month, start_day, 0, 0)
end_timestamp = timestamp(end_year, end_month, end_day, 23, 59)
// Check if current bar is within the date range
in_date_range = time >= start_timestamp and time <= end_timestamp
// Calculate HMAs
hma200 = ta.hma(close, 200)
hma150 = ta.hma(close, 150)
// Define conditions for buy and sell signals
buySignal = ta.crossover(close, hma200) and in_date_range
sellSignal = ta.crossunder(close, hma200) and in_date_range
// Define take profit conditions
buyTakeProfit = ta.crossunder(close, hma150) and in_date_range
sellTakeProfit = ta.crossover(close, hma150) and in_date_range
// Strategy entry and exit
if (buySignal)
strategy.entry("Buy", strategy.long)
if (sellSignal)
strategy.entry("Sell", strategy.short)
if (buyTakeProfit)
strategy.close("Buy", comment="TP Buy")
if (sellTakeProfit)
strategy.close("Sell", comment="TP Sell")
// Plot HMAs on chart
plot(hma200, color=color.blue, title="HMA 200", linewidth=2)
plot(hma150, color=color.orange, title="HMA 150", linewidth=2)
// Plot signals on chart
plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
plotshape(buyTakeProfit, title="Buy TP", location=location.abovebar, color=color.yellow, style=shape.diamond, size=size.tiny)
plotshape(sellTakeProfit, title="Sell TP", location=location.belowbar, color=color.yellow, style=shape.diamond, size=size.tiny)