A estratégia de cruzamento da média móvel de Larry Williams

Autora:ChaoZhang, Data: 2023-12-26 15:03:16
Tags:

img

Resumo

Esta é uma estratégia de cruzamento de média móvel simples e clássica criada pelo famoso comerciante Larry Williams. A estratégia usa média móvel simples de 9 dias como linha rápida e média móvel exponencial de 21 dias como linha lenta. Ela vai longa quando o preço quebra acima da linha de 9 dias e vai curta quando o preço quebra abaixo da linha de 9 dias. Para filtrar falhas, a linha de 21 dias também é usada para confirmar a tendência.

Estratégia lógica

A estratégia é baseada em cruzamento dourado e cruzamento de morte de médias móveis para determinar oportunidades longas e curtas. Quando a linha rápida quebra acima da linha lenta de baixo, é um cruzamento dourado, indicando uma mudança para uma tendência de alta. Tal quebra é usada para ir longo. Quando a linha rápida quebra abaixo da linha lenta de cima, é um cruzamento de morte, indicando uma mudança para uma tendência de baixa. Tal quebra é usada para ir curto.

Para evitar falhas que levam a perdas virtuais, a linha de 21 dias também é usada para determinar a tendência principal. Somente quando a linha rápida quebra e o preço também quebra a linha de 21 dias, serão tomadas ações comerciais. Isso pode efetivamente filtrar muitas falhas.

Especificamente, o sinal longo é acionado quando: a linha rápida quebra acima do máximo de ontem e quebra acima da linha de 21 dias. O sinal curto é acionado quando: a linha rápida quebra abaixo do mínimo de ontem e quebra abaixo da linha de 21 dias.

Análise das vantagens

As principais vantagens desta estratégia são:

  1. A ideia estratégica é simples e fácil de entender e implementar.
  2. A técnica da média móvel é madura e amplamente utilizada.
  3. A introdução da linha de 21 dias efetivamente filtra falhas.
  4. Usar os pontos extremos de ontem para entrar em posições pode evitar ficar preso.
  5. Os parâmetros da estratégia são relativamente robustos, sem sobreajuste fácil.

Análise de riscos

Os principais riscos desta estratégia são:

  1. Nos mercados voláteis, as médias móveis estão atrasadas e podem perder os melhores pontos de entrada.
  2. Em mercados de intervalo com ação lateral dos preços, podem ocorrer perdas pequenas frequentes.
  3. Não pode responder eficazmente a acontecimentos súbitos e a alterações significativas de tendência.

Para fazer face a estes riscos, podem ser realizadas otimizações nos seguintes aspectos:

  1. Introdução do indicador MACD para mais sinais em tempo real.
  2. Aumentar os parâmetros do período de MA para reduzir a frequência de negociação.
  3. Adicionar estratégias de stop loss para controlar o montante da perda de uma única transação.

Orientações de otimização

As principais direcções de otimização desta estratégia incluem:

  1. Optimização de parâmetros: métodos mais sistemáticos podem ser usados para testar diferentes combinações de períodos de MA para encontrar melhores parâmetros.

  2. Adicione stop loss. Configure stop loss móvel adequado, stop loss percentual, etc. para controlar efetivamente a perda de uma única negociação.

  3. Combinar outros indicadores. Introduzir sinais do MACD, ATR, KD etc. para obter mais dimensões de confirmação e melhorar a estabilidade da estratégia.

  4. Pesquisar diferentes tipos de métodos de saída, como saídas de sinal de reversão, saídas de lucro, etc.

Conclusão

Em resumo, esta estratégia de cruzamento de média móvel é uma estratégia de tendência muito típica e prática. Tem a vantagem de ser fácil de entender e implementar, e também tem espaço para melhoria. Através de métodos como otimização de parâmetros, otimização de stop loss, combinação de múltiplos indicadores, etc., melhorias contínuas podem ser feitas para transformá-lo em um sistema de negociação mais estável e prático.


// @_benac
//@version=5
strategy('Larry', overlay=true , initial_capital=1000 )


////////////////////////////////////////////////////////
//                                                    //
//                                                    //
//                 Codigo Operacional                 //
//                                                    //
//                                                    //
////////////////////////////////////////////////////////

// Usage for Stocks , or Criptos with value bigger then 1, cuz of 0.01 ´pip.
// Daily timeframe
//Observation Point
start     = timestamp(2020, 00, 00, 00, 00)         // backtest start window
finish    = timestamp(2022, 01, 07, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"  

if time < start 
    strategy.close_all("Closing All")

// Take infos from inputs. 
inp_mmshort = input.int(defval = 9, title = "Media Curta"  )
inp_mminter = input.int(defval = 21, title = "Media Curta"  )

// Risk Manager, here define max and min 
inp_max = input.int(defval = 15, title = "Percentual Ganho"  )
inp_min = input.int(defval = 5, title = "Percental  Perda"  )

// Converting the input to % 
pmax = (inp_max / 100 )
pmin =  (inp_min / 100)

// Infos From Moving Average
mm_short = ta.sma(close , inp_mmshort)
mm_inter = ta.ema(close , inp_mminter)


// Trend Logic
//Long Condition 

//Setup do Larry Willians Bem Simples , media virou para cima e rompeu a maxima de referencia, compra. 
tendencia_alta = mm_short[2] > mm_short[1] and mm_short > mm_short[1] and close > high[1] and close > mm_short and mm_short > mm_inter
tendencia_baixa = mm_short[2] < mm_short[1] and mm_short < mm_short[1] and close > low[1] and close < mm_short and mm_short < mm_inter

// Creating the entry
if tendencia_alta 
    strategy.entry("Compra" , strategy.long , stop = low - 0.01  )
    stop_inst = low - 0.01 
if tendencia_baixa 
    strategy.entry("Venda" , strategy.short , stop= high + 0.01  )
    stop_inst = high + 0.01


// TrailingStop Creation

// Sell Position
if strategy.position_size < 0 
    gain_p = strategy.opentrades.entry_price(0) - (strategy.opentrades.entry_price(0) * pmax) 
    stop_p = strategy.opentrades.entry_price(0) + (strategy.opentrades.entry_price(0) * pmin) 
    // Managing the position
    if close < gain_p 
        strategy.close_all(comment = " 1 - Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
    if close > stop_p 
        strategy.close_all(comment = " 2 - Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
    
    if  high > mm_short[1]
        strategy.close_all(comment = " 3 - Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
      

// Buy Position    
if strategy.position_size > 0
    gain_p = strategy.opentrades.entry_price(0) + (strategy.opentrades.entry_price(0) * pmax) 
    stop_p = strategy.opentrades.entry_price(0) - (strategy.opentrades.entry_price(0) * pmin) 
    // Managing the position
    if close > gain_p 
        strategy.close_all(comment = " 1- Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
    if close < stop_p 
        strategy.close_all(comment = " 2 -Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
    if low < mm_short[1]
        strategy.close_all(comment = " 3 -Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
        



Mais.