ccxt 4.3.35 → 4.3.37

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 (56) hide show
  1. package/README.md +3 -3
  2. package/dist/ccxt.browser.min.js +3 -3
  3. package/dist/cjs/ccxt.js +1 -1
  4. package/dist/cjs/src/bingx.js +63 -33
  5. package/dist/cjs/src/bit2c.js +2 -1
  6. package/dist/cjs/src/bitbank.js +46 -1
  7. package/dist/cjs/src/bitget.js +11 -4
  8. package/dist/cjs/src/bitmart.js +2 -2
  9. package/dist/cjs/src/htx.js +78 -3
  10. package/dist/cjs/src/kraken.js +5 -5
  11. package/dist/cjs/src/paymium.js +4 -1
  12. package/dist/cjs/src/pro/binance.js +4 -4
  13. package/dist/cjs/src/pro/bingx.js +10 -4
  14. package/dist/cjs/src/pro/bitfinex2.js +5 -5
  15. package/dist/cjs/src/pro/bitmart.js +9 -5
  16. package/dist/cjs/src/pro/bybit.js +6 -6
  17. package/dist/cjs/src/pro/htx.js +5 -6
  18. package/dist/cjs/src/pro/okx.js +3 -4
  19. package/dist/cjs/src/pro/woo.js +4 -4
  20. package/dist/cjs/src/whitebit.js +24 -3
  21. package/dist/cjs/src/woofipro.js +3 -1
  22. package/dist/cjs/src/zaif.js +30 -2
  23. package/dist/cjs/src/zonda.js +6 -0
  24. package/js/ccxt.d.ts +1 -1
  25. package/js/ccxt.js +1 -1
  26. package/js/src/abstract/bitbay.d.ts +6 -0
  27. package/js/src/abstract/zonda.d.ts +6 -0
  28. package/js/src/bingx.d.ts +2 -2
  29. package/js/src/bingx.js +63 -33
  30. package/js/src/bit2c.d.ts +1 -1
  31. package/js/src/bit2c.js +2 -1
  32. package/js/src/bitbank.d.ts +1 -1
  33. package/js/src/bitbank.js +46 -1
  34. package/js/src/bitget.js +11 -4
  35. package/js/src/bitmart.js +2 -2
  36. package/js/src/htx.d.ts +1 -0
  37. package/js/src/htx.js +78 -3
  38. package/js/src/kraken.js +5 -5
  39. package/js/src/paymium.d.ts +1 -1
  40. package/js/src/paymium.js +4 -1
  41. package/js/src/pro/binance.js +4 -4
  42. package/js/src/pro/bingx.js +10 -4
  43. package/js/src/pro/bitfinex2.js +5 -5
  44. package/js/src/pro/bitmart.js +10 -6
  45. package/js/src/pro/bybit.js +6 -6
  46. package/js/src/pro/htx.js +5 -6
  47. package/js/src/pro/okx.js +3 -4
  48. package/js/src/pro/woo.js +4 -4
  49. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
  50. package/js/src/whitebit.d.ts +2 -2
  51. package/js/src/whitebit.js +24 -3
  52. package/js/src/woofipro.js +3 -1
  53. package/js/src/zaif.d.ts +1 -1
  54. package/js/src/zaif.js +30 -2
  55. package/js/src/zonda.js +6 -0
  56. package/package.json +1 -1
@@ -1072,11 +1072,10 @@ class okx extends okx$1 {
1072
1072
  }
1073
1073
  }
