O objetivo desta estratégia é identificar pontos de reversão de tendência potenciais observando o cruzamento entre a média móvel exponencial (EMA) de 20 períodos e a média móvel simples (SMA) de 20 períodos.
A estratégia utiliza as funções crossover e crossunder da biblioteca ta para detectar crossovers de médias móveis.
A estratégia combina a capacidade de seguir a tendência das médias móveis e a geração de sinais de eventos cruzados, tendo as seguintes vantagens:
A estratégia apresenta igualmente os seguintes riscos:
Soluções:
A estratégia pode também ser melhorada nos seguintes aspectos:
A estratégia é relativamente simples e prática em geral, identificando pontos de reversão de tendência potenciais através da teoria do cruzamento de média móvel. Mas também há espaço para melhoria através de indicadores adicionais, parâmetros dinâmicos, stop losses, negociação algorítmica, etc. para tornar a estratégia mais robusta, confiável e automatizada.
/*backtest start: 2022-12-28 00:00:00 end: 2024-01-03 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA-SMA Crossover Strategy", overlay=true) // Define the length of the moving averages emaLength = 20 smaLength = 20 // Calculate moving averages emaValue = ta.ema(close, emaLength) smaValue = ta.sma(close, smaLength) // Buy condition buyCondition = ta.crossover(emaValue, smaValue) and close > emaValue // Short sell condition sellCondition = ta.crossunder(emaValue, smaValue) and close < emaValue // Exit conditions for both Buy and Short sell exitBuyCondition = ta.crossunder(emaValue, smaValue) exitSellCondition = ta.crossover(emaValue, smaValue) // Strategy logic if (buyCondition) strategy.entry("Buy", strategy.long) if (sellCondition) strategy.entry("Sell", strategy.short) if (exitBuyCondition) strategy.close("Buy") if (exitSellCondition) strategy.close("Sell") // Plot the moving averages plot(emaValue, color=color.blue, title="20 EMA") plot(smaValue, color=color.red, title="20 SMA")