A estratégia de cruzamento de média móvel dupla é uma estratégia comum de tendência. Ela usa duas médias móveis de períodos diferentes para identificar a direção da tendência e gerar sinais de negociação com base em seu cruzamento. Especificamente, quando a média móvel do período mais curto cruza acima do período mais longo, uma cruz de ouro é formada, indicando uma tendência ascendente.
A estratégia utiliza principalmente linhas EMA de 6 períodos, 14 períodos, 25 períodos e 80 períodos.
Quando a EMA de 6 períodos cruza acima da EMA de 14 períodos ou 25 períodos, e está acima da EMA de 80 períodos, um sinal de compra é gerado.
Por outro lado, quando a EMA de 6 períodos cruza abaixo da EMA de 14 períodos ou 25 períodos, e está abaixo da EMA de 80 períodos, um sinal de venda é gerado.
Após a geração do sinal, a estratégia abrirá posições longas ou curtas.
As vantagens desta estratégia são as seguintes:
A utilização do cruzamento MA para determinar a tendência é um indicador técnico maduro e fiável.
A combinação de vários prazos reduz os sinais falsos. O MA de 6 períodos gera sinais, enquanto os MA de 14 períodos e 25 períodos confirmam e o MA de 80 períodos define a tendência geral.
O stop loss controla o risco e protege o capital de forma eficaz.
A lógica é simples e clara, fácil de entender e validar.
Os períodos de MA podem ser ajustados de modo a otimizar a evolução das condições de mercado.
Alguns riscos desta estratégia incluem:
O preço pode girar em torno dos MA durante a variação, gerando sinais inválidos excessivos.
O stop loss fixo pode ser demasiado rígido.
Adicione lógica adicional para ignorar a perda de parada em tais casos.
Incapaz de responder a flutuações de preços a curto prazo.
Espaço de otimização limitado, considere usar médias móveis adaptativas.
Algumas maneiras de otimizar a estratégia:
Testar diferentes combinações de períodos de MA para encontrar parâmetros mais sensíveis ao mercado.
Melhorar o mecanismo de stop loss utilizando trailing ou dynamic stops para reduzir o risco de stop run.
Adicione indicadores de filtro como KDJ, MACD para evitar negociações excessivas durante o intervalo.
Otimizar as regras de entrada, esperar que o cruzamento de MA se forme completamente antes de entrar para reduzir os falsos sinais.
Empregar médias móveis adaptativas que ajustam automaticamente os períodos com base na volatilidade.
Adicionar regras de dimensionamento das posições para ajustar o tamanho das posições com base nas condições de mercado.
Incorporar lucros de saída.
Em resumo, esta estratégia de cruzamento de média móvel dupla identifica a direção da tendência facilmente com base na lógica de cruzamento de MA simples e tem risco controlável. É adequado para rastrear tendências de médio a longo prazo. Mas a estratégia tem amplo espaço para otimização, através de regras de entrada, técnicas de stop loss, condições de filtro, etc. No geral, serve como uma sólida tendência de base após a estratégia, com prós e contras razoáveis. Vale a pena aprender e praticar.
/*backtest start: 2022-11-06 00:00:00 end: 2023-11-12 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = " bhramaji EMA Cross Strategy", shorttitle = "EMA Cross",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100) StartYear = input(2018, "Backtest Start Year") StartMonth = input(1, "Backtest Start Month") StartDay = input(1, "Backtest Start Day") UseStopLoss = input(true,"UseStopLoss") stopLoss = input(20, title = "Stop loss percentage(0.1%)") maSource = input(defval = close, title = "MA Source") maLength6 = input(defval = 6, title = "MA Period 6", minval = 1) maLength14 = input(defval = 14, title = "MA Period 14", minval = 1) maLength25 = input(defval = 25, title = "MA Period 25", minval = 1) maLength80 = input(defval = 80, title = "MA Period 80", minval = 1) ma6 = ema(maSource, maLength6) ma14 = ema(maSource, maLength14) ma25 = ema(maSource, maLength25) ma80 = ema(maSource, maLength80) ma_6_plot = plot(ma6 , title = "MA 6", color = red, linewidth = 2, style = line, transp = 50) ma14_plot = plot(ma14, title = "MA 14", color = green, linewidth = 2, style = line, transp = 50) ma25_plot = plot(ma25, title = "MA 25", color = blue, linewidth = 2, style = line, transp = 50) ma80_plot = plot(ma80, title = "MA 80", color = silver, linewidth = 2, style = line, transp = 50) longEMA = (crossover(ma6, ma14) or crossover(ma6, ma25)) and (ma6>ma80) exitLong = (crossunder(ma6, ma14) or crossunder(ma6, ma25)) shortEMA = (crossunder(ma6, ma14) or crossunder(ma6, ma25)) and (ma6< ma80) exitShort =(crossover(ma6, ma14) or crossover(ma6, ma25)) if (longEMA) strategy.entry("LongId", strategy.long) if (shortEMA) strategy.entry("ShortId", strategy.short) if (UseStopLoss) strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick) strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)