Esta estratégia é construída com base no indicador EMA duplo com o propósito de reconhecer as tendências de preços e seguir as tendências. Primeiro calcula a EMA de médio a longo prazo e a EMA de curto prazo, e depois implementa uma posição longa quando há uma cruz de ouro e uma posição curta quando há uma cruz de morte entre as duas EMA. Enquanto isso, a filtragem mais alta / mais baixa também é introduzida para eliminar ainda mais os falsos sinais.
Os principais indicadores desta estratégia são as duas EMAs, uma a curto prazo e outra a longo prazo.
EMA1: Período de EMA de médio a longo prazo, com incumprimento de 34 dias
EMA2: período de EMA de curto prazo, por defeito até 13 dias
Ema_sr: EMA de médio a longo prazo baseada no preço de fechamento
EMA: EMA mais elevada da EMA, período é EMA2
EMA: EMA mais baixa da EMA, período é EMA2
Ema_ysl: EMA utilizado para gerar sinais de negociação, calculado com base na relação entre ema_sr e highest/lowest_ema
cruzes detectam cruzes de ouro e morte entre ema_sl e ema_ysl, e, assim, alcançar a tendência seguindo.
A combinação de EMA dupla pode julgar as tendências de preços com mais precisão. A EMA de médio a longo prazo filtra o ruído de curto prazo, enquanto a EMA de curto prazo pode rastrear atempadamente as voltas das tendências de médio prazo. A introdução da EMA mais alta / mais baixa pode eliminar ainda mais sinais falsos e reduzir as negociações desnecessárias.
A maior vantagem desta estratégia reside em sua identificação precisa da tendência. A própria EMA dupla é superior à EMA única, SMA e outros indicadores para capturar mudanças de tendência. E a aplicação de highest/lowest_ema pode efetivamente filtrar sinais falsos causados por pullbacks de curto prazo, o que é crítico para estratégias de tendência.
Além disso, os parâmetros desta estratégia são simples e fáceis de ajustar e otimizar. Os usuários só precisam se concentrar nos dois parâmetros EMA, o que é muito intuitivo. Isso também torna a estratégia fácil de entender e usar.
O principal risco desta estratégia é que não consegue identificar inversões de tendência. Quando o preço forma ajustes de longo prazo ou grandes voltas, o atraso da EMA dupla pode levar a perder os melhores pontos de entrada.
Além disso, a própria EMA não tem capacidade para responder a emergências.
Para atenuar os riscos acima, recomendamos reduzir adequadamente a duração da EMA de médio a longo prazo ou introduzir indicadores como o MACD para lidar com emergências.
Esta estratégia pode ser ainda melhorada, nomeadamente nos seguintes domínios principais:
Testar mais combinações de parâmetros EMA para encontrar os parâmetros ideais;
Adicionar julgamento de volume para evitar a emissão de sinais errados quando oscila o preço;
Combinar linhas de tendência, canais e outras ferramentas para avaliar com mais precisão os pontos de virada da tendência.
Através da otimização de parâmetros, adição de condições de filtro e outros meios, é promissor para melhorar ainda mais a estabilidade e rentabilidade da estratégia.
Em geral, esta estratégia tem uma capacidade relativamente forte de identificar tendências, filtrando o ruído com a EMA dupla e suavizando efetivamente a curva de preços.
No entanto, a própria estratégia tem algum atraso na identificação oportuna de inversões de tendência. Este é o principal risco que enfrenta e também a direção chave para futuras otimizações. Esperamos aumentar ainda mais a robustez da estratégia através do ajuste de parâmetros, filtragem de sinal e outros meios, para que possa alcançar retornos constantes em mais ambientes de mercado.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // Modified from kivancfr3762's A2MK script strategy("EMA STRATEGY", overlay=true) ema2=input(13, "EMA2 Length") ema1=input(34, "EMA1 Length") ema_sr = ema((max(close[1], high) + min(close[1], low)) / 2, ema1) highest_ema = ema(highest(ema_sr, 3), ema2) lowest_ema = ema(lowest(ema_sr, 3), ema2) k1 = ema_sr > highest_ema k2 = ema_sr < lowest_ema ema_ysl = iff(k1, lowest_ema, highest_ema) longCondition = crossover(ema_ysl, ema_sr) if (longCondition) strategy.entry("Short", strategy.short) shortCondition = crossunder(ema_ysl, ema_sr) if (shortCondition) strategy.entry("Long", strategy.long)