UNPKG

foxbit-api

Version:
533 lines (408 loc) 17.7 kB
# Foxbit API (WebSocket) [![NPM](https://img.shields.io/npm/v/foxbit-api.svg?style=flat-square)](https://www.npmjs.com/package/foxbit-api) [![NPM](https://img.shields.io/david/MiguelMedeiros/foxbit-api.svg?style=flat-square)](https://david-dm.org/MiguelMedeiros/foxbit-api#info=dependencies) [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/MiguelMedeiros/foxbit-api) [![Known Vulnerabilities](https://snyk.io/test/github/MiguelMedeiros/foxbit-api/badge.svg)](https://snyk.io/test/github/MiguelMedeiros/foxbit-api) Pacote NPM de acesso via WebSocket para a API da exchange brasileira Foxbit. Autor: **Miguel Medeiros** [[Site]](https://www.miguelmedeiros.com.br) [[Youtube]](https://www.youtube.com/user/miguelmedeiros) [[Twitter]](https://twitter.com/_miguelmedeiros)<br /> Exchange: [[Foxbit]](https://foxbit.com.br/)<br /> Documentação da API: [[Site da Foxbit]](https://foxbit.com.br/api/docs) [[PDF da Alphapoint]](https://github.com/MiguelMedeiros/foxbit-api/blob/master/api-doc-alphapoint.pdf) Gostou do trabalho? Então me pague um café!<br/> Carteira BTC: **1NM76h5SvdhTdmS8dksGwWpHNbnVngWczR**<br/><br/> --- Esse pacote foi desenvolvido para uso próprio.<br/> Portanto, não é um pacote oficial da Foxbit.<br/> **USE POR SUA CONTA E RISCO!** ## Readme Index - [Instalação](#instalação) - [Configuração](#configuração) - [Funções](#funções) - [Funções Públicas](#funções-públicas) - [Connect](#connect): Conecta na API via WebSocket. - [LogOut](#logout): Finaliza conexão com o WebSocket. - [GetInstrument](#getinstrument): Retorna as informações par de moedas por ID. - [GetInstruments](#getinstruments): Retorna um array de pares de moedas cadastrados. - [GetOpenOrders](#getopenorders): Retorna as ordens abertas no livro de ordens. - [GetProduct](#getproduct): Retorna a moeda cadastrado por ID. - [GetProducts](#getproducts): Retorna as moedas cadastradas. - [GetL2Snapshot](#getl2snapshot): Retorna um spanshot do Orderbook. - [GetTickerHistory](#gettickerhistory): Retorna um histórico de Tickers. - [SubscribeTicker](#subscribeticker): Se inscreve para receber Tickers atualizados. - [SubscribeTrades](#subscribetrades): Se inscreve para receber Trades atualizadas. - [UnsubscribeTicker](#unsubscribeticker): Se desinscreve do Ticker. - [UnsubscribeTrades](#unsubscribetrades): Se desinscreve das Trades. - [Funções Privadas](#funções-privadas) - [GetUserConfig](#getuserconfig): Retorna configurações definidas pelo usuário. - [GetUserInfo](#getuserinfo): Retorna os dados das informações de Usuário. - [GetUserPermissions](#getuserpermissions): Retorna permissões do usuário solicitante. - [GetOrdersHistory](#getordershistory): Retorna um array com o histórico de ordens. - [SendOrder](#sendorder): Envia Ordem de Compra/Venda. - [CancelAllOrders](#cancelallorders): Cancela todas as ordens abertas. - [CancelOrder](#cancelorder): Cancela ordem que ainda não foi executada. - [GetAccountInfo](#getaccountinfo): Retorna informação sobre a conta do usuário logado. - [GetAccountPositions](#getaccountpositions): Retorna um array com o balanço do usuário. - [GetAccountTrades](#getaccounttrades): Retorna um array com o histórico do ordens executadas do usuário. - [GetAccountTransactions](#getaccounttransactions): Retorna um array com o histórico de transações abertas do usuário. - [Contribua com Código](#contribua-com-código) - [License](#license-mit) ## Instalação Você precisa importar o pacote para seu projeto: ```bash npm i foxbit-api --save ``` ## Configuração ```javascript // importar foxbit api package const foxbit = require("foxbit-api"); ``` ## Funções Segue a lista de funções para se conectar com o WebSocket da API da Foxbit. ### Funções Públicas Não é necessária de credenciais para acessar os métodos públicos. #### Connect Conecta na API via WebSocket.<br/>[Link Documentação](https://foxbit.com.br/api/docs/websocket_intro.html#webauthenticateuser) ```javascript // Variáveis das suas credenciais // Necessárias somente para métodos privados. let user = ""; let password = ""; // Dispara chamada para conectar com o WebSocket. foxbit.Connect(user, password); // Evento disparado quando o WebSocket foi conectado. foxbit.eventEmitter.on("Connected", res => { console.log(res); }); ``` #### Logout Finaliza conexão com o WebSocket.<br/>[Link Documentação](https://foxbit.com.br/api/docs/websocket_intro.html?highlight=getopenorders#logout) ```javascript // Evento disparado quando o WebSocket foi conectado. foxbit.eventEmitter.on("Connected", res => { // Dispara chamada LogOut. foxbit.LogOut(); }); // Evento disparado quando o LogOut foi efetuado. foxbit.eventEmitter.on("LogOut", res => { console.log(res); }); ``` #### GetInstrument Retorna as informações par de moedas por ID.<br/>[Link Documentação](https://foxbit.com.br/api/docs/websocket_intro.html?highlight=getopenorders#getinstrument) ```javascript // Evento disparado quando o WebSocket foi conectado. foxbit.eventEmitter.on("Connected", res => { // Dispara chamada GetInstrument. foxbit.GetInstrument(); }); // Evento disparado quando o GetInstrument foi efetuado. foxbit.eventEmitter.on("GetInstrument", res => { console.log(res); }); ``` #### GetInstruments Retorna um array de pares de moedas cadastrados.<br/>[Link Documentação](https://foxbit.com.br/api/docs/websocket_intro.html?highlight=getopenorders#getinstruments) ```javascript // Evento disparado quando o WebSocket foi conectado. foxbit.eventEmitter.on("Connected", res => { // Dispara chamada GetInstruments. foxbit.GetInstruments(); }); // Evento disparado quando o GetInstruments foi efetuado. foxbit.eventEmitter.on("GetInstruments", res => { console.log(res); }); ``` #### GetOpenOrders Retorna as ordens abertas no livro de ordens.<br/>[Link Documentação](https://foxbit.com.br/api/docs/websocket_intro.html?highlight=getopenorders#getopenorders) ```javascript // Evento disparado quando o WebSocket foi conectado. foxbit.eventEmitter.on("Connected", res => { // Dispara chamada GetProducts. foxbit.GetProducts(); }); // Evento disparado quando o GetProducts foi efetuado. foxbit.eventEmitter.on("GetProducts", res => { console.log(res); }); ``` #### GetProduct Retorna a moeda cadastrado por ID.<br/>[Link Documentação](https://foxbit.com.br/api/docs/websocket_intro.html?highlight=getopenorders#getproduct) ```javascript // Evento disparado quando o WebSocket foi conectado. foxbit.eventEmitter.on("Connected", res => { // Dispara chamada GetProduct. foxbit.GetProduct(1); }); // Evento disparado quando o GetProduct foi efetuado. foxbit.eventEmitter.on("GetProduct", res => { console.log(res); }); ``` #### GetProducts Retorna as moedas cadastradas.<br/>[Link Documentação](https://foxbit.com.br/api/docs/websocket_intro.html?highlight=getopenorders#getproducts) ```javascript // Evento disparado quando o WebSocket foi conectado. foxbit.eventEmitter.on("Connected", res => { // Dispara chamada GetProducts. foxbit.GetProducts(); }); // Evento disparado quando o GetProducts foi efetuado. foxbit.eventEmitter.on("GetProducts", res => { console.log(res); }); ``` #### GetL2Snapshot Retorna um spanshot do Orderbook.<br/>[Link Documentação](https://foxbit.com.br/api/docs/websocket_intro.html?highlight=getopenorders#getl2snapshot) ```javascript // Evento disparado quando o WebSocket foi conectado. foxbit.eventEmitter.on("Connected", res => { // Dispara chamada GetL2Snapshot. foxbit.GetL2Snapshot(100); }); // Evento disparado quando o GetL2Snapshot foi efetuado. foxbit.eventEmitter.on("GetL2Snapshot", res => { console.log(res); }); ``` #### GetTickerHistory Retorna um histórico de Tickers.<br/>[Link Documentação](https://foxbit.com.br/api/docs/websocket_intro.html#gettickerhistory) ```javascript // Evento disparado quando o WebSocket foi conectado. foxbit.eventEmitter.on("Connected", res => { //Variável de parametrização let lastMinutes = 60; // Dispara chamada GetTickerHistory. foxbit.GetTickerHistory(lastMinutes); }); // Evento disparado quando o GetTickerHistory foi efetuado. foxbit.eventEmitter.on("GetTickerHistory", res => { console.log(res); }); ``` #### SubscribeTicker Se inscreve para receber Tickers atualizados.<br/>[Link Documentação](https://foxbit.com.br/api/docs/websocket_intro.html?highlight=getopenorders#subscribeticker) ```javascript // Evento disparado quando o WebSocket foi conectado. foxbit.eventEmitter.on("Connected", res => { // Dispara chamada SubscribeTicker. foxbit.SubscribeTicker(1); }); // Evento disparado quando o SubscribeTicker foi efetuado. foxbit.eventEmitter.on("SubscribeTicker", res => { console.log(res); }); // Evento disparado quando o Ticker é atualizado. foxbit.eventEmitter.on("TickerDataUpdateEvent", res => { console.log(res); }); ``` #### SubscribeTrades Se inscreve para receber Trades atualizadas. ```javascript // Evento disparado quando o WebSocket foi conectado. foxbit.eventEmitter.on("Connected", res => { // Dispara chamada SubscribeTrades. foxbit.SubscribeTrades(); }); // Evento disparado quando o SubscribeTrades foi efetuado. foxbit.eventEmitter.on("SubscribeTrades", res => { console.log(res); }); // Evento disparado quando alguma Trade foi efetuada. foxbit.eventEmitter.on("TradeDataUpdateEvent", res => { console.log(res); }); ``` #### UnsubscribeTicker Se desinscreve do Ticker.<br/>[Link Documentação](https://foxbit.com.br/api/docs/websocket_intro.html?highlight=getopenorders#unsubscribeticker) ```javascript // Evento disparado quando o WebSocket foi conectado. foxbit.eventEmitter.on("Connected", res => { // Dispara chamada UnsubscribeTicker. foxbit.UnsubscribeTicker(); }); // Evento disparado quando o UnsubscribeTicker foi efetuado. foxbit.eventEmitter.on("UnsubscribeTicker", res => { console.log(res); }); ``` #### UnsubscribeTrades Se desinscreve das Trades. ```javascript // Evento disparado quando o WebSocket foi conectado. foxbit.eventEmitter.on("Connected", res => { // Dispara chamada UnsubscribeTrades. foxbit.UnsubscribeTrades(); }); // Evento disparado quando o UnsubscribeTrades foi efetuado. foxbit.eventEmitter.on("UnsubscribeTrades", res => { console.log(res); }); ``` ### Funções Privadas Ao se conectar é necessário usar credenciais (usuário e senha) para acessar os métodos privados. #### GetUserInfo Retorna os dados das informações de Usuário.<br/>[Link Documentação](https://foxbit.com.br/api/docs/websocket_intro.html?highlight=getopenorders#getuserinfo) ```javascript // Evento disparado quando o WebSocket foi conectado. foxbit.eventEmitter.on("Connected", res => { // Dispara chamada GetUserInfo. foxbit.GetUserInfo(); }); // Evento disparado quando o GetUserInfo foi efetuado. foxbit.eventEmitter.on("GetUserInfo", res => { console.log(res); }); ``` #### GetUserConfig Retorna configurações definidas pelo usuário.<br/>[Link Documentação](https://foxbit.com.br/api/docs/websocket_intro.html#getuserconfig) ```javascript // Evento disparado quando o WebSocket foi conectado // e recebeu as informações do usuário. foxbit.eventEmitter.on("Ready", res => { // Dispara chamada GetUserConfig. foxbit.GetUserConfig(); }); // Evento disparado quando o GetUserConfig foi efetuado. foxbit.eventEmitter.on("GetUserConfig", res => { console.log(res); }); ``` #### GetUserPermissions Retorna permissões do usuário solicitante.<br/>[Link Documentação](https://foxbit.com.br/api/docs/websocket_intro.html?highlight=getopenorders#getuserpermissions) ```javascript // Evento disparado quando o WebSocket foi conectado // e recebeu as informações do usuário. foxbit.eventEmitter.on("Ready", res => { // Dispara chamada GetUserPermissions. foxbit.GetUserPermissions(); }); // Evento disparado quando o GetUserPermissions foi efetuado. foxbit.eventEmitter.on("GetUserPermissions", res => { console.log(res); }); ``` #### GetOrdersHistory Retorna um array com o histórico de ordens. ```javascript // Evento disparado quando o WebSocket foi conectado // e recebeu as informações do usuário. foxbit.eventEmitter.on("Ready", res => { // Dispara chamada GetOrdersHistory. foxbit.GetOrdersHistory(); }); // Evento disparado quando o GetOrdersHistory foi efetuado. foxbit.eventEmitter.on("GetOrdersHistory", res => { console.log(res); }); ``` #### SendOrder Envia Ordem de Compra/Venda.<br/>[Link Documentação](https://foxbit.com.br/api/docs/websocket_intro.html?highlight=getopenorders#sendorder) ```javascript // Evento disparado quando o WebSocket foi conectado // e recebeu as informações do usuário. foxbit.eventEmitter.on("Ready", res => { // Variáveis de parametrização let Side = "Sell"; // Buy, Sell // Market, Limit, StopMarket, StopLimit, TralingStopMarket, TrailingStopLimit, BlockTrade let OrderType = "Limit"; let Quantity = 0.0001; // BTC let Price = 40000; // BRL // Dispara chamada SendOrder. foxbit.SendOrder(Side, OrderType, Quantity, Price); }); // Evento disparado quando o SendOrder foi efetuado. foxbit.eventEmitter.on("SendOrder", res => { console.log(res); }); ``` #### CancelAllOrders Cancela todas as ordens abertas.<br/>[Link Documentação](https://foxbit.com.br/api/docs/websocket_intro.html?highlight=getopenorders#cancelallorders) ```javascript // Evento disparado quando o WebSocket foi conectado // e recebeu as informações do usuário. foxbit.eventEmitter.on("Ready", res => { // Dispara chamada CancelAllOrders. foxbit.CancelAllOrders(); }); // Evento disparado quando o CancelAllOrders foi efetuado. foxbit.eventEmitter.on("CancelAllOrders", res => { console.log(res); }); ``` #### CancelOrder Cancela ordem que ainda não foi executada.<br/>[Link Documentação](https://foxbit.com.br/api/docs/websocket_intro.html?highlight=getopenorders#cancelorder) ```javascript // Evento disparado quando o WebSocket foi conectado // e recebeu as informações do usuário. foxbit.eventEmitter.on("Ready", res => { // Variáveis de Parametrização let ClientOrderId = 11111; let orderId = 9999; // Dispara chamada CancelOrder. foxbit.CancelOrder(ClientOrderId, orderId); }); // Evento disparado quando o CancelOrder foi efetuado. foxbit.eventEmitter.on("CancelOrder", res => { console.log(res); }); ``` #### GetAccountInfo Retorna informação sobre a conta do usuário logado.<br/>[Link Documentação](https://foxbit.com.br/api/docs/websocket_intro.html?highlight=getopenorders#getaccountinfo) ```javascript // Evento disparado quando o WebSocket foi conectado // e recebeu as informações do usuário. foxbit.eventEmitter.on("Ready", res => { // Dispara chamada CancelOrder. foxbit.GetAccountInfo(); }); // Evento disparado quando o GetAccountInfo foi efetuado. foxbit.eventEmitter.on("GetAccountInfo", res => { console.log(res); }); ``` #### GetAccountPositions Retorna um array com o balanço do usuário.<br/>[Link Documentação](https://foxbit.com.br/api/docs/websocket_intro.html?highlight=getopenorders#getaccountpositions) ```javascript // Evento disparado quando o WebSocket foi conectado // e recebeu as informações do usuário. foxbit.eventEmitter.on("Ready", res => { // Dispara chamada GetAccountPositions. foxbit.GetAccountPositions(); }); // Evento disparado quando o GetAccountPositions foi efetuado. foxbit.eventEmitter.on("GetAccountPositions", res => { console.log(res); }); ``` #### GetAccountTrades Retorna um array com o histórico do ordens executadas do usuário.<br/>[Link Documentação](https://foxbit.com.br/api/docs/websocket_intro.html?highlight=getopenorders#getaccounttrades) ```javascript // Evento disparado quando o WebSocket foi conectado // e recebeu as informações do usuário. foxbit.eventEmitter.on("Ready", res => { // Dispara chamada GetAccountTrades. foxbit.GetAccountTrades(); }); // Evento disparado quando o GetAccountTrades foi efetuado. foxbit.eventEmitter.on("GetAccountTrades", res => { console.log(res); }); ``` #### GetAccountTransactions Retorna um array com o histórico de transações abertas do usuário.<br/>[Link Documentação](https://foxbit.com.br/api/docs/websocket_intro.html?highlight=getopenorders#getaccounttransactions) ```javascript // Evento disparado quando o WebSocket foi conectado // e recebeu as informações do usuário. foxbit.eventEmitter.on("Ready", res => { // Dispara chamada GetAccountTransactions. foxbit.GetAccountTransactions(); }); // Evento disparado quando o GetAccountTransactions foi efetuado. foxbit.eventEmitter.on("GetAccountTransactions", res => { console.log(res); }); ``` ## Contribua com Código Ainda faltam algumas chamadas para completar a API como um todo. Vou adorar se você quiser contribuir para deixar esse pacote mais completo! Sinta-se à vontade em fazer um 'pull request'! Afinal esse repositório é aberto! <3 ## LICENSE [MIT](LICENSE)