Estratégia de acompanhamento de tendência de combinação de EMA de Hull com atraso zero


Data de criação: 2023-09-19 16:52:39 última modificação: 2023-09-19 16:53:31
cópia: 1 Cliques: 786
1
focar em
1617
Seguidores

Visão geral

A estratégia usa uma combinação de EMAs de atraso de hora zero e EMAs de casco para realizar o acompanhamento de tendências. A EMA de atraso de hora zero elimina o atraso do EMA normal, enquanto a EMA de casco suaviza a curva de preços. A combinação dos dois permite capturar com mais precisão a tendência e realizar transações de acompanhamento de tendências de baixo risco.

Princípio da estratégia

Primeiro, calculemos a EMA com atraso de zero horas: EMA1 = ema(close, Period) EMA2 = ema(EMA1, Period) Difference = EMA1 - EMA2 ZeroLagEMA = EMA1 + Difference

Entre eles, o ZeroLagEMA é um EMA com atraso de zero horas. Ele elimina o atraso do EMA comum.

Em seguida, calcule a curva de Hull EMA após o alinhamento: n2ma = 2*wma(ZeroLagEMA, round(S_period/2)) nma = wma(ZeroLagEMA, S_period) n1 = wma(n2ma - nma, sqn)

Finalmente, calcule a relação entre o tamanho do EMA de casco atual (n1) e o EMA de casco do período anterior (n2), determine a direção da tendência e estabeleça uma estratégia de negociação.

Análise de vantagens

A maior vantagem dessa estratégia é a capacidade de capturar com precisão a direção das tendências.

  1. O EMA de atraso de zero horas elimina o atraso do EMA normal e permite capturar mudanças de preço mais rapidamente.

  2. O Hull EMA foi duplamente lisado, eliminando parte do ruído e tornando a tendência de captura mais clara.

Em comparação com o uso de EMA ou Hull EMA isoladamente, a combinação dos dois pode exercer suas respectivas vantagens, tornando a estratégia mais precisa e confiável.

Análise de Riscos

A estratégia tem os seguintes riscos:

  1. Period e S_period são parâmetros mal definidos, o que pode levar a uma estratégia insensível à reação do mercado, perdendo o momento de negociação.

  2. Em situações de choque, a EMA e a EMA do casco podem produzir mais sinais de cruzamento, o que requer uma falsa ruptura de alerta.

  3. A falta de um sistema de gestão eficaz para lidar com o aumento dos preços durante a noite.

Portanto, é necessário testar cuidadosamente a configuração dos parâmetros, observar com cuidado os sinais indicadores e evitar o risco de salto de preço.

Direção de otimização

A estratégia pode ser otimizada em:

  1. Testar combinações de parâmetros de otimização em diferentes mercados e períodos de tempo, para que a estratégia seja mais adequada a diferentes situações.

  2. Em combinação com outros indicadores de filtragem de falsos sinais de ruptura, como KDJ, MACD, etc., aumenta a estabilidade da estratégia.

  3. Aumentar as estratégias de stop loss para controlar as perdas individuais.

  4. Otimizar o timing de entrada, melhorando ainda mais a taxa de vitória da estratégia. Por exemplo, combinando a direção da tendência, evitando a abertura de posições contrárias.

Resumir

A estratégia usa uma combinação de Hull EMAs com atraso de zero horas para capturar com precisão e agilidade as tendências do mercado e realizar transações de acompanhamento de tendências de forma de baixo risco. A estabilidade da estratégia pode ser aumentada ainda mais por meio de otimização de parâmetros, filtragem de indicadores e parada de perdas.

Código-fonte da estratégia
/*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)