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.
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)
Calcular a volatilidade dos preços em relação ao DEMA: Volatilidade = (preço - DEMA) / preço * 100%
Aplicar suavização DEMA sobre a volatilidade novamente para obter sinal de tendência de volatilidade
Quando a volatilidade suavizada ultrapassar um nível, vá longo.
Pode ser configurado para negociar apenas durante um período de tempo específico.
A DEMA detecta mudanças de tendência mais depressa do que médias móveis simples.
A volatilidade reflete o sentimento do mercado, o aumento da volatilidade representa o domínio dos touros, a queda representa os ursos.
A suavização da volatilidade filtra o ruído a curto prazo e capta a tendência principal.
A negociação em períodos de tempo específicos evita custos desnecessários.
As estratégias de stop loss e de saída controlam o risco.
A DEMA pode atrasar-se durante tendências fortes, perdendo os melhores pontos de entrada.
O índice de volatilidade pode dar sinais falsos, deve ser combinado com outros indicadores.
Deveria definir stop loss para evitar perdas aumentadas.
Oportunidades perdidas fora do período de negociação.
O período de negociação precisa de testes em dados históricos, o tempo inadequado pode reduzir os lucros.
Optimize os parâmetros da DEMA, use valores menores de N.
Combine outros indicadores como RSI, MACD para confirmação.
Estabelecer o stop loss com base nos dados históricos e na perda máxima tolerável.
Otimizar a selecção do período de negociação.
Teste os tempos de negociação ideais separadamente para diferentes produtos.
Teste diferentes combinações de parâmetros DEMA para melhor suavização.
Tente outras médias móveis como EMA, SMA.
A redução adicional da volatilidade com diferentes parâmetros.
Adicionar outros indicadores para verificação multifatorial.
Usar aprendizagem de máquina para otimizar automaticamente os parâmetros de entrada e saída.
Ensaiar os parâmetros ótimos separadamente para diferentes produtos.
Adicionar estratégias de stop loss e saída para controlar o risco.
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")