1074
1074
  else if ((channel === 'books5') || (channel === 'bbo-tbt')) {
1075
- let orderbook = this.safeValue(this.orderbooks, symbol);
1076
- if (orderbook === undefined) {
1077
- orderbook = this.orderBook({}, limit);
1075
+ if (!(symbol in this.orderbooks)) {
1076
+ this.orderbooks[symbol] = this.orderBook({}, limit);
1078
1077
  }
1079
- this.orderbooks[symbol] = orderbook;
1078
+ const orderbook = this.orderbooks[symbol];
1080
1079
  for (let i = 0; i < data.length; i++) {
1081
1080
  const update = data[i];
1082
1081
  const timestamp = this.safeInteger(update, 'ts');
@@ -125,15 +125,15 @@ class woo extends woo$1 {
125
125
  // }
126
126
  // }
127
127
  //
128
- const data = this.safeValue(message, 'data');
128
+ const data = this.safeDict(message, 'data');
129
129
  const marketId = this.safeString(data, 'symbol');
130
130
  const market = this.safeMarket(marketId);
131
131
  const symbol = market['symbol'];
132
132
  const topic = this.safeString(message, 'topic');
133
- let orderbook = this.safeValue(this.orderbooks, symbol);
134
- if (orderbook === undefined) {
135
- orderbook = this.orderBook({});
133
+ if (!(symbol in this.orderbooks)) {
134
+ this.orderbooks[symbol] = this.orderBook({});
136
135
  }
136
+ const orderbook = this.orderbooks[symbol];
137
137
  const timestamp = this.safeInteger(message, 'ts');
138
138
  const snapshot = this.parseOrderBook(data, symbol, timestamp, 'bids', 'asks');
139
139
  orderbook.reset(snapshot);
@@ -1419,7 +1419,27 @@ class whitebit extends whitebit$1 {
1419
1419
  'market': market['id'],
1420
1420
  'orderId': parseInt(id),
1421
1421
  };
1422
- return await this.v4PrivatePostOrderCancel(this.extend(request, params));
1422
+ const response = await this.v4PrivatePostOrderCancel(this.extend(request, params));
1423
+ //
1424
+ // {
1425
+ // "orderId": 4180284841, // order id
1426
+ // "clientOrderId": "customId11", // custom order identifier; "clientOrderId": "" - if not specified.
1427
+ // "market": "BTC_USDT", // deal market
1428
+ // "side": "buy", // order side
1429
+ // "type": "stop market", // order type
1430
+ // "timestamp": 1595792396.165973, // current timestamp
1431
+ // "dealMoney": "0", // if order finished - amount in money currency that is finished
1432
+ // "dealStock": "0", // if order finished - amount in stock currency that is finished
1433
+ // "amount": "0.001", // amount
1434
+ // "takerFee": "0.001", // maker fee ratio. If the number less than 0.0001 - it will be rounded to zero
1435
+ // "makerFee": "0.001", // maker fee ratio. If the number less than 0.0001 - it will be rounded to zero
1436
+ // "left": "0.001", // if order not finished - rest of the amount that must be finished
1437
+ // "dealFee": "0", // fee in money that you pay if order is finished
1438
+ // "price": "40000", // price if price isset
1439
+ // "activation_price": "40000" // activation price if activation price is set
1440
+ // }
1441
+ //
1442
+ return this.parseOrder(response);
1423
1443
  }
1424
1444
  async cancelAllOrders(symbol = undefined, params = {}) {
1425
1445
  /**
@@ -1464,7 +1484,7 @@ class whitebit extends whitebit$1 {
1464
1484
  //
1465
1485
  // []
1466
1486
  //
1467
- return response;
1487
+ return this.parseOrders(response, market);
1468
1488
  }
1469
1489
  async cancelAllOrdersAfter(timeout, params = {}) {
1470
1490
  /**
@@ -1698,7 +1718,7 @@ class whitebit extends whitebit$1 {
1698
1718
  }
1699
1719
  parseOrder(order, market = undefined) {
1700
1720
  //
1701
- // createOrder, fetchOpenOrders
1721
+ // createOrder, fetchOpenOrders, cancelOrder
1702
1722
  //
1703
1723
  // {
1704
1724
  // "orderId":105687928629,
@@ -1713,6 +1733,7 @@ class whitebit extends whitebit$1 {
1713
1733
  // "takerFee":"0.001",
1714
1734
  // "makerFee":"0",
1715
1735
  // "left":"100",
1736
+ // "price": "40000", // price if price isset
1716
1737
  // "dealFee":"0",
1717
1738
  // "activation_price":"0.065" // stop price (if stop limit or stop market)
1718
1739
  // }
@@ -2277,8 +2277,10 @@ class woofipro extends woofipro$1 {
2277
2277
  }
2278
2278
  signHash(hash, privateKey) {
2279
2279
  const signature = crypto.ecdsa(hash.slice(-64), privateKey.slice(-64), secp256k1.secp256k1, undefined);
2280
+ const r = signature['r'];
2281
+ const s = signature['s'];
2280
2282
  const v = this.intToBase16(this.sum(27, signature['v']));
2281
- return '0x' + signature['r'].padStart(64, '0') + signature['s'].padStart(64, '0') + v;
2283
+ return '0x' + r.padStart(64, '0') + s.padStart(64, '0') + v;
2282
2284
  }
2283
2285
  signMessage(message, privateKey) {
2284
2286
  return this.signHash(this.hashMessage(message), privateKey.slice(-64));
@@ -476,7 +476,23 @@ class zaif extends zaif$1 {
476
476
  const request = {
477
477
  'order_id': id,
478
478
  };
479
- return await this.privatePostCancelOrder(this.extend(request, params));
479
+ const response = await this.privatePostCancelOrder(this.extend(request, params));
480
+ //
481
+ // {
482
+ // "success": 1,
483
+ // "return": {
484
+ // "order_id": 184,
485
+ // "funds": {
486
+ // "jpy": 15320,
487
+ // "btc": 1.392,
488
+ // "mona": 2600,
489
+ // "kaori": 0.1
490
+ // }
491
+ // }
492
+ // }
493
+ //
494
+ const data = this.safeDict(response, 'return');
495
+ return this.parseOrder(data);
480
496
  }
481
497
  parseOrder(order, market = undefined) {
482
498
  //
@@ -489,6 +505,18 @@ class zaif extends zaif$1 {
489
505
  // "comment" : "demo"
490
506
  // }
491
507
  //
508
+ // cancelOrder
509
+ //
510
+ // {
511
+ // "order_id": 184,
512
+ // "funds": {
513
+ // "jpy": 15320,
514
+ // "btc": 1.392,
515
+ // "mona": 2600,
516
+ // "kaori": 0.1
517
+ // }
518
+ // }
519
+ //
492
520
  let side = this.safeString(order, 'action');
493
521
  side = (side === 'bid') ? 'buy' : 'sell';
494
522
  const timestamp = this.safeTimestamp(order, 'timestamp');
@@ -496,7 +524,7 @@ class zaif extends zaif$1 {
496
524
  const symbol = this.safeSymbol(marketId, market, '_');
497
525
  const price = this.safeString(order, 'price');
498
526
  const amount = this.safeString(order, 'amount');
499
- const id = this.safeString(order, 'id');
527
+ const id = this.safeString2(order, 'id', 'order_id');
500
528
  return this.safeOrder({
501
529
  'id': id,
502
530
  'clientOrderId': undefined,
@@ -169,6 +169,10 @@ class zonda extends zonda$1 {
169
169
  'balances/BITBAY/balance',
170
170
  'fiat_cantor/rate/{baseId}/{quoteId}',
171
171
  'fiat_cantor/history',
172
+ 'client_payments/v2/customer/crypto/{currency}/channels/deposit',
173
+ 'client_payments/v2/customer/crypto/{currency}/channels/withdrawal',
174
+ 'client_payments/v2/customer/crypto/deposit/fee',
175
+ 'client_payments/v2/customer/crypto/withdrawal/fee',
172
176
  ],
173
177
  'post': [
174
178
  'trading/offer/{symbol}',
@@ -179,6 +183,8 @@ class zonda extends zonda$1 {
179
183
  'fiat_cantor/exchange',
180
184
  'api_payments/withdrawals/crypto',
181
185
  'api_payments/withdrawals/fiat',
186
+ 'client_payments/v2/customer/crypto/deposit',
187
+ 'client_payments/v2/customer/crypto/withdrawal',
182
188
  ],
183
189
  'delete': [
184
190
  'trading/offer/{symbol}/{id}/{side}/{price}',
package/js/ccxt.d.ts CHANGED
@@ -4,7 +4,7 @@ import * as functions from './src/base/functions.js';
4
4
  import * as errors from './src/base/errors.js';
5
5
  import type { Market, Trade, Fee, Ticker, OrderBook, Order, Transaction, Tickers, Currency, Balance, DepositAddress, WithdrawalResponse, DepositAddressResponse, OHLCV, Balances, PartialBalances, Dictionary, MinMax, Position, FundingRateHistory, Liquidation, FundingHistory, MarginMode, Greeks, Leverage, Leverages, Option, OptionChain, Conversion } from './src/base/types.js';
6
6
  import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, ProxyError, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout } from './src/base/errors.js';
7
- declare const version = "4.3.34";
7
+ declare const version = "4.3.36";
8
8
  import ace from './src/ace.js';
9
9
  import alpaca from './src/alpaca.js';
10
10
  import ascendex from './src/ascendex.js';
package/js/ccxt.js CHANGED
@@ -38,7 +38,7 @@ import * as errors from './src/base/errors.js';
38
38
  import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, ProxyError, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout } from './src/base/errors.js';
39
39
  //-----------------------------------------------------------------------------
40
40
  // this is updated by vss.js when building
41
- const version = '4.3.35';
41
+ const version = '4.3.37';
42
42
  Exchange.ccxtVersion = version;
43
43
  //-----------------------------------------------------------------------------
44
44
  import ace from './src/ace.js';
@@ -33,6 +33,10 @@ interface zonda {
33
33
  v1_01PrivateGetBalancesBITBAYBalance(params?: {}): Promise<implicitReturnType>;
34
34
  v1_01PrivateGetFiatCantorRateBaseIdQuoteId(params?: {}): Promise<implicitReturnType>;
35
35
  v1_01PrivateGetFiatCantorHistory(params?: {}): Promise<implicitReturnType>;
36
+ v1_01PrivateGetClientPaymentsV2CustomerCryptoCurrencyChannelsDeposit(params?: {}): Promise<implicitReturnType>;
37
+ v1_01PrivateGetClientPaymentsV2CustomerCryptoCurrencyChannelsWithdrawal(params?: {}): Promise<implicitReturnType>;
38
+ v1_01PrivateGetClientPaymentsV2CustomerCryptoDepositFee(params?: {}): Promise<implicitReturnType>;
39
+ v1_01PrivateGetClientPaymentsV2CustomerCryptoWithdrawalFee(params?: {}): Promise<implicitReturnType>;
36
40
  v1_01PrivatePostTradingOfferSymbol(params?: {}): Promise<implicitReturnType>;
37
41
  v1_01PrivatePostTradingStopOfferSymbol(params?: {}): Promise<implicitReturnType>;
38
42
  v1_01PrivatePostTradingConfigSymbol(params?: {}): Promise<implicitReturnType>;
@@ -41,6 +45,8 @@ interface zonda {
41
45
  v1_01PrivatePostFiatCantorExchange(params?: {}): Promise<implicitReturnType>;
42
46
  v1_01PrivatePostApiPaymentsWithdrawalsCrypto(params?: {}): Promise<implicitReturnType>;
43
47
  v1_01PrivatePostApiPaymentsWithdrawalsFiat(params?: {}): Promise<implicitReturnType>;
48
+ v1_01PrivatePostClientPaymentsV2CustomerCryptoDeposit(params?: {}): Promise<implicitReturnType>;
49
+ v1_01PrivatePostClientPaymentsV2CustomerCryptoWithdrawal(params?: {}): Promise<implicitReturnType>;
44
50
  v1_01PrivateDeleteTradingOfferSymbolIdSidePrice(params?: {}): Promise<implicitReturnType>;
45
51
  v1_01PrivateDeleteTradingStopOfferSymbolIdSidePrice(params?: {}): Promise<implicitReturnType>;
46
52
  v1_01PrivatePutBalancesBITBAYBalanceId(params?: {}): Promise<implicitReturnType>;
@@ -33,6 +33,10 @@ interface Exchange {
33
33
  v1_01PrivateGetBalancesBITBAYBalance(params?: {}): Promise<implicitReturnType>;
34
34
  v1_01PrivateGetFiatCantorRateBaseIdQuoteId(params?: {}): Promise<implicitReturnType>;
35
35
  v1_01PrivateGetFiatCantorHistory(params?: {}): Promise<implicitReturnType>;
36
+ v1_01PrivateGetClientPaymentsV2CustomerCryptoCurrencyChannelsDeposit(params?: {}): Promise<implicitReturnType>;
37
+ v1_01PrivateGetClientPaymentsV2CustomerCryptoCurrencyChannelsWithdrawal(params?: {}): Promise<implicitReturnType>;
38
+ v1_01PrivateGetClientPaymentsV2CustomerCryptoDepositFee(params?: {}): Promise<implicitReturnType>;
39
+ v1_01PrivateGetClientPaymentsV2CustomerCryptoWithdrawalFee(params?: {}): Promise<implicitReturnType>;
36
40
  v1_01PrivatePostTradingOfferSymbol(params?: {}): Promise<implicitReturnType>;
37
41
  v1_01PrivatePostTradingStopOfferSymbol(params?: {}): Promise<implicitReturnType>;
38
42
  v1_01PrivatePostTradingConfigSymbol(params?: {}): Promise<implicitReturnType>;
@@ -41,6 +45,8 @@ interface Exchange {
41
45
  v1_01PrivatePostFiatCantorExchange(params?: {}): Promise<implicitReturnType>;
42
46
  v1_01PrivatePostApiPaymentsWithdrawalsCrypto(params?: {}): Promise<implicitReturnType>;
43
47
  v1_01PrivatePostApiPaymentsWithdrawalsFiat(params?: {}): Promise<implicitReturnType>;
48
+ v1_01PrivatePostClientPaymentsV2CustomerCryptoDeposit(params?: {}): Promise<implicitReturnType>;
49
+ v1_01PrivatePostClientPaymentsV2CustomerCryptoWithdrawal(params?: {}): Promise<implicitReturnType>;
44
50
  v1_01PrivateDeleteTradingOfferSymbolIdSidePrice(params?: {}): Promise<implicitReturnType>;
45
51
  v1_01PrivateDeleteTradingStopOfferSymbolIdSidePrice(params?: {}): Promise<implicitReturnType>;
46
52
  v1_01PrivatePutBalancesBITBAYBalanceId(params?: {}): Promise<implicitReturnType>;
package/js/src/bingx.d.ts CHANGED
@@ -77,8 +77,8 @@ export default class bingx extends Exchange {
77
77
  parseOrder(order: Dict, market?: Market): Order;
78
78
  parseOrderStatus(status: Str): string;
79
79
  cancelOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
80
- cancelAllOrders(symbol?: Str, params?: {}): Promise<any>;
81
- cancelOrders(ids: string[], symbol?: Str, params?: {}): Promise<any>;
80
+ cancelAllOrders(symbol?: Str, params?: {}): Promise<Order[]>;
81
+ cancelOrders(ids: string[], symbol?: Str, params?: {}): Promise<Order[]>;
82
82
  cancelAllOrdersAfter(timeout: Int, params?: {}): Promise<any>;
83
83
  fetchOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
84
84
  fetchOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
package/js/src/bingx.js CHANGED
@@ -1039,7 +1039,7 @@ export default class bingx extends Exchange {
1039
1039
  time = undefined;
1040
1040
  }
1041
1041
  const cost = this.safeString(trade, 'quoteQty');
1042
- const type = (cost === undefined) ? 'spot' : 'swap';
1042
+ // const type = (cost === undefined) ? 'spot' : 'swap'; this is not reliable
1043
1043
  const currencyId = this.safeStringN(trade, ['currency', 'N', 'commissionAsset']);
1044
1044
  const currencyCode = this.safeCurrencyCode(currencyId);
1045
1045
  const m = this.safeBool(trade, 'm');
@@ -1076,7 +1076,7 @@ export default class bingx extends Exchange {
1076
1076
  'info': trade,
1077
1077
  'timestamp': time,
1078
1078
  'datetime': this.iso8601(time),
1079
- 'symbol': this.safeSymbol(marketId, market, '-', type),
1079
+ 'symbol': this.safeSymbol(marketId, market, '-'),
1080
1080
  'order': this.safeString2(trade, 'orderId', 'i'),
1081
1081
  'type': this.safeStringLower(trade, 'o'),
1082
1082
  'side': this.parseOrderSide(side),
@@ -2736,7 +2736,9 @@ export default class bingx extends Exchange {
2736
2736
  else {
2737
2737
  throw new BadRequest(this.id + ' cancelAllOrders is only supported for spot and swap markets.');
2738
2738
  }
2739
- return response;
2739
+ const data = this.safeDict(response, 'data', {});
2740
+ const orders = this.safeList2(data, 'success', 'orders', []);
2741
+ return this.parseOrders(orders);
2740
2742
  }
2741
2743
  async cancelOrders(ids, symbol = undefined, params = {}) {
2742
2744
  /**
@@ -2777,6 +2779,32 @@ export default class bingx extends Exchange {
2777
2779
  const spotReqKey = areClientOrderIds ? 'clientOrderIDs' : 'orderIds';
2778
2780
  request[spotReqKey] = parsedIds.join(',');
2779
2781
  response = await this.spotV1PrivatePostTradeCancelOrders(this.extend(request, params));
2782
+ //
2783
+ // {
2784
+ // "code": 0,
2785
+ // "msg": "",
2786
+ // "debugMsg": "",
2787
+ // "data": {
2788
+ // "orders": [
2789
+ // {
2790
+ // "symbol": "SOL-USDT",
2791
+ // "orderId": 1795970045910614016,
2792
+ // "transactTime": 1717027601111,
2793
+ // "price": "180.25",
2794
+ // "stopPrice": "0",
2795
+ // "origQty": "0.03",
2796
+ // "executedQty": "0",
2797
+ // "cummulativeQuoteQty": "0",
2798
+ // "status": "CANCELED",
2799
+ // "type": "LIMIT",
2800
+ // "side": "SELL",
2801
+ // "clientOrderID": ""
2802
+ // },
2803
+ // ...
2804
+ // ]
2805
+ // }
2806
+ // }
2807
+ //
2780
2808
  }
2781
2809
  else {
2782
2810
  if (areClientOrderIds) {
@@ -2786,37 +2814,39 @@ export default class bingx extends Exchange {
2786
2814
  request['orderIdList'] = parsedIds;
2787
2815
  }
2788
2816
  response = await this.swapV2PrivateDeleteTradeBatchOrders(this.extend(request, params));
2817
+ //
2818
+ // {
2819
+ // "code": 0,
2820
+ // "msg": "",
2821
+ // "data": {
2822
+ // "success": [
2823
+ // {
2824
+ // "symbol": "LINK-USDT",
2825
+ // "orderId": 1597783850786750464,
2826
+ // "side": "BUY",
2827
+ // "positionSide": "LONG",
2828
+ // "type": "TRIGGER_MARKET",
2829
+ // "origQty": "5.0",
2830
+ // "price": "5.5710",
2831
+ // "executedQty": "0.0",
2832
+ // "avgPrice": "0.0000",
2833
+ // "cumQuote": "0",
2834
+ // "stopPrice": "5.0000",
2835
+ // "profit": "0.0000",
2836
+ // "commission": "0.000000",
2837
+ // "status": "CANCELLED",
2838
+ // "time": 1669776330000,
2839
+ // "updateTime": 1672370837000
2840
+ // }
2841
+ // ],
2842
+ // "failed": null
2843
+ // }
2844
+ // }
2845
+ //
2789
2846
  }
2790
- //
2791
- // {
2792
- // "code": 0,
2793
- // "msg": "",
2794
- // "data": {
2795
- // "success": [
2796
- // {
2797
- // "symbol": "LINK-USDT",
2798
- // "orderId": 1597783850786750464,
2799
- // "side": "BUY",
2800
- // "positionSide": "LONG",
2801
- // "type": "TRIGGER_MARKET",
2802
- // "origQty": "5.0",
2803
- // "price": "5.5710",
2804
- // "executedQty": "0.0",
2805
- // "avgPrice": "0.0000",
2806
- // "cumQuote": "0",
2807
- // "stopPrice": "5.0000",
2808
- // "profit": "0.0000",
2809
- // "commission": "0.000000",
2810
- // "status": "CANCELLED",
2811
- // "time": 1669776330000,
2812
- // "updateTime": 1672370837000
2813
- // }
2814
- // ],
2815
- // "failed": null
2816
- // }
2817
- // }
2818
- //
2819
- return response;
2847
+ const data = this.safeDict(response, 'data', {});
2848
+ const success = this.safeList2(data, 'success', 'orders', []);
2849
+ return this.parseOrders(success);
2820
2850
  }
2821
2851
  async cancelAllOrdersAfter(timeout, params = {}) {
2822
2852
  /**
package/js/src/bit2c.d.ts CHANGED
@@ -14,7 +14,7 @@ export default class bit2c extends Exchange {
14
14
  fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
15
15
  fetchTradingFees(params?: {}): Promise<TradingFees>;
16
16
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): Promise<Order>;
17
- cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
17
+ cancelOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
18
18
  fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
19
19
  fetchOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
20
20
  parseOrder(order: Dict, market?: Market): Order;
package/js/src/bit2c.js CHANGED
@@ -467,7 +467,8 @@ export default class bit2c extends Exchange {
467
467
  const request = {
468
468
  'id': id,
469
469
  };
470
- return await this.privatePostOrderCancelOrder(this.extend(request, params));
470
+ const response = await this.privatePostOrderCancelOrder(this.extend(request, params));
471
+ return this.parseOrder(response);
471
472
  }
472
473
  async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
473
474
  /**
@@ -21,7 +21,7 @@ export default class bitbank extends Exchange {
21
21
  parseOrderStatus(status: Str): string;
22
22
  parseOrder(order: Dict, market?: Market): Order;
23
23
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): Promise<Order>;
24
- cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
24
+ cancelOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
25
25
  fetchOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
26
26
  fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
27
27
  fetchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
package/js/src/bitbank.js CHANGED
@@ -688,8 +688,31 @@ export default class bitbank extends Exchange {
688
688
  'pair': market['id'],
689
689
  };
690
690
  const response = await this.privatePostUserSpotCancelOrder(this.extend(request, params));
691
+ //
692
+ // {
693
+ // "success": 1,
694
+ // "data": {
695
+ // "order_id": 0,
696
+ // "pair": "string",
697
+ // "side": "string",
698
+ // "type": "string",
699
+ // "start_amount": "string",
700
+ // "remaining_amount": "string",
701
+ // "executed_amount": "string",
702
+ // "price": "string",
703
+ // "post_only": false,
704
+ // "average_price": "string",
705
+ // "ordered_at": 0,
706
+ // "expire_at": 0,
707
+ // "canceled_at": 0,
708
+ // "triggered_at": 0,
709
+ // "trigger_price": "string",
710
+ // "status": "string"
711
+ // }
712
+ // }
713
+ //
691
714
  const data = this.safeValue(response, 'data');
692
- return data;
715
+ return this.parseOrder(data);
693
716
  }
694
717
  async fetchOrder(id, symbol = undefined, params = {}) {
695
718
  /**
@@ -708,6 +731,28 @@ export default class bitbank extends Exchange {
708
731
  'pair': market['id'],
709
732
  };
710
733
  const response = await this.privateGetUserSpotOrder(this.extend(request, params));
734
+ //
735
+ // {
736
+ // "success": 1,
737
+ // "data": {
738
+ // "order_id": 0,
739
+ // "pair": "string",
740
+ // "side": "string",
741
+ // "type": "string",
742
+ // "start_amount": "string",
743
+ // "remaining_amount": "string",
744
+ // "executed_amount": "string",
745
+ // "price": "string",
746
+ // "post_only": false,
747
+ // "average_price": "string",
748
+ // "ordered_at": 0,
749
+ // "expire_at": 0,
750
+ // "triggered_at": 0,
751
+ // "triger_price": "string",
752
+ // "status": "string"
753
+ // }
754
+ // }
755
+ //
711
756
  const data = this.safeDict(response, 'data');
712
757
  return this.parseOrder(data, market);
713
758
  }
package/js/src/bitget.js CHANGED
@@ -1231,6 +1231,7 @@ export default class bitget extends Exchange {
1231
1231
  '40712': InsufficientFunds,
1232
1232
  '40713': ExchangeError,
1233
1233
  '40714': ExchangeError,
1234
+ '40762': InsufficientFunds,
1234
1235
  '40768': OrderNotFound,
1235
1236
  '41114': OnMaintenance,
1236
1237
  '43011': InvalidOrder,
@@ -4346,11 +4347,17 @@ export default class bitget extends Exchange {
4346
4347
  }
4347
4348
  const marginModeRequest = (marginMode === 'cross') ? 'crossed' : 'isolated';
4348
4349
  request['marginMode'] = marginModeRequest;
4349
- const oneWayMode = this.safeBool(params, 'oneWayMode', false);
4350
- params = this.omit(params, 'oneWayMode');
4350
+ let hedged = undefined;
4351
+ [hedged, params] = this.handleParamBool(params, 'hedged', false);
4352
+ // backward compatibility for `oneWayMode`
4353
+ let oneWayMode = undefined;
4354
+ [oneWayMode, params] = this.handleParamBool(params, 'oneWayMode');
4355
+ if (oneWayMode !== undefined) {
4356
+ hedged = !oneWayMode;
4357
+ }
4351
4358
  let requestSide = side;
4352
4359
  if (reduceOnly) {
4353
- if (oneWayMode) {
4360
+ if (!hedged) {
4354
4361
  request['reduceOnly'] = 'YES';
4355
4362
  }
4356
4363
  else {
@@ -4360,7 +4367,7 @@ export default class bitget extends Exchange {
4360
4367
  }
4361
4368
  }
4362
4369
  else {
4363
- if (!oneWayMode) {
4370
+ if (hedged) {
4364
4371
  request['tradeSide'] = 'Open';
4365
4372
  }
4366
4373
  }
package/js/src/bitmart.js CHANGED
@@ -1185,9 +1185,9 @@ export default class bitmart extends Exchange {
1185
1185
  market = this.safeMarket(marketId, market);
1186
1186
  const symbol = market['symbol'];
1187
1187
  const last = this.safeString2(ticker, 'close_24h', 'last_price');
1188
- let percentage = Precise.stringAbs(this.safeString(ticker, 'price_change_percent_24h'));
1188
+ let percentage = this.safeString(ticker, 'price_change_percent_24h');
1189
1189
  if (percentage === undefined) {
1190
- percentage = Precise.stringAbs(Precise.stringMul(this.safeString(ticker, 'fluctuation'), '100'));
1190
+ percentage = Precise.stringMul(this.safeString(ticker, 'fluctuation'), '100');
1191
1191
  }
1192
1192
  let baseVolume = this.safeString(ticker, 'base_volume_24h');
1193
1193
  let quoteVolume = this.safeString(ticker, 'quote_volume_24h');
package/js/src/htx.d.ts CHANGED
@@ -238,5 +238,6 @@ export default class htx extends Exchange {
238
238
  };
239
239
  fetchLiquidations(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<import("./base/types.js").Liquidation[]>;
240
240
  parseLiquidation(liquidation: any, market?: Market): import("./base/types.js").Liquidation;
241
+ closePosition(symbol: string, side?: OrderSide, params?: {}): Promise<Order>;
241
242
  setPositionMode(hedged: boolean, symbol?: Str, params?: {}): Promise<any>;
242
243
  }