O que é Pine Script?
Pine Script é uma linguagem de script usada para modificar seus gráficos na plataforma TradingView. A plataforma oferece muitos recursos para fazer isso, mas o Pine Script permite que você avance em direção ao seu objetivo. Se você deseja alterar as cores dos gráficos de ação de preços ou testar uma nova estratégia, o editor Pine o ajudará a personalizar seus gráficos em tempo real conforme achar necessário.
O código está bem documentado, portanto, verifique o guia do usuário para obter mais informações. Através deste tutorial, pretendemos discutir alguns princípios básicos e fornecer indicadores que podem ser úteis na negociação de moedas digitais.
preparação
É muito fácil começar a usar o Pine Script. Qualquer código que escrevemos é executado nos servidores do TradingView, para que possamos usar o editor e desenvolver scripts a partir do navegador – sem necessidade de download ou configuração adicional.
Neste tutorial, criaremos um gráfico para o par de moedas Bitcoin/Binance USD (BTCBUSD). Se ainda não possui uma conta, você pode criar uma gratuitamente (uma assinatura profissional também está disponível, mas não é necessária para este guia).
Siga este link e você verá um gráfico semelhante ao seguinte:

Seu gráfico provavelmente será mais sofisticado.
Aqui gostaríamos de um gráfico completo – clique no botão para acessá-lo. Isso nos dá uma visão geral mais detalhada e ferramentas de desenho, bem como opções para desenhar linhas de tendência, entre outros recursos.

Gráfico completo. Você pode editar o período clicando nas visualizações acima das guias destacadas.
Não discutiremos como utilizar as diversas ferramentas disponíveis, mas se você estiver interessado em análise técnica, é altamente recomendável que você as consulte para se familiarizar com elas. No canto inferior esquerdo (destacado na imagem), você encontrará algumas abas diferentes – clique em Pine Editor.
Editor de pinho

Este editor oferece um conjunto de recursos encantadores. Diremos o que queremos fazer e, em seguida, clicaremos em Adicionar ao gráfico para ver nossos comentários aparecerem no topo. Observe que o gráfico pode ficar desarrumado se você inserir vários comentários de uma vez, por isso iremos removê-los entre os exemplos (clique com o botão direito no gráfico > Remover indicadores).
Você pode ver que já temos duas linhas de códigos. Vamos clicar em Adicionar ao gráfico para ver o que acontece.

Um segundo gráfico é adicionado abaixo do gráfico original. O novo gráfico representará os mesmos dados. Mova o mouse sobre o botão Meu Script e clique nas reticências para removê-lo. Vamos discutir o código com mais detalhes.
estudo("Meu Script")
A primeira linha configura nossos comentários. Requer apenas o nome que você deseja que o indicador seja chamado ("Meu Script", neste caso), mas também existem algumas variáveis opcionais que podemos adicionar. Uma dessas variáveis é a sobreposição, que diz à plataforma para colocar o indicador no gráfico atual (em vez de em um novo setor). Como você pode ver no primeiro exemplo, o padrão é falso. Portanto, não o veremos em execução agora, overlay=true adiciona o indicador ao gráfico atual.
enredo (fechar)
Esta linha é a instrução para traçar o preço de fechamento do Bitcoin. O gráfico nos fornece um gráfico de linhas, mas também podemos exibir ações de preços e gráficos de barras, como veremos em breve.
Agora vamos tentar o seguinte:
//@version=4 study("Meu Script", overlay=true) plot(open, color=color.purple)
Depois de adicionar este símbolo, você deverá ver um segundo gráfico (parece que o gráfico original mudou para o lado direito). Tudo o que fizemos foi traçar o preço de abertura. Como o preço de abertura do dia atual é o preço de fechamento do dia anterior, faz sentido que eles tenham um formato semelhante.
Bom! Vamos nos livrar dos comentários existentes (lembre-se de que fazemos isso clicando com o botão direito e pressionando Remover Indicadores). Mova o mouse sobre BTC/BUSD e clique no botão Ocultar para excluir também o gráfico atual.
Muitos traders preferem gráficos de ação de preços, pois eles nos fornecem mais informações do que um simples desenho como acabamos de fazer. Vamos adicioná-los abaixo.
//@version=4 study("Meu Script", overlay=true) plotcandle(abrir, alto, baixo, fechar)
Um bom começo, mas a falta de cor torna-o um pouco monótono. Idealmente, deveríamos ter velas vermelhas quando o preço de abertura for maior que o preço de fechamento durante um período de tempo específico, e velas verdes quando o preço de fechamento exceder o preço de abertura. Adicionaremos uma linha acima da propriedade candle plot():
//@version=4 study("Meu Script", overlay=true) cores = open >= close ? color.red: color.green plotcandle (aberto, alto, baixo, fechado)
Isso acontece em todos os gráficos de ação de preço, além de verificar se o preço de abertura é maior ou igual ao preço de fechamento. Neste caso, significa que os preços caíram durante um período específico, portanto o gráfico de ação do preço será colorido em vermelho. Caso contrário, será colorido em verde. Modifique a função drawcandle() para inserir o esquema de cores:
//@version=4 study("Meu Script", overlay=true) cores = open >= close ? color.red: color.green plotcandle (aberto, alto, baixo, fechado, cor = cores)
Remova os indicadores existentes, caso ainda não os tenha removido, e adicione este indicador ao gráfico. Deveríamos ter algo que representasse um gráfico normal de ação de preços.

