Não é de hoje que sou aficcionado por robôs de criptomoedas. Estes softwares que comecei a construir em 2017 e não parei mais tem sido parte importante da minha estratégia de construção de renda passiva que envolve ainda plataformas de afiliados, mecanismos de busca, ebooks e cursos. Hoje vivo desses mecanismos inclusive, desde 2020.
Mas voltando ao assunto do título do tutorial, gostaria de explicar que essa ideia não foi minha, foi de alguns alunos em 2021. Pelo menos uns dois ou três alunos diferentes do meu curso de bot cripto me sugeriram a criação de um robô focado em aproveitar lançamentos de criptomoedas na Binance, a maior corretora de criptomoedas do mundo. Regularmente ela lista novos pares de moedas no seu book ou mesmo lança moedas 100% inéditas através do seu programa Binance Launchpad. Nunca ouviu falar do Launchpad? Explico melhor no vídeo abaixo.
Independente de ser apenas mais um par de moedas ou uma moeda inteiramente nova, a Binance sempre anuncia com antecedência a data e hora de quando a oportunidade estará posta e pronta para os traders e investidores poderem comprar e vender o novo ativo. Assim, milhares de clientes da corretora ao redor do mundo se programam para aproveitar a onda inicial de valorização que estes ativos costumam ter.
Não acredita? Dá uma olhada nesse outro vídeo onde mostro o que acontece no primeiro minuto de negociação desses ativos, pegando os dados completos de um dos lançamentos como exemplo.
O fato é: a oportunidade está aí. Também é importante reforçar que esse tipo de abordagem é muito arriscada e não há qualquer garantia, mas que existem mecanismos que você pode usar para aumentar as suas chances de sucesso: através da automação. Isso porque um bot, ou seja, um software de automação consegue comprar e vender muito mais rápido do que você conseguiria sequer ler as informações na tela da corretora. E isso é crucial para aproveitar os primeiros segundos de negociação de um novo ativo, visando comprá-lo pelo menor preço possível e consequentemente aumentando as suas chances de vendê-lo no lucro, às vezes segundos depois.
E no tutorial de hoje eu vou lhe ensinar como programar um bot desses, usando a tecnologia Node.js e a linguagem JavaScript. Se preferir, o vídeo abaixo possui o mesmo conteúdo e ao final do tutorial tem os fontes para baixar.
#1 – Preparando o Ambiente
Usaremos aqui a tecnologia Node.js pois ela é muito boa para esse tipo de aplicação, além de que ela usa a linguagem JavaScript, que é uma das mais fáceis de aprender por quem não é desenvolvedor profissional. Para instalar o Node.js na sua máquina, bem como o Visual Studio Code que é a ferramenta que geralmente utilizo e recomendo para escrever os códigos, basta ver o vídeo abaixo.
Com o Node.js e o Visual Studio Code instalados, é hora de criar a sua conta na Binance. Você precisa de no mínimo uma conta de testes, mas se quiser realmente que o bot funcione, já aproveita e cria as duas. Se tiver qualquer problema ou não souber como criar as suas contas, o vídeo abaixo ensina também.
E isso finaliza a etapa de preparação do ambiente para desenvolvimento.
#2 – Preparando o Projeto
Com tudo devidamente criado, hora de configurar o nosso projeto. Para isso, crie uma pasta na sua máquina, a minha eu chamei de binance-launchbot, e dentro rode o seguinte comando, que inicializa um projeto Node.js.
1 2 3 |
npm init -y |
Isso irá criar o arquivo package.json, agora é hora de instalarmos as dependências que vamos precisar no projeto. Rode o comando abaixo:
1 2 3 |
npm install axios dotenv ws |
A saber:
- Axios: pacote para acessar as APIs da Binance;
- DotEnv: pacote para configurações do projeto;
- WS: pacote para acessar as streams da Binance;
Usaremos cada um desses pacotes no momento certo, a começar pelo DotEnv. As configurações do nosso projeto ficarão em um arquivo .env que você deve criar na pasta do seu projeto, com o seguinte conteúdo. Substitua os valores entre <> incluindo o < e o >.
1 2 3 4 5 6 7 8 9 |
#.env SYMBOL=<par da moeda que vai negociar> PROFIT=<lucratividade mínima que deseja> BUY_QTY=<grana para a compra> API_URL=<endereço da API da Binance que vai usar> API_KEY=<sua chave de API> SECRET_KEY=<o segredo da sua chave de API> |
Um exemplo de configuração abaixo (apenas as chaves de API que não são reais):
1 2 3 4 5 6 7 8 |
SYMBOL=BTCUSDT PROFIT=1.01 BUY_QTY=10 API_URL=https://testnet.binance.vision/api API_KEY=abc123 SECRET_KEY=def456 |
No exemplo acima coloquei o symbol (par de moeda) BTCUSDT pois ele funciona em ambiente de testes e é importante fazer muitos testes antes de rodar em produção. Quando estiver apontando seu bot para produção, você vai colocar aqui o novo par de moedas que irá negociar.
Em PROFIT eu coloquei 1.01 pois é um multiplicador. Se você multiplicar algo por 1.01 terá um aumento de 1% sobre o valor original. Seguindo esse raciocínio, ajuste esse valor de acordo com suas expectativas e estratégia.
Em BUY_QTY eu coloquei 10 como exemplo. Como meu par é BTCUSDT, isso representa 10 USDT. Esse é o valor que o robô vai comprar assim que o par de moedas for lançado na plataforma. Obviamente você tem de ter este saldo em carteira para que funcione.
Em API_URL eu coloquei o endereço da API de testes da Binance. Os endereços de teste e de produção são documentados pela Binance em testnet.binance.vision. Já o meu par de chaves de API você deve substituir pelos seus, sendo que na seção anterior aqui do tutorial eu incluí um vídeo explicando como gerar as suas.
Para finalizar esta segunda etapa, crie um arquivo index.js na pasta do seu projeto, é dentro dele que vamos programar o nosso bot.
#3 – Monitorando o ativo
A primeira coisa que você tem de aprender quando vai criar qualquer bot de trade é como monitorar o ativo que quer negociar e é por aí que vamos começar.
Abra o arquivo index.js e comece carregando as configurações do nosso projeto.
1 2 3 4 5 6 7 |
require('dotenv').config(); const SYMBOL = process.env.SYMBOL; const PROFIT = parseFloat(process.env.PROFIT); const BUY_QTY = parseFloat(process.env.BUY_QTY); |
A primeira linha carrega nosso arquivo .env e as demais colocam algumas das variáveis dele em constantes locais que o bot vai usar.
Logo abaixo, vamos configurar a conexão com a stream de dados da Binance usando a tecnologia de WebSockets, mais especificamente a stream que monitora o book de ofertas de um ativo. Qual ativo? Aquele que você configurou no arquivo .env.
1 2 3 4 5 6 7 8 |
const WebSocket = require('ws'); const ws = new WebSocket(`wss://stream.binance.com:9443/ws/${SYMBOL.toLowerCase()}@bookTicker`); //não mexa nestas variáveis let quantity = 0; let buyPrice = 0; |
A primeira linha carrega o pacote WS, enquanto que a segunda estabelece a conexão. Se tudo foi programado corretamente, imediatamente à execução do programa (comando abaixo) a conexão estará estabelecida e o seu bot estará recebendo em tempo real as alterações de preço do ativo em questão. Também incluí ao final do código duas variáveis que vamos usar mais tarde, não mexa nelas, o bot é quem vai mexer (explico mais tarde).
Se quiser aprender tudo sobre o monitoramento de dados da Binance, o vídeo abaixo vai te ajudar.
Para rodar este programa e ver se não tem erros até o momento, salve tudo com Ctrl+S e rode o bot com o comando abaixo (estando na pasta do projeto).
1 2 3 |
node index.js |
Não vai ter resultado algum no momento, é apenas para ver se programou tudo sem erros mesmo.
Agora vamos configurar o nosso objeto ws para que cada vez que chegar uma atualização de preço, que ele faça alguma coisa.
1 2 3 4 5 6 7 8 9 10 |
ws.on('error', (err) => { console.error(err); process.exit(1); }) ws.onmessage = async (event) => { console.log(event); } |
Configurei aqui o tratamento de duas situações distintas. A primeira é para o caso de erro, onde mando imprimir o erro no console e encerro o programa. A segunda é para o caso de chegar uma nova atualização de preço, que vou jogar no console inicialmente também.
Agora ajuste o seu .env para um par de moedas que exista, salve e mande rodar novamente o seu bot e você terá um monitoramento de preço de um ativo configurado e funcionando em tempo real.
Mas Luiz, se o robô vai servir para comprar uma moeda logo no seu lançamento, faz sentido eu ficar monitorando o preço de algo que nem sequer foi lançado ainda?
Sim, pois no primeiro segundo em que a moeda for lançada e estiver em negociação, o seu robô vai receber a primeira atualização de preço dela e você poderá fazer a sua entrada. Durante o desenvolvimento e testes faremos tudo com BTCUSDT, mas a lógica é a mesma para qualquer par de moedas.
Na parte 2 deste tutorial vamos aprender a implementar a lógica para comprar e vender rapidamente.
Olá, tudo bem?
O que você achou deste conteúdo? Conte nos comentários.
Eu estou feliz por lhe conhecer, olá sou o Italo, vi seu conteúdo para criar um robô para operar na binance, mas ficou difícil criar o software. Pode me presentear, com o robô pronto ?
[email protected]
Bom dia Italo, tudo bem? Infelizmente não forneço ou vendo robôs prontos, apenas ensino programação. Se deseja aprender a fazer o robô e não possui base alguma, recomendo começar por essa playlist: https://www.youtube.com/watch?v=c9mDHLYAIu8&list=PLsGmTzb4NxK3r0_sMLyHKaYX97tPN2QPm