Zero Lag Hull EMA Комбинированная стратегия следования за трендом


Дата создания: 2023-09-19 16:52:39 Последнее изменение: 2023-09-19 16:53:31
Копировать: 1 Количество просмотров: 786
1
Подписаться
1617
Подписчики

Обзор

Эта стратегия использует комбинацию EMA с нулевой задержкой и Hull EMA для достижения трендового отслеживания. EMA с нулевой задержкой устраняет задержки обычного EMA, а Hull EMA сглаживает ценовую кривую. Сочетание этих двух может более точно улавливать трендовые движения и обеспечивать низкий риск трендового отслеживания.

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

Сначала вычислите EMA с нулевой задержкой: EMA1 = ema(close, Period) EMA2 = ema(EMA1, Period) Difference = EMA1 - EMA2 ZeroLagEMA = EMA1 + Difference

Из них ZeroLagEMA - это EMA с нулевой временной задержкой. Она устраняет задержку обычной EMA.

Затем вычисляется кривая после сглаживания Hull EMA: n2ma = 2*wma(ZeroLagEMA, round(S_period/2)) nma = wma(ZeroLagEMA, S_period) n1 = wma(n2ma - nma, sqn)

Наконец, рассчитывается отношение величины текущего Hull EMA (n1) к Hull EMA (n2) предыдущего цикла, определяется направление тенденции, разрабатывается стратегия торговли.

Анализ преимуществ

Самым большим преимуществом этой стратегии является то, что она позволяет точно отслеживать тенденции по двум причинам:

  1. EMA с нулевой часовой задержкой устраняет задержки обычной EMA и позволяет быстрее улавливать изменения цен.

  2. Hull EMA имеет двойную сглаживание цены, что позволяет отфильтровать часть шума, и тенденция Capture более ясна.

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

Анализ рисков

Основные риски этой стратегии:

  1. Неправильная настройка параметров Period и S_period может привести к тому, что стратегия будет нечувствительна к реакции рынка и пропустит время торговли.

  2. В случае землетрясения, EMA и Hull EMA могут создавать больше перекрестных сигналов, требующих осторожного ложного прорыва.

  3. Нельзя эффективно бороться с резким скачком цен за одну ночь.

Таким образом, необходимо тщательно тестировать параметры, тщательно рассматривать индикаторные сигналы, чтобы предотвратить риск скачка цены.

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

Эта стратегия может быть оптимизирована в следующих аспектах:

  1. Оптимизация комбинации параметров для различных рынков, для различных периодов, чтобы стратегия была лучше адаптирована к различным ситуациям.

  2. В сочетании с другими показателями фильтрации фальшивых прорывных сигналов, таких как KDJ, MACD и т. д., повышает стабильность стратегии.

  3. Добавление стратегий сдерживания убытков, чтобы контролировать одиночные убытки.

  4. Оптимизация входного времени, дальнейшее повышение выигрышной вероятности стратегии. Например, в сочетании с направлением тенденции, избегайте открытия позиции на обратном направлении.

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

Эта стратегия использует комбинацию Hull EMA с нулевой временной задержкой, которая может точно и чувствительно улавливать рыночные тенденции и вести торговлю по тренду с низким уровнем риска. Стабильность стратегии может быть дополнительно улучшена с помощью оптимизации параметров, фильтрации показателей и остановки убытков.

Исходный код стратегии
/*backtest
start: 2023-08-19 00:00:00
end: 2023-09-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// Zero Lag EMA combined with Hull moving average for smoothing purposes.
// author: email: [email protected]

strategy("Ujanja", overlay=true)



Period = input(title="Period",defval=30, minval=1)
S_period=input(title="Smoother Period",defval=176)
EMA1= ema(close,Period)
EMA2= ema(EMA1,Period)
Difference= EMA1 - EMA2
ZeroLagEMA= EMA1 + Difference

n2ma=2*wma(ZeroLagEMA,round(S_period/2))
nma=wma(ZeroLagEMA,S_period)
diff=n2ma-nma
sqn=round(sqrt(S_period))


n2ma1=2*wma(ZeroLagEMA[1],round(S_period/2))
nma1=wma(ZeroLagEMA[1],S_period)
diff1=n2ma1-nma1
sqn1=round(sqrt(S_period))


n1=wma(diff,sqn)
n2=wma(diff1,sqn)

c=n1>n2?green:red
ma=plot(n1,color=c)


longCondition = n1>n2
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = longCondition != true
if (shortCondition)
    strategy.entry("Short", strategy.short)