Desenhando médias móveis (MA)
Temos alguns princípios básicos abaixo. Vamos passar para o primeiro indicador personalizado – a Média Móvel Exponencial ou EMA. É uma ferramenta valiosa que nos permite eliminar as distrações do mercado e facilitar a compreensão dos movimentos do mercado.
A média móvel exponencial é ligeiramente diferente da média móvel simples (SMA), pois esta média concentra-se nos dados mais recentes. Tende a reagir a movimentos bruscos e costuma ser utilizado em negociações de curto prazo (day trading, por exemplo).
Média Móvel Simples (SMA)
Também podemos traçar uma média móvel simples, por isso devemos compará-las mais tarde. Adicione esta linha ao seu script:
plot(sma(fechar, 10))
Isso representa a média dos 10 dias anteriores. Ajuste o número entre parênteses para ver o quanto a curva muda quando diferentes períodos são levados em consideração.

A média móvel simples é baseada nos 10 dias anteriores.
Média Móvel Exponencial (EMA)
A Média Móvel Exponencial pode ser um pouco difícil de entender, mas não se preocupe. Vamos considerar a equação em detalhes:
EMA = (Fecho - EMA do dia anterior) * Multiplicador - EMA do dia anterior
E o que isso nos diz? Bem, a nova média móvel de cada dia é calculada com base na média móvel do dia anterior. O multiplicador é o “peso dos dados” do período mais recente e é calculado pela seguinte equação:
Multiplicador = 2 / (Comprimento da EMA + 1)
Para médias móveis simples, precisamos determinar quanto tempo durará a média móvel exponencial. Em termos de estrutura, o gráfico da média móvel exponencial é semelhante ao gráfico da média móvel simples. Desenhe-o ao lado da média móvel simples para poder compará-los:
//@version=4 study("Meu Script", overlay=true) plot(sma(close, 10)) plot(ema(close,10))

Você pode ver uma ligeira diferença entre os dois tipos de médias móveis.
Scripts incorporados
Escrevemos o código à mão até agora para que você esteja familiarizado com ele. Mas vamos oferecer algo que ajudará a economizar tempo, especialmente se estivermos escrevendo scripts mais complexos, e não queremos fazer isso do zero.
Clique no botão Novo localizado no canto superior direito do seu editor. Você verá um menu suspenso com todos os diferentes tipos de indicadores técnicos. Clique em Média Móvel Exponencial para ver o código fonte do indicador Média Móvel Exponencial.

Em seguida, adicione-o ao gráfico.
Isso é diferente de nossos próprios códigos – você notará as propriedades input(). É ótimo para usar, pois você pode clicar nesta caixa…

Você também pode alterar facilmente alguns dos valores na janela pop-up clicando na roda de configurações.

