Chiến lược này dựa trên các tín hiệu chéo của Hull Moving Average (HMA). Nó tạo ra các tín hiệu giao dịch khi hai đường HMA với các giai đoạn khác nhau giao nhau. HMA là một chỉ số trung bình di chuyển tiên tiến làm giảm sự chậm trễ thông qua sự kết hợp đặc biệt của Weighted Moving Averages (WMA), cung cấp các tín hiệu xu hướng thị trường nhanh hơn và mượt mà hơn.
Cốt lõi của chiến lược nằm trong việc nắm bắt các điểm đảo ngược xu hướng thị trường bằng cách sử dụng các giao thoa HMA của các giai đoạn khác nhau. Việc tính toán HMA bao gồm ba bước: đầu tiên tính WMA nửa giai đoạn, sau đó tính WMA toàn thời gian và cuối cùng tính WMA khác với thời gian bằng gốc vuông của giai đoạn ban đầu bằng cách sử dụng một sự kết hợp đặc biệt của hai WMA đầu tiên. Các tín hiệu mua được tạo ra khi HMA nhanh (thời gian mặc định 9) vượt qua trên HMA chậm (thời gian mặc định 16) và bán tín hiệu khi HMA nhanh vượt qua dưới HMA chậm.
Đây là một chiến lược giao dịch định lượng dựa trên các giao dịch chéo HMA, cung cấp các tín hiệu giao dịch kịp thời hơn bằng cách giảm sự chậm trễ của các đường trung bình động truyền thống.
/*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)