
Chiến lược này dựa trên tín hiệu giao dịch của đường trung bình di chuyển Hull Moving Average, HMA. Bằng cách tính toán hai đường HMA nhanh và chậm, nó tạo ra tín hiệu giao dịch khi chúng giao nhau. HMA là một chỉ số trung bình di chuyển tiên tiến, nó làm giảm sự chậm trễ bằng cách kết hợp đặc biệt của đường trung bình di chuyển WMA để cung cấp tín hiệu xu hướng thị trường nhanh hơn và trơn tru hơn.
Cốt lõi của chiến lược này là sử dụng các điểm chuyển đổi của xu hướng thị trường bằng cách giao thoa HMA của các chu kỳ khác nhau. Quá trình tính toán HMA bao gồm ba bước: đầu tiên tính WMA nửa chu kỳ, sau đó tính WMA toàn chu kỳ, và cuối cùng tính lại WMA của một chu kỳ bằng căn bậc hai của chu kỳ ban đầu thông qua sự kết hợp đặc biệt của hai WMA này.
Đây là một chiến lược giao dịch định lượng dựa trên giao dịch HMA, cung cấp tín hiệu giao dịch kịp thời hơn bằng cách giảm độ trễ của các đường trung bình di chuyển truyền thống. Chiến lược được thiết kế đơn giản, dễ hiểu và thực hiện, nhưng trong ứng dụng thực tế cần chú ý đến khả năng thích ứng với môi trường thị trường và quản lý rủi ro. Với sự tối ưu hóa và hoàn thiện liên tục, chiến lược này có tiềm năng trở thành một hệ thống giao dịch mạnh mẽ.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Hull Moving Average Crossover", overlay=true)
fastLength = input.int(9, "Fast HMA Length", minval=1)
slowLength = input.int(16, "Slow HMA Length", minval=1)
hma(src, length) =>
wma1 = ta.wma(src, length / 2)
wma2 = ta.wma(src, length)
ta.wma(2 * wma1 - wma2, math.floor(math.sqrt(length)))
fastHMA = hma(close, fastLength)
slowHMA = hma(close, slowLength)
plot(fastHMA, color=color.blue, title="Fast HMA")
plot(slowHMA, color=color.red, title="Slow HMA")
longCondition = ta.crossover(fastHMA, slowHMA)
shortCondition = ta.crossunder(fastHMA, slowHMA)
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
plotshape(longCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(shortCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)