2020-12-13 17:55:01 +00:00
2020-09-14 20:54:15 -07:00
2020-10-04 20:37:42 +01:00
2020-09-14 20:56:38 -07:00
2019-09-14 16:02:11 +02:00

bybit-api

npm version npm size npm downloads last commit CodeFactor

A production-ready Node.js connector for the Bybit APIs and WebSockets.

Installation

npm install --save bybit-api

Usage

Create API credentials at Bybit

Issues & Discussion

Documentation

Most methods accept JS objects. These can be populated using parameters specified by Bybit's API documentation.

Structure

This project uses typescript. Resources are stored in 3 key structures:

  • src - the whole connector written in typescript
  • lib - the javascript version of the project (compiled from typescript). This should not be edited directly, as it will be overwritten with each release.
  • dist - the packed bundle of the project for use in browser environments.

Inverse Contracts

Rest client

const {RestClient} = require('bybit-api');

const API_KEY = 'xxx';
const PRIVATE_KEY = 'yyy';
const useLivenet = false;

const restInverseOptions = {
  // override the max size of the request window (in ms)
  recv_window?: number;

  // how often to sync time drift with bybit servers
  sync_interval_ms?: number | string;

  // Default: false. Disable above sync mechanism if true.
  disable_time_sync?: boolean;

  // Default: false. If true, we'll throw errors if any params are undefined
  strict_param_validation?: boolean;

  // Optionally override API protocol + domain
  // e.g 'https://api.bytick.com'
  baseUrl?: string;

  // Default: true. whether to try and post-process request exceptions.
  parse_exceptions?: boolean;
};

const client = new RestClient(
  API_KEY,
  PRIVATE_KEY,

  // optional, uses testnet by default. Set to 'true' to use livenet.
  useLivenet,

  // restInverseOptions,
  // requestLibraryOptions
);

client.changeUserLeverage({leverage: 4, symbol: 'ETHUSD'})
  .then(result => {
    console.log(result);
  })
  .catch(err => {
    console.error(err);
  });

See inverse rest-client.js for further information.

Websocket client

const {WebsocketClient} = require('bybit-api');

const API_KEY = 'xxx';
const PRIVATE_KEY = 'yyy';

const wsConfig = {
  key: API_KEY,
  secret: PRIVATE_KEY,

  // The following parameters are optional:

  // defaults to false == testnet. set to true for livenet.
  // livenet: true

  // override which URL to use for websocket connections
  // wsUrl: 'wss://stream.bytick.com/realtime'

  // how often to check (in ms) that WS connection is still alive
  // pingInterval: 10000,

  // how long to wait (in ms) before deciding the connection should be terminated & reconnected
  // pongTimeout: 1000,

  // how long to wait before attempting to reconnect (in ms) after connection is closed
  // reconnectTimeout: 500,

  // config options sent to RestClient (used for time sync). See RestClient docs.
  // restOptions: { },

  // config for axios to pass to RestClient. E.g for proxy support
  // requestOptions: { }
};

const ws = new WebsocketClient(wsConfig);

ws.subscribe(['position', 'execution', 'trade']);
ws.subscribe('kline.BTCUSD.1m');

ws.on('open', () => {
  console.log('connection open');
});

ws.on('update', message => {
  console.log('update', message);
});

ws.on('response', response => {
  console.log('response', response);
});

ws.on('close', () => {
  console.log('connection closed');
});

ws.on('error', err => {
  console.error('ERR', err);
});

See inverse websocket-client.js & ws api docs for further information.

Customise Logging

Pass a custom logger which supports the log methods silly, debug, notice, info, warning and error, or override methods from the default logger as desired:

const { RestClient, WebsocketClient, DefaultLogger } = require('bybit-api');

// Disable all logging on the silly level
DefaultLogger.silly = () => {};

const ws = new WebsocketClient({key: 'xxx', secret: 'yyy'}, DefaultLogger);

Contributions & Thanks

Donations

tiagosiebler

If you found this project interesting or useful, create accounts with my referral links:

Or buy me a coffee using any of these:

  • BTC: 1C6GWZL1XW3jrjpPTS863XtZiXL1aTK7Jk
  • ETH (ERC20): 0xd773d8e6a50758e1ada699bb6c4f98bb4abf82da

pixtron

The original library was started by @pixtron. If this library helps you to trade better on bybit, feel free to donate a coffee to @pixtron:

  • BTC 1Fh1158pXXudfM6ZrPJJMR7Y5SgZUz4EdF
  • ETH 0x21aEdeC53ab7593b77C9558942f0c9E78131e8d7
  • LTC LNdHSVtG6UWsriMYLJR3qLdfVNKwJ6GSLF

Contributions & Pull Requests

Contributions are encouraged, I will review any incoming pull requests. See the issues tab for todo items.

Description
No description provided
Readme 2.3 MiB
Languages
TypeScript 99.5%
JavaScript 0.5%