EMA23/EMA50 Estratégia de negociação quantitativa cruzada de média móvel dupla

Autora:ChaoZhang, Data: 2024-04-26 15:29:21
Tags:EMAEMA23EMA50

img

Resumo

Esta estratégia baseia-se nos sinais de cruzamento da EMA23 e da EMA50 para negociação. Quando a EMA23 cruza acima da EMA50, gera um sinal de compra e quando cruza abaixo, gera um sinal de venda. A estratégia também implementa um stop-loss para posições longas quando o preço cai abaixo da EMA50 e para posições curtas quando o preço sobe acima da EMA50. Além disso, a estratégia retorna ao mercado quando o preço se move para trás acima da EMA50. A estratégia é adequada para o período de tempo de 30 minutos.

Princípios de estratégia

  1. Calcule as duas médias móveis exponenciais: EMA23 e EMA50.
  2. Gerenciar um sinal de compra quando a EMA23 cruzar acima da EMA50 e um sinal de venda quando a EMA23 cruzar abaixo da EMA50.
  3. Para as posições longas, aplicar um stop-loss se o preço cair abaixo da EMA50 e o preço de encerramento for inferior à EMA50 da vela anterior.
  4. Para as posições curtas, aplicar um stop-loss se o preço subir acima da EMA50 e o preço de encerramento for superior à EMA50 da vela anterior.
  5. Para as posições longas, reentrar no mercado se o preço voltar a ultrapassar a EMA50, sendo o preço de fechamento e o preço alto ambos superiores à EMA50 e a EMA23 superior à EMA50.
  6. Para as posições curtas, reentrar no mercado se o preço recuar abaixo da EMA50, sendo o preço de fechamento e o preço baixo ambos inferiores à EMA50 e a EMA23 inferior à EMA50.
  7. Fixar o nível de take-profit para posições longas em 1,6 vezes o preço de entrada e para posições curtas em 0,75 vezes o preço de entrada.

Vantagens da estratégia

  1. O cruzamento da média móvel dupla é um indicador de tendência simples e eficaz que ajuda a capturar tendências.
  2. O mecanismo de stop-loss ajuda a controlar o risco e a evitar que as perdas se expandam.
  3. O mecanismo de reentrada permite que a estratégia capture tendências novamente, aumentando o potencial de lucro.
  4. Os níveis de take-profit ajudam a bloquear os lucros em tempo hábil.
  5. O prazo de 30 minutos oferece mais oportunidades de negociação, ao mesmo tempo em que filtra algum ruído.

Riscos estratégicos

  1. A EMA, como indicador de tendência, tem um atraso e pode perder os pontos de entrada ideais.
  2. A colocação dos níveis de stop-loss pode não ser otimizada, levando a stop-outs prematuros.
  3. As trocas comerciais frequentes podem aumentar os custos das transacções e afetar a rentabilidade.
  4. A estratégia pode gerar mais sinais falsos num mercado variável.
  5. Os níveis fixos de lucro podem limitar o potencial de lucro da estratégia.

Orientações para a otimização da estratégia

  1. Considerar a introdução de outros indicadores técnicos para ajudar na determinação da tendência e melhorar os pontos de entrada e saída, tais como MACD, RSI, etc.
  2. Otimizar a colocação dos níveis de stop-loss, considerando a utilização de indicadores de volatilidade como o ATR para ajustar dinamicamente as posições de stop-loss.
  3. Controlar a frequência de negociação através da definição de condições adequadas de filtragem de negociação para reduzir os falsos sinais.
  4. Usar diferentes definições de parâmetros de estratégia para os mercados de variação e tendência.
  5. Tornar os níveis de lucro mais flexíveis, por exemplo ajustando-os dinamicamente com base na volatilidade do mercado, na relação risco/retorno, etc.

Resumo

Esta estratégia é uma estratégia de negociação quantitativa baseada no cruzamento de duas médias móveis, EMA23 e EMA50. Captura tendências através dos sinais de cruzamento e implementa mecanismos de stop-loss e reentrada para controlar o risco e aumentar o potencial de lucro. A estratégia é simples e fácil de entender, adequada para negociação de médio a curto prazo no período de 30 minutos. No entanto, a estratégia também tem algumas limitações, como identificação de tendências atrasadas, colocação de stop-loss subóptima e baixo desempenho em mercados variados. No futuro, a estratégia pode ser otimizada através da introdução de mais indicadores técnicos, otimização de posições de stop-loss, controle da frequência de negociação, diferenciação entre mercados de tendência e variados e implementação de níveis dinâmicos de take-profit para alcançar retornos mais robustos.


/*backtest
start: 2023-04-20 00:00:00
end: 2024-04-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Crossover Strategy", overlay=true)

// EMA 23 ve EMA 50'nin hesaplanması
ema23 = ta.ema(close, 23)
ema50 = ta.ema(close, 50)

// Ana alım kuralı: EMA 23 ve EMA 50'nin yukarı kesilmesi
buySignal = ta.crossover(ema23, ema50)

// Ana satış kuralı: EMA 23 ve EMA 50'nin aşağı kesilmesi
sellSignal = ta.crossunder(ema23, ema50)

// Long pozisyon stop seviyesi
longStopLoss = low < ema50 and close < ema50[1]

// Short pozisyon stop seviyesi
shortStopLoss = high > ema50 and close > ema50[1]

// Long pozisyon için tekrar giriş kuralı
longReEntry = high > ema50 and close > ema50 and close > ema50 and ema23 > ema50

// Short pozisyon için tekrar giriş kuralı
shortReEntry = low < ema50 and close < ema50 and close < ema50 and ema23 < ema50

// Long işlemde kar alma seviyesi (%60)
longTakeProfit = strategy.position_avg_price * 1.60

// Short işlemde kar alma seviyesi (%25)
shortTakeProfit = strategy.position_avg_price * 0.75

// Long işlem için yeniden giriş koşulu
longReEntryCondition = strategy.position_size <= 0 and longReEntry

// Short işlem için yeniden giriş koşulu
shortReEntryCondition = strategy.position_size >= 0 and shortReEntry

// Geriye dönük test için başlangıç tarihi (01.01.2022)
startDate = timestamp(2022, 01, 01, 00, 00)

if (time >= startDate)
    if (buySignal)
        strategy.entry("Buy", strategy.long)

    if (sellSignal)
        strategy.entry("Sell", strategy.short)

    if (strategy.position_size > 0 and (longStopLoss or close >= longTakeProfit))
        strategy.close("Buy")

    if (strategy.position_size < 0 and (shortStopLoss or close <= shortTakeProfit))
        strategy.close("Sell")

    if (longReEntryCondition)
        strategy.entry("Buy", strategy.long)

    if (shortReEntryCondition)
        strategy.entry("Sell", strategy.short)


Relacionados

Mais.