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 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 nma
Để 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:
Tính toán nma, với thời gian hullperiod
Tính toán n2ma, với thời gian một nửa của thời gian nma
Tính toán sự khác biệt giữa n2ma và nma
Moving average the diff with period sqrt ((hullperiod), được and get the Hull Line Hull_Line
Khi giá vượt trên Hull Line, một tín hiệu mua được tạo ra
Khi giá vượt qua dưới Hull Line, một tín hiệu bán được tạo ra
Nếu có sự khác biệt giữa giá và Hull Line, bỏ qua tín hiệu
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ỗ
Những lợi thế của chiến lược này bao gồm:
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
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
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
Đ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
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
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ể
Chiến lược này cũng có một số rủi ro:
Xu hướng theo chiến lược, không thể giao dịch cả ngày
Mất lớn hơn khi xu hướng đảo ngược
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
Tần suất giao dịch cao dẫn đến chi phí giao dịch cao hơn
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:
Sử dụng chiến lược dừng lỗ Martingale để kiểm soát lỗ đơn
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
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
Tăng thời gian giữ để giảm tần suất giao dịch
Chiến lược này cũng có thể được tối ưu hóa trong các khía cạnh sau:
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
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
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
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
Kết hợp các chỉ số khối lượng để tránh đột phá sai với động lượng không đủ
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
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