Introdução
Sem as ferramentas de trading adequadas, não é possível fazer análises técnicas eficazes. Uma estratégia de trading sólida lhe ajudará a evitar erros comuns, melhorar seu gerenciamento de riscos e aprimorar a sua capacidade de identificar e aproveitar oportunidades.
Para muitos, o TradingView é a melhor plataforma de gráficos. O poderoso aplicativo web HTML5 oferece muitas ferramentas de análise técnica e é usado por milhões de usuários para rastrear os movimentos dos mercados de ações, Forex e de criptomoedas.
O TradingView tem muitos recursos poderosos: ele nos permite rastrear ativos em várias plataformas de trading e compartilhar ideias de trading nas redes sociais. Neste artigo, falaremos sobre suas opções de personalização. Usaremos o PineScript, a linguagem de programação própria do TradingView, que oferece controle sobre os layouts de nossos gráficos.
Vamos começar!
O que é Pine Script?
Pine Script é uma linguagem de script usada para personalizar gráficos do TradingView. A plataforma já fornece muitos recursos para isso, mas o Pine Script oferece algumas opções adicionais. Seja para alterar as cores das velas (candlesticks) ou fazer um backtest de uma nova estratégia, o Pine Editor permite que você personalize seus gráficos em tempo real da maneira que preferir.
O código possui uma documentação muito sólida, então certifique-se de consultar o manual de usuário para mais informações. Nosso objetivo neste tutorial é discutir alguns dos princípios básicos e apresentar indicadores que úteis para trading de criptomoedas.
Configurando
É muito simples começar a usar o Pine Script. Todos os códigos são executados nos servidores do TradingView, para que possamos acessar o editor e desenvolver nossos scripts a partir de um navegador – não é necessário fazer downloads ou configurações adicionais.
Neste tutorial, vamos usar o par de moedas Bitcoin/Binance USD (BTCBUSD). Se você ainda não tem uma conta, crie uma gratuitamente (também existe a opção de assinatura Pro, mas não é necessária para este tutorial).
Acesse este link e você verá um gráfico como este:
O seu provavelmente estará mais atualizado.
Aqui, usaremos o modo de gráfico completo, com todos os recursos – clique no botão para acessá-lo. Neste modo, temos uma visão mais detalhada, ferramentas de desenho e opções para plotar linhas de tendência, entre outras funções.
O gráfico completo. Você pode ajustar o período de tempo clicando nas opções acima das guias destacadas na imagem.
Não discutiremos como usar as várias ferramentas disponíveis, mas se você usa análise técnica, recomendamos que se familiarize com elas. No canto inferior esquerdo (exibido na imagem), você verá algumas abas diferentes – clique em Pine Editor.
Pine Editor
É neste editor que a mágica acontece. Vamos inserir as instruções. Clique em Add to Chart (Adicionar ao Gráfico) para exibir as anotações acima. Observe que as coisas podem ficar complicadas se incluirmos várias anotações de uma vez, então vamos removê-las para os próximos exemplos (clique com o botão direito no gráfico > Remove Indicators (Remover Indicadores).
Como podemos ver, já temos algumas linhas de código. Vamos clicar em Add To Chart e ver o que acontece.
Um segundo gráfico será adicionado abaixo do original. O novo gráfico passa a exibir os mesmos dados. Passe o mouse sobre My Script (Meu Script) e clique na cruz para removê-lo. Agora, vamos nos aprofundar no código.
study("My Script")
Esta primeira linha está apenas configurando nossas anotações. Só precisamos definir um nome para o indicador ("My Script", neste caso), mas também existem alguns parâmetros opcionais que podemos adicionar. Um deles é o overlay, que instrui o TradingView a inserir o indicador no gráfico existente (em vez de usar um novo segmento). Como podemos ver no primeiro exemplo, o padrão é false. O parâmetro overlay = true adiciona o indicador ao gráfico existente, porém não o usaremos agora.
plot(close)
Esta linha é uma instrução para plotar o preço de fechamento do Bitcoin. O parâmetro plot simplesmente nos dá um gráfico de linha, mas também é possível exibir velas e barras, como veremos em breve.
Agora, vamos tentar o seguinte:
//@version=4 study("My Script", overlay=true) plot(open, color=color.purple)
Após adicionar esse parâmetro, veremos um segundo gráfico (que se parece com o original, mas deslocado para a direita). Tudo o que fizemos foi traçar o preço de abertura (open). Como a abertura do dia atual é o fechamento do dia anterior, faz sentido que eles tenham um formato idêntico.
Ok! Vamos nos livrar das anotações atuais (lembre-se, fazemos isso clicando com o botão direito e selecionando Remove Indicators). Passe o mouse sobre Bitcoin/BUSD e clique em Hide (Ocultar) para limpar o gráfico atual também.
Muitos traders preferem gráficos de velas, pois eles nos fornecem mais informações do que um gráfico simples, como o que acabamos de fazer. Vamos adicioná-los a seguir.
//@version=4 study("My Script", overlay=true) plotcandle(open, high, low, close)
É um bom começo, é uma boa ideia adicionar algumas cores. Geralmente, usamos velas vermelhas quando o valor de abertura for superior ao do fechamento para o período determinado, e velas verdes se o preço de fechamento for maior do que o de abertura. Vamos adicionar uma linha abaixo da função plotcandle():
//@version=4 study("My Script", overlay=true) colors = open >= close ? color.red : color.green plotcandle(open, high, low, close)
Essa função analisa cada vela e confere se o valor de abertura é maior ou igual ao valor de fechamento. Se for, significa que os preços caíram ao longo do período, então a vela ficará vermelha. Caso contrário, ela será verde. Modifique a função plotcandle() para configurar este esquema de cores em:
//@version=4 study("My Script", overlay=true) colors = open >= close ? color.red : color.green plotcandle(open, high, low, close, color=colors)
Remova os indicadores atuais, se ainda não o fez, e adicione este ao gráfico. Agora devemos ter algo semelhante a um gráfico de velas regular.
Excelente!
Plotando médias móveis (MM)
Passamos por alguns dos princípios básicos. Vamos plotar o nosso primeiro indicador personalizado – a média móvel exponencial ou MME. Esta é uma ferramenta valiosa, pois nos permite filtrar qualquer ruído do mercado e suavizar a ação do preço.
A MME difere um pouco da média móvel simples (MMS), pois dá mais ênfase aos dados mais recentes. Ele tende a ser mais reativo a movimentos repentinos e é frequentemente usado para estratégias de curto prazo (como day trading, por exemplo).
Média móvel simples (MMS)
Vamos plotar também a média móvel simples (MMS), para compararmos as duas posteriormente. Adicione esta linha ao seu script:
plot(sma(close, 10))
Esse valor representa a média dos dez últimos dias. Ajuste o número entre parênteses para ver como a curva muda ao considerar diferentes períodos.
MMS, com base nos dez últimos dias.
Média móvel exponencial (MME)
A MME é um pouco mais complicada, mas não se preocupe. Vamos analisar a fórmula primeiro:
EMA = (Fechamento - MME do Dia Anterior) * Multiplicado - MME do Dia Anterior
O que isso significa? Para cada dia, calculamos uma nova média móvel com base na média do dia anterior. O multiplicador considera o “peso” do período mais recente e faz o cálculo através da fórmula:
Multiplicador = 2 / (Período da MME + 1)
Como ocorre com as médias móveis simples, precisamos especificar a duração da MME. Sintaticamente, a função para plotar a MME é semelhante à MMS. Plote-a ao lado da MMS para que você possa comparar as duas:
//@version=4 study("My Script", overlay=true) plot(sma(close, 10)) plot(ema(close,10))
Podemos notar uma ligeira diferença entre os dois tipos de médias móveis.
➠ Pensando em investir em criptomoedas? Compre Bitcoin na Binance!
Scripts integrados
Até agora, escrevemos nosso código manualmente para que você possa ter uma ideia. Mas vamos usar algo que pode nos poupar tempo, principalmente se estivermos escrevendo scripts mais complexos e não quisermos fazê-los do zero.
Na parte superior direita do seu editor, clique em New (Novo). Você verá um menu suspenso com todos os tipos de indicadores técnicos. Clique em Moving Average Exponential (Média Móvel Exponencial) para ver o código-fonte de um indicador MME.
Adicione isso ao gráfico.
Este é diferente do nosso – aqui vemos funções input(). Elas são boas em termos de usabilidade, pois podemos clicar nesta caixa…
...e alterar facilmente alguns dos valores em uma nova janela, clicando em Settings (Configurações).
Adicionaremos algumas funções input() em nosso próximo script para demonstrar isso.
Plotando o indicador Relative Strength Index (RSI)
O Relative Strength Index (RSI) é outro indicador essencial da análise técnica. Ele é conhecido como um indicador de momentum, ou seja, ele mede a taxa de compra e venda dos ativos. A pontuação do RSI é apresentada em uma escala de 0 a 100 e tenta informar os investidores se os ativos estão sobrecomprados ou sobrevendidos. Normalmente, um ativo é considerado sobrevendido se tiver uma pontuação menor ou igual a 30 e sobrecomprado com uma pontuação maior ou igual a 70.
Você pode acessar New > RSI Strategy e comprovar isso por conta própria. Geralmente, o RSI é medido em períodos de 14 horas ou 14 dias, mas você pode ajustar essa configuração para adequá-la à sua própria estratégia.
Adicione isto ao gráfico. Agora, você verá algumas setas (definidas pela função strategy.entry() do código). RsiLE indica uma potencial oportunidade de posição long para o ativo, que pode estar sobrevendido. RsiSE destaca os possíveis pontos para posições short do ativo, quando este está sobrecomprado. Observe que, como acontece com todos os indicadores, você não deve necessariamente confiar neles como uma evidência infalível de que os preços irão cair/subir.
Backtesting
Existe uma maneira de testar indicadores personalizados. Embora o histórico do ativo não seja garantia de resultados futuros, o backtesting de nossos scripts pode nos dar uma ideia de sua eficácia na captação de sinais.
A seguir, usaremos um exemplo de script simples. Vamos criar uma estratégia que entra em uma posição long quando o preço do BTC cai para menos de $11.000 e sai da posição quando o preço ultrapassa $11.300. Podemos então ver o quão lucrativa essa estratégia teria sido historicamente.
//@version=4 strategy("ToDaMoon", overlay=true) enter = input(11000) exit = input(11300) price = close if (price <= enter) strategy.entry("BuyTheDip", strategy.long, comment="BuyTheDip") if (price >= exit) strategy.close_all(comment="SellTheNews")
Aqui, definimos a entrada (entry) e a saída (exit) como variáveis – ambas são inputs (dados de entrada), o que significa que é possível alterá-los no gráfico posteriormente. Também configuramos a variável de preço, price, que considera o fechamento de cada período. Então, temos o uso de lógica na forma de funções if (se). Se a parte entre colchetes for verdadeira, o bloco abaixo dela será executado. Caso contrário, o bloco será ignorado.
Portanto, se o preço for menor ou igual à entrada desejada, a primeira expressão será avaliada como verdadeira e abriremos uma posição long. Assim que o preço for igual ou superior à saída desejada, o segundo bloco será acionado, fechando todas as posições abertas.
Usaremos o gráfico com setas que mostram onde entramos/saímos; Portanto, especificamos como rotular esses pontos com o parâmetro de comentário, comment (neste exemplo, “BuyTheDip” e “SellTheNews”). Copie o código e adicione-o ao gráfico.
Agora podemos ver os indicadores no gráfico. Pode ser necessário diminuir o zoom.
O TradingView aplica automaticamente suas regras aos dados mais antigos. Você também notará que ele muda do Pine Editor para a guia Strategy Tester. Isso permite que você tenha uma visão geral de seus possíveis lucros, uma lista de trades e cada um de seus desempenhos individuais.
Posições de entrada e saída.
Associando as informações
É hora de escrever nosso próprio script usando alguns dos conceitos que vimos até agora. Vamos combinar MME e RSI e usar seus valores para colorir os gráficos de velas, gerando informações que podemos visualizar facilmente.
Isso não deve ser interpretado como um incentivo de investimento ou conselho financeiro – , não há uma maneira objetivamente correta de usar este indicador. Como todos os outros, ele deve ser usado com outras ferramentas para desenvolvimento de sua própria estratégia.
Agora vamos trabalhar em nosso novo script. Remova todos os seus indicadores do gráfico e oculte o gráfico Bitcoin/BUSD, para que possamos trabalhar em uma tela limpa.
Vamos começar definindo nosso estudo. Sinta-se à vontade para nomeá-lo como quiser, mas lembre-se de definir o parâmetro overlay=true.
study(title="Binance Academy Script", overlay=true)
Lembre-se da nossa fórmula de MME de antes. Devemos fornecer o multiplicador com o período da MME. Vamos usar um input que requer um número inteiro (portanto, nada de casas decimais). Também definiremos um valor mínimo (minval) e um valor padrão (defval).
study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
Usando essa nova variável, podemos calcular o valor da MME para cada vela em nosso gráfico:
study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength)
Ótimo. Agora o RSI. Definiremos um período de uma maneira semelhante:
study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)
E então, podemos calculá-lo:
study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength)
Neste estágio, vamos reunir a lógica que dá cor aos gráficos de velas de acordo com os valores de MME e RSI. Vamos considerar uma situação em que (a) o preço de fechamento da vela excede a MME e (b) o RSI é maior que 50.
Por quê? Bem, você pode decidir usar esses indicadores em conjunto para obter sinais long ou short para trading de Bitcoin. Por exemplo, você pode pensar que satisfazer ambas as condições significa que é um bom momento para entrar em uma posição long. Ou, por outro lado, você pode usá-lo para se informar sobre quando a posição não deve ser short, mesmo que outros indicadores sinalizem o contrário.
Portanto, nossa próxima linha ficará assim:
study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength) colors = close > emaVal and rsiVal > 50 ? color.green : color.red
Usando uma linguagem simples, o código simplesmente diz que se o valor da MME ultrapassar o preço de fechamento e a pontuação do RSI for maior que 50, a cor da vela será verde. Caso contrário, ela será vermelha.
Em seguida, vamos traçar a MME:
study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength) colors = close > emaVal and rsiVal > 50 ? color.green : color.red plot(emaVal, "EMA")
Por último, plote as velas, certificando-se de incluir o parâmetro de cor, color:
study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength) colors = close > emaVal and rsiVal > 50 ? color.green : color.red plot(emaVal, "EMA") plotcandle(open, high, low, close, color=colors)
E esse é o script! Adicione-o ao gráfico para vê-lo funcionando.
Gráfico BTC/BUSD com o indicador MME/RSI.
Considerações finais
Neste artigo, examinamos alguns exemplos básicos do que você pode fazer com o Pine Editor do TradingView. Agora, você deve ser capaz de personalizar gráficos de preços para obter informações adicionais usando seus próprios indicadores.
Nós abordamos apenas alguns indicadores aqui, mas a ideia é a mesma para outros mais complexos – você pode selecionar scripts integrados em New ou escrevê-los você mesmo .
Sem inspiração? Os artigos a seguir podem fornecer algumas ideias para seu próximo projeto: