ccxt 4.2.51 → 4.2.53

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 (57) hide show
  1. package/CHANGELOG.md +76 -16
  2. package/README.md +5 -6
  3. package/dist/ccxt.browser.js +994 -1412
  4. package/dist/ccxt.browser.min.js +3 -3
  5. package/dist/cjs/ccxt.js +1 -4
  6. package/dist/cjs/src/base/Exchange.js +65 -26
  7. package/dist/cjs/src/binance.js +92 -3
  8. package/dist/cjs/src/bingx.js +32 -1
  9. package/dist/cjs/src/bitget.js +1 -0
  10. package/dist/cjs/src/bitvavo.js +1 -1
  11. package/dist/cjs/src/coinbase.js +186 -12
  12. package/dist/cjs/src/htx.js +10 -4
  13. package/dist/cjs/src/pro/binance.js +156 -1
  14. package/dist/cjs/src/pro/bitfinex2.js +3 -1
  15. package/dist/cjs/src/pro/bitvavo.js +1 -1
  16. package/dist/cjs/src/pro/blockchaincom.js +7 -25
  17. package/dist/cjs/src/pro/deribit.js +2 -2
  18. package/dist/cjs/src/pro/gate.js +2 -1
  19. package/dist/cjs/src/pro/gemini.js +1 -1
  20. package/dist/cjs/src/pro/okx.js +18 -4
  21. package/dist/cjs/src/woo.js +3 -1
  22. package/js/ccxt.d.ts +2 -5
  23. package/js/ccxt.js +2 -4
  24. package/js/src/abstract/coinbase.d.ts +1 -1
  25. package/js/src/base/Exchange.d.ts +65 -26
  26. package/js/src/base/Exchange.js +65 -26
  27. package/js/src/binance.d.ts +6 -0
  28. package/js/src/binance.js +92 -3
  29. package/js/src/bingx.d.ts +4 -0
  30. package/js/src/bingx.js +32 -1
  31. package/js/src/bitget.js +1 -0
  32. package/js/src/bitvavo.js +1 -1
  33. package/js/src/coinbase.d.ts +2 -0
  34. package/js/src/coinbase.js +186 -12
  35. package/js/src/deribit.js +1 -1
  36. package/js/src/htx.js +10 -4
  37. package/js/src/ndax.js +1 -1
  38. package/js/src/pro/binance.d.ts +3 -0
  39. package/js/src/pro/binance.js +156 -1
  40. package/js/src/pro/bingx.js +1 -1
  41. package/js/src/pro/bitfinex2.js +3 -1
  42. package/js/src/pro/bitvavo.js +1 -1
  43. package/js/src/pro/blockchaincom.d.ts +0 -1
  44. package/js/src/pro/blockchaincom.js +7 -25
  45. package/js/src/pro/deribit.js +2 -2
  46. package/js/src/pro/gate.js +2 -1
  47. package/js/src/pro/gemini.js +1 -1
  48. package/js/src/pro/okx.js +18 -4
  49. package/js/src/woo.js +4 -2
  50. package/package.json +2 -1
  51. package/skip-tests.json +29 -13
  52. package/dist/cjs/src/abstract/bitforex.js +0 -9
  53. package/dist/cjs/src/bitforex.js +0 -884
  54. package/js/src/abstract/bitforex.d.ts +0 -27
  55. package/js/src/abstract/bitforex.js +0 -11
  56. package/js/src/bitforex.d.ts +0 -39
  57. package/js/src/bitforex.js +0 -885
package/dist/cjs/ccxt.js CHANGED
@@ -30,7 +30,6 @@ var bitcoincom = require('./src/bitcoincom.js');
30
30
  var bitfinex = require('./src/bitfinex.js');
31
31
  var bitfinex2 = require('./src/bitfinex2.js');
32
32
  var bitflyer = require('./src/bitflyer.js');
33
- var bitforex = require('./src/bitforex.js');
34
33
  var bitget = require('./src/bitget.js');
35
34
  var bithumb = require('./src/bithumb.js');
