ccxt 4.4.21 → 4.4.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +4 -4
  2. package/dist/ccxt.browser.min.js +4 -4
  3. package/dist/cjs/ccxt.js +1 -1
  4. package/dist/cjs/src/alpaca.js +1 -0
  5. package/dist/cjs/src/base/Exchange.js +21 -0
  6. package/dist/cjs/src/bigone.js +3 -0
  7. package/dist/cjs/src/binance.js +103 -0
  8. package/dist/cjs/src/bitflyer.js +57 -0
  9. package/dist/cjs/src/bitget.js +77 -0
  10. package/dist/cjs/src/bybit.js +78 -0
  11. package/dist/cjs/src/cex.js +1307 -1385
  12. package/dist/cjs/src/cryptocom.js +1 -1
  13. package/dist/cjs/src/gate.js +103 -3
  14. package/dist/cjs/src/htx.js +1 -7
  15. package/dist/cjs/src/hyperliquid.js +10 -8
  16. package/dist/cjs/src/kucoin.js +27 -59
  17. package/dist/cjs/src/okx.js +74 -0
  18. package/js/ccxt.d.ts +3 -3
  19. package/js/ccxt.js +1 -1
  20. package/js/src/abstract/bitflyer.d.ts +1 -0
  21. package/js/src/abstract/bitget.d.ts +3 -0
  22. package/js/src/abstract/cex.d.ts +28 -29
  23. package/js/src/abstract/gate.d.ts +5 -0
  24. package/js/src/abstract/gateio.d.ts +5 -0
  25. package/js/src/abstract/kucoin.d.ts +1 -0
  26. package/js/src/abstract/kucoinfutures.d.ts +1 -0
  27. package/js/src/abstract/okx.d.ts +1 -0
  28. package/js/src/alpaca.js +1 -0
  29. package/js/src/base/Exchange.d.ts +8 -2
  30. package/js/src/base/Exchange.js +21 -0
  31. package/js/src/base/types.d.ts +8 -0
  32. package/js/src/bigone.js +3 -0
  33. package/js/src/binance.d.ts +3 -1
  34. package/js/src/binance.js +103 -0
  35. package/js/src/bitflyer.d.ts +3 -1
  36. package/js/src/bitflyer.js +57 -0
  37. package/js/src/bitget.d.ts +3 -1
  38. package/js/src/bitget.js +77 -0
  39. package/js/src/bybit.d.ts +3 -1
  40. package/js/src/bybit.js +78 -0
  41. package/js/src/cex.d.ts +34 -20
  42. package/js/src/cex.js +1308 -1386
  43. package/js/src/cryptocom.js +1 -1
  44. package/js/src/gate.d.ts +2 -0
  45. package/js/src/gate.js +103 -3
  46. package/js/src/htx.js +1 -7
  47. package/js/src/hyperliquid.js +10 -8
  48. package/js/src/kucoin.d.ts +0 -1
  49. package/js/src/kucoin.js +27 -59
  50. package/js/src/okx.d.ts +3 -1
  51. package/js/src/okx.js +74 -0
  52. package/package.json +1 -1
package/js/src/bybit.js CHANGED
@@ -92,6 +92,8 @@ export default class bybit extends Exchange {
92
92
  'fetchLedger': true,
93
93
  'fetchLeverage': true,
94
94
  'fetchLeverageTiers': true,
95
+ 'fetchLongShortRatio': false,
96
+ 'fetchLongShortRatioHistory': true,
95
97
  'fetchMarginAdjustmentHistory': false,
96
98
  'fetchMarketLeverageTiers': true,
97
99
  'fetchMarkets': true,
@@ -9314,6 +9316,82 @@ export default class bybit extends Exchange {
9314
9316
  'fee': undefined,
9315
9317
  };
9316
9318
  }
9319
+ async fetchLongShortRatioHistory(symbol = undefined, timeframe = undefined, since = undefined, limit = undefined, params = {}) {
9320
+ /**
9321
+ * @method
9322
+ * @name bybit#fetchLongShortRatioHistory
9323
+ * @description fetches the long short ratio history for a unified market symbol
9324
+ * @see https://bybit-exchange.github.io/docs/v5/market/long-short-ratio
9325
+ * @param {string} symbol unified symbol of the market to fetch the long short ratio for
9326
+ * @param {string} [timeframe] the period for the ratio, default is 24 hours
9327
+ * @param {int} [since] the earliest time in ms to fetch ratios for
9328
+ * @param {int} [limit] the maximum number of long short ratio structures to retrieve
9329
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
9330
+ * @returns {object[]} an array of [long short ratio structures]{@link https://docs.ccxt.com/#/?id=long-short-ratio-structure}
9331
+ */
9332
+ await this.loadMarkets();
9333
+ const market = this.market(symbol);
9334
+ let type = undefined;
9335
+ [type, params] = this.getBybitType('fetchLongShortRatioHistory', market, params);
9336
+ if (type === 'spot' || type === 'option') {
9337
+ throw new NotSupported(this.id + ' fetchLongShortRatioHistory() only support linear and inverse markets');
9338
+ }
9339
+ if (timeframe === undefined) {
9340
+ timeframe = '1d';
9341
+ }
9342
+ const request = {
9343
+ 'symbol': market['id'],
9344
+ 'period': timeframe,
9345
+ 'category': type,
9346
+ };
9347
+ if (limit !== undefined) {
9348
+ request['limit'] = limit;
9349
+ }
9350
+ const response = await this.publicGetV5MarketAccountRatio(this.extend(request, params));
9351
+ //
9352
+ // {
9353
+ // "retCode": 0,
9354
+ // "retMsg": "OK",
9355
+ // "result": {
9356
+ // "list": [
9357
+ // {
9358
+ // "symbol": "BTCUSDT",
9359
+ // "buyRatio": "0.5707",
9360
+ // "sellRatio": "0.4293",
9361
+ // "timestamp": "1729123200000"
9362
+ // },
9363
+ // ]
9364
+ // },
9365
+ // "retExtInfo": {},
9366
+ // "time": 1729147842516
9367
+ // }
9368
+ //
9369
+ const result = this.safeDict(response, 'result', {});
9370
+ const data = this.safeList(result, 'list', []);
9371
+ return this.parseLongShortRatioHistory(data, market);
9372
+ }
9373
+ parseLongShortRatio(info, market = undefined) {
9374
+ //
9375
+ // {
9376
+ // "symbol": "BTCUSDT",
9377
+ // "buyRatio": "0.5707",
9378
+ // "sellRatio": "0.4293",
9379
+ // "timestamp": "1729123200000"
9380
+ // }
9381
+ //
9382
+ const marketId = this.safeString(info, 'symbol');
9383
+ const timestamp = this.safeIntegerOmitZero(info, 'timestamp');
9384
+ const longString = this.safeString(info, 'buyRatio');
9385
+ const shortString = this.safeString(info, 'sellRatio');
9386
+ return {
9387
+ 'info': info,
9388
+ 'symbol': this.safeSymbol(marketId, market, undefined, 'contract'),
9389
+ 'timestamp': timestamp,
9390
+ 'datetime': this.iso8601(timestamp),
9391
+ 'timeframe': undefined,
9392
+ 'longShortRatio': this.parseToNumeric(Precise.stringDiv(longString, shortString)),
9393
+ };
9394
+ }
9317
9395
  sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
9318
9396
  let url = this.implodeHostname(this.urls['api'][api]) + '/' + path;
