Esta é uma estratégia de negociação de reversão baseada em indicadores de média móvel dupla. Calculando dois grupos de médias móveis com configurações de parâmetros diferentes e julgando a tendência de preço de acordo com suas mudanças direcionais, os sinais de negociação podem ser gerados definindo o parâmetro de sensibilidade para mudanças direcionais.
O indicador central desta estratégia é a média móvel dupla. A estratégia permite selecionar o tipo (SMA, EMA, etc.), comprimento e fonte de preço (preço de fechamento, preço típico, etc.) da média móvel. Após calcular dois grupos de médias móveis, suas direções são determinadas definindo o parâmetro de reação. Um sinal de compra é gerado quando a linha rápida cruza acima da linha lenta e um sinal de venda é gerado quando ela cruza abaixo.
Além disso, a estratégia também define as condições para determinar a mudança de direção e a ascensão/caída contínua para evitar gerar sinais errados.
A estratégia dual movavg combina linhas rápidas e lentas com diferentes configurações de parâmetros, o que pode efetivamente filtrar o ruído no mercado de negociação e identificar tendências mais fortes.
O parâmetro de reação permite que a estratégia seja flexível e adaptável a diferentes ciclos e variedades.
O maior risco desta estratégia é perder o ponto de virada e perder dinheiro ou tomar uma posição inversa. Isso se relaciona com a configuração do parâmetro de reação. Se a reação for muito pequena, sinais errados tendem a ocorrer. Se a reação for muito grande, pode perder melhores pontos de entrada.
Outro risco é a incapacidade de controlar efetivamente as perdas. Quando os preços flutuam violentamente, ele não pode parar rapidamente as perdas, levando a perdas ampliadas. Isso requer o uso de estratégias de stop-loss para controlar os riscos.
As principais direções de otimização desta estratégia se concentram na seleção de parâmetros de reação, tipos e comprimentos de médias móveis.
Além disso, confirmar sinais de negociação com outros indicadores auxiliares, como RSI e KD, também é uma ideia de otimização.
Em geral, esta estratégia é relativamente simples e prática. Ao filtrar com médias móveis duplas e gerar sinais de negociação, ela pode identificar efetivamente inversões de tendência e é uma estratégia típica de acompanhamento de tendências. Após a otimização do portfólio de parâmetros, sua capacidade de capturar tendências e manter posições contra o mercado será melhorada. Usá-la com mecanismos de stop loss e gerenciamento de posição funciona melhor.
/*backtest start: 2023-11-03 00:00:00 end: 2023-12-03 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(shorttitle="MA_color strategy", title="Moving Average Color", overlay=true) // === INPUTS ma_type = input(defval="HullMA", title="MA Type: ", options=["SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "ZEMA", "TMA", "SSMA"]) ma_len = input(defval=32, title="MA Lenght", minval=1) ma_src = input(close, title="MA Source") reaction = input(defval=2, title="MA Reaction", minval=1) // SuperSmoother filter // © 2013 John F. Ehlers variant_supersmoother(src,len) => a1 = exp(-1.414*3.14159 / len) b1 = 2*a1*cos(1.414*3.14159 / len) c2 = b1 c3 = (-a1)*a1 c1 = 1 - c2 - c3 v9 = 0.0 v9 := c1*(src + nz(src[1])) / 2 + c2*nz(v9[1]) + c3*nz(v9[2]) v9 variant_smoothed(src,len) => v5 = 0.0 v5 := na(v5[1]) ? sma(src, len) : (v5[1] * (len - 1) + src) / len v5 variant_zerolagema(src,len) => ema1 = ema(src, len) ema2 = ema(ema1, len) v10 = ema1+(ema1-ema2) v10 variant_doubleema(src,len) => v2 = ema(src, len) v6 = 2 * v2 - ema(v2, len) v6 variant_tripleema(src,len) => v2 = ema(src, len) v7 = 3 * (v2 - ema(v2, len)) + ema(ema(v2, len), len) v7 variant(type, src, len) => type=="EMA" ? ema(src,len) : type=="WMA" ? wma(src,len): type=="VWMA" ? vwma(src,len) : type=="SMMA" ? variant_smoothed(src,len) : type=="DEMA" ? variant_doubleema(src,len): type=="TEMA" ? variant_tripleema(src,len): type=="HullMA"? wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len))) : type=="SSMA" ? variant_supersmoother(src,len) : type=="ZEMA" ? variant_zerolagema(src,len) : type=="TMA" ? sma(sma(src,len),len) : sma(src,len) // === Moving Average ma_series = variant(ma_type,ma_src,ma_len) direction = 0 direction := rising(ma_series,reaction) ? 1 : falling(ma_series,reaction) ? -1 : nz(direction[1]) change_direction= change(direction,1) change_direction1= change(direction,1) pcol = direction>0 ? lime : direction<0 ? red : na plot(ma_series, color=pcol,style=line,join=true,linewidth=3,transp=10,title="MA PLOT") /////// Alerts /////// alertcondition(change_direction,title="Change Direction MA",message="Change Direction MA") longCondition = direction>0 shortCondition = direction<0 if (longCondition) strategy.entry("BUY", strategy.long) if (shortCondition) strategy.entry("SELL", strategy.short)