Implementação de referência que exemplifica o uso da biblioteca do Biscoint para NodeJS, biscoint-api-node, para verificar a existência de oportunidades de arbitragem e executá-las.
Não utilize esse código em produção para valores significativos!!
O Biscoint conecta você a várias corretoras. É normal que durante movimentos naturais do mercado o preço de compra em uma corretora seja mais barato que o preço de venda em outra, gerando assim uma oportunidade de fazer o que chamamos de arbitragem.
Arbitragem é a ação de comprar mais barato em uma corretora e vender mais caro outra. Descontando as taxas essa movimentação deve resultar em lucro para o operador.
Tendo em vista a facilidade em se conectar a várias corretoras e utilizando a API de negociações do Biscoint, escrevemos esse pequeno código para exemplificar o uso de nosso wrapper para NodeJS junto com um algorítmo simples e somente para testes de arbitragem.
É importante ressaltar que este código não deve ser usado com valores altos, já que se trata meramente de um exemplo de como usar a biblioteca para NodeJS do Biscoint.
- Você precisa ter o NodeJS e o NPM instalados. Para instalá-los, recomendamos usar o nvm no Linux/MacOS ou o nvm-windows no Windows. Recomendamos NodeJS 12 ou superior.
- Será necessária uma conta verificada no Biscoint para gerar as chaves de API.
Baixe o arquivo compactado deste projeto, e extraia-o em uma pasta à sua escolha, usando o descompactador de arquivos de sua preferência.
Se você tem o git instalado, vá até a linha de comando e execute:
git clone https://github.com/Biscoint/biscoint-arbitrage-bot.git
Acesse a interface para geração de chaves do Biscoint. Caso o menu "API" não apareça, solicite ao suporte que ative a geração de chaves para sua conta.
Não feche o popup com a chave e o segredo, eles não serão exibidos novamente. Você os informará no arquivo de configuração descrito no próximo passo.
Informe suas configurações num arquivo config.json
localizado na raiz do projeto. Use como modelo o arquivo config.template.json
(você pode criar
uma cópia dele e renomear para config.json
):
{
"apiKey": "paste-your-api-key",
"apiSecret": "paste-your-api-key",
"amount": 100,
"amountCurrency": "BRL",
"initialBuy": true,
"minProfitPercent": 0.02,
"intervalSeconds": null
}
Explicando cada item da configuração:
- apiKey - obrigatório - informe sua chave de api gerada no Biscoint.
- apiSecret - obrigatório - informe sua chave secreta gerada no Biscoint.
- amount - opcional - informe o valor das operações individuais de compra e venda, na moeda especificada no parâmetro
amountCurrency
. Por exemplo, se quer que as operações sejam de 100 reais, especifiqueamount: 100
eamountCurrency: 'BRL'
. Valor padrão: 100. - amountCurrency - opcional - informe a moeda,
'BRL'
ou'BTC'
, em que está especificada a quantidade (parâmetroamount
). Observe que o seu eventual lucro de arbitragem será acumulado na moeda oposta, ou seja, se especificar'BRL'
, seu lucro será acumulado em BTC, e se especificar'BTC'
, seu lucro será acumulado em BRL. Valor padrão:'BRL'
. - initialBuy - opcional - informe
true
para que o robô execute primeiro compra e depois venda,false
para que execute primeiro venda depois compra. Se o seu saldo inicial está em reais, usetrue
, se está em BTC, usefalse
. Valor padrão:true
. - minProfitPercent - informe o lucro mínimo potencial, em percentual, para que o robô tente executar a arbitragem.
Por exemplo, informe
0.01
para que o robô execute arbitragem sempre que o lucro potencial seja igual ou maior a 0,01%. Valor padrão:0.02
. - intervalSeconds - opcional - o intervalo, em segundos, entre verificações de oportunidade de arbitragem.
Informe
null
para que o robô calcule o menor intervalo permitido pela API. Valor padrão:null
. - playSound - opcional - informe
true
para que o robô toque um som sempre que uma arbitragem for executada. No Ubuntu, é necessário que o mplayer seja instalado comsudo apt install mplayer
. Valor padrão:false
. - simulation - opcional - informe
true
para rodar em modo simulação, em que as operações de compra e venda não são de fato executadas. Valor padrão:false
. - executeMissedSecondLeg - opcional - informe
true
para que o robô tente executar a segunda perna da arbitragem mesmo com prejuízo, quando ocorrer da primeira perna ser executada e a segunda falhar. Valor padrão:true
.
Deixando tudo como está, apenas substituindo sua chave e seu secret, o robô tentará executar toda arbitragem que resultar em lucro maior que 0,02%, tentando aumentar seu saldo em bitcoins e sempre começando com uma oferta de compra de R$100,00.
No terminal (ou prompt de comando, se estiver no Windows), vá até pasta raiz do projeto.
Antes de executar pela primeira vez, e sempre que atualizar o projeto, execute:
npm install
Para executar o robô, execute o comando abaixo:
npm start