Estratégia do índice de volatilidade da DEMA

Autora:ChaoZhang, Data: 24 de outubro de 2023 16:04:37
Tags:

img

Resumo

Esta estratégia utiliza a média móvel exponencial dupla (DEMA) para calcular a volatilidade dos preços e suaviza ainda mais a volatilidade para detectar tendências nas flutuações de preços, indo longo quando a volatilidade aumenta e curto quando a volatilidade cai.

Estratégia lógica

  1. Calcular a média móvel exponencial dupla (DEMA) do preço, fórmula: DEMA = 2*EMA (preço, N) - EMA (preço, N), N)

  2. Calcular a volatilidade dos preços em relação ao DEMA: Volatilidade = (preço - DEMA) / preço * 100%

  3. Aplicar suavização DEMA sobre a volatilidade novamente para obter sinal de tendência de volatilidade

  4. Quando a volatilidade suavizada ultrapassar um nível, vá longo.

  5. Pode ser configurado para negociar apenas durante um período de tempo específico.

Vantagens

  1. A DEMA detecta mudanças de tendência mais depressa do que médias móveis simples.

  2. A volatilidade reflete o sentimento do mercado, o aumento da volatilidade representa o domínio dos touros, a queda representa os ursos.

  3. A suavização da volatilidade filtra o ruído a curto prazo e capta a tendência principal.

  4. A negociação em períodos de tempo específicos evita custos desnecessários.

  5. As estratégias de stop loss e de saída controlam o risco.

Riscos

  1. A DEMA pode atrasar-se durante tendências fortes, perdendo os melhores pontos de entrada.

  2. O índice de volatilidade pode dar sinais falsos, deve ser combinado com outros indicadores.

  3. Deveria definir stop loss para evitar perdas aumentadas.

  4. Oportunidades perdidas fora do período de negociação.

  5. O período de negociação precisa de testes em dados históricos, o tempo inadequado pode reduzir os lucros.

Gestão de riscos

  1. Optimize os parâmetros da DEMA, use valores menores de N.

  2. Combine outros indicadores como RSI, MACD para confirmação.

  3. Estabelecer o stop loss com base nos dados históricos e na perda máxima tolerável.

  4. Otimizar a selecção do período de negociação.

  5. Teste os tempos de negociação ideais separadamente para diferentes produtos.

Oportunidades de melhoria

  1. Teste diferentes combinações de parâmetros DEMA para melhor suavização.

  2. Tente outras médias móveis como EMA, SMA.

  3. A redução adicional da volatilidade com diferentes parâmetros.

  4. Adicionar outros indicadores para verificação multifatorial.

  5. Usar aprendizagem de máquina para otimizar automaticamente os parâmetros de entrada e saída.

  6. Ensaiar os parâmetros ótimos separadamente para diferentes produtos.

  7. Adicionar estratégias de stop loss e saída para controlar o risco.

Resumo

Esta estratégia capta as mudanças de tendência no sentimento do mercado, calculando a volatilidade suavizada da DEMA, indo longo quando a volatilidade aumenta e curto quando cai. Mas o atraso da DEMA e os sinais falsos são riscos. Os parâmetros devem ser otimizados, implementados estritos stop loss e outros indicadores combinados para confirmação. Se usado corretamente, esta estratégia pode capturar inversões de tendência e fornecer bons retornos de investimento.


/*backtest
start: 2022-10-17 00:00:00
end: 2023-10-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version= 2
strategy("DEMA of DPD Strategy ",shorttitle="DPD% DEMA " ,overlay=false)

buyper =input(-2)
sellper=input(2)

demalen = input(50,title="Dema Length")

e1= ema(close,demalen)
e2=ema(e1,demalen)
demaprice  =   2 * e1 - e2

price=close
demadifper =  ((price-demaprice)/price)*100


OverDemaPer = input(1, title="Band for OverBought")
UnderDemaPer= input(-1,title="Band for OverSold")

band1 = hline(OverDemaPer)
band0 = hline(UnderDemaPer)
zeroline=0
fill(band1, band0, color=green, transp=90)


demalen2 = input(21,title="DEMA to Calculate dema of DPD")
demaofdpd =ema(demadifper,demalen2)
demaofdpd2 =ema(demaofdpd,demalen2)
resultstrategy = 2*demaofdpd - demaofdpd2

plot(resultstrategy,color=blue)


yearfrom = input(2018)
yearuntil =input(2019)
monthfrom =input(6)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)



if (  crossover(resultstrategy,buyper)  ) 
    strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND",  comment="BUY")
    
else
    strategy.cancel(id="BUY")


if ( crossunder(resultstrategy,sellper) ) 

    strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND",  comment="SELL")
else
    strategy.cancel(id="SELL")
    
    
    

Mais.