A Multi-EMA Crossover Trend Following Strategy combina várias linhas EMA com diferentes parâmetros para identificar direções de tendência com base em sinais de crossover, com o objetivo de seguir tendências no mercado.
A lógica central desta estratégia é baseada nos princípios de cruzamento das linhas EMA. Entre as EMAs, as EMAs de curto período são mais sensíveis às mudanças recentes de preços e podem refletir tendências de curto prazo, enquanto as EMAs de longo prazo são menos sensíveis e representam tendências de longo prazo.
Esta estratégia monitora 7 grupos de crossovers da EMA simultaneamente, incluindo períodos de 12&26, 12&50, 12&100, 12&200, 12&89 e 12&144. Por exemplo, quando a EMA de 12 dias cruza acima da EMA de 26 dias, a estratégia abrirá uma posição longa. Fechará a posição longa quando ocorrer uma cruz de morte. A mesma lógica se aplica a outros pares de EMA.
A maior vantagem desta estratégia é a capacidade de capturar tendências em vários prazos. Ao combinar várias EMAs, ele pode identificar tendências de curto e longo prazo, realizando tendências de vários prazos. Além disso, o desempenho da estratégia pode ser otimizado ajustando os parâmetros da EMA.
O principal risco desta estratégia são os sinais de cruzamento excessivamente frequentes quando se usam várias EMAs juntas. Por exemplo, cruzes entre EMAs de 12 dias e 26 dias acontecem com mais frequência do que entre linhas de 12 dias e 200 dias. Entradas e saídas frequentes podem aumentar os custos de negociação e o deslizamento. Além disso, as EMAs têm natureza atrasada, o que pode causar sinais de negociação prematuros.
Para mitigar os riscos, os períodos de EMA podem ser otimizados para controlar a frequência de cruzamento em níveis adequados.
O principal espaço de otimização reside no ajuste dos parâmetros da EMA, como experimentar mais combinações de períodos ou tentar outras médias móveis como a SMA. Filtros adicionais também podem ser adicionados para melhorar a qualidade do sinal, por exemplo, indicadores de volume ou volatilidade. Além disso, estratégias de stop loss podem ser usadas para reduzir o impacto da turbulência do mercado.
A Multi-EMA Crossover Trend Following Strategy identifica direções de tendência comparando situações de crossover entre várias EMAs, capturando tendências em diferentes prazos. Sua vantagem é a flexibilidade para ajustar parâmetros e capturar tendências em diferentes níveis.
/*backtest start: 2023-12-27 00:00:00 end: 2024-01-03 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("EMA Trades", overlay=true, pyramiding=4) src = input(close, title="Source") shortestLine = input(12, minval=1, title="Shortest Line") shorterLine = input(26, minval=1, title="Shorter Line") shortLine = input(50, minval=1, title="Short Line") middleLine = input(100, minval=1, title="Middle Line") longLine = input(200, minval=1, title="Long Line") longerLine = input(89, minval=1, title="Longer Line") longestLine = input(144, minval=1, title="Longest Line") shortestLineOutput = ema(src, shortestLine) shorterLineOutput = ema(src, shorterLine) shortLineOutput = ema(src, shortLine) middleLineOutput = ema(src, middleLine) longLineOutput = ema(src, longLine) longerLineOutput = ema(src, longerLine) longestLineOutput = ema(src, longestLine) //plot(shortestLineOutput, title="Shortest EMA", color=#ffffff) //plot(shorterLineOutput, title="Shorter EMA", color=#e54fe6) //plot(shortLineOutput, title="Short EMA", color=#4e6bc3) //plot(middleLineOutput, title="Middle EMA", color=#1dd6d8) //plot(longLineOutput, title="Long EMA", color=#d0de10) //plot(longerLineOutput, title="Longer EMA", color=#ef6a1a) //plot(longestLineOutput, title="Longest EMA", color=#ff0e0e) longEnrtyCondition_1 = crossover(shortestLineOutput[1], shorterLineOutput[1]) and shortestLineOutput > shorterLineOutput longEntryCondition_2 = crossover(shortestLineOutput[1], shortLineOutput[1]) and shortestLineOutput > shortLineOutput longEnrtyCondition_3 = crossover(shortestLineOutput[1], middleLineOutput[1]) and shortestLineOutput > middleLineOutput longEntryCondition_4 = crossover(shortestLineOutput[1], longLineOutput[1]) and shortestLineOutput > longLineOutput shortEnrtyCondition_1 = crossunder(shortestLineOutput[1], shorterLineOutput[1]) and shortestLineOutput < shorterLineOutput shortEntryCondition_2 = crossunder(shortestLineOutput[1], shortLineOutput[1]) and shortestLineOutput < shortLineOutput shortEnrtyCondition_3 = crossunder(shortestLineOutput[1], middleLineOutput[1]) and shortestLineOutput < middleLineOutput shortEntryCondition_4 = crossunder(shortestLineOutput[1], longLineOutput[1]) and shortestLineOutput < longLineOutput if (longEnrtyCondition_1) strategy.entry("Buy1", strategy.long) strategy.exit("Sell1") if (longEntryCondition_2) strategy.entry("Buy2", strategy.long) strategy.exit("Sell2") if (longEnrtyCondition_3) strategy.entry("Buy3", strategy.long) strategy.exit("Sell3") if (longEntryCondition_4) strategy.entry("Buy4", strategy.long) strategy.exit("Sell4") if (shortEnrtyCondition_1) strategy.entry("Sell1", strategy.short) strategy.exit("Buy1") if (shortEntryCondition_2) strategy.entry("Sell2", strategy.short) strategy.exit("Buy2") if (shortEnrtyCondition_3) strategy.entry("Sell3", strategy.short) strategy.exit("Buy3") if (shortEntryCondition_4) strategy.entry("Sell4", strategy.short) strategy.exit("Buy4")