Adicionaremos duas propriedades input() no script a seguir para demonstrar como fazer isso.
Gráfico do Índice de Força Relativa (RSI)
O Índice de Força Relativa (RSI) é um dos indicadores básicos da análise técnica. É conhecido como indicador de momentum, o que significa que mede a taxa à qual os activos são comprados e vendidos. Classificada em uma escala que varia de 0 a 100, a pontuação do RSI tenta informar aos investidores se um ativo está sobrecomprado ou sobrevendido. Normalmente, um ativo é considerado sobrevendido se a sua pontuação for inferior ou igual a 30, e é considerado sobrecomprado se a sua pontuação for superior ou igual a 70.
Se você acessar Novo> Estratégia RSI, poderá ver isso por si mesmo. O RSI é medido em 14 períodos (ou seja, 14 horas ou 14 dias), mas você tem a liberdade de ajustar essa configuração de acordo com sua própria estratégia.
Adicione isso ao gráfico. Agora você deve ver algumas setas (identificadas pela propriedade enter.strategy() no código). RsiLE indica oportunidades potenciais de compra para o ativo, pois ele pode entrar em uma zona de sobrevenda. Enquanto o RsiSE destaca os potenciais pontos de venda do ativo quando ele está na zona de sobrecompra. Tenha em atenção que, tal como todos os indicadores, não devem ser considerados como prova definitiva da subida ou descida dos preços.
Faça um backtest
Existe uma forma que nos permite testar indicadores personalizados. Embora o desempenho passado não seja garantia de resultados futuros, o processo de backtesting dos scripts nos dá uma ideia de quão eficazes eles são na recepção de sinais.
Abaixo está um exemplo de um script simples. Criaremos uma estratégia simples para entrar em uma negociação longa quando o preço do Bitcoin cair abaixo de US$ 11.000 e sair da negociação quando o preço exceder US$ 11.300. Assim, podemos saber o quão lucrativa esta estratégia tem sido historicamente.
//@versão=4 estratégia("ToDaMoon", overlay=true) enter = input(11000) exit = input(11300) price = close if (price <= enter) strategy.entry("BuyTheDip", strategy.long , comment="BuyTheDip") if (preço >= saída) estratégia.close_all(comment="SellTheNews")
Aqui definimos os pontos de entrada e saída como variáveis – ambos são entradas, o que significa que podemos alterá-los no gráfico posteriormente. Também definimos uma variável de preço, que registra o preço de fechamento de cada período. Portanto, há algo lógico em usar instruções if. Se a parte entre colchetes for verdadeira, o bloco recuado será ativado. Caso contrário, será ignorado.
Além disso, se o preço cair ou for igual ao preço de entrada desejado, a expressão será avaliada como verdadeira e abriremos uma negociação de compra. Assim que o preço igualar ou ultrapassar o preço de saída exigido, o segundo bloco será ativado, bem como o fechamento de todas as negociações abertas.
Adicionaremos comentários ao gráfico usando setas para indicar os pontos de entrada e saída, por isso nomeamos esses pontos no quadro de comentários (neste exemplo, “Buy Dip” e “Sell on News”). Copie o símbolo e adicione-o ao gráfico.

Agora você pode ver os indicadores no gráfico. Pode ser necessário diminuir o zoom para dar uma olhada.
O TradingView aplica suas regras a dados mais antigos. Você também notará uma transição do editor Pine para a guia Strategy Tester. Isso permite que você tenha uma visão geral dos lucros potenciais, uma lista de negociações e seu respectivo desempenho.

