Este artigo apresenta uma estratégia de negociação baseada na média móvel dinâmica de três períodos de Larry Williams. A estratégia utiliza duas médias móveis exponenciais (EMA) para capturar as tendências de preços e gera sinais de negociação quando o preço de fechamento de três velas consecutivas quebra as EMAs. Os parâmetros da estratégia são ajustáveis e adequados para diferentes mercados e prazos.
A estratégia de negociação de média móvel dinâmica de três períodos de Larry Williams é uma estratégia de seguimento de tendências baseada em EMAs duplas e na direção de velas consecutivas. Com otimização de parâmetros, ela pode se adaptar a diferentes mercados. No entanto, a própria estratégia é relativamente simples, tem um desempenho fraco em mercados agitados e não possui medidas de controle de risco, exigindo mais otimização e melhoria. Considerando os prós e contras da estratégia, é mais adequada para uso em mercados com tendências claras e deve ser combinada com medidas de gerenciamento de posição e controle de risco para melhorar o desempenho e a estabilidade gerais.
/*backtest start: 2023-05-05 00:00:00 end: 2024-05-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Larry Williams 3 Periodos Editável de MarcosJr", overlay=true, process_orders_on_close=true) // Parametrização do período do EMA emaPeriodHighs = input.int(title="Highs Period", defval=3, minval=1, maxval=9999) emaPeriodLows = input.int(title="Lows Period", defval=3, minval=1, maxval=9999) // Parametrização da data de início e fim do período a ser coletado startYear = input.int(title="Start Year", defval=2020) startMonth = input.int(title="Start Month", defval=1, minval=1, maxval=12) startDay = input.int(title="Start Day", defval=1, minval=1, maxval=31) endYear = input.int(title="End Year", defval=2020) endMonth = input.int(title="End Month", defval=12, minval=1, maxval=12) endDay = input.int(title="End Day", defval=31, minval=1, maxval=31) // Convertendo data de início e fim para timestamp startDate = timestamp(startYear, startMonth, startDay, 00, 00) endDate = timestamp(endYear, endMonth, endDay, 23, 59) // EMA emaH = ta.ema(high, emaPeriodHighs) emaL = ta.ema(low, emaPeriodLows) // PLOT: // Desenha as linhas EMA no gráfico plot(emaH, color=color.green, linewidth=2) plot(emaL, color=color.red, linewidth=2) // Condições inDateRange = true // Verifica se houve mais de três candles consecutivos do mesmo sentido checkThreeConsecutiveCandles = (close[0] > close[1] and close[1] > close[2] and close[2] > close[3]) or (close[0] < close[1] and close[1] < close[2] and close[2] < close[3]) if(close < emaL and inDateRange and checkThreeConsecutiveCandles and barstate.isconfirmed) strategy.entry("Long", strategy.long, comment="Long", when=strategy.position_size == 0) if(close > emaH and inDateRange and checkThreeConsecutiveCandles and barstate.isconfirmed) strategy.close("Long", comment="Close Long") // Fechar a operação no fechamento do pregão if(strategy.position_size > 0 and na(time_close[0])) strategy.close("Long", comment="Close Long")