В процессе загрузки ресурсов... загрузка...

Количественная стратегия перекрестного перемещения двойного корпуса

Автор:Чао Чжан, Дата: 2024-11-29 16:53:05
Тэги:HMAМ.А.WMA

img

Обзор

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

Принцип стратегии

В основе стратегии лежит захват точек переворота тренда рынка с использованием кроссоверов HMA разных периодов. Расчет HMA включает в себя три этапа: сначала расчет WMA полупериодного периода, затем расчет WMA полного периода и, наконец, вычисление другого WMA с периодом, равным квадратному корню исходного периода, используя специальную комбинацию первых двух WMA. Сигналы покупки генерируются, когда быстрая HMA (по умолчанию 9 периодов) пересекает более медленной HMA (по умолчанию 16 периодов), и сигналы продажи, когда быстрая HMA пересекает ниже медленной HMA.

Преимущества стратегии

  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)

Связанные

Больше