Negociações em que entramos e saímos.
Vincular itens
É hora de escrever nosso próprio programa usando alguns dos conceitos descritos até agora. Combinaremos a média móvel exponencial e o RSI usando seu valor para colorir os gráficos de ação de preços e obter informações concebíveis.
Isso não deve ser interpretado como aconselhamento financeiro, pois não existe uma maneira correta e objetivamente definida de usar esse indicador. Tal como todos os outros indicadores, este indicador deve ser utilizado em conjunto com outras ferramentas para desenvolver a sua estratégia de investimento.
Vamos começar a trabalhar no novo script. Remova todos os indicadores do gráfico e oculte também o gráfico BTC/BUSD, para que tenhamos um gráfico em branco para começar a trabalhar.
Vamos começar definindo o estudo. Você pode usar qualquer nome que desejar, apenas certifique-se de definir overlay=true.
estudo(title="Script da Binance Academy", overlay=true)
Lembre-se da equação da média móvel exponencial de que falamos anteriormente. Precisamos fornecer ao multiplicador dados para o período que a média móvel exponencial levará. Vamos torná-lo um campo de entrada que requer um número inteiro (portanto, sem casas decimais). Também especificaremos um valor mínimo (minval) e um valor padrão (defval).
estudo(title="Script da Binance Academy", overlay=true) emaLength = input(title="Comprimento da EMA", type=input.integer, defval=25, minval=0)
Podemos calcular o valor da EMA para cada vela no gráfico usando a nova variável:
estudo(title="Script da Binance Academy", overlay=true) emaLength = input(title="Comprimento EMA", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength)
incrível. Em relação ao Índice de Força Relativa (RSI). Entraremos no período de forma semelhante:
estudo(title="Script da Binance Academy", overlay=true) emaLength = input(title="Comprimento EMA", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input (title="Comprimento RSI", type=input.integer, defval=25, minval=0)
Agora podemos calcular isso:
estudo(title="Script da Binance Academy", overlay=true) emaLength = input(title="Comprimento EMA", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input (title="Comprimento RSI", type=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength)
Neste ponto, você deve estar ciente de que as cores dos gráficos de ação de preços dependem dos valores da EMA e do RSI. Vamos considerar um exemplo quando (a) o preço de fechamento da vela cruza a EMA e (b) o RSI está acima de 50.
Por que? Bem, você pode decidir que esses indicadores podem ser usados em conjunto para informar quando comprar ou vender Bitcoin. Por exemplo, você pode pensar que o cumprimento de ambas as condições significa que é um bom momento para entrar em uma negociação longa. Alternativamente, você pode usar indicadores para lembrá-lo de quando não deve vender, mesmo que outros indicadores mostrem o contrário.
Então, a próxima linha fica assim:
estudo(title="Script da Binance Academy", overlay=true) emaLength = input(title="Comprimento EMA", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input (title="Comprimento RSI", type=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength) cores = close > emaVal e rsiVal > 50 ? color.green : color.red
Se traduzirmos isso para o inglês simples, significa que se a EMA exceder o preço de fechamento e a pontuação do RSI ultrapassar 50, coloriremos a vela de verde. Caso contrário, será colorido de vermelho.
Em seguida, trace a média móvel exponencial:
estudo(title="Script da Binance Academy", overlay=true) emaLength = input(title="Comprimento EMA", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input (title="Comprimento RSI", type=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength) cores = close > emaVal e rsiVal > 50 ? color.green: gráfico color.red (emaVal, "EMA")
Por fim, desenhe as velas, certificando-se de incluir a variável color:
estudo(title="Script da Binance Academy", overlay=true) emaLength = input(title="Comprimento EMA", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input (title="Comprimento RSI", type=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength) cores = close > emaVal e rsiVal > 50 ? color.green: color.red plot(emaVal, "EMA") plotcandle(aberto, alto, baixo, fechado, cor=cores)
E você concluiu o roteiro! Adicione isso ao seu gráfico para vê-lo em ação.

Gráfico BTC/BUSD usando EMA/RSI.
Pensamentos finais
Neste artigo vimos alguns exemplos básicos do que pode ser feito usando o Pine Editor do TradingView. Você deve ser capaz de fazer comentários simples no gráfico de preços para obter informações adicionais sobre seus indicadores.
Destacamos apenas dois indicadores aqui, mas é fácil criar indicadores mais complexos – seja definindo novamente scripts integrados ou escrevendo-os você mesmo.
Precisa de ideias inspiradoras? Os artigos a seguir podem ajudá-lo a ter algumas ideias para seu próximo projeto:

