Estratégia dupla de cruzamento da EMA

Autora:ChaoZhang, Data: 2023-10-30 12:27:50
Tags:

img

Resumo

A estratégia de cruzamento de EMA dupla é uma estratégia típica de tendência. Ela usa duas linhas de EMA de períodos diferentes e gera sinais de negociação com base em seu cruzamento. Quando a EMA mais rápida cruza acima da EMA mais lenta, um sinal de compra é gerado. Quando a EMA mais rápida cruza abaixo da EMA mais lenta, um sinal de venda é gerado. Esta estratégia pode rastrear tendências de médio e longo prazo e capturar oportunidades de negociação nos estágios de iniciação da tendência.

Estratégia lógica

Os principais componentes desta estratégia são:

  1. Defina comprimentos para a EMA mais rápida e a EMA mais lenta.

  2. Calcule a EMA mais rápida e a EMA mais lenta.

  3. Determine situações de cruzamento da EMA para gerar sinais de negociação. Quando a EMA mais rápida cruza acima da EMA mais lenta, um sinal de compra é gerado. Quando a EMA mais rápida cruza abaixo da EMA mais lenta, um sinal de venda é gerado.

  4. Entrar em negócios com base em sinais. Quando se vai long, as posições curtas existentes são fechadas primeiro antes de abrir posições longas.

  5. Quando se vai long, o stop loss é acionado se o preço cair abaixo do mínimo anterior por uma porcentagem definida.

  6. As posições longas são fechadas quando a EMA mais rápida cruza abaixo da EMA mais lenta. As posições curtas são fechadas quando a EMA mais rápida cruza acima da EMA mais lenta.

A lógica é simples e intuitiva. O cruzamento da EMA determina a direção e a força da tendência. A EMA mais rápida reage rapidamente às mudanças de preço de curto prazo, enquanto a EMA mais lenta responde às tendências de longo prazo de forma constante. O cruzamento das duas linhas é uma maneira clássica de detectar mudanças de tendência.

Análise das vantagens

As vantagens desta estratégia são as seguintes:

  1. O conceito é simples, fácil de compreender e implementar.

  2. Pode acompanhar eficazmente as tendências de médio e longo prazo e captar as oportunidades com antecedência.

  3. A configuração de EMA dupla evita o ruído das flutuações de curto prazo do mercado.

  4. Tem regras claras de entrada, de saída e regras de stop loss.

  5. Só precisa de alguns parâmetros, não é propenso a sobreajustes, fácil ajuste de parâmetros adequado para iniciantes.

  6. Bons resultados de backtest, viáveis para negociação ao vivo. Pode ser usado isoladamente ou combinado com outras estratégias.

Análise de riscos

Alguns riscos desta estratégia:

  1. O cruzamento de EMA dupla é propenso a gerar sinais falsos e flipsaws. Parâmetros precisam ser ajustados para filtrar sinais inválidos.

  2. Não consegue lidar bem com situações de variação e inversão de tendência, precisa de confirmação de outros indicadores.

  3. A estratégia EMA dupla tende a perseguir máximos e vender mínimos.

  4. Os resultados dos testes de regresso podem ser sobreajustados até certo ponto.

  5. Não haver um stop loss oportuno pode conduzir a grandes perdas.

  6. Os custos de transacção podem afetar a rendibilidade real, devendo ser tidos em conta os factores da Comissão para diferentes produtos.

Áreas de melhoria

Algumas formas de melhorar a estratégia:

  1. Otimize os parâmetros do período EMA para encontrar a melhor combinação, usando otimização de avanço e aprendizado de máquina.

  2. Adicionar indicadores de filtro de tendência como ADX, CCI etc. para evitar a negociação em tendências incertas.

  3. Adicione indicadores de volume como o volume de negociação, no volume do saldo para garantir que a negociação real esteja impulsionando os sinais.

  4. Implementar um stop loss dinâmico para ajustar automaticamente as paradas com base na volatilidade do mercado.

  5. Combinar produtos correlacionados para utilizar a correlação para a gestão de riscos.

  6. Introduzir aprendizado de máquina para otimização de parâmetros, engenharia de recursos, filtragem de sinais, etc.

  7. Considere os custos de transação, ajuste as paradas e o tamanho para reduzir a frequência do comércio.

  8. Personalizar os parâmetros com base nas características do produto para melhorar a adaptabilidade.

  9. Conceber um quadro estratégico composto, combinado com outras estratégias para melhorar a robustez.

Estas melhorias podem tornar a estratégia mais robusta e rentável para a negociação ao vivo.

Conclusão

Esta estratégia usa duplo crossover EMA para gerar sinais de negociação e pode efetivamente rastrear tendências de médio e longo prazo. As vantagens estão em sua simplicidade e bons resultados de backtest, tornando-o fácil de usar para iniciantes. Mas os riscos existem e devem ser gerenciados por meio de otimização de parâmetros, adição de indicadores, paradas dinâmicas, otimização de custos comerciais, etc. A estratégia pode ser usada isoladamente ou combinada com outros para maior praticidade.


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

//@version=2

strategy(title = "EMA Cross Strategy", shorttitle = "EMA Cross",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
UseStopLoss = input(true,"UseStopLoss")

window() => time >=  timestamp(StartYear, StartMonth, StartDay,00,00) ? true : false

stopLoss = input(20, title = "Stop loss percentage(0.1%)")


maFastSource   = input(defval = open, title = "Fast MA Source")
maFastLength   = input(defval = 12, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource   = input(defval = open, title = "Slow MA Source")
maSlowLength   = input(defval = 26, title = "Slow MA Period", minval = 1)

maFast = ema(maFastSource, maFastLength)
maSlow = ema(maSlowSource, maSlowLength)


fast = plot(maFast, title = "Fast MA", color = #7a8598, linewidth = 2, style = line, transp = 50)
slow = plot(maSlow, title = "Slow MA", color = #e08937, linewidth = 2, style = line, transp = 50)


longEMA = crossover(maFast, maSlow)
exitLong = crossunder(maFast, maSlow)

shortEMA = crossover(maSlow, maFast)
exitShort = crossover(maFast, maSlow)


if (longEMA)
    strategy.entry("LongId", strategy.long, when=window())
 
if (shortEMA)
    strategy.entry("ShortId", strategy.short, when=window())


if (UseStopLoss)
    strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick)
    strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)

Mais.