Como criar indicadores TA no TradingView
Introdução
Sem as ferramentas de negociação certas, você não pode realizar uma análise técnicaeficaz. Uma forte estratégia de negociação irá ajudá-lo a evitar erros comuns,melhorar sua gestão de riscose aumentar sua capacidade de identificar e aproveitar as oportunidades.
Para muitos, o TradingView é a plataforma de gráficos. Oferecendo um hub de ferramentas de análise técnica, o poderoso aplicativo web HTML5 é usado por milhões para acompanhar movimentos nos mercados de ações forex, criptomoedase tradicionais.
O TradingView tem muitos recursos poderosos: ele nos permite rastrear ativos em inúmeras plataformas de negociação e publicar ideias de negociação em sua rede social. Neste artigo, vamos focar em sua personalização. Usaremos o Pine Script, a própria linguagem de programação do TradingView, que nos concede controle granular sobre nossos layouts de gráficos.
O que é o Pine Script?
Pine Script é um idioma de script que pode ser usado para modificar seus gráficos do TradingView. A plataforma já equipa você com muitos recursos para fazê-lo, mas pine script permite que você dê um passo adiante. Se você deseja alterar as cores de seus castiçais ou para testar uma nova estratégia, o Editor pine permitirá que você personalize seus gráficos em tempo real como achar melhor.
O código em si está excelentemente documentado, por isso não deixe de verificar o manual do usuário para obter mais informações. Nosso objetivo neste tutorial é discutir alguns dos fundamentos e introduzir indicadores que podem vir em mãos para negociação de criptomoedas.
Configuração
É incrivelmente simples começar com Pine Script. Qualquer código que escrevemos é executado nos servidores do TradingView, para que possamos acessar o editor e desenvolver nossos scripts a partir de um navegador – sem qualquer download ou configuração adicional necessário.
Neste tutorial, vamos mapear o par de moedas Bitcoin/Binance USD(BTCBUSD). Se você ainda não tem um, vá em frente e crie uma conta gratuita (há uma assinatura profissional disponível, também, mas não é necessário para este guia).
Siga este link. e você verá um gráfico semelhante ao seguinte:
O seu provavelmente estará mais atualizado.
Aqui, queremos obter o gráfico completo – clique no botão para acessá-lo. Isso nos dá uma visão muito mais detalhada, ferramentas de desenho e opções para traçar tendências, entre outras coisas.
O gráfico completo. Você pode ajustar o prazo clicando nas visualizações acima das guias destacadas.
Não discutiremos como usar as várias ferramentas disponíveis, mas se você estiver falando sério sobre análise técnica, aconselhamos que você se familiarize com elas. Na parte inferior esquerda (delineada na imagem), você verá algumas guias diferentes – clique em Pine Editor.
O Editor de Pinheiros
Este editor é onde a magia acontece. Vamos dizer o que queremos fazer e, em seguida, clique em Adicionar ao Gráfico para ver nossas anotações aparecerem acima. Observe que as coisas podem ficar confusas se incluirmos várias anotações ao mesmo tempo, por isso vamos removê-las entre exemplos(clique com o botão direito do mouse no gráfico > Remover indicadores).
Você pode ver que nós já temos algumas linhas de código lá. Vamos clicar em Adicionar ao Gráfico para ver o que acontece.
Um segundo gráfico é adicionado abaixo do original. O novo gráfico representa os mesmos dados. Passe o mouse sobre o Meu Script e clique na cruz para removê-lo. Agora, vamos investigar o código.
study("My Script")
Esta primeira linha está apenas configurando nossa anotação. Ele só requer o nome que você deseja chamar de indicador ("Meu Script", neste caso), mas também existem alguns parâmetros opcionais que podemos adicionar. Uma delas é a sobreposição, que diz ao TradingView para colocar o indicador no gráfico existente (em vez de em um novo segmento). Como você pode ver no nosso primeiro exemplo, ele é padrão para falso. Embora não o vejamos em ação agora, sobreposição=true adiciona o indicador ao gráfico existente.
plot(close)
Esta linha é a instrução para traçar o preço próximo do Bitcoin. plot simplesmente nos dá um gráfico de linha, mas também podemos exibir castiçais e barras, como veremos em breve.
Agora, vamos tentar o seguinte:
//@version=4 study("My Script", overlay=true) plot(open, color=color.purple)
Uma vez que você adicione isso, você deve ver um segundo gráfico (que parece que o original mudou para a direita). Tudo o que fizemos foi traçar o preço aberto em vez disso, e como o dia atual está aberto é o fechamento do dia anterior, faz sentido que estes tenham uma forma idêntica.
Ok! Vamos nos livrar das anotações atuais (lembre-se, fazemos isso clicando com o botão direito do mouse e acertando Indicadores de Remoção). Passe o mouse sobre o Bitcoin / BUSD e clique no botão Ocultar para limpar o gráfico atual, também.
Muitos comerciantes preferem gráficos de castiçais, pois nos dão mais informações do que um simples enredo como o que acabamos de fazer. Vamos adicioná-los em seguida.
//@version=4 study("My Script", overlay=true) plotcandle(open, high, low, close)
É um bom começo, mas a falta de cores torna um pouco sem graça. Idealmente, devemos ter velas vermelhas quando o aberto é maior do que o fechamento para o prazo dado, e os verdes se o fechamento exceder o aberto. Adicionaremos uma linha acima da função plotcandle():
//@version=4 study("My Script", overlay=true) colors = open >= close ? color.red : color.green plotcandle(open, high, low, close)
Isso olha para cada castiçal e verifica se o aberto é maior ou igual ao próximo. Se for, significa que os preços caíram ao longo do período, por isso colorirá o castiçal vermelho. Caso contrário, ele vai colori-lo verde. Modifique a função plotcandle() para passar 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 você ainda não tiver, e adicione este ao gráfico. Agora devemos ter algo parecido com um gráfico regular de castiçais.
Plotagem médias móveis (MA)
Temos alguns dos básicos para baixo. Vamos passar para o nosso primeiro indicador personalizado – a média móvel exponencial, ou EMA. Esta é uma ferramenta valiosa, pois nos permite filtrar qualquer ruído de mercado e suavizar a ação de preços.
A EMA difere ligeiramente da média móvel simples (SMA), na forma de colocar mais peso nos dados mais recentes. Ele tende a ser mais reativo a movimentos repentinos e é frequentemente usado para peças de curto prazo (no day trading,por exemplo).
A média móvel simples (SMA)
Podemos muito bem traçar o SMA, só para que possamos comparar os dois depois. Adicione esta linha ao seu script:
plot(sma(close, 10))
Isso parcela a média dos dez dias anteriores. Ajuste o número nos suportes para ver como a curva muda ao levar em conta diferentes comprimentos.
O SMA, com base nos dez dias anteriores.
A média móvel exponencial (EMA)
A EMA será um pouco mais complicada de entender, mas não se preocupe. Vamos quebrar a fórmula primeiro:
EMA = (Close - Previous Day’s EMA) * Multiplier - Previous Day’s EMA
Então, o que isso está nos dizendo? Bem, para cada dia, calculamos uma nova média móvel com base na do dia anterior. O multiplicador é o que "pesa" o período mais recente, e é calculado com a seguinte fórmula:
Multiplier = 2 / (Length of EMA + 1)
Como em médias móveis simples, precisamos especificar quanto tempo a EMA terá. Sintacticamente, a função para plotar a EMA é semelhante à do SMA. Plote-o ao lado do SMA para que você possa comparar os dois:
//@version=4 study("My Script", overlay=true) plot(sma(close, 10)) plot(ema(close,10))
Você pode ver uma pequena diferença nos dois tipos de MA.
Scripts embutidos
Até agora, escrevemos nosso código manualmente para que você possa ter uma noção dele. Mas vamos introduzir algo que pode nos poupar tempo, especialmente se estamos escrevendo roteiros mais complexos, e não queremos fazê-los do zero.
Na parte superior, lado direito do seu editor, clique em Novo. Você terá um menu suspenso com todos os tipos de indicadores técnicos diferentes. Clique em Moving Average Exponential para ver o código-fonte de um indicador EMA.
Vá em frente e adicione isso ao gráfico.
Este é diferente do nosso – você notará as funções de entrada(). Estes são bons de uma perspectiva de usabilidade, já que você pode clicar nesta caixa...
... e altere facilmente alguns dos valores em uma janela pop-up clicando na roda Configurações.
Adicionaremos algumas funções de entrada em nosso próximo script para demonstrar isso.
Traçando o indicador Índice de Força Relativa (RSI)
O Índice de Força Relativa (RSI) é outro indicador essencial na análise técnica. É conhecido como um indicador de impulso,o que significa que mede a taxa em que os ativos são comprados e vendidos. Apresentado em uma escala de 0 a 100, uma pontuação do RSI tenta informar os investidores sobre se os ativos estão sobrecomprados ou sobrevendidos. Normalmente, um ativo pode ser considerado sobrevendido se tiver uma pontuação menor ou igual a 30, e ele pode ser sobrecomprado com uma pontuação maior ou igual a 70.
Se você for para a Nova > Estratégia RSI,você pode ver isso por si mesmo. O RSI é geralmente medido em períodos de 14 (ou seja, 14 horas ou 14 dias), mas você é livre para ajustar essa configuração para se adequar à sua própria estratégia.
Adicione isso ao gráfico. Você deve ver algumas setas exibidas agora (definidas pela função strategy.entry() no código). A RsiLE indica uma oportunidade potencial para o ativo longo, pois ele pode ser supervendido. A RsiSE destaca possíveis pontos para encurtar o ativo quando ele for sobrecomprado. Note que, como em todos os indicadores, você não deve necessariamente confiar nesses como evidência infalível de que os preços diminuirão/aumentarão.
Backtesting
Há uma maneira de testarmos nossos indicadores personalizados. Embora o desempenho passado não seja garantia de resultados futuros, o backtesting de nossos roteiros pode nos dar uma ideia de quão eficazes eles são na captação de sinais.
Vamos dar um exemplo de um roteiro simples abaixo. Vamos criar uma estratégia simples que entre em uma posição longa quando o preço do BTC cair abaixo de US $ 11.000 e sair da posição quando o preço excede US $ 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 entrada e saída como variáveis – ambas são entradas, o que significa que podemos alterá-las no gráfico mais tarde. Também estabelecemos a variável de preço, que leva o fechamento para cada período. Então, temos alguma lógica na forma de se declarações. Se a peça entre parênteses for verdadeira, então o bloco recuado abaixo dela será executado. Caso contrário, será ignorado.
Então, se o preço for menor ou igual à nossa entrada desejada, a primeira expressão avalia como verdadeira, e abriremos uma posição longa. Uma vez que o preço seja igual ou excedido à saída desejada, o segundo bloco será acionado, fechando todas as posições abertas.
Vamos anotar o gráfico com setas que mostram onde entramos/saímos, então especificamos o que rotular esses pontos com o parâmetro de comentário (neste exemplo, "BuyTheDip" e "SellTheNews"). Copie o código e adicione-o ao gráfico.
Agora você pode ver os indicadores no gráfico. Você pode precisar diminuir o zoom.
O TradingView aplica automaticamente suas regras a dados mais antigos. Você também notará que ele muda do Editor pine para a guia Strategy Tester. Isso permite que você veja uma visão geral de seus lucros potenciais, uma lista de negociações e cada um de seus desempenhos individuais.
Posições que entramos e saímos.
Amarrando juntos
Hora de escrever nosso próprio roteiro usando alguns dos conceitos que vimos até agora. Vamos combinar EMA e RSI e usar seus valores para colorir castiçais, gerando insights que podemos visualizar facilmente.
Isso não deve ser interpretado como aconselhamento financeiro – não há uma maneira objetivamente correta de usar este indicador. Como todos os outros, ele deve ser usado com outras ferramentas para desenvolver sua própria estratégia.
Agora vamos trabalhar em nosso novo roteiro. Remova todos os seus indicadores do gráfico e esconda o gráfico Bitcoin/BUSD, também, para que tenhamos uma tela limpa para trabalhar.
Vamos começar definindo nosso estudo. Sinta-se livre para nomeá-lo o que quiser, apenas certifique-se de definir sobreposição=verdade.
study(title="Binance Academy Script", overlay=true)
Lembre-se de nossa fórmula ema de antes. Precisamos fornecer ao multiplicador o comprimento da EMA. Vamos torná-lo uma entrada que requer um inteiro (assim, sem casas decimais). Também vamos definir um mínimo que ele pode ser(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 esta nova variável, podemos calcular o valor EMA 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)
Legal. Para o RSI. Vamos dar-lhe um comprimento 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)
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)
Nesta fase, vamos montar a lógica que colore os castiçais dependendo dos valores EMA e RSI. Vamos tomar uma situação onde (a) o preço próximo da vela excede a EMA e (b) onde o RSI está acima de 50.
Por que? Bem, você pode decidir que esses indicadores podem ser usados em conjunto para dizer quando o Bitcoin longo ou curto. Por exemplo, você pode pensar que satisfazer ambas as condições significa que é um bom momento para entrar em uma posição longa. Ou, por outro lado, você pode usá-lo para informá-lo quando não encurtar, mesmo que outros indicadores digam o contrário.
Então, nossa próxima linha será 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
Se traduzirmos isso em inglês simples, estamos apenas dizendo que se o valor da EMA exceder o preço próximo e a pontuação do RSI exceder 50, vamos colorir o verde vela. Caso contrário, vamos colori-lo vermelho.
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 fim, plote as velas, certificando-se de incluir o parâmetro de cor:
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 roteiro! Adicione-o ao gráfico para vê-lo em ação.
Um gráfico BTC/BUSD com o indicador EMA/RSI.
Pensamentos finais
Neste artigo, nós executamos alguns exemplos básicos do que você pode fazer com o Editor de Pinheiros do TradingView. Agora, você deve estar confiante em fazer anotações simples em gráficos de preços para obter insights adicionais de seus próprios indicadores.
Nós só nos interessamos por alguns indicadores aqui, mas é fácil girar os mais complexos – seja selecionando os scripts embutidos do Novo ou escrevendo-os você mesmo.