Estratégia de cruzamento de média móvel EMA


Data de criação: 2023-11-10 15:05:22 última modificação: 2023-11-10 15:05:22
cópia: 0 Cliques: 730
1
focar em
1617
Seguidores

Estratégia de cruzamento de média móvel EMA

Visão geral

A estratégia usa o cruzamento da linha EMA rápida e da linha EMA lenta como sinais de compra e venda para realizar negociações automáticas de acordo com o cruzamento da linha média. A linha EMA rápida aperta a mudança de preço e a linha EMA lenta suaviza a mudança de preço. Um sinal de compra é gerado quando a linha EMA rápida atravessa a linha EMA lenta da direção inferior; um sinal de venda é gerado quando a linha EMA rápida desce da direção superior e rompe a linha EMA lenta.

Princípio da estratégia

A estratégia gerou sinais de negociação principalmente através da contagem das linhas EMA rápida e EMA lenta e da comparação da relação entre as duas linhas médias.

Primeiro, configure o ciclo de EMAs rápidas em FAST para 1 no parâmetro de entrada, para que o EMA rápido possa acompanhar as mudanças de preço. Ao mesmo tempo, configure o ciclo de EMAs lentas, para gerar um sinal de compra, e para gerar um sinal de venda.

Em seguida, de acordo com o período de entrada, calcula-se o EMA rápido e o EMA lento. O EMA rápido é um período fixo de 1, acompanhando o preço; O EMA lento é um parâmetro ajustável, suavizando os dados do preço.

Em seguida, compare a relação de tamanho entre o EMA rápido e o EMA lento, para determinar a situação de cruzamento. Se o EMA rápido atravessar o EMA lento da direção inferior, produz um garfo de ouro, satisfazendo a condição de compra; Se o EMA rápido cair da direção superior e quebrar o EMA lento, produz um garfo morto, satisfazendo a condição de venda.

Finalmente, quando as condições de compra e venda são satisfeitas, execute as instruções correspondentes de abertura de posição e posição para concluir a transação. Ao mesmo tempo, verifique se o tempo atual está dentro do intervalo de tempo de retracção para evitar transações erradas fora do intervalo de datas.

Análise de vantagens

  • O uso de um cruzamento de linhas médias para determinar pontos de compra e venda é um indicador técnico bem desenvolvido e confiável.
  • O ciclo EMA é ajustável e pode ser ajustado de acordo com os parâmetros do mercado para encontrar as melhores oportunidades de negociação
  • A ideia de comprar e vender com um garfo de ouro é clara e fácil de entender.
  • Flexível configuração de compra e venda usando diferentes parâmetros de EMA e estratégias de negociação totalmente personalizadas
  • Opção de negociar apenas a longo prazo, apenas a longo prazo ou de negociação bidirecional, com flexibilidade para adaptar-se a diferentes condições de mercado
  • Tempo de resposta ajustável para testes de otimização para diferentes períodos de tempo

Análise de Riscos

  • EMAs com cruzamento de linha média são retardadas e podem perder o melhor momento para a mudança de preço
  • Os sinais gerados por EMAs cruzadas podem ser frequentes em mercados altamente voláteis, resultando em overtrading
  • Os parâmetros precisam ser testados repetidamente para encontrar a melhor combinação de EMAs, caso contrário, um grande número de sinais de erro será apresentado.
  • EMAs rápidas de 1 ciclo com uso fixo, não filtrando efetivamente o ruído em caso de surpresas no mercado
  • A incapacidade de lidar eficazmente com os mercados em períodos de flutuação de preços gera muitos sinais de negociação desnecessários.

Para os riscos, podem ser consideradas as seguintes medidas de otimização:

  1. Combinação com outros indicadores para filtrar o sinal de cruzamento EMA e evitar sinais errados

  2. Ajustar os parâmetros do EMA de acordo com a volatilidade do mercado, reduzindo a frequência de negociação

  3. Aumentar a consideração de stop loss e de stop loss, controlar o risco

  4. Otimização do ciclo de EMAs rápidas, com parâmetros mais adequados em determinadas condições de mercado

  5. Aumentar o julgamento de tendências e evitar o excesso de negociação em mercados turbulentos

Direção de otimização

A estratégia pode ser melhorada em várias direções:

  1. Optimizar a configuração dos parâmetros do EMA, testar diferentes combinações de períodos e encontrar o parâmetro ideal

É possível encontrar a combinação de parâmetros com melhor desempenho em uma retrospectiva de dados históricos, através de percorrer os diferentes parâmetros de emaFast e emaSlow, usando o método de otimização por etapas ou otimização aleatória.

  1. Verificação de filtragem de sinal em combinação com outros indicadores

Por exemplo, pode ser combinado com MACD, KDJ, Brin e outros indicadores, evitando que o cruzamento de EMA produza um sinal falso.

  1. Aumentar o julgamento de tendências

Calcular indicadores como a amplitude real média para avaliar a força e a fraqueza da tendência e evitar cair em um mercado de turbulência.

  1. Optimizar a estratégia de stop loss

Estudar os melhores pontos de parada para controlar o risco de perdas e determinar pontos de parada razoáveis para maximizar os lucros.

  1. Teste de outras combinações de EMA

Teste não apenas combinações de EMAs rápidas e lentas, mas também combinações de EMAs duplas, triplos e até mesmo múltiplos, procurando o melhor parâmetro.

  1. Ajustar os parâmetros para adaptar-se a diferentes ciclos de mercado

Os mercados mais tendenciosos podem acelerar o ciclo EMA de forma apropriada, enquanto os mercados mais agitados podem desacelerar o ciclo EMA.

Resumir

A estratégia de EMA cruzada é clara e fácil de entender, usando indicadores técnicos maduros para determinar o momento de compra e venda. A estratégia é personalizável e pode ser otimizada ajustando os parâmetros do EMA para criar estratégias de negociação para diferentes condições de mercado.

Código-fonte da estratégia
/*backtest
start: 2023-10-10 00:00:00
end: 2023-11-09 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(
     "EMA Cross Strategy with Custom Buy/Sell Conditions",
     overlay=true
     )

// INPUT:

// Options to enter fast Exponential Moving Average (EMA) value
emaFast = 1

// Options to enter slow EMAs for buy and sell signals
slowEMABuy = input(title="Slow EMA for Buy Signals",  defval=20, minval=1, maxval=9999)
slowEMASell = input(title="Slow EMA for Sell Signals",  defval=30, minval=1, maxval=9999)

// Option to select trade directions
tradeDirection = input(title="Trade Direction", options=["Long", "Short", "Both"], defval="Both")

// Options that configure the backtest date range
startDate = input(title="Start Date", type=input.time, defval=timestamp("01 Jan 2018 00:00"))
endDate = input(title="End Date", type=input.time, defval=timestamp("31 Dec 2025 23:59"))


// CALCULATIONS:

// Use a fixed fast EMA of 1 and calculate slow EMAs for buy and sell signals
fastEMA = ema(close, emaFast)
slowEMABuyValue = ema(close, slowEMABuy)
slowEMASellValue = ema(close, slowEMASell)


// PLOT:

// Draw the EMA lines on the chart
plot(series=fastEMA, color=color.orange, linewidth=2)
plot(series=slowEMABuyValue, color=color.blue, linewidth=2, title="Slow EMA for Buy Signals")
plot(series=slowEMASellValue, color=color.red, linewidth=2, title="Slow EMA for Sell Signals")


// CONDITIONS:

// Check if the close time of the current bar falls inside the date range
inDateRange = true

// Translate input into trading conditions for buy and sell signals
buyCondition = crossunder(slowEMABuyValue, fastEMA)
sellCondition = crossover(slowEMASellValue, fastEMA)

// Translate input into overall trading conditions
longOK  = (tradeDirection == "Long") or (tradeDirection == "Both")
shortOK = (tradeDirection == "Short") or (tradeDirection == "Both")


// ORDERS:

// Submit entry (or reverse) orders based on buy and sell conditions
if (buyCondition and inDateRange)
    strategy.entry("Buy", strategy.long)

if (sellCondition and inDateRange)
    strategy.close("Buy")

// Submit exit orders based on opposite trade conditions
if (strategy.position_size > 0 and sellCondition)
    strategy.close("Sell")
if (strategy.position_size < 0 and buyCondition)
    strategy.close("Sell")