Двойной кроссовер скользящих средних в сочетании с количественной стратегией скользящих средних Халла

HMA MA WMA
Дата создания: 2024-11-29 16:53:05 Последнее изменение: 2024-11-29 16:53:05
Копировать: 2 Количество просмотров: 514
1
Подписаться
1617
Подписчики

Двойной кроссовер скользящих средних в сочетании с количественной стратегией скользящих средних Халла

Обзор

Эта стратегия основана на перекрестных сигналах Hull Moving Average (HMA). HMA является продвинутым индикатором движущихся средних, который уменьшает отставание, предоставляя более быстрые и скользящие сигналы рыночной тенденции, используя особую комбинацию взвешенных движущихся средних.

Стратегический принцип

В основе стратегии лежит использование перекрестных HMA различных циклов для захвата переходных точек в рыночных тенденциях. Процесс вычисления HMA включает в себя три шага: сначала вычисляется WMA полуцикла, затем WMA полного цикла, и, наконец, с помощью специальной комбинации этих двух WMA повторно вычисляется WMA одного цикла в качестве квадратного корня исходного цикла.

Стратегические преимущества

  1. Сигналы реагируют быстро: HMA заметно уменьшает задержку традиционных движущихся средних с помощью специальных методов расчета, что позволяет быстрее улавливать изменения в рыночных тенденциях.
  2. Фильтрация шума: с помощью перекрестного подтверждения двух равнолинейных линий можно эффективно отфильтровать рыночный шум и уменьшить ложные сигналы.
  3. Гибкость параметров: стратегии позволяют корректировать периодические параметры для быстрых и медленных линий в соответствии с различными рыночными условиями.
  4. Визуализация: стратегия четко отображает на графике две средние линии и торговые сигналы для удобства анализа и оптимизации.

Стратегический риск

  1. Риск рыночных потрясений: при поперечных колебаниях частое перекрестное движение может привести к чрезмерной торговле и последовательным остановкам.
  2. Риск отставания: Несмотря на то, что HMA меньше отстает от традиционной средней линии, существует определенная отсталость, которая может пропустить лучшую точку входа.
  3. Чувствительность параметров: различные комбинации параметров могут привести к совершенно разным результатам сделки, требуя тщательной оптимизации параметров.
  4. Риск ложного прорыва: рынок может иметь ложный прорыв, который приведет к ошибочным торговым сигналам.

Направление оптимизации стратегии

  1. Введение фильтра тренда: можно добавить ADX или индикатор силы тренда, торговать только в том случае, если есть явная тенденция.
  2. Оптимизация механизмов остановки убытков: разработать стратегию остановки убытков, основанную на динамическом остановке убытков, например, ATR или волатильности.
  3. Добавление условий подтверждения сделки: комбинированный сигнал подтверждения в качестве вспомогательного сигнала.
  4. Параметрическая адаптация: разработка механизмов динамической корректировки параметров на основе рыночной волатильности.
  5. Оптимизация управления рисками: добавление модулей управления позициями и управления капиталом.

Подвести итог

Это количественная торговая стратегия, основанная на скрещивании 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)