Pine Script é a linguagem do TradingView para criar indicadores, estratégias com backtest e alertas personalizados. Você escreve o código no Pine Editor, no rodapé do gráfico, clica em “Adicionar ao gráfico” e o script roda nos servidores do TradingView, sem instalar nada. Neste tutorial você cria um indicador com alerta e uma estratégia completa em Pine Script v6, a versão atual.
Em resumo: todo script começa com
//@version=6e uma declaraçãoindicator()oustrategy(). O código é executado uma vez por candle, do mais antigo ao mais recente. Indicadores desenham e alertam; estratégias simulam ordens e geram relatório de backtest. Configure comissão e slippage na estratégia, ou o resultado será otimista demais.
O que dá para fazer com Pine Script?
- Indicadores próprios: médias, osciladores, níveis, painéis de informação.
- Estratégias com backtest: entradas, saídas, stop e alvo simulados no histórico.
- Alertas: avisos no celular, e-mail ou webhook quando uma condição acontece.
- Bibliotecas: funções reutilizáveis publicadas para outros scripts.
Segundo a documentação oficial, a comunidade já publicou mais de 150 mil scripts, cerca de metade com código aberto. Ler o código de bons scripts públicos é uma ótima forma de aprender. Se você ainda está conhecendo a plataforma, comece pelo guia do TradingView.
Como abrir o Pine Editor e criar o primeiro script?
- Abra um gráficoEscolha um ativo, por exemplo BTCUSDT, e um tempo gráfico.
- Clique em Pine EditorA aba fica no rodapé do gráfico.
- Crie um novo scriptNo menu à esquerda do nome do script, escolha criar um novo indicador ou estratégia.
- Cole o código e salveO script fica salvo na sua conta, visível só para você.
- Adicione ao gráficoClique em "Adicionar ao gráfico" e ajuste as entradas na engrenagem.
O passo a passo segue o roteiro do primeiro indicador da documentação.
Exemplo 1: indicador de média móvel com alerta
//@version=6
indicator("Média com alerta", overlay = true)
periodo = input.int(20, "Período", minval = 1)
media = ta.sma(close, periodo)
acima = close > media
plot(media, "SMA", color = acima ? color.green : color.red, linewidth = 2)
cruzouCima = ta.crossover(close, media)
alertcondition(cruzouCima, "Preço cruzou a média", "O preço cruzou acima da SMA")
Linha a linha:
| Trecho | O que faz |
|---|---|
//@version=6 | Define a versão da linguagem (obrigatório) |
indicator(..., overlay = true) | Declara um indicador desenhado sobre o preço |
input.int(20, ...) | Cria um campo editável nas configurações |
ta.sma(close, periodo) | Média móvel simples dos fechamentos |
plot(...) | Desenha a linha, verde acima do preço e vermelha abaixo |
alertcondition(...) | Disponibiliza a condição na janela de alertas |
Troque ta.sma por ta.ema para usar a média exponencial. A diferença entre as duas está no guia de médias móveis. Outras funções úteis do namespace ta: ta.rsi (IFR), ta.macd, ta.bb (Bollinger) e ta.atr.
Indicadores como o MACD, que ficam num painel abaixo do preço, são criados no Pine com overlay = false e a função ta.macd. Crédito: Kevin Ryde, licença CC BY-SA 3.0, via Wikimedia Commons.
Exemplo 2: estratégia de cruzamento de médias com stop e alvo
//@version=6
strategy("Cruzamento de médias v6", overlay = true, initial_capital = 10000,
default_qty_type = strategy.percent_of_equity, default_qty_value = 10,
commission_type = strategy.commission.percent, commission_value = 0.1,
slippage = 2)
rapidaLen = input.int(9, "Média rápida", minval = 1)
lentaLen = input.int(21, "Média lenta", minval = 2)
stopPct = input.float(2.0, "Stop (%)", minval = 0.1) / 100
alvoPct = input.float(4.0, "Alvo (%)", minval = 0.1) / 100
rapida = ta.ema(close, rapidaLen)
lenta = ta.ema(close, lentaLen)
plot(rapida, "Rápida", color = color.teal)
plot(lenta, "Lenta", color = color.orange)
compra = ta.crossover(rapida, lenta)
saida = ta.crossunder(rapida, lenta)
if compra and strategy.position_size == 0
strategy.entry("Long", strategy.long)
if strategy.position_size > 0
preco = strategy.position_avg_price
strategy.exit("Stop/Alvo", "Long", stop = preco * (1 - stopPct), limit = preco * (1 + alvoPct))
if saida
strategy.close("Long", comment = "Cruzou para baixo")
plotshape(compra, title = "Compra", style = shape.triangleup, location = location.belowbar, color = color.green, size = size.small)
O que observar:
- Custos na declaração:
commission_value = 0.1cobra 0,1% por ordem eslippage = 2piora cada execução em 2 ticks. Sem isso, o backtest mente. - Tamanho da posição: 10% do capital por entrada (
strategy.percent_of_equity). - Stop e alvo:
strategy.exitcria as ordens de saída a partir do preço médio da posição. - Execução realista: por padrão, a ordem a mercado é preenchida no próximo tick disponível, normalmente a abertura do candle seguinte ao sinal, segundo a documentação de estratégias.
Ao adicionar ao gráfico, abra o testador de estratégias. O relatório traz métricas de desempenho, drawdown e a lista de operações, que pode ser exportada. Como ler esses números está em backtest.
O que mudou no Pine Script v6?
| Mudança | Impacto prático |
|---|---|
Parâmetro when removido | Condições de ordem vão dentro de if |
| Margem padrão de 100% | A estratégia não abre posição que não pode pagar; pode haver chamada de margem em vendas |
bool não aceita na | Condições não definidas viram false |
| Requests dinâmicos por padrão | request.security() pode rodar dentro de laços e condicionais |
Fonte: guia de migração para a v6. Scripts antigos podem ser convertidos pelo próprio editor, mas revise o resultado. A lista completa de funções está no manual de referência da v6.
Repintura: o erro que faz o backtest mentir
Repintura acontece quando o script calcula de um jeito no histórico e de outro em tempo real. Causas comuns, segundo a documentação de repainting:
- usar valores do candle ainda aberto, que mudam até o fechamento;
- buscar dados de tempo gráfico maior com
request.security()sem esperar a confirmação ou comlookaheadativado; - desenhar pivôs e sinais no candle onde ocorreram, antes de serem confirmados.
close[1] ou checando barstate.isconfirmed). O sinal chega um candle depois, mas é o mesmo no histórico e ao vivo.A repintura é parente do overfitting: ambos criam resultados que não se repetem na conta real.
Do Pine Script para a operação real
Uma estratégia no TradingView simula ordens. Para executar de verdade, há dois caminhos:
- Corretoras integradas ao TradingView, operadas manualmente pelo painel de negociação.
- Alertas com webhook: o alerta envia uma mensagem a um servidor seu, que repassa a ordem à corretora pela API. O TradingView só aceita webhooks nas portas 80 e 443, exige autenticação em dois fatores e cancela a requisição se o servidor não responder em três segundos, conforme a página de suporte sobre webhooks.
O segundo caminho exige cuidado com segurança das chaves, assunto do guia de API de corretora cripto. Para forex e CFDs, muita gente reescreve a estratégia em MQL5 e roda no MetaTrader 5.
O canal oficial do TradingView no Brasil tem uma série em português sobre programação de indicadores; o primeiro episódio é um bom complemento a este tutorial.
Próximos passos
- Modifique o Exemplo 2 para usar stop por ATR em vez de percentual fixo.
- Teste em BTC, ETH e um par de forex: uma ideia robusta não depende de um único ativo.
- Separe um período recente para validar sem otimizar.
- Defina risco por operação com base no stop; veja gestão de risco no trading.
Para o roteiro completo, da ideia ao robô ligado, leia como criar um robô de trading do zero.
Conteúdo informativo, não é recomendação de investimento.
Perguntas frequentes
O que é Pine Script?
É a linguagem de programação do TradingView para criar indicadores, estratégias com backtest e alertas. Os scripts rodam nos servidores do TradingView, sem instalar nada.
Pine Script é difícil de aprender?
É uma das linguagens mais fáceis para trading. Um indicador simples cabe em cinco linhas. O desafio maior é entender como o script é executado candle a candle e evitar repintura.
Qual a diferença entre indicator e strategy no Pine Script?
Um indicator só calcula e desenha no gráfico (e pode gerar alertas). Uma strategy também simula ordens de compra e venda e gera relatório de backtest com lucro, drawdown e lista de operações.
Pine Script executa ordens na corretora?
Não diretamente como um robô do MetaTrader. A estratégia simula ordens; para operar de verdade, usa-se a integração de corretoras do próprio TradingView ou alertas com webhook enviados a um sistema externo.
Qual a versão atual do Pine Script?
A versão 6. Ela removeu o parâmetro when das funções de ordem, passou a margem padrão das estratégias para 100% e eliminou o valor na em variáveis booleanas.
Referências
Este conteúdo é informativo e não é recomendação de investimento. Encontrou um erro? Escreva para contato@boletimbitcoin.com.