bybit-api
Version:
Complete & robust Node.js SDK for Bybit's REST APIs and WebSockets, with TypeScript & strong end to end tests.
270 lines • 10.9 kB
JavaScript
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.UnifiedMarginClient = void 0;
const util_1 = require("./util");
const BaseRestClient_1 = __importDefault(require("./util/BaseRestClient"));
/**
* REST API client for Derivatives V3 unified margin APIs
* @deprecated WARNING
* These endpoints are being switched off gradually and are expected to be completely turned off by the end of 2024.
* They may stop working at any point before then.
* Please update your code as soon as possible to use the V5 APIs instead.
*/
class UnifiedMarginClient extends BaseRestClient_1.default {
getClientType() {
return util_1.REST_CLIENT_TYPE_ENUM.v3;
}
fetchServerTime() {
return __awaiter(this, void 0, void 0, function* () {
const res = yield this.getServerTime();
return Number(res.time_now);
});
}
/**
*
* Market Data Endpoints
*
*/
/** Query order book info. Each side has a depth of 25 orders. */
getOrderBook(symbol, category, limit) {
return this.get('/derivatives/v3/public/order-book/L2', {
category,
symbol,
limit,
});
}
/** Get candles/klines */
getCandles(params) {
return this.get('/derivatives/v3/public/kline', params);
}
/** Get a symbol price/statistics ticker */
getSymbolTicker(category, symbol) {
return this.get('/derivatives/v3/public/tickers', { category, symbol });
}
/** Get trading rules per symbol/contract, incl price/amount/value/leverage filters */
getInstrumentInfo(params) {
return this.get('/derivatives/v3/public/instruments-info', params);
}
/** Query mark price kline (like getCandles() but for mark price). */
getMarkPriceCandles(params) {
return this.get('/derivatives/v3/public/mark-price-kline', params);
}
/** Query Index Price Kline */
getIndexPriceCandles(params) {
return this.get('/derivatives/v3/public/index-price-kline', params);
}
/**
* The funding rate is generated every 8 hours at 00:00 UTC, 08:00 UTC and 16:00 UTC.
* For example, if a request is sent at 12:00 UTC, the funding rate generated earlier that day at 08:00 UTC will be sent.
*/
getFundingRateHistory(params) {
return this.get('/derivatives/v3/public/funding/history-funding-rate', params);
}
/** Get Risk Limit */
getRiskLimit(category, symbol) {
return this.get('/derivatives/v3/public/risk-limit/list', {
category,
symbol,
});
}
/** Get option delivery price */
getOptionDeliveryPrice(params) {
return this.get('/derivatives/v3/public/delivery-price', params);
}
/** Get recent trades */
getTrades(params) {
return this.get('/derivatives/v3/public/recent-trade', params);
}
/**
* Gets the total amount of unsettled contracts.
* In other words, the total number of contracts held in open positions.
*/
getOpenInterest(params) {
return this.get('/derivatives/v3/public/open-interest', params);
}
/**
*
* Unified Margin Account Endpoints
*
*/
/** -> Order API */
/** Place an order */
submitOrder(params) {
return this.postPrivate('/unified/v3/private/order/create', params);
}
/** Active order parameters (such as quantity, price) and stop order parameters cannot be modified in one request at the same time. Please request modification separately. */
modifyOrder(params) {
return this.postPrivate('/unified/v3/private/order/replace', params);
}
/** Cancel order */
cancelOrder(params) {
return this.postPrivate('/unified/v3/private/order/cancel', params);
}
/** Query Open Orders */
getActiveOrders(params) {
return this.getPrivate('/unified/v3/private/order/unfilled-orders', params);
}
/** Query order history. As order creation/cancellation is asynchronous, the data returned from the interface may be delayed. To access order information in real-time, call getActiveOrders() */
getHistoricOrders(params) {
return this.getPrivate('/unified/v3/private/order/list', params);
}
/**
* This API provides the batch order mode under the unified margin account.
* Max 10 per request
*/
batchSubmitOrders(category, orders) {
return this.postPrivate('/unified/v3/private/order/create-batch', {
category,
request: orders,
});
}
/**
* This interface can modify the open order information in batches.
* Currently, it is not supported to modify the conditional order information.
* Please note that only unfilled or partial filled orders can be modified.
* If both futures and options orders are in one request, only the orders matching the category will be operated according to the category type
*/
batchReplaceOrders(category, orders) {
return this.postPrivate('/unified/v3/private/order/replace-batch', {
category,
request: orders,
});
}
/**
* This API provides batch cancellation under the unified margin account.
* Order cancellation of futures and options cannot be canceled in one request at the same time.
* If both futures and options orders are in one request, only the orders matching the category will be operated according to the category type.
*/
batchCancelOrders(category, orders) {
return this.postPrivate('/unified/v3/private/order/cancel-batch', {
category,
request: orders,
});
}
/**
* This API provides the cancellation of all open orders under the unified margin account.
* Order cancellation of futures and options cannot be canceled in one request at the same time.
* If both futures and options orders are in one request, only the orders matching the category will be operated according to the category type.
*/
cancelAllOrders(params) {
return this.postPrivate('/unified/v3/private/order/cancel-all', params);
}
/** -> Positions API */
/**
* Query my positions real-time. Accessing personal list of positions.
* Users can access their position holding information through this interface, such as the number of position holdings and wallet balance.
*/
getPositions(params) {
return this.getPrivate('/unified/v3/private/position/list', params);
}
/** Leverage setting. */
setLeverage(category, symbol, buyLeverage, sellLeverage) {
return this.postPrivate('/unified/v3/private/position/set-leverage', {
category,
symbol,
buyLeverage,
sellLeverage,
});
}
/**
* Switching the TP/SL mode to the cross margin mode or selected positions.
* When you set the TP/SL mode on the selected positions, the quantity of take-profit or stop-loss orders can be smaller than the position size. Please use Trading-Stop endpoint.
*/
setTPSLMode(category, symbol, tpSlMode) {
return this.postPrivate('/unified/v3/private/position/tpsl/switch-mode', {
category,
symbol,
tpSlMode,
});
}
/** Set risk limit */
setRiskLimit(category, symbol, riskId, positionIdx) {
return this.postPrivate('/unified/v3/private/position/set-risk-limit', {
category,
symbol,
riskId,
positionIdx,
});
}
/**
* Set position TP/SL and trailing stop.
* Pass the following parameters, then the system will create conditional orders.
* If the position is closed, the system will cancel these orders, and adjust the position size.
*/
setTPSL(params) {
return this.postPrivate('/unified/v3/private/position/trading-stop', params);
}
/**
* Access the user's filled history, ranked by time in descending order.
* There might be multiple filled histories for an order.
*/
get7DayTradingHistory(params) {
return this.getPrivate('/unified/v3/private/execution/list', params);
}
/** Query the settlement history, ranked by time in descending order. */
getOptionsSettlementHistory(params) {
return this.getPrivate('/unified/v3/private/delivery-record', params);
}
/** Query session settlement records, only for USDC perpetual */
getUSDCPerpetualSettlementHistory(params) {
return this.getPrivate('/unified/v3/private/settlement-record', params);
}
/** -> Account API */
/** Query wallet balance */
getBalances(coin) {
return this.getPrivate('/unified/v3/private/account/wallet/balance', {
coin,
});
}
/**
* Upgrade to unified margin account.
* WARNING: This is currently not reversable!
*/
upgradeToUnifiedMargin() {
return this.postPrivate('/unified/v3/private/account/upgrade-unified-account');
}
/** Query trading history */
getTransactionLog(params) {
return this.getPrivate('/unified/v3/private/account/transaction-log', params);
}
/** Fund transfer between accounts (v2) */
transferFunds(params) {
return this.postPrivate('/asset/v1/private/transfer', params);
}
/** Exchange Coins */
getCoinExchangeHistory(params) {
return this.getPrivate('/asset/v2/private/exchange/exchange-order-all', params);
}
/** Get Borrow History */
getBorrowHistory(params) {
return this.getPrivate('/unified/v3/private/account/borrow-history', params);
}
/** Get Borrow Rate */
getBorrowRate(currency) {
return this.getPrivate('/unified/v3/private/account/borrow-rate', {
currency,
});
}
/**
*
* API Data Endpoints
*
*/
getServerTime() {
return this.get('/v2/public/time');
}
}
exports.UnifiedMarginClient = UnifiedMarginClient;
//# sourceMappingURL=unified-margin-client.js.map