diff --git a/README.md b/README.md index ff9f3c0..60df726 100644 --- a/README.md +++ b/README.md @@ -39,9 +39,19 @@ Build a bundle using webpack: The bundle can be found in `dist/`. Altough usage should be largely consistent, smaller differences will exist. Documentation is still TODO. -### Inverse Contracts -Since inverse and linear (USDT) contracts don't use the exact same APIs, the REST abstractions are split into two modules. To use the inverse REST APIs, import the `InverseClient`: +### REST API Clients +There are three REST API modules as there are some differences in each contract type. +1. `InverseClient` for inverse perpetual +2. `InverseFuturesClient` for inverse futures +3. `LinearClient` for linear perpetual + +#### Inverse Contracts + +To use the inverse REST APIs, import the `InverseClient`: + +
Click here to expand and see full sample: +

```javascript const { InverseClient } = require('bybit-api'); @@ -97,36 +107,63 @@ client.getOrderBook({ symbol: 'BTCUSD' }) console.error("getOrderBook inverse error: ", err); }); ``` +

-See inverse [inverse-client.ts](./src/inverse-client.ts) for further information. +See [inverse-client.ts](./src/inverse-client.ts) for further information. + +#### Inverse Futures Contracts +**Note**: as of 6th March 2021 this is currently only for testnet. See the [Bybit API documentation](https://bybit-exchange.github.io/docs/inverse_futures/#t-introduction) for official updates. + +To use the inverse futures REST APIs, import the `InverseFuturesClient`: + +
Click here to expand and see full sample: +

+```javascript +const { InverseFuturesClient } = require('bybit-api'); + +const API_KEY = 'xxx'; +const PRIVATE_KEY = 'yyy'; +const useLivenet = false; + +const client = new InverseFuturesClient( + API_KEY, + PRIVATE_KEY, + + // optional, uses testnet by default. Set to 'true' to use livenet. + useLivenet, + + // restClientOptions, + // requestLibraryOptions +); + +client.getApiKeyInfo() + .then(result => { + console.log("apiKey result: ", result); + }) + .catch(err => { + console.error("apiKey error: ", err); + }); + +client.getOrderBook({ symbol: 'BTCUSDH21' }) + .then(result => { + console.log("getOrderBook inverse futures result: ", result); + }) + .catch(err => { + console.error("getOrderBook inverse futures error: ", err); + }); +``` +

+ +See [inverse-futures-client.ts](./src/inverse-futures-client.ts) for further information. ### Linear Contracts To use the Linear (USDT) REST APIs, import the `LinearClient`: +
Click here to expand and see full sample: +

```javascript const { LinearClient } = require('bybit-api'); -const restClientOptions = { - // 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 API_KEY = 'xxx'; const PRIVATE_KEY = 'yyy'; const useLivenet = false; @@ -158,6 +195,7 @@ client.getOrderBook({ symbol: 'BTCUSDT' }) console.error("getOrderBook linear error: ", err); }); ``` +

### WebSockets @@ -167,6 +205,8 @@ Note: to use the linear websockets, pass "linear: true" in the constructor optio To connect to both linear and inverse websockets, make two instances of the WebsocketClient: +
Click here to expand and see full sample: +

```javascript const { WebsocketClient } = require('bybit-api'); @@ -240,11 +280,15 @@ ws.on('error', err => { console.error('ERR', err); }); ``` +

+ See [websocket-client.ts](./src/websocket-client.ts) 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: +
Click here to expand and see full sample: +

```js const { WebsocketClient, DefaultLogger } = require('bybit-api'); @@ -256,6 +300,7 @@ const ws = new WebsocketClient( DefaultLogger ); ``` +

## Contributions & Thanks ### Donations