Esta estratégia gera sinais de negociação baseados no cruzamento de duas médias móveis (EMA). Quando a EMA de curto prazo (20 dias) cruza acima da EMA de longo prazo (50 dias), um sinal de compra é acionado; quando a EMA de curto prazo cruza abaixo da EMA de longo prazo, um sinal de venda é acionado. Além disso, a estratégia traça uma EMA de 200 dias como uma referência para a tendência de longo prazo.
A estratégia de cruzamento de média móvel dupla da EMA é uma estratégia de negociação simples e direta adequada para mercados de tendência. Utiliza o cruzamento de médias móveis de curto e longo prazo para capturar mudanças nas tendências do mercado, incorporando uma referência de tendência de longo prazo. Embora a estratégia tenha algumas limitações, como desempenho subóptimo em mercados agitados e o atraso das médias móveis, ela pode ser melhorada incorporando indicadores adicionais, otimizando parâmetros, implementando medidas de gerenciamento de risco e confirmando tendências. Essas otimizações podem melhorar a robustez e a lucratividade da estratégia.
/*backtest start: 2023-03-23 00:00:00 end: 2024-03-28 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Crossover Strategy by Peter Gangmei", overlay=true) // Define the length for moving averages short_ma_length = input.int(20, "Short MA Length") long_ma_length = input.int(50, "Long MA Length") long_ma_200_length = input.int(200, "Long MA 200 Length") // Define start time for testing start_time = timestamp(2024, 01, 01, 00, 00) // Calculate current date and time current_time = timenow // Calculate moving averages ema20 = ta.ema(close, short_ma_length) ema50 = ta.ema(close, long_ma_length) ema200 = ta.ema(close, long_ma_200_length) // Crossing conditions crossed_above = ta.crossover(ema20, ema50) crossed_below = ta.crossunder(ema20, ema50) // Entry and exit conditions within the specified time frame if true if (crossed_above) strategy.entry("Buy", strategy.long) alert("Buy Condition", alert.freq_once_per_bar_close) if (crossed_below) strategy.entry("Sell", strategy.short) alert("Sell Condition", alert.freq_once_per_bar_close) // Plotting moving averages for visualization plot(ema20, color=color.green, title="EMA20") plot(ema50, color=color.red, title="EMA50") plot(ema200, color=color.blue, title="EMA200") // Placing buy and sell markers plotshape(series=crossed_above, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal") plotshape(series=crossed_below, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")