Skip to content

zenfuse/zenfuse.js

zenfuse.js logo

Binance Bybit Huobi OKX

Comprehensive crypto trading library

Supported version Version Last Commit Zenfuse Dev Tool

Note Feel free to create any issue or ask about anything in Github Discussions.

This is a crypto trading library connector for Node.js. For trading, analyze, visualize and manage any data from API easily on supported exchanges and more.

Key features:

  • 🗃️ Data fetching: Market price, ticker listing, historical chart and any custom requests
  • 💱 Orders manipulating: Post, cancel and modify exchange orders
  • 🗠 Real-time events: Websocket streams
    • Candlesticks streams: Kline streams for charts, even when the exchange doesn't support this (🔥)
    • Current price: Simplified price of market
    • Trades: Actual market trades
    • Account events: Balance changing and new orders posting

Simple Binance example

import { Binance } from 'zenfuse';

// Creating connection instance
const binance = new Binance.spot(options);

// Fetch current BTC price
binance.fetchPrice('BTC/USDT');

// Post order
binance.auth(creds).postOrder(params);

Simple code showcase

import { Huobi, Binance } from 'zenfuse';

const huobi = new Huobi.spot();

// Fetch current BTC/USD price from Huobi exchange
huobi.fetchPrice('BTC/USD').then((price) => {
    console.log('Current BTC/USD price:', price);
});

// Fetch all current listing coins from Huobi
huobi.fetchTickers().then((tickers) => {
    console.log('All Huobi tickers', tickers.join(', '));
});

const binance = new Binance.spot();

// Authenticate instance, so you can use private methods
binance.auth({
    publicKey: '***',
    privateKey: '***',
});

// Create connection instance for account events
const accountDataStream = binance.getAccountDataStream();

// Open websocket connection
await accountDataStream.open();

// Subscribe for order updates on account
accountDataStream.on('orderUpdate', (order) => {
    console.log('Order Update:', order);
});

// Sell 0.0004 ETH for 100 USDT, and we receive order update event above
binance.postOrder({
    symbol: 'ETH/USDT',
    type: 'limit',
    side: 'sell',
    price: 100,
    quantity: 0.0004,
});

// Create connection instance for market data
const marketDataStream = binance.getMarketDataStream();

// Open websocket connection
await marketDataStream.open();

// Subscribe for current BTC price
marketDataStream.subscribeTo({
    channel: 'price',
    symbol: 'BTC/USDT',
});

// After we will handle newPrice events
marketDataStream.on('newPrice', (event) => {
    console.log(`Current ${event.symbol} price`, '->', event.price);
});

See documentation in zenfuse.js.org