O crossover de média móvel dupla é uma estratégia de scalping simples e eficaz que usa sinais de cruzamento entre preço e médias móveis como sinais de entrada e saída para capturar movimentos de tendência de curto prazo.
A estratégia emprega duas médias móveis de períodos diferentes - uma linha MA de curto prazo e uma linha MA de longo prazo.
A estratégia primeiro define a variável
Para filtrar alguns sinais inválidos, filtros adicionais como
Por último, as posições existentes são encerradas quando o preço cruza as linhas MA em sentido inverso.
Os riscos podem ser mitigados através da utilização de períodos de MA dinâmicos baseados na volatilidade, paradas de trailing ou paradas percentuais, etc.
A estratégia pode ser melhorada de várias formas:
Otimizar os parâmetros MA de forma dinâmica com base na volatilidade.
Adicionar filtros extras como volume para melhorar a qualidade do sinal.
Usar paradas flutuantes ou percentual para reduzir paradas prematuras.
Combine com outros indicadores como MACD, RSI para validação multiconditional.
Adicione gestão de risco automatizada como dimensionamento dinâmico de posições para controlar perdas por negociação.
Usar machine learning para um modelo de geração de sinal mais preciso.
A estratégia de crossover de MA dupla é um sistema eficaz para negociação de curto prazo. Parâmetros de ajuste fino, gerenciamento de riscos e combinação com outras ferramentas podem melhorar ainda mais sua lucratividade.
/*backtest start: 2023-09-29 00:00:00 end: 2023-10-29 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("MovingAvg Cross", overlay=true) length = input(50) confirmBars = input(2) price = close ma = sma(price, length) bcond = price > ma bcount = 0 bcount := bcond ? nz(bcount[1]) + 1 : 0 clc=close[0]>close[1] clc0=close[0]>open[0] clc1=close[1]>open[1] if clc and clc0 and clc1 and (bcount == confirmBars) strategy.entry("buy", strategy.long) scond = price < ma scount = 0 scount := scond ? nz(scount[1]) + 1 : 0 csc=close[0]<close[1] csc0=close[0]<open[0] csc1=close[1]<open[1] if csc and csc0 and csc1 and (scount == confirmBars) strategy.entry("sell", strategy.short) strategy.close("buy", when=scond) strategy.close("sell",when=bcond) plot(ma, color=color.red) //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)