Chiến lược này là chiến lược giao dịch đường ngắn dựa trên chỉ số trung bình di chuyển của Hull. Chiến lược sử dụng đường trung bình di chuyển của Hull để tạo ra tín hiệu mua và bán, thuộc chiến lược theo dõi xu hướng.
Chiến lược này chủ yếu dựa trên các chỉ số trung bình di chuyển của Hull, trung bình di chuyển của Hull bao gồm hai trung bình di chuyển. Đầu tiên, tính toán trung bình di chuyển trung bình của giá nma, chu kỳ là hullperiod.
Để lọc ra một số tín hiệu giả, chiến lược cũng giới thiệu đường Hull ((Hull_Line). Hull là kết quả của sự hồi quy tuyến tính tính toán chênh lệch giữa nma và n2ma. Khi giá lệch khỏi đường Hull, chiến lược sẽ bỏ qua tín hiệu mua và bán.
Các quy tắc chiến lược cụ thể như sau:
Tính toán nma, chu kỳ hullperiod
Tính n2ma, chu kỳ là một nửa chu kỳ nma
Tính phân biệt n2ma và nma
Hull_Line là đường trung bình di chuyển của khoảng thời gian Hull với khoảng thời gian sqrt{\displaystyle \sqrt{\mathrm {hull} }
Một tín hiệu mua được phát ra khi giá vượt qua đường Hull
Gửi tín hiệu bán khi giá vượt Hull
Nếu giá lệch so với đường Hull, hãy bỏ qua tín hiệu
Bắt đầu với một tỷ lệ nhất định, dừng lỗ bằng cách dừng lỗ ngoài sân
Chiến lược này có những ưu điểm sau:
Dựa trên đường trung bình di chuyển của Hull, nó có thể nhanh chóng nắm bắt xu hướng, và xu hướng được xác định bởi sự thay đổi.
Sử dụng dây Hull để lọc tín hiệu giả và cải thiện chất lượng tín hiệu
Tỷ lệ thu hồi và lợi nhuận tốt, phù hợp cho hoạt động ngắn hạn
Điều chỉnh tham số linh hoạt, thích ứng với các môi trường thị trường khác nhau
Sử dụng Reverse Stop để 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 một khoảng thời gian nhất định
Chiến lược này cũng có một số rủi ro:
Chiến lược theo dõi xu hướng, không thể giao dịch suốt ngày
Khi xu hướng thay đổi, sẽ có những tổn thất lớn hơn
Hệ thống trung bình di động bị chậm trễ, không thể nắm bắt được các điểm thay đổi kịp thời
Giao dịch qua đường ngắn thường xuyên và phí giao dịch cao
Chế độ tham số không đúng có thể dẫn đến thu nhập giảm trong thị trường chấn động
Những nguy cơ này có thể được kiểm soát bằng các biện pháp sau:
Sử dụng chiến lược dừng lỗ của Martingale để kiểm soát lỗ đơn lẻ
Tối ưu hóa tham số, kiểm tra sức mạnh của tham số 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 sự suy giảm theo dõi trong sự đảo ngược
Tăng thời gian nắm giữ và 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 theo các khía cạnh sau:
Kết hợp các chỉ số động lực, xác định điểm bắt đầu của xu hướng, bố trí tốt hơn để tham gia
Thêm mô hình học máy để hỗ trợ định hướng và cường độ của xu hướng
Sử dụng thiết lập tham số thích ứng, điều chỉnh tham số theo thị trường thời gian thực
Thiết lập hệ thống Hull với nhiều chu kỳ thời gian và các vị trí khác nhau trong các chu kỳ khác nhau
Kết hợp với chỉ số năng lượng giao dịch, tránh phá vỡ giả mạo với năng lượng không đủ
Thêm mô-đun quản lý vị trí dựa trên biến động, điều chỉnh vị trí theo biến động
Chiến lược giao dịch biến động trung bình di chuyển của Hull nói chung là một chiến lược theo dõi đường ngắn rất thực tế. Nó sử dụng hệ thống trung bình di chuyển của Hull để xác định hướng xu hướng để đạt được sự tiến bộ. Nó có chất lượng tín hiệu và tính linh hoạt của các tham số cao hơn so với hệ thống trung bình di chuyển đơn lẻ.
/*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