36
35
  var bitmart = require('./src/bitmart.js');
@@ -177,7 +176,7 @@ var woo$1 = require('./src/pro/woo.js');
177
176
 
178
177
  //-----------------------------------------------------------------------------
179
178
  // this is updated by vss.js when building
180
- const version = '4.2.51';
179
+ const version = '4.2.53';
181
180
  Exchange["default"].ccxtVersion = version;
182
181
  const exchanges = {
183
182
  'ace': ace,
@@ -198,7 +197,6 @@ const exchanges = {
198
197
  'bitfinex': bitfinex,
199
198
  'bitfinex2': bitfinex2,
200
199
  'bitflyer': bitflyer,
201
- 'bitforex': bitforex,
202
200
  'bitget': bitget,
203
201
  'bithumb': bithumb,
204
202
  'bitmart': bitmart,
@@ -404,7 +402,6 @@ exports.bitcoincom = bitcoincom;
404
402
  exports.bitfinex = bitfinex;
405
403
  exports.bitfinex2 = bitfinex2;
406
404
  exports.bitflyer = bitflyer;
407
- exports.bitforex = bitforex;
408
405
  exports.bitget = bitget;
409
406
  exports.bithumb = bithumb;
410
407
  exports.bitmart = bitmart;
@@ -355,51 +355,59 @@ class Exchange {
355
355
  'future': undefined,
356
356
  'option': undefined,
357
357
  'addMargin': undefined,
358
+ 'borrowCrossMargin': undefined,
359
+ 'borrowIsolatedMargin': undefined,
360
+ 'borrowMargin': undefined,
358
361
  'cancelAllOrders': undefined,
362
+ 'cancelAllOrdersWs': undefined,
359
363
  'cancelOrder': true,
360
364
  'cancelOrders': undefined,
365
+ 'cancelOrdersWs': undefined,
366
+ 'cancelOrderWs': undefined,
361
367
  'closeAllPositions': undefined,
362
368
  'closePosition': undefined,
363
369
  'createDepositAddress': undefined,
370
+ 'createLimitBuyOrder': undefined,
364
371
  'createLimitOrder': true,
365
- 'createMarketOrder': true,
366
- 'createOrder': true,
372
+ 'createLimitSellOrder': undefined,
373
+ 'createMarketBuyOrder': undefined,
367
374
  'createMarketBuyOrderWithCost': undefined,
375
+ 'createMarketOrder': true,
368
376
  'createMarketOrderWithCost': undefined,
377
+ 'createMarketSellOrder': undefined,
369
378
  'createMarketSellOrderWithCost': undefined,
379
+ 'createOrder': true,
370
380
  'createOrders': undefined,
371
381
  'createOrderWithTakeProfitAndStopLoss': undefined,
382
+ 'createOrderWs': undefined,
372
383
  'createPostOnlyOrder': undefined,
373
384
  'createReduceOnlyOrder': undefined,
374
- 'createStopLossOrder': undefined,
375
- 'createStopOrder': undefined,
376
385
  'createStopLimitOrder': undefined,
386
+ 'createStopLossOrder': undefined,
377
387
  'createStopMarketOrder': undefined,
388
+ 'createStopOrder': undefined,
378
389
  'createTakeProfitOrder': undefined,
379
390
  'createTrailingAmountOrder': undefined,
380
391
  'createTrailingPercentOrder': undefined,
381
392
  'createTriggerOrder': undefined,
382
- 'createOrderWs': undefined,
383
- 'editOrderWs': undefined,
384
- 'fetchOpenOrdersWs': undefined,
385
- 'fetchClosedOrdersWs': undefined,
386
- 'fetchOrderWs': undefined,
387
- 'fetchOrdersWs': undefined,
388
- 'cancelOrderWs': undefined,
389
- 'cancelOrdersWs': undefined,
390
- 'cancelAllOrdersWs': undefined,
391
- 'fetchTradesWs': undefined,
392
- 'fetchBalanceWs': undefined,
393
+ 'deposit': undefined,
393
394
  'editOrder': 'emulated',
395
+ 'editOrderWs': undefined,
394
396
  'fetchAccounts': undefined,
395
397
  'fetchBalance': true,
398
+ 'fetchBalanceWs': undefined,
396
399
  'fetchBidsAsks': undefined,
397
400
  'fetchBorrowInterest': undefined,
401
+ 'fetchBorrowRate': undefined,
402
+ 'fetchBorrowRateHistories': undefined,
398
403
  'fetchBorrowRateHistory': undefined,
399
- 'fetchCanceledOrders': undefined,
404
+ 'fetchBorrowRates': undefined,
405
+ 'fetchBorrowRatesPerSymbol': undefined,
400
406
  'fetchCanceledAndClosedOrders': undefined,
407
+ 'fetchCanceledOrders': undefined,
401
408
  'fetchClosedOrder': undefined,
402
409
  'fetchClosedOrders': undefined,
410
+ 'fetchClosedOrdersWs': undefined,
403
411
  'fetchCrossBorrowRate': undefined,
404
412
  'fetchCrossBorrowRates': undefined,
405
413
  'fetchCurrencies': 'emulated',
@@ -409,78 +417,109 @@ class Exchange {
409
417
  'fetchDepositAddresses': undefined,
410
418
  'fetchDepositAddressesByNetwork': undefined,
411
419
  'fetchDeposits': undefined,
412
- 'fetchDepositsWs': undefined,
413
420
  'fetchDepositsWithdrawals': undefined,
414
- 'fetchTransactionFee': undefined,
415
- 'fetchTransactionFees': undefined,
421
+ 'fetchDepositsWs': undefined,
422
+ 'fetchDepositWithdrawFee': undefined,
423
+ 'fetchDepositWithdrawFees': undefined,
416
424
  'fetchFundingHistory': undefined,
417
425
  'fetchFundingRate': undefined,
418
426
  'fetchFundingRateHistory': undefined,
419
427
  'fetchFundingRates': undefined,
428
+ 'fetchGreeks': undefined,
420
429
  'fetchIndexOHLCV': undefined,
421
430
  'fetchIsolatedBorrowRate': undefined,
422
431
  'fetchIsolatedBorrowRates': undefined,
432
+ 'fetchIsolatedPositions': undefined,
423
433
  'fetchL2OrderBook': true,
434
+ 'fetchL3OrderBook': undefined,
424
435
  'fetchLastPrices': undefined,
425
436
  'fetchLedger': undefined,
426
437
  'fetchLedgerEntry': undefined,
438
+ 'fetchLeverage': undefined,
427
439
  'fetchLeverageTiers': undefined,
440
+ 'fetchLiquidations': undefined,
441
+ 'fetchMarginMode': undefined,
428
442
  'fetchMarketLeverageTiers': undefined,
429
443
  'fetchMarkets': true,
430
444
  'fetchMarketsWs': undefined,
431
445
  'fetchMarkOHLCV': undefined,
446
+ 'fetchMyLiquidations': undefined,
447
+ 'fetchMySettlementHistory': undefined,
432
448
  'fetchMyTrades': undefined,
449
+ 'fetchMyTradesWs': undefined,
433
450
  'fetchOHLCV': undefined,
434
451
  'fetchOHLCVWs': undefined,
435
452
  'fetchOpenInterest': undefined,
436
453
  'fetchOpenInterestHistory': undefined,
437
454
  'fetchOpenOrder': undefined,
438
455
  'fetchOpenOrders': undefined,
456
+ 'fetchOpenOrdersWs': undefined,
439
457
  'fetchOrder': undefined,
440
458
  'fetchOrderBook': true,
441
459
  'fetchOrderBooks': undefined,
460
+ 'fetchOrderBookWs': undefined,
442
461
  'fetchOrders': undefined,
462
+ 'fetchOrdersByStatus': undefined,
463
+ 'fetchOrdersWs': undefined,
443
464
  'fetchOrderTrades': undefined,
465
+ 'fetchOrderWs': undefined,
444
466
  'fetchPermissions': undefined,
445
467
  'fetchPosition': undefined,
468
+ 'fetchPositionMode': undefined,
446
469
  'fetchPositions': undefined,
447
470
  'fetchPositionsForSymbol': undefined,
448
471
  'fetchPositionsRisk': undefined,
449
472
  'fetchPremiumIndexOHLCV': undefined,
473
+ 'fetchSettlementHistory': undefined,
450
474
  'fetchStatus': undefined,
451
475
  'fetchTicker': true,
452
476
  'fetchTickers': undefined,
477
+ 'fetchTickerWs': undefined,
453
478
  'fetchTime': undefined,
454
479
  'fetchTrades': true,
480
+ 'fetchTradesWs': undefined,
455
481
  'fetchTradingFee': undefined,
456
482
  'fetchTradingFees': undefined,
457
483
  'fetchTradingFeesWs': undefined,
458
484
  'fetchTradingLimits': undefined,
485
+ 'fetchTransactionFee': undefined,
486
+ 'fetchTransactionFees': undefined,
459
487
  'fetchTransactions': undefined,
488
+ 'fetchTransfer': undefined,
460
489
  'fetchTransfers': undefined,
490
+ 'fetchUnderlyingAssets': undefined,
491
+ 'fetchVolatilityHistory': undefined,
461
492
  'fetchWithdrawAddresses': undefined,
462
493
  'fetchWithdrawal': undefined,
463
494
  'fetchWithdrawals': undefined,
464
495
  'fetchWithdrawalsWs': undefined,
496
+ 'fetchWithdrawalWhitelist': undefined,
465
497
  'reduceMargin': undefined,
498
+ 'repayCrossMargin': undefined,
499
+ 'repayIsolatedMargin': undefined,
466
500
  'setLeverage': undefined,
467
501
  'setMargin': undefined,
468
502
  'setMarginMode': undefined,
469
503
  'setPositionMode': undefined,
470
504
  'signIn': undefined,
471
505
  'transfer': undefined,
472
- 'withdraw': undefined,
506
+ 'watchBalance': undefined,
507
+ 'watchMyTrades': undefined,
508
+ 'watchOHLCV': undefined,
509
+ 'watchOHLCVForSymbols': undefined,
473
510
  'watchOrderBook': undefined,
511
+ 'watchOrderBookForSymbols': undefined,
474
512
  'watchOrders': undefined,
475
- 'watchMyTrades': undefined,
476
- 'watchTickers': undefined,
513
+ 'watchOrdersForSymbols': undefined,
514
+ 'watchPosition': undefined,
515
+ 'watchPositions': undefined,
516
+ 'watchStatus': undefined,
477
517
  'watchTicker': undefined,
518
+ 'watchTickers': undefined,
478
519
  'watchTrades': undefined,
479
520
  'watchTradesForSymbols': undefined,
480
- 'watchOrderBookForSymbols': undefined,
481
- 'watchOHLCVForSymbols': undefined,
482
- 'watchBalance': undefined,
483
- 'watchOHLCV': undefined,
521
+ 'withdraw': undefined,
522
+ 'ws': undefined,
484
523
  },
485
524
  'urls': {
486
525
  'logo': undefined,
@@ -41,8 +41,12 @@ class binance extends binance$1 {
41
41
  'closeAllPositions': false,
42
42
  'closePosition': false,
43
43
  'createDepositAddress': false,
44
+ 'createLimitBuyOrder': true,
45
+ 'createLimitSellOrder': true,
46
+ 'createMarketBuyOrder': true,
44
47
  'createMarketBuyOrderWithCost': true,
45
48
  'createMarketOrderWithCost': true,
49
+ 'createMarketSellOrder': true,
46
50
  'createMarketSellOrderWithCost': true,
47
51
  'createOrder': true,
48
52
  'createOrders': true,
@@ -63,6 +67,7 @@ class binance extends binance$1 {
63
67
  'fetchBorrowInterest': true,
64
68
  'fetchBorrowRateHistories': false,
65
69
  'fetchBorrowRateHistory': true,
70
+ 'fetchCanceledAndClosedOrders': 'emulated',
66
71
  'fetchCanceledOrders': 'emulated',
67
72
  'fetchClosedOrder': false,
68
73
  'fetchClosedOrders': 'emulated',
@@ -108,6 +113,7 @@ class binance extends binance$1 {
108
113
  'fetchOrders': true,
109
114
  'fetchOrderTrades': true,
110
115
  'fetchPosition': true,
116
+ 'fetchPositionMode': true,
111
117
  'fetchPositions': true,
112
118
  'fetchPositionsRisk': true,
113
119
  'fetchPremiumIndexOHLCV': false,
@@ -119,10 +125,11 @@ class binance extends binance$1 {
119
125
  'fetchTrades': true,
120
126
  'fetchTradingFee': true,
121
127
  'fetchTradingFees': true,
122
- 'fetchTradingLimits': undefined,
128
+ 'fetchTradingLimits': 'emulated',
123
129
  'fetchTransactionFee': 'emulated',
124
130
  'fetchTransactionFees': true,
125
131
  'fetchTransactions': false,
132
+ 'fetchTransfer': false,
126
133
  'fetchTransfers': true,
127
134
  'fetchUnderlyingAssets': false,
128
135
  'fetchVolatilityHistory': false,
@@ -4113,7 +4120,8 @@ class binance extends binance$1 {
4113
4120
  // "closeTime": 1677097200000
4114
4121
  // }
4115
4122
  //
4116
- const volumeIndex = (market['inverse']) ? 7 : 5;
4123
+ const inverse = this.safeBool(market, 'inverse');
4124
+ const volumeIndex = inverse ? 7 : 5;
4117
4125
  return [
4118
4126
  this.safeInteger2(ohlcv, 0, 'closeTime'),
4119
4127
  this.safeNumber2(ohlcv, 1, 'open'),
@@ -6816,6 +6824,38 @@ class binance extends binance$1 {
6816
6824
  const filteredOrders = this.filterBy(orders, 'status', 'canceled');
6817
6825
  return this.filterBySinceLimit(filteredOrders, since, limit);
6818
6826
  }
6827
+ async fetchCanceledAndClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
6828
+ /**
6829
+ * @method
6830
+ * @name binance#fetchCanceledAndClosedOrders
6831
+ * @description fetches information on multiple canceled orders made by the user
6832
+ * @see https://binance-docs.github.io/apidocs/spot/en/#all-orders-user_data
6833
+ * @see https://binance-docs.github.io/apidocs/spot/en/#query-margin-account-39-s-all-orders-user_data
6834
+ * @see https://binance-docs.github.io/apidocs/voptions/en/#query-option-order-history-trade
6835
+ * @see https://binance-docs.github.io/apidocs/pm/en/#query-all-um-orders-user_data
6836
+ * @see https://binance-docs.github.io/apidocs/pm/en/#query-all-cm-orders-user_data
6837
+ * @see https://binance-docs.github.io/apidocs/pm/en/#query-all-um-conditional-orders-user_data
6838
+ * @see https://binance-docs.github.io/apidocs/pm/en/#query-all-cm-conditional-orders-user_data
6839
+ * @see https://binance-docs.github.io/apidocs/pm/en/#query-all-margin-account-orders-user_data
6840
+ * @param {string} symbol unified market symbol of the market the orders were made in
6841
+ * @param {int} [since] the earliest time in ms to fetch orders for
6842
+ * @param {int} [limit] the maximum number of order structures to retrieve
6843
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
6844
+ * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
6845
+ * @param {boolean} [params.portfolioMargin] set to true if you would like to fetch orders in a portfolio margin account
6846
+ * @param {boolean} [params.stop] set to true if you would like to fetch portfolio margin account stop or conditional orders
6847
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
6848
+ */
6849
+ if (symbol === undefined) {
6850
+ throw new errors.ArgumentsRequired(this.id + ' fetchCanceledAndClosedOrders() requires a symbol argument');
6851
+ }
6852
+ const orders = await this.fetchOrders(symbol, since, undefined, params);
6853
+ const canceledOrders = this.filterBy(orders, 'status', 'canceled');
6854
+ const closedOrders = this.filterBy(orders, 'status', 'closed');
6855
+ const filteredOrders = this.arrayConcat(canceledOrders, closedOrders);
6856
+ const sortedOrders = this.sortBy(filteredOrders, 'timestamp');
6857
+ return this.filterBySinceLimit(sortedOrders, since, limit);
6858
+ }
6819
6859
  async cancelOrder(id, symbol = undefined, params = {}) {
6820
6860
  /**
6821
6861
  * @method
@@ -8099,7 +8139,6 @@ class binance extends binance$1 {
8099
8139
  /**
8100
8140
  * @method
8101
8141
  * @name binance#fetchTransfers
8102
- * @see https://binance-docs.github.io/apidocs/spot/en/#user-universal-transfer-user_data
8103
8142
  * @description fetch a history of internal transfers made on an account
8104
8143
  * @see https://binance-docs.github.io/apidocs/spot/en/#query-user-universal-transfer-history-user_data
8105
8144
  * @param {string} code unified currency code of the currency transferred
@@ -11988,6 +12027,56 @@ class binance extends binance$1 {
11988
12027
  'info': greeks,
11989
12028
  };
11990
12029
  }
12030
+ async fetchTradingLimits(symbols = undefined, params = {}) {
12031
+ // this method should not be called directly, use loadTradingLimits () instead
12032
+ const markets = await this.fetchMarkets();
12033
+ const tradingLimits = {};
12034
+ for (let i = 0; i < markets.length; i++) {
12035
+ const market = markets[i];
12036
+ const symbol = market['symbol'];
12037
+ if ((symbols === undefined) || (this.inArray(symbol, symbols))) {
12038
+ tradingLimits[symbol] = market['limits']['amount'];
12039
+ }
12040
+ }
12041
+ return tradingLimits;
12042
+ }
12043
+ async fetchPositionMode(symbol = undefined, params = {}) {
12044
+ /**
12045
+ * @method
12046
+ * @name binance#fetchPositionMode
12047
+ * @description fetchs the position mode, hedged or one way, hedged for binance is set identically for all linear markets or all inverse markets
12048
+ * @param {string} symbol unified symbol of the market to fetch the order book for
12049
+ * @param {object} params extra parameters specific to the exchange API endpoint
12050
+ * @param {string} params.subType "linear" or "inverse"
12051
+ * @returns {object} an object detailing whether the market is in hedged or one-way mode
12052
+ */
12053
+ let market = undefined;
12054
+ if (symbol !== undefined) {
12055
+ market = this.market(symbol);
12056
+ }
12057
+ let subType = undefined;
12058
+ [subType, params] = this.handleSubTypeAndParams('fetchPositionMode', market, params);
12059
+ let response = undefined;
12060
+ if (subType === 'linear') {
12061
+ response = await this.fapiPrivateGetPositionSideDual(params);
12062
+ }
12063
+ else if (subType === 'inverse') {
12064
+ response = await this.dapiPrivateGetPositionSideDual(params);
12065
+ }
12066
+ else {
12067
+ throw new errors.BadRequest(this.id + ' fetchPositionMode requires either a symbol argument or params["subType"]');
12068
+ }
12069
+ //
12070
+ // {
12071
+ // dualSidePosition: false
12072
+ // }
12073
+ //
12074
+ const dualSidePosition = this.safeBool(response, 'dualSidePosition');
12075
+ return {
12076
+ 'info': response,
12077
+ 'hedged': dualSidePosition,
12078
+ };
12079
+ }
11991
12080
  }
11992
12081
 
11993
12082
  module.exports = binance;
@@ -67,6 +67,7 @@ class bingx extends bingx$1 {
67
67
  'fetchOpenOrders': true,
68
68
  'fetchOrder': true,
69
69
  'fetchOrderBook': true,
70
+ 'fetchPositionMode': true,
70
71
  'fetchPositions': true,
71
72
  'fetchTicker': true,
72
73
  'fetchTickers': true,
@@ -77,6 +78,7 @@ class bingx extends bingx$1 {
77
78
  'setLeverage': true,
78
79
  'setMargin': true,
79
80
  'setMarginMode': true,
81
+ 'setPositionMode': true,
80
82
  'transfer': true,
81
83
  },
82
84
  'hostname': 'bingx.com',
@@ -3503,13 +3505,14 @@ class bingx extends bingx$1 {
3503
3505
  * @param {float} leverage the rate of leverage
3504
3506
  * @param {string} symbol unified market symbol
3505
3507
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3508
+ * @param {string} [params.side] hedged: ['long' or 'short']. one way: ['both']
3506
3509
  * @returns {object} response from the exchange
3507
3510
  */
3508
3511
  if (symbol === undefined) {
3509
3512
  throw new errors.ArgumentsRequired(this.id + ' setLeverage() requires a symbol argument');
3510
3513
  }
3511
3514
  const side = this.safeStringUpper(params, 'side');
3512
- this.checkRequiredArgument('setLeverage', side, 'side', ['LONG', 'SHORT']);
3515
+ this.checkRequiredArgument('setLeverage', side, 'side', ['LONG', 'SHORT', 'BOTH']);
3513
3516
  await this.loadMarkets();
3514
3517
  const market = this.market(symbol);
3515
3518
  const request = {
@@ -3953,6 +3956,34 @@ class bingx extends bingx$1 {
3953
3956
  }
3954
3957
  return positions;
3955
3958
  }
3959
+ async fetchPositionMode(symbol = undefined, params = {}) {
3960
+ /**
3961
+ * @method
3962
+ * @name bingx#fetchPositionMode
3963
+ * @description fetchs the position mode, hedged or one way, hedged for binance is set identically for all linear markets or all inverse markets
3964
+ * @see https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Get%20Position%20Mode
3965
+ * @param {string} symbol unified symbol of the market to fetch the order book for
3966
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
3967
+ * @returns {object} an object detailing whether the market is in hedged or one-way mode
3968
+ */
3969
+ const response = await this.swapV1PrivateGetPositionSideDual(params);
3970
+ //
3971
+ // {
3972
+ // "code": "0",
3973
+ // "msg": "",
3974
+ // "timeStamp": "1709002057516",
3975
+ // "data": {
3976
+ // "dualSidePosition": "false"
3977
+ // }
3978
+ // }
3979
+ //
3980
+ const data = this.safeDict(response, 'data', {});
3981
+ const dualSidePosition = this.safeString(data, 'dualSidePosition');
3982
+ return {
3983
+ 'info': response,
3984
+ 'hedged': (dualSidePosition === 'true'),
3985
+ };
3986
+ }
3956
3987
  async setPositionMode(hedged, symbol = undefined, params = {}) {
3957
3988
  /**
3958
3989
  * @method
@@ -3592,6 +3592,7 @@ class bitget extends bitget$1 {
3592
3592
  'not_trigger': 'open',
3593
3593
  'partial_fill': 'open',
3594
3594
  'partially_fill': 'open',
3595
+ 'partially_filled': 'open',
3595
3596
  'triggered': 'closed',
3596
3597
  'full_fill': 'closed',
3597
3598
  'filled': 'closed',
@@ -568,7 +568,7 @@ class bitvavo extends bitvavo$1 {
568
568
  // "market":"ETH-BTC",
569
569
  // "open":"0.022578",
570
570
  // "high":"0.023019",
571
- // "low":"0.022573",
571
+ // "low":"0.022572",
572
572
  // "last":"0.023019",
573
573
  // "volume":"25.16366324",
574
574
  // "volumeQuote":"0.57333305",