
Двойная Hull Moving Average (HMA) - это система отслеживания тенденций, основанная на Hull Moving Average (HMA). Эта стратегия использует отношения между стандартной HMA и гладкой версией HMA (HMA3) для выявления изменений в рыночных тенденциях и создания высокой вероятности продолжения и обратного подхода в условиях бычьего и медвежьего рынка.
Ключевым принципом этой стратегии является сравнение относительной позиции между движущимися средними Хелл и их перекрестным положением в двух различных методах расчета. Конкретные реализационные способы следующие:
Стандартный HMA ((variable a): использует оригинальный алгоритм, разработанный Уильямом Халлом, который обеспечивает более чувствительную подвижную среднюю через трехэтапный процесс вычислений:
Сглаживание HMA3 ((variable b): применяется более сложный алгоритм сглаживания, реализуемый с помощью нескольких комбинаций WMA:
Логика генерирования сигнала:
Логика исполнения стратегии:
Стратегия также содержит визуальные компоненты, такие как движущиеся средние, которые меняют цвет в зависимости от направления тенденции, и четкие маркировки сигналов покупки и продажи, которые помогают трейдерам интуитивно понимать состояние рынка.
Уменьшение рыночного шума: система двойного HMA эффективно фильтрует краткосрочные колебания цен, уменьшая ложные сигналы, сохраняя при этом чувствительность к истинным изменениям тенденции. Стандартный HMA сам по себе уже более чувствителен к традиционным движущимся средним, а его сочетание с гладкой версией HMA еще больше повышает качество сигнала.
Раннее распознавание тенденций: благодаря особенностям алгоритма Hull Moving Average, эта стратегия может распознавать изменения в тренде раньше, чем традиционные движущиеся средние, что обеспечивает лучший момент входа.
Ясная визуальная обратная связь: стратегия предоставляет интуитивно понятный цветовой код (бычий - зеленый, медвежий - красный) и маркировку сигналов покупки и продажи, позволяя трейдерам быстро оценивать состояние рынка.
Полный торговый механизм: стратегия не только предоставляет сигналы, но и включает в себя полную логику управления позициями, автоматическую обработку позиций, открытие и закрытие позиций, реализацию действительно автоматизированной торговли.
Гибкая конфигурация параметров: пользователи могут корректировать длину HMA и источник цен в соответствии с личными предпочтениями и рыночными характеристиками, чтобы адаптироваться к различным стилям торговли и рыночной среде.
Высокая вычислительная эффективность: по сравнению с сложными многопоказательными системами, эта стратегия использует относительно простые математические вычисления, снижая риск переизмеримости, сохраняя при этом эффективность выполнения.
Фальшивые сигналы в шокирующем рынке: несмотря на то, что система двойного HMA уменьшает шум, в горизонтальных рынках, где нет четкой тенденции, могут возникать частые перекрестные сигналы, которые приводят к последовательной убыточной торговле. Можно рассмотреть возможность добавления дополнительных фильтрующих условий, таких как индикатор волатильности или подтверждение силы тенденции.
Проблема отставания: хотя HMA отстает меньше, чем традиционные скользящие средние, в любой системе, основанной на скользящих средних, есть определенная отсталость, которая может привести к тому, что в сильно волатильных рынках будут пропущены лучшие точки входа или выхода.
Чувствительность к параметрам: эффективность стратегии сильно зависит от выбранных параметров длины HMA. Разные рынки и временные рамки могут требовать разных оптимальных параметров. Рекомендуется проведение всестороннего отбора для определения оптимальных параметров в конкретной рыночной среде.
Отсутствие механизма остановки убытков: реализация текущей стратегии не имеет интегрированной функции остановки убытков, что может привести к значительному отступлению в случае внезапного обратного тренда. Следует рассмотреть возможность добавления условий остановки убытков, таких как остановка на основе ATR или временная остановка.
Одиночная зависимость от показателя: стратегия зависит только от показателя HMA, не имеет многомерного анализа рынка и может плохо работать в определенных условиях рынка. Для повышения устойчивости стратегии следует рассмотреть возможность использования других типов показателей, таких как динамика или волатильность.
Добавление фильтра тренда: введение дополнительных индикаторов подтверждения тренда, таких как ADX (средний индекс направления), совершение торгов только при подтверждении наличия сильной тенденции, избежание частых торгов в поперечном рынке. Реализация может быть следующей: только когда значение ADX больше определенного порога (например, 25), рассматривается перекрестный сигнал HMA.
Интегрированный механизм адаптации к волатильности: изменение параметров HMA в зависимости от динамики рыночной волатильности, использование более длительных циклов в условиях высокой волатильности и более коротких циклов в условиях низкой волатильности. Это может быть достигнуто путем расчета ATR (среднее значение истинной волатильности) и его отображения на параметры длины HMA.
Внедрение интеллектуальных стоп-механизмов: добавление ATR-основанного стопа или использование мобильного стопа, такого как отслеживание HMA с обратной мобильной установкой стоп-стопа, для защиты уже полученных прибылей и ограничения потенциальных потерь.
Введение подтверждения объема сделок: включение индикатора объема сделок в логику генерации сигнала, требует покупки сигнала с увеличением объема сделок, повышает надежность сигнала. Можно проверить, не превышает ли объем сделок его n-дневную среднюю стоимость.
Оптимизация управления позициями: возможность корректировки размеров позиций на основе риска, а не фиксированного процента вложений. Рисковый порог для каждой сделки может быть рассчитан в соответствии с ATR, чтобы гарантировать, что риск для каждой сделки является единым.
Добавить временные фильтры: учитывать временные особенности рынка и избегать известных неэффективных торговых периодов, таких как азиатский обеденный час или период высокой волатильности до и после публикации несельскохозяйственных данных в США.
Добавление логики обратного входа: после подтверждения направления тренда, ожидание небольшого обратного входа, а не прямой вход в перекрестке, может обеспечить лучшую входную цену. Это может быть достигнуто путем обнаружения расстояния между ценой и HMA.
Двойная Hull Moving Average Cross Moving Quantitative Strategy - это хорошо разработанная система отслеживания тенденций, которая использует отношения между двумя методами расчета HMA-индикаторов, чтобы обеспечить четкий многополосный сигнал. Сравнивая относительное положение и пересечение стандартной HMA с гладкой версией HMA3, стратегия может эффективно уменьшить рыночный шум, сохраняя при этом чувствительность к изменениям в ценовой динамике. Преимущество стратегии заключается в ее четкой логике генерирования сигналов, интуитивной визуальной обратной связи и полноценном механизме торговли.
Тем не менее, стратегия также сталкивается с такими рисками, как высокий уровень чувствительности к параметрам и отсутствие механизмов остановки убытков. Устойчивость и прибыльность стратегии могут быть значительно улучшены путем добавления фильтров тренда, интеграции механизмов адаптации к волатильности, реализации интеллектуальных остановок и введения подтверждения объема торгов.
В целом, это прочная и хорошо масштабируемая структура количественной стратегии, которая подходит для трейдеров, следящих за среднесрочными и долгосрочными тенденциями, а также может служить ключевым компонентом более сложных торговых систем.
/*backtest
start: 2024-08-04 00:00:00
end: 2025-08-02 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("HMA Strat", shorttitle="HMAstrat", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=1)
// === INPUTS ===
length = input.int(24, minval=1, title="HMA Length")
src = input.source(hl2, "Source")
showSignals = input.bool(true, "Show Buy/Sell Signals")
// === FUNCTIONS ===
hma(_src, _length) =>
wma1 = ta.wma(_src, _length)
wma2 = ta.wma(_src, _length / 2)
rawHMA = 2 * wma2 - wma1
ta.wma(rawHMA, math.round(math.sqrt(_length)))
hma3(_src, _length) =>
p = _length / 2
ta.wma(ta.wma(close, p / 3) * 3 - ta.wma(close, p / 2) - ta.wma(close, p), p)
// === HMA CALCULATIONS ===
a = hma(src, length)
b = hma3(src, length)
// === COLOR LOGIC ===
isBull = b > a
colorLine = isBull ? color.lime : color.red
fillColor = color.new(colorLine, 80)
// === PLOTTING ===
p1 = plot(a, color=colorLine, linewidth=1)
p2 = plot(b, color=colorLine, linewidth=1)
fill(p1, p2, color=fillColor)
// === SIGNALS ===
crossUp = b > a and b[1] < a[1]
crossDown = a > b and a[1] < b[1]
plotshape(showSignals and crossUp, title="Buy Signal", location=location.belowbar, style=shape.labelup, size=size.tiny, color=color.green, text="Buy")
plotshape(showSignals and crossDown, title="Sell Signal", location=location.abovebar, style=shape.labeldown, size=size.tiny, color=color.red, text="Sell")
// === STRATEGY LOGIC ===
// Close opposite position before opening a new one
if crossUp
strategy.close("Short")
strategy.entry("Long", strategy.long)
if crossDown
strategy.close("Long")
strategy.entry("Short", strategy.short)