Chiến lược giao dịch chuyển động trung bình

Tác giả:ChaoZhang, Ngày: 2023-10-07 15:24:31
Tags:

Tổng quan

Chiến lược này là một chiến lược giao dịch ngắn hạn dựa trên chỉ số trung bình chuyển động Hull. Chiến lược này sử dụng đường chéo vàng và đường chéo chết của đường trung bình chuyển động Hull để tạo ra các tín hiệu giao dịch, thuộc về một chiến lược theo xu hướng.

Chiến lược logic

Chiến lược này chủ yếu dựa trên chỉ số Hull Moving Average. Đường trung bình chuyển động Hull bao gồm hai đường trung bình chuyển động. Đầu tiên nó tính toán đường trung bình chuyển động trung bình nma của giá, với một khoảng thời gian hullperiod. Sau đó nó tính toán đường trung bình chuyển động nhanh n2ma, với một khoảng thời gian là một nửa của nmas. Khi n2ma vượt trên nma, một tín hiệu mua được tạo ra. Khi n2ma vượt dưới nma, một tín hiệu bán được tạo ra.

Để lọc ra một số tín hiệu sai, chiến lược cũng giới thiệu Hull Line (Hull_Line). Hull Line là kết quả hồi quy tuyến tính của sự khác biệt giữa nma và n2ma. Khi có sự khác biệt giữa giá và Hull Line, chiến lược sẽ bỏ qua tín hiệu giao dịch.

Cụ thể, các quy tắc chiến lược là như sau:

  1. Tính toán nma, với thời gian hullperiod

  2. Tính toán n2ma, với thời gian một nửa của thời gian nma

  3. Tính toán sự khác biệt giữa n2ma và nma

  4. Moving average the diff with period sqrt ((hullperiod), được and get the Hull Line Hull_Line

  5. Khi giá vượt trên Hull Line, một tín hiệu mua được tạo ra

  6. Khi giá vượt qua dưới Hull Line, một tín hiệu bán được tạo ra

  7. Nếu có sự khác biệt giữa giá và Hull Line, bỏ qua tín hiệu

  8. Nhập với một tỷ lệ phần trăm nhất định của vị trí, áp dụng thoát dừng lỗ

Phân tích lợi thế

Những lợi thế của chiến lược này bao gồm:

  1. Dựa trên trung bình chuyển động Hull, nó có thể nhanh chóng nắm bắt xu hướng và theo dõi xu hướng

  2. Sử dụng Hull Line để lọc tín hiệu sai và cải thiện chất lượng tín hiệu

  3. Tỷ lệ rủi ro-lợi nhuận tốt và thu hút, phù hợp với giao dịch ngắn hạn

  4. Điều chỉnh tham số linh hoạt, thích nghi với các môi trường thị trường khác nhau

  5. Sử dụng đảo ngược dừng lỗ, có thể dừng lỗ trong thời gian và kiểm soát rủi ro

  6. Kết hợp tính theo mùa để tránh rủi ro hệ thống trong các khoảng thời gian cụ thể

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Xu hướng theo chiến lược, không thể giao dịch cả ngày

  2. Mất lớn hơn khi xu hướng đảo ngược

  3. Sự chậm trễ của các đường trung bình động, không thể nắm bắt đúng thời điểm điểm chuyển đổi

  4. Tần suất giao dịch cao dẫn đến chi phí giao dịch cao hơn

  5. Cài đặt tham số không phù hợp có thể dẫn đến lợi nhuận thấp hơn trên các thị trường giới hạn phạm vi

Để kiểm soát những rủi ro này, chúng ta có thể thực hiện các biện pháp sau:

  1. Sử dụng chiến lược dừng lỗ Martingale để kiểm soát lỗ đơn

  2. Tối ưu hóa các thông số và độ bền thử nghiệm trong các môi trường thị trường khác nhau

  3. Kết hợp các chỉ số đánh giá xu hướng để tránh theo đuổi xu hướng trong thời gian đảo ngược

  4. Tăng thời gian giữ để giảm tần suất giao dịch

Hướng dẫn tối ưu hóa

Chiến lược này cũng có thể được tối ưu hóa trong các khía cạnh sau:

  1. Kết hợp các chỉ số động lực để xác định điểm khởi đầu của xu hướng để có sự gia nhập tốt hơn

  2. Thêm các mô hình học máy để hỗ trợ đánh giá hướng và sức mạnh xu hướng

  3. Sử dụng cài đặt tham số thích nghi để điều chỉnh các tham số dựa trên động lực thị trường thời gian thực

  4. Thiết lập nhiều khung thời gian hệ thống thân tàu, với kích thước vị trí khác nhau cho các khung thời gian khác nhau

  5. Kết hợp các chỉ số khối lượng để tránh đột phá sai với động lượng không đủ

  6. Thêm mô hình định kích thước vị trí dựa trên biến động để điều chỉnh động kích thước vị trí dựa trên biến động

Tóm lại

Hull Moving Average Swing Trading Strategy là một chiến lược theo xu hướng ngắn hạn hiệu quả. Nó sử dụng hệ thống Hull Moving Average để xác định hướng xu hướng với mục đích theo xu hướng. So với các hệ thống trung bình di chuyển đơn, nó có chất lượng tín hiệu cao hơn và tính linh hoạt của các thông số. Ưu điểm của chiến lược này nằm trong việc nhanh chóng nắm bắt những thay đổi xu hướng với các drawdown tương đối nhỏ. Điểm yếu là không thể đối phó với sự đảo ngược xu hướng. Chúng ta có thể sử dụng tối ưu hóa thông số, chiến lược dừng lỗ, thêm các mô hình phụ trợ vv để kiểm soát rủi ro và làm cho chiến lược mạnh mẽ hơn trong nhiều môi trường thị trường.


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


Thêm nữa