
Эта стратегия основана на перекрестных сигналах Hull Moving Average (HMA). HMA является продвинутым индикатором движущихся средних, который уменьшает отставание, предоставляя более быстрые и скользящие сигналы рыночной тенденции, используя особую комбинацию взвешенных движущихся средних.
В основе стратегии лежит использование перекрестных HMA различных циклов для захвата переходных точек в рыночных тенденциях. Процесс вычисления HMA включает в себя три шага: сначала вычисляется WMA полуцикла, затем WMA полного цикла, и, наконец, с помощью специальной комбинации этих двух WMA повторно вычисляется WMA одного цикла в качестве квадратного корня исходного цикла.
Это количественная торговая стратегия, основанная на скрещивании HMA, которая обеспечивает более своевременные торговые сигналы, уменьшая задержку традиционных движущихся средних. Конструкция стратегии проста, легко понятна и реализуема, но в практическом применении требуется внимание к адаптации к рыночной среде и управлению рисками.
/*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)