Como Criar Indicadores de Análise Técnica no TradingView
P√°gina Inicial
Artigos
Como Criar Indicadores de Análise Técnica no TradingView

Como Criar Indicadores de Análise Técnica no TradingView

Avançado
Publicado em Aug 28, 2020Atualizado em Jun 15, 2023
13m

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:


Gr√°fico BTCBUSD no TradingView

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.


Gr√°fico completo no TradingView para BTCBUSD

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


captura de tela do 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.


Adicionando o primeiro script ao gr√°fico do TradingView


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.


Gr√°fico de velas no TradingView

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.


Média móvel simples com base nos 10 dias anteriores

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))


MME e MMS em um gr√°fico do TradingView

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.



Média móvel exponencial em script do Pine Editor

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‚Ķ


Modificando um gr√°fico na interface do TradingView


...e alterar facilmente alguns dos valores em uma nova janela, clicando em Settings (Configura√ß√Ķes).


alterando inputs da MME


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.


indicador ativo no gr√°fico do TradingView

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.


Strategy Tester do TradingView

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 ‚Äst, 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.


Script em funcionamento no TradingView

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: