Como criar um bot trader para Binance Futures em Node.js

Cripto

Como criar um bot trader para Binance Futures em Node.js

Luiz Duarte
Escrito por Luiz Duarte em 12/05/2023
Junte-se a mais de 34 mil devs

Entre para minha lista e receba conteúdos exclusivos e com prioridade

Independente de você acreditar ou não que as criptomoedas estão em uma bolha, a oscilação das moedas trazem diversas oportunidades para quem quer fazer trading, ou seja, compra e venda de moeda visando lucro na diferença entre as cotações atual e futura. E quando o assunto é mercado de derivativos, onde pode-se operar alavancado, as possibilidades de ganhos superam os dois dígitos ao dia e é unânime entre os investidores que é a única forma de alguém com pouco capital fazer ganhos expressivos com trading.

Para comprar e vender Bitcoin e demais criptomoedas (considerando que minerar não é mais tão lucrativo quanto foi no passado) você deve ter conta em algum exchange. Dentre os players mundiais, uma das mais agressivas em termos de taxas e portfólio de moedas é a Binance, considerada a maior exchange de criptomoedas do mundo em volume de negociações. A operação tradicional (Spot ou à Vista) é muito simples: você usa moedas fiduciárias para comprar criptomoedas, como Bitcoin, (a preço atual ou preço futuro/limite) e usa criptomoedas para vender e ganhar moeda fiduciária em troca, que ficam na sua conta do exchange até ser sacado de volta para sua conta bancária. No entanto, na modalidade de Mercado Futuro (Binance Futures), você vai precisar também enviar saldo da sua carteira Spot para a carteira Futuros antes de começar a operar.

Mas não se preocupe, aqui vamos usar apenas saldo de teste. Como eu não sou um trader, mas um programador, vou te ensinar neste tutorial como fazer o monitoramento do mercado futuro, além do envio de ordens de abertura e fechamento de posições nos contratos, tudo via programação em um ambiente de desenvolvimento livre de riscos.

É importante que você já tenha conhecimento para operar no mercado futuro antes de querer fazer um bot para este mercado, o que você pode obter sozinho ou em vídeos no Youtube. Idealmente é bacana que você já tenha feito um bot para mercado spot antes, pois os passos são bem parecidos, o que ensino neste tutorial. Também é importante entender que a Binance não possui autorização para operar derivativos no Brasil, que são regulados pela CVM. Sendo assim, oficialmente, brasileiros residentes no país NÃO PODEM operar Futuros. E embora você possa facilmente mudar o seu país no menu superior da Binance e ter acesso à Futuros, não é recomendado fazê-lo. Se fizer e acontecer algo com a sua conta, é total responsabilidade sua, ok?

Se preferir, pode assistir ao vídeo abaixo ao invés de ler o tutorial.

Atenção: ganhos passados não representam garantia de ganhos futuros. Criptomoedas são investimentos de risco e portanto você pode perder muito dinheiro mesmo acreditando que sabe operar neste mercado. Eu NÃO SOU responsável e jamais serei pelas suas perdas, eu apenas ensino a criar programas de computador, não aconselho investimentos, ok?

#1 – Conta, chaves de API e ambiente

Para conseguir fazer este tutorial você deve ter uma conta criada na Binance (clique no link), o maior exchange mundial e o mais confiável até onde sei. Eles possuem uma API REST muito completa que usaremos para monitorar e operar no mercado futuro de criptomoedas. Se preferir, pode seguir o passo a passo do vídeo abaixo para aprender a criar as chaves.

Crie sua conta e faça todo o processo de validação, com selfie e tudo mais. Após estar com a sua conta 100% aprovada, habilite todos os mecanismos de segurança (na área de configurações da sua conta) como uma senha forte, Two Factor Authentication (2FA), etc. Nem todos estes itens são necessários para fazer este tutorial, mas sugiro que faça todos eles pois estes exchanges são atacados por hackers o tempo todo e você não vai querer facilitar, não é mesmo?

Após habilitar os mecanismos de segurança, você vai precisar acessar a área de Futuros no site e no seu primeiro acesso terá de responder a um questionário bem simples de entender e que te ajuda a conhecer as respostas certas caso erre alguma. Com seu acesso a Futuros liberado, poderá criar a sua chave de API (ApiKey), como citado neste tutorial oficial deles. É bem simples, basta acessar a área de API Management no seu perfil, dar um nome para a API Key e definir as permissões que essa chave vai ter, o que recomendo que você deixe o padrão mesmo mais a opção de Futures.

Certifique-se de anotar e guardar em segurança o Api Key e o Secret Key que vai ser fornecido para você, precisaremos deles se quiser operar através de robôs em produção.

Agora, para operar em ambiente de desenvolvimento é ainda mais fácil. Acesse a Testnet Futures e faça login com a sua conta. Você terá acesso a uma cópia da plataforma da Binance com 3000 dólares fake para brincar. Pode operar à vontade aqui que não tem riscos reais, em um mercado simulado. Na parte inferior da tela você encontrará uma aba API Key, nela você terá acesso às suas chaves de teste/desenvolvimento. É elas que usaremos durante o tutorial, sendo que o outro par você usará apenas quando estiver pronto para operar em produção.

Com a conta aberta, com permissão em Futuros e as chaves em mãos, é hora de instalar na sua máquina o Node.js, que é a tecnologia que vamos usar para construir o bot. Para fazer isso basta ir no site oficial, baixar a versão LTS e instalar até o final. Caso tenha qualquer dificuldade, o vídeo abaixo mostra o passo a passo.

No vídeo acima eu mostro a instalação do Visual Studio Code também, que não é obrigatório, mas recomendável, além do GitHub, que serve para “salvar” o seu projeto, caso deseje fazê-lo.

Com o ambiente preparado, hora de criarmos o projeto do nosso robô.

#2 – Criar o projeto Node.js

Crie uma pasta no seu computador com o nome de binance-futures e dentro dela coloque um arquivo index.js vazio e via console execute um ‘npm init -y’ nesta pasta para fazer as configurações iniciais de um projeto Node.js.

Vamos instalar alguns pacotes via NPM pra deixar nosso projeto preparado. Seguem os comandos de instalação:

O módulo dotenv serve para carregar variáveis de ambiente na sua aplicação Node.js. Usaremos estas variáveis de ambiente para colocar as configurações do nosso bot. Crie um arquivo “.env” na raiz do seu projeto com o seguinte conteúdo dentro, representando as configurações que vamos precisar:

Uma rápida explicação de como você deve preencher cada variável após o sinal de igualdade:

  • API_KEY: sua API Key de futuros (alfanumérico), criada na Binance;
  • SECRET_KEY: o seu API Secret de futuros (alfanumérico), criado na Binance;
  • API_URL: o endereço base da API da Binance que você vai utilizar, pode preencher com https://fapi.binance.com/fapi se estiver operando em produção ou https://testnet.binancefuture.com/fapi se estiver operando em ambiente de testes;
  • STREAM_URL: o endereço base das streams da Binance que você vai utilizar, pode preencher com
    wss://fstream.binance.com/ws/

Tenha em mente que as informações de API_KEY e SECRET_KEY são secretas e você não deve compartilhar com ninguém, caso contrário quem descobri-las poderá comprar e vender criptomoedas em seu nome, usando seu dinheiro.

Se você for versionar o seu projeto ou mesmo compartilhar o seu código com outras pessoas via Git, coloque um .gitignore na raiz do seu projeto incluindo a pasta node_modules (padrão) e o arquivo .env, que é mantido localmente só no seu projeto.

Para carregar estas configurações na sua aplicação, modifique o seu package.json para que no script de start ele carregue o .env:

Note que cabe a você entender as melhores configurações para os seus objetivos financeiros, a sua situação financeira, a situação do mercado de criptomoedas no momento que você está atuando nele, etc. Me focarei aqui na construção do robô que abre e fecha posições no mercado futuro, não na sua configuração.

Curso Node.js e MongoDB

#3 – Monitorando o mercado

Vamos começar pela primeira atividade, que é mais simples e é a base do robô: monitorar o mercado. Existem diversas formas de fazer isso mas a que considero sendo a melhor á através das streams de dados.

As streams de dados ou fluxos de dados são canais de informação que a Binance disponibiliza para você plugar seu bot e receber em tempo real algum tipo de informação que você deseja. A documentação completa e atualizada da API e streams de futuros da Binance pode ser encontrada aqui.

Para nos conectarmos nas streams nós usamos uma tecnologia chamada WebSocket, que é nativa do JavaScript e que acessaremos através da biblioteca ws, que instalamos anteriormente. Vá no seu index.js, carregue a classe WebSocket do pacote ws e use ela para se conectar na stream de Mark Price conforme URL presente na documentação. Essa conexão permite que a gente passa a “escutar” um evento onmessage do websocket que nos traz segundo a segundo o preço do contrato perpétuo do par de moedas que desejamos monitorar (BTCUSDT no exemplo).

O evento onmessage dispara uma função toda vez que a Binance nos enviar uma atualização. Nesta função podemos fazer o que quisermos e neste exemplo eu estou limpando o terminal na primeira linha (apenas por organização) e na sequência estou convertendo o event.data, que vem string por padrão, para um objeto JSON e pegando apenas duas informações: o par de moedas (propriedade s) e o mark price (propriedade p).

Experimente rodar esse projeto após salvar o arquivo com o comando npm start e verá em tempo real o mark price chegando.

Para finalizar o monitoramento, você pode adicionar na função do evento onmessage a sua lógica de negociação, com as entradas e saídas baseando-se na informação que temos que é o preço. Um exemplo meramente didático abaixo, onde temos uma lógica para abrir nossa posição (coloque um preço que fizer sentido para você) e outra lógica para fechar, lembrando que no mercado futuro você pode abrir posições comprado ou vendido, então não necessariamente os preços tem de seguir a lógica do maior para o menor, pode ser o contrário conforme a sua estratégia.

Também é interessante você ter algum mecanismo de controle para evitar ficar comprando sucessivas vezes ou vendendo sucessivas vezes. Isso pode ser facilmente controlado criando uma variável fora da função de onmessage e alterando-a dentro das lógicas dos ifs, como abaixo.

Usando destes valores e comparando com seus objetivos de compra ou venda, é possível ao robô lhe avisar, por email de repente (ou ainda via SMS, WhatsApp ou Telegram) que é a hora certa de comprar ou vender. Claro, que em um cenário ideal e mais completo, o próprio robô poderia fazer essas operações e é algo perfeitamente possível de ser desenvolvido.

Mas isso a gente vai ver na PARTE 2, que você confere neste link!

Quer aprender tudo que é possível monitorar com as streams da Binance? Confere este vídeo aqui.

https://youtube.com/live/W3kfIfpwrWU?feature=share


Olá, tudo bem?

O que você achou deste conteúdo? Conte nos comentários.

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *