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