A estratégia de cruzamento de média móvel dupla de posição dinâmica é uma abordagem quantitativa de negociação que utiliza os sinais de cruzamento de duas médias móveis simples (SMAs) com períodos diferentes para executar negócios. Esta estratégia aproveita o cruzamento de médias móveis de curto e longo prazo para determinar as tendências do mercado e ajusta dinamicamente a direção da posição com base em sinais de cruzamento e na relação entre o preço e a média de longo prazo. A estratégia opera em um período de tempo diário e permite flexibilidade na sensibilidade e velocidade de reação através de parâmetros de média móvel ajustáveis.
A estratégia de crossover de média móvel dupla de posição dinâmica é um método de negociação quantitativo clássico e prático que capta as tendências do mercado alavancando sinais de crossover de MA e ajustando dinamicamente as posições. Esta estratégia é simples de entender, totalmente automatizável e demonstra boas capacidades de acompanhamento de tendências com flexibilidade. No entanto, também enfrenta riscos potenciais, como mau desempenho em mercados agitados e sinais atrasados. Ao incorporar indicadores técnicos adicionais, otimizar a seleção de parâmetros e implementar mecanismos de stop-loss, a estabilidade e a lucratividade da estratégia podem ser ainda melhoradas. Os comerciantes que empregam essa estratégia devem ajustar parâmetros e gerenciar de acordo com instrumentos comerciais específicos e ambientes de mercado para alcançar riscos de longo prazo e resultados comerciais estáveis.
/*backtest start: 2024-06-29 00:00:00 end: 2024-07-29 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="MA Cross Backtest", overlay=true, default_qty_type=strategy.cash, default_qty_value=10) // Parâmetros das Médias Móveis shortlen = input.int(9, "Short MA Length", minval=1) longlen = input.int(21, "Long MA Length", minval=1) // Cálculo das Médias Móveis short = ta.sma(close, shortlen) long = ta.sma(close, longlen) // Plotagem das Médias Móveis plot(short, color=color.orange, title="Short MA") plot(long, color=color.green, title="Long MA") // Sinal de Compra baseado no cruzamento das médias móveis buySignal = ta.crossover(short, long) // Sinal de Venda (Short) baseado no cruzamento das médias móveis sellSignal = ta.crossunder(short, long) // Plotagem dos Sinais de Compra e Venda plotshape(series=buySignal, location=location.belowbar, color=color.blue, style=shape.labelup, text="Buy", title="Buy Signal") plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell", title="Sell Signal") // Condições para alertas alertcondition(buySignal, title="Buy Signal", message="MA Cross Buy Signal") alertcondition(sellSignal, title="Sell Signal", message="MA Cross Sell Signal") // Lógica da Estratégia de Backtest if (buySignal) // Se não há posição aberta ou se a posição atual é curta, feche a posição curta antes de abrir uma nova posição longa if (strategy.position_size < 0) strategy.close("Short", comment="Closing Short Position before Long Entry") strategy.entry("Long", strategy.long) // Alerta de compra alert("MA Cross Buy Signal", alert.freq_once_per_bar_close) if (strategy.position_size > 0) // Se o preço abrir abaixo da média longa if (open < long) strategy.close("Long", comment="Price Opened Below Long MA") strategy.entry("Short", strategy.short, comment="Switched to Short") // Alerta de venda alert("Price Opened Below Long MA - Switched to Short", alert.freq_once_per_bar_close) // Se a média móvel curta cruzar abaixo da média móvel longa else if (sellSignal) strategy.close("Long", comment="Short MA Crossed Below Long MA") strategy.entry("Short", strategy.short, comment="Switched to Short") // Alerta de venda alert("Short MA Crossed Below Long MA - Switched to Short", alert.freq_once_per_bar_close) if (strategy.position_size < 0) // Se o preço abrir acima da média longa if (open > long) strategy.close("Short", comment="Price Opened Above Long MA") strategy.entry("Long", strategy.long, comment="Switched to Long") // Alerta de compra alert("Price Opened Above Long MA - Switched to Long", alert.freq_once_per_bar_close)