113 lines
3.9 KiB
Markdown
113 lines
3.9 KiB
Markdown
# bybit-api
|
|
[][1] [][1] [][1]
|
|
[][1]
|
|
[](https://www.codefactor.io/repository/github/tiagosiebler/bybit-api)
|
|
|
|
[1]: https://www.npmjs.com/package/bybit-api
|
|
|
|
A production-ready Node.js connector for the Bybit APIs and WebSockets.
|
|
|
|
## Installation
|
|
`npm install --save bybit-api`
|
|
|
|
## Usage
|
|
Create API credentials at Bybit
|
|
- [Livenet](https://bybit.com/app/user/api-management?affiliate_id=9410&language=en-US&group_id=0&group_type=1)
|
|
- [Testnet](https://testnet.bybit.com/app/user/api-management)
|
|
|
|
## Issues & Discussion
|
|
- Issues? Check the [issues tab](https://github.com/tiagosiebler/bybit-api/issues).
|
|
- Discuss & collaborate with other node devs? Join our [Node.js Algo Traders](https://t.me/nodetraders) engineering community on telegram.
|
|
|
|
## Documentation
|
|
Most methods accept JS objects. These can be populated using parameters specified by Bybit's API documentation.
|
|
- [Bybit API Inverse Documentation](https://bybit-exchange.github.io/docs/inverse/#t-introduction).
|
|
- [Bybit API Linear Documentation (not supported yet)](https://bybit-exchange.github.io/docs/linear/#t-introduction)
|
|
|
|
### Inverse Contracts
|
|
#### Rest client
|
|
```javascript
|
|
const {RestClient} = require('bybit-api');
|
|
|
|
const API_KEY = 'xxx';
|
|
const PRIVATE_KEY = 'yyy';
|
|
|
|
const client = new RestClient(API_KEY, PRIVATE_KEY);
|
|
|
|
client.changeUserLeverage({leverage: 4, symbol: 'ETHUSD'})
|
|
.then(result => {
|
|
console.log(result);
|
|
})
|
|
.catch(err => {
|
|
console.error(err);
|
|
});
|
|
```
|
|
|
|
See inverse [rest-client.js](./master/lib/rest-client.js) for further information.
|
|
|
|
#### Websocket client
|
|
```javascript
|
|
const {WebsocketClient} = require('bybit-api');
|
|
|
|
const API_KEY = 'xxx';
|
|
const PRIVATE_KEY = 'yyy';
|
|
|
|
const ws = new WebsocketClient({key: API_KEY, secret: PRIVATE_KEY});
|
|
|
|
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](./master/lib/websocket-client.js) & [ws api docs](./doc/websocket-client.md) 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:
|
|
|
|
```js
|
|
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:
|
|
- [Bybit](https://www.bybit.com/en-US/register?affiliate_id=9410&language=en-US&group_id=0&group_type=1)
|
|
- [Binance](https://www.binance.com/en/register?ref=20983262)
|
|
|
|
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.
|