Média móvel é provavelmente o primeiro indicador que todo mundo programa no Pine Script. No TradingView, as três mais usadas têm função pronta: ta.sma (simples), ta.ema (exponencial) e ta.wma (ponderada). Este guia mostra a sintaxe de cada uma, quando faz sentido usar qual, e traz código pronto para você colar no editor e adaptar — incluindo um sinal de cruzamento honesto, sem promessa de lucro fácil.

Já tem o sinal no gráfico e quer transformar isso em automação de verdade?

Ver como conectar sinais ao Python →

Sintaxe das três funções

Todas seguem o mesmo padrão: você passa a fonte (geralmente close) e o período (o famoso “length”). Elas retornam uma série, ou seja, um novo valor a cada barra.

//@version=5 indicator(“Médias Móveis”, overlay=true) length = input.int(20, “Período”) mediaSimples = ta.sma(close, length) // SMA mediaExponencial = ta.ema(close, length) // EMA mediaPonderada = ta.wma(close, length) // WMA plot(mediaSimples, “SMA”, color=color.blue) plot(mediaExponencial, “EMA”, color=color.orange) plot(mediaPonderada, “WMA”, color=color.green)

Repare no overlay=true: ele faz as linhas aparecerem sobre o preço, e não em um painel separado. Sem isso, as médias ficariam fora da escala do gráfico.

Qual a diferença entre SMA, EMA e WMA?

As três suavizam o preço, mas distribuem o “peso” de cada barra de forma diferente. A SMA trata todas as barras igualmente — é a mais estável e a que mais atrasa. A EMA dá mais peso às barras recentes, reagindo mais rápido a mudanças (e gerando mais ruído). A WMA também prioriza o recente, com um decaimento linear, ficando entre as duas em termos de velocidade.

Resumo prático: quer estabilidade e menos sinais falsos? SMA. Quer reagir rápido a viradas? EMA. Quer um meio-termo? WMA. Nenhuma é “melhor” — depende do ativo, do tempo gráfico e da sua estratégia.

Código pronto: cruzamento de médias com alerta

O uso clássico é o cruzamento de duas médias de períodos diferentes. Quando a rápida cruza a lenta para cima, é um sinal de alta; para baixo, de baixa. Veja como montar isso com ta.crossover e ta.crossunder e ainda disparar um alert:

//@version=5 indicator(“Cruzamento de EMAs”, overlay=true) rapidaLen = input.int(9, “EMA rápida”) lentaLen = input.int(21, “EMA lenta”) emaRapida = ta.ema(close, rapidaLen) emaLenta = ta.ema(close, lentaLen) plot(emaRapida, “EMA rápida”, color=color.aqua) plot(emaLenta, “EMA lenta”, color=color.fuchsia) compra = ta.crossover(emaRapida, emaLenta) venda = ta.crossunder(emaRapida, emaLenta) plotshape(compra, title=”Compra”, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small) plotshape(venda, title=”Venda”, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small) if compra alert(“Cruzamento de ALTA”, alert.freq_once_per_bar_close) if venda alert(“Cruzamento de BAIXA”, alert.freq_once_per_bar_close)
Cuidado com repaint: use alert.freq_once_per_bar_close e avalie os sinais no fechamento da barra. Sinais que aparecem no meio da vela podem sumir quando ela fecha, criando a ilusão de precisão.

ta.ma: escolhendo o tipo dinamicamente

Se você quer deixar o tipo de média selecionável pelo usuário, dá para usar input.string com um condicional. É mais limpo do que duplicar código:

tipo = input.string(“EMA”, “Tipo”, options=[“SMA”,”EMA”,”WMA”]) len = input.int(20, “Período”) media = switch tipo “SMA” => ta.sma(close, len) “EMA” => ta.ema(close, len) “WMA” => ta.wma(close, len) plot(media, “Média”, color=color.yellow)

FAQ

Qual período usar?
Não existe número mágico. 9/21 e 50/200 são populares, mas o ideal depende do ativo e do tempo gráfico. Teste no histórico antes de confiar.

Posso aplicar a média no RSI em vez do preço?
Sim. Basta passar a série desejada como fonte, por exemplo ta.sma(ta.rsi(close, 14), 9).

Cruzamento de médias é uma estratégia lucrativa?
É um ponto de partida didático, não um sistema pronto. Médias atrasam por natureza e geram muitos sinais falsos em mercado lateral. Trate como filtro, não como gatilho isolado.

Funciona em Pine Script v6?
Sim. ta.sma, ta.ema e ta.wma seguem disponíveis; basta ajustar a tag de versão no topo do script.

Aviso: opções binárias e trading alavancado são produtos de altíssimo risco e você pode perder todo o capital investido. Este conteúdo é educacional e não constitui recomendação de investimento, oferta ou garantia de resultado. Indicadores e cruzamentos de médias não preveem o futuro. Teste sempre em conta demo antes de operar com dinheiro real.