9319
9397
  if (api === 'public') {
package/js/src/cex.d.ts CHANGED
@@ -1,42 +1,56 @@
1
1
  import Exchange from './abstract/cex.js';
2
- import type { Balances, Currencies, Dict, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, int, DepositAddress } from './base/types.js';
2
+ import type { Currency, Currencies, Dict, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, TradingFeeInterface, int, Account, Balances, LedgerEntry, Transaction, TransferEntry, DepositAddress } from './base/types.js';
3
3
  /**
4
4
  * @class cex
5
5
  * @augments Exchange
6
6
  */
7
7
  export default class cex extends Exchange {
8
8
  describe(): any;
9
- fetchCurrenciesFromCache(params?: {}): Promise<any>;
10
9
  fetchCurrencies(params?: {}): Promise<Currencies>;
10
+ parseCurrency(rawCurrency: Dict): Currency;
11
11
  fetchMarkets(params?: {}): Promise<Market[]>;
12
- parseBalance(response: any): Balances;
13
- fetchBalance(params?: {}): Promise<Balances>;
14
- fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
15
- parseOHLCV(ohlcv: any, market?: Market): OHLCV;
16
- fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
17
- parseTicker(ticker: Dict, market?: Market): Ticker;
18
- fetchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
12
+ parseMarket(market: Dict): Market;
13
+ fetchTime(params?: {}): Promise<number>;
19
14
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
20
- parseTrade(trade: Dict, market?: Market): Trade;
15
+ fetchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
16
+ parseTicker(ticker: Dict, market?: Market): Ticker;
21
17
  fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
18
+ parseTrade(trade: Dict, market?: Market): Trade;
19
+ fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
20
+ fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
21
+ parseOHLCV(ohlcv: any, market?: Market): OHLCV;
22
22
  fetchTradingFees(params?: {}): Promise<TradingFees>;
23
- createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): Promise<Order>;
24
- cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
25
- cancelAllOrders(symbol?: Str, params?: {}): Promise<any>;
26
- parseOrder(order: Dict, market?: Market): Order;
27
- fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
23
+ parseTradingFees(response: any, useKeyAsId?: boolean): TradingFees;
24
+ parseTradingFee(fee: Dict, market?: Market): TradingFeeInterface;
25
+ fetchAccounts(params?: {}): Promise<Account[]>;
26
+ parseAccount(account: Dict): Account;
27
+ fetchBalance(params?: {}): Promise<Balances>;
28
+ parseBalance(response: any): Balances;
29
+ fetchOrdersByStatus(status: string, symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
28
30
  fetchClosedOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
29
- fetchOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
30
- fetchOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
31
+ fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
31
32
  parseOrderStatus(status: Str): string;
32
- editOrder(id: string, symbol: string, type: OrderType, side: OrderSide, amount?: Num, price?: Num, params?: {}): Promise<Order>;
33
+ parseOrder(order: Dict, market?: Market): Order;
34
+ createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): Promise<Order>;
35
+ cancelOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
36
+ cancelAllOrders(symbol?: Str, params?: {}): Promise<Order[]>;
37
+ fetchLedger(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<LedgerEntry[]>;
38
+ parseLedgerEntry(item: Dict, currency?: Currency): LedgerEntry;
39
+ parseLedgerEntryType(type: any): string;
40
+ fetchDepositsWithdrawals(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<Transaction[]>;
41
+ parseTransaction(transaction: Dict, currency?: Currency): Transaction;
42
+ parseTransactionStatus(status: Str): string;
43
+ transfer(code: string, amount: number, fromAccount: string, toAccount: string, params?: {}): Promise<TransferEntry>;
44
+ transferBetweenMainAndSubAccount(code: string, amount: number, fromAccount: string, toAccount: string, params?: {}): Promise<TransferEntry>;
45
+ transferBetweenSubAccounts(code: string, amount: number, fromAccount: string, toAccount: string, params?: {}): Promise<TransferEntry>;
46
+ parseTransfer(transfer: Dict, currency?: Currency): TransferEntry;
33
47
  fetchDepositAddress(code: string, params?: {}): Promise<DepositAddress>;
34
- nonce(): number;
48
+ parseDepositAddress(depositAddress: any, currency?: Currency): DepositAddress;
35
49
  sign(path: any, api?: string, method?: string, params?: {}, headers?: any, body?: any): {
36
50
  url: string;
37
51
  method: string;
38
52
  body: any;
39
53
  headers: any;
40
54
  };
41
- handleErrors(code: int, reason: string, url: string, method: string, headers: Dict, body: string, response: any, requestHeaders: any, requestBody: any): any[];
55
+ handleErrors(code: int, reason: string, url: string, method: string, headers: Dict, body: string, response: any, requestHeaders: any, requestBody: any): any;
42
56
  }