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.
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.
As principais vantagens desta estratégia são:
Os principais riscos desta estratégia são:
Para fazer face a estes riscos, podem ser realizadas otimizações nos seguintes aspectos:
As principais direcções de otimização desta estratégia incluem:
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.
Adicione stop loss. Configure stop loss móvel adequado, stop loss percentual, etc. para controlar efetivamente a perda de uma única negociação.
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.
Pesquisar diferentes tipos de métodos de saída, como saídas de sinal de reversão, saídas de lucro, etc.
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) )