ccxt 4.5.10 → 4.5.12

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 (113) hide show
  1. package/README.md +32 -33
  2. package/dist/ccxt.browser.min.js +3 -3
  3. package/dist/cjs/ccxt.js +1 -6
  4. package/dist/cjs/src/apex.js +9 -0
  5. package/dist/cjs/src/base/Exchange.js +15 -3
  6. package/dist/cjs/src/base/functions/throttle.js +1 -1
  7. package/dist/cjs/src/binance.js +1 -1
  8. package/dist/cjs/src/bingx.js +1 -1
  9. package/dist/cjs/src/bitfinex.js +4 -2
  10. package/dist/cjs/src/bitget.js +20 -2
  11. package/dist/cjs/src/bitmart.js +2 -2
  12. package/dist/cjs/src/btcmarkets.js +4 -2
  13. package/dist/cjs/src/bybit.js +28 -7
  14. package/dist/cjs/src/coinbase.js +1 -0
  15. package/dist/cjs/src/coincatch.js +2 -1
  16. package/dist/cjs/src/deribit.js +21 -19
  17. package/dist/cjs/src/kraken.js +4 -0
  18. package/dist/cjs/src/krakenfutures.js +26 -5
  19. package/dist/cjs/src/kucoin.js +1 -1
  20. package/dist/cjs/src/latoken.js +1 -0
  21. package/dist/cjs/src/mexc.js +1 -0
  22. package/dist/cjs/src/okx.js +18 -9
  23. package/dist/cjs/src/onetrading.js +2 -1
  24. package/dist/cjs/src/phemex.js +1 -0
  25. package/dist/cjs/src/pro/alpaca.js +17 -1
  26. package/dist/cjs/src/pro/apex.js +17 -0
  27. package/dist/cjs/src/pro/binance.js +5 -5
  28. package/dist/cjs/src/pro/bitget.js +10 -3
  29. package/dist/cjs/src/pro/coinbase.js +8 -7
  30. package/dist/cjs/src/pro/htx.js +22 -3
  31. package/dist/cjs/src/pro/hyperliquid.js +4 -0
  32. package/dist/cjs/src/pro/kraken.js +282 -458
  33. package/dist/cjs/src/pro/mexc.js +16 -11
  34. package/dist/cjs/src/pro/woo.js +48 -4
  35. package/dist/cjs/src/probit.js +1 -1
  36. package/dist/cjs/src/woo.js +20 -2
  37. package/dist/cjs/src/xt.js +1 -1
  38. package/js/ccxt.d.ts +2 -8
  39. package/js/ccxt.js +2 -6
  40. package/js/src/abstract/coinbase.d.ts +1 -0
  41. package/js/src/abstract/coinbaseadvanced.d.ts +1 -0
  42. package/js/src/abstract/phemex.d.ts +1 -0
  43. package/js/src/abstract/xt.d.ts +1 -1
  44. package/js/src/apex.js +9 -0
  45. package/js/src/base/Exchange.d.ts +5 -2
  46. package/js/src/base/Exchange.js +15 -3
  47. package/js/src/base/functions/throttle.js +1 -1
  48. package/js/src/binance.js +1 -1
  49. package/js/src/bingx.js +1 -1
  50. package/js/src/bitfinex.d.ts +1 -1
  51. package/js/src/bitfinex.js +4 -2
  52. package/js/src/bitget.d.ts +15 -2
  53. package/js/src/bitget.js +20 -2
  54. package/js/src/bithumb.d.ts +1 -1
  55. package/js/src/bitmart.js +2 -2
  56. package/js/src/bitmex.d.ts +1 -1
  57. package/js/src/bitopro.d.ts +1 -1
  58. package/js/src/bitso.d.ts +1 -1
  59. package/js/src/bittrade.d.ts +1 -1
  60. package/js/src/blofin.d.ts +1 -1
  61. package/js/src/btcmarkets.d.ts +1 -1
  62. package/js/src/btcmarkets.js +4 -2
  63. package/js/src/bybit.d.ts +1 -1
  64. package/js/src/bybit.js +28 -7
  65. package/js/src/coinbase.d.ts +1 -1
  66. package/js/src/coinbase.js +1 -0
  67. package/js/src/coincatch.js +2 -1
  68. package/js/src/coinex.d.ts +1 -1
  69. package/js/src/cryptocom.d.ts +1 -1
  70. package/js/src/deribit.js +21 -19
  71. package/js/src/digifinex.d.ts +1 -1
  72. package/js/src/hibachi.d.ts +1 -1
  73. package/js/src/htx.d.ts +1 -1
  74. package/js/src/hyperliquid.d.ts +1 -1
  75. package/js/src/kraken.d.ts +1 -1
  76. package/js/src/kraken.js +4 -0
  77. package/js/src/krakenfutures.js +26 -5
  78. package/js/src/kucoin.js +1 -1
  79. package/js/src/kucoinfutures.d.ts +1 -1
  80. package/js/src/latoken.js +1 -0
  81. package/js/src/mexc.d.ts +1 -1
  82. package/js/src/mexc.js +1 -0
  83. package/js/src/oceanex.d.ts +1 -1
  84. package/js/src/okx.d.ts +1 -1
  85. package/js/src/okx.js +18 -9
  86. package/js/src/onetrading.d.ts +1 -1
  87. package/js/src/onetrading.js +2 -1
  88. package/js/src/phemex.js +1 -0
  89. package/js/src/pro/alpaca.js +17 -1
  90. package/js/src/pro/apex.d.ts +2 -0
  91. package/js/src/pro/apex.js +18 -1
  92. package/js/src/pro/binance.js +5 -5
  93. package/js/src/pro/bitget.d.ts +1 -0
  94. package/js/src/pro/bitget.js +10 -3
  95. package/js/src/pro/bitvavo.d.ts +2 -2
  96. package/js/src/pro/coinbase.js +8 -7
  97. package/js/src/pro/htx.js +22 -3
  98. package/js/src/pro/hyperliquid.js +4 -0
  99. package/js/src/pro/kraken.d.ts +7 -8
  100. package/js/src/pro/kraken.js +282 -458
  101. package/js/src/pro/mexc.js +16 -11
  102. package/js/src/pro/woo.js +48 -4
  103. package/js/src/probit.js +1 -1
  104. package/js/src/timex.d.ts +1 -1
  105. package/js/src/woo.js +20 -2
  106. package/js/src/xt.js +1 -1
  107. package/package.json +1 -1
  108. package/js/src/abstract/okcoin.d.ts +0 -77
  109. package/js/src/abstract/okcoin.js +0 -11
  110. package/js/src/okcoin.d.ts +0 -346
  111. package/js/src/okcoin.js +0 -3214
  112. package/js/src/pro/okcoin.d.ts +0 -91
  113. package/js/src/pro/okcoin.js +0 -763
@@ -1488,7 +1488,8 @@ class onetrading extends onetrading$1["default"] {
1488
1488
  // "a10e9bd1-8f72-4cfe-9f1b-7f1c8a9bd8ee"
1489
1489
  // ]
1490
1490
  //
1491
- return response;
1491
+ const order = this.safeOrder({ 'info': response });
1492
+ return [order];
1492
1493
  }
1493
1494
  /**
1494
1495
  * @method
@@ -192,6 +192,7 @@ class phemex extends phemex$1["default"] {
192
192
  'accounts/accountPositions': 1,
193
193
  'g-accounts/accountPositions': 1,
194
194
  'g-accounts/positions': 25,
195
+ 'g-accounts/risk-unit': 1,
195
196
  'api-data/futures/funding-fees': 5,
196
197
  'api-data/g-futures/funding-fees': 5,
197
198
  'api-data/futures/orders': 5,
@@ -13,15 +13,31 @@ class alpaca extends alpaca$1["default"] {
13
13
  return this.deepExtend(super.describe(), {
14
14
  'has': {
15
15
  'ws': true,
16
+ 'createOrderWithTakeProfitAndStopLossWs': false,
17
+ 'createReduceOnlyOrderWs': false,
18
+ 'createStopLossOrderWs': false,
19
+ 'createTakeProfitOrderWs': false,
20
+ 'fetchPositionForSymbolWs': false,
21
+ 'fetchPositionsForSymbolWs': false,
22
+ 'fetchPositionsWs': false,
23
+ 'fetchPositionWs': false,
24
+ 'unWatchPositions': false,
16
25
  'watchBalance': false,
26
+ 'watchLiquidations': false,
27
+ 'watchLiquidationsForSymbols': false,
28
+ 'watchMarkPrice': false,
29
+ 'watchMarkPrices': false,
30
+ 'watchMyLiquidations': false,
31
+ 'watchMyLiquidationsForSymbols': false,
17
32
  'watchMyTrades': true,
18
33
  'watchOHLCV': true,
19
34
  'watchOrderBook': true,
20
35
  'watchOrders': true,
36
+ 'watchPosition': false,
37
+ 'watchPositions': false,
21
38
  'watchTicker': true,
22
39
  'watchTickers': false,
23
40
  'watchTrades': true,
24
- 'watchPosition': false,
25
41
  },
26
42
  'urls': {
27
43
  'api': {
@@ -944,6 +944,7 @@ class apex extends apex$1["default"] {
944
944
  'recentlyTrade': this.handleTrades,
945
945
  'pong': this.handlePong,
946
946
  'auth': this.handleAuthenticate,
947
+ 'ping': this.handlePing,
947
948
  };
948
949
  const exacMethod = this.safeValue(methods, topic);
949
950
  if (exacMethod !== undefined) {
@@ -973,6 +974,19 @@ class apex extends apex$1["default"] {
973
974
  'op': 'ping',
974
975
  };
975
976
  }
977
+ async pong(client, message) {
978
+ //
979
+ // {"op": "ping", "args": ["1761069137485"]}
980
+ //
981
+ const timeStamp = this.milliseconds();
982
+ try {
983
+ await client.send({ 'args': [timeStamp.toString()], 'op': 'pong' });
984
+ }
985
+ catch (e) {
986
+ const error = new errors.NetworkError(this.id + ' handlePing failed with error ' + this.json(e));
987
+ client.reset(error);
988
+ }
989
+ }
976
990
  handlePong(client, message) {
977
991
  //
978
992
  // {
@@ -987,6 +1001,9 @@ class apex extends apex$1["default"] {
987
1001
  client.lastPong = this.safeInteger(message, 'pong');
988
1002
  return message;
989
1003
  }
1004
+ handlePing(client, message) {
1005
+ this.spawn(this.pong, client, message);
1006
+ }
990
1007
  handleAccount(client, message) {
991
1008
  const contents = this.safeDict(message, 'contents', {});
992
1009
  const fills = this.safeList(contents, 'fills', []);
@@ -424,7 +424,7 @@ class binance extends binance$1["default"] {
424
424
  // }
425
425
  //
426
426
  const marketId = this.safeString(liquidation, 's');
427
- market = this.safeMarket(marketId, market);
427
+ market = this.safeMarket(marketId, market, undefined, 'swap');
428
428
  const timestamp = this.safeInteger(liquidation, 'T');
429
429
  return this.safeLiquidation({
430
430
  'info': liquidation,
@@ -546,8 +546,8 @@ class binance extends binance$1["default"] {
546
546
  return;
547
547
  }
548
548
  const marketId = this.safeString(message, 's');
549
- const market = this.safeMarket(marketId);
550
- const symbol = this.safeSymbol(marketId);
549
+ const market = this.safeMarket(marketId, undefined, undefined, 'swap');
550
+ const symbol = this.safeSymbol(marketId, market);
551
551
  const liquidation = this.parseWsLiquidation(message, market);
552
552
  let myLiquidations = this.safeValue(this.myLiquidations, symbol);
553
553
  if (myLiquidations === undefined) {
@@ -921,7 +921,7 @@ class binance extends binance$1["default"] {
921
921
  // }
922
922
  //
923
923
  const isSpot = this.isSpotUrl(client);
924
- const marketType = (isSpot) ? 'spot' : 'contract';
924
+ const marketType = (isSpot) ? 'spot' : 'swap';
925
925
  const marketId = this.safeString(message, 's');
926
926
  const market = this.safeMarket(marketId, undefined, undefined, marketType);
927
927
  const symbol = market['symbol'];
@@ -4025,7 +4025,7 @@ class binance extends binance$1["default"] {
4025
4025
  return this.safePosition({
4026
4026
  'info': position,
4027
4027
  'id': undefined,
4028
- 'symbol': this.safeSymbol(marketId, undefined, undefined, 'contract'),
4028
+ 'symbol': this.safeSymbol(marketId, undefined, undefined, 'swap'),
4029
4029
  'notional': undefined,
4030
4030
  'marginMode': this.safeString(position, 'mt'),
4031
4031
  'liquidationPrice': undefined,
@@ -1492,6 +1492,7 @@ class bitget extends bitget$1["default"] {
1492
1492
  * @name bitget#watchOrders
1493
1493
  * @description watches information on multiple orders made by the user
1494
1494
  * @see https://www.bitget.com/api-doc/spot/websocket/private/Order-Channel
1495
+ * @see https://www.bitget.com/api-doc/spot/websocket/private/Plan-Order-Channel
1495
1496
  * @see https://www.bitget.com/api-doc/contract/websocket/private/Order-Channel
1496
1497
  * @see https://www.bitget.com/api-doc/contract/websocket/private/Plan-Order-Channel
1497
1498
  * @see https://www.bitget.com/api-doc/margin/cross/websocket/private/Cross-Orders
@@ -2743,7 +2744,9 @@ class bitget extends bitget$1["default"] {
2743
2744
  delete client.subscriptions[messageHash];
2744
2745
  }
2745
2746
  const error = new errors.UnsubscribeError(this.id + ' orderbook ' + symbol);
2746
- client.reject(error, subMessageHash);
2747
+ if (subMessageHash in client.futures) {
2748
+ client.reject(error, subMessageHash);
2749
+ }
2747
2750
  client.resolve(true, messageHash);
2748
2751
  }
2749
2752
  handleTradesUnSubscription(client, message) {
@@ -2768,7 +2771,9 @@ class bitget extends bitget$1["default"] {
2768
2771
  delete client.subscriptions[messageHash];
2769
2772
  }
2770
2773
  const error = new errors.UnsubscribeError(this.id + ' trades ' + symbol);
2771
- client.reject(error, subMessageHash);
2774
+ if (subMessageHash in client.futures) {
2775
+ client.reject(error, subMessageHash);
2776
+ }
2772
2777
  client.resolve(true, messageHash);
2773
2778
  }
2774
2779
  handleTickerUnSubscription(client, message) {
@@ -2793,7 +2798,9 @@ class bitget extends bitget$1["default"] {
2793
2798
  delete client.subscriptions[messageHash];
2794
2799
  }
2795
2800
  const error = new errors.UnsubscribeError(this.id + ' ticker ' + symbol);
2796
- client.reject(error, subMessageHash);
2801
+ if (subMessageHash in client.futures) {
2802
+ client.reject(error, subMessageHash);
2803
+ }
2797
2804
  client.resolve(true, messageHash);
2798
2805
  }
2799
2806
  handleOHLCVUnSubscription(client, message) {
@@ -773,8 +773,9 @@ class coinbase extends coinbase$1["default"] {
773
773
  const id = this.safeString(order, 'order_id');
774
774
  const clientOrderId = this.safeString(order, 'client_order_id');
775
775
  const marketId = this.safeString(order, 'product_id');
776
- const datetime = this.safeString(order, 'time');
776
+ const datetime = this.safeString2(order, 'time', 'creation_time');
777
777
  market = this.safeMarket(marketId, market);
778
+ const stopPrice = this.safeString(order, 'stop_price');
778
779
  return this.safeOrder({
779
780
  'info': order,
780
781
  'symbol': this.safeString(market, 'symbol'),
@@ -786,12 +787,12 @@ class coinbase extends coinbase$1["default"] {
786
787
  'type': this.safeString(order, 'order_type'),
787
788
  'timeInForce': undefined,
788
789
  'postOnly': undefined,
789
- 'side': this.safeString(order, 'side'),
790
- 'price': undefined,
791
- 'stopPrice': undefined,
792
- 'triggerPrice': undefined,
793
- 'amount': undefined,
794
- 'cost': undefined,
790
+ 'side': this.safeString2(order, 'side', 'order_side'),
791
+ 'price': this.safeString(order, 'limit_price'),
792
+ 'stopPrice': stopPrice,
793
+ 'triggerPrice': stopPrice,
794
+ 'amount': this.safeString(order, 'cumulative_quantity'),
795
+ 'cost': this.omitZero(this.safeString(order, 'filled_value')),
795
796
  'average': this.safeString(order, 'avg_price'),
796
797
  'filled': this.safeString(order, 'cumulative_quantity'),
797
798
  'remaining': this.safeString(order, 'leaves_quantity'),
@@ -928,24 +928,40 @@ class htx extends htx$1["default"] {
928
928
  //
929
929
  // spot
930
930
  //
931
+ // for new order creation
932
+ //
931
933
  // {
932
934
  // "action":"push",
933
935
  // "ch":"orders#btcusdt", // or "orders#*" for global subscriptions
934
936
  // "data": {
937
+ // "orderStatus": "submitted",
938
+ // "eventType": "creation",
939
+ // "totalTradeAmount": 0 // for "submitted" order status
940
+ // "orderCreateTime": 1645116048355, // only when `submitted` status
935
941
  // "orderSource": "spot-web",
936
- // "orderCreateTime": 1645116048355,
937
942
  // "accountId": 44234548,
938
943
  // "orderPrice": "100",
939
944
  // "orderSize": "0.05",
940
945
  // "symbol": "ethusdt",
941
946
  // "type": "buy-limit",
942
947
  // "orderId": "478861479986886",
943
- // "eventType": "creation",
944
948
  // "clientOrderId": '',
945
- // "orderStatus": "submitted"
946
949
  // }
947
950
  // }
948
951
  //
952
+ // for filled order, additional fields are present:
953
+ //
954
+ // "orderStatus": "filled",
955
+ // "eventType": "trade",
956
+ // "totalTradeAmount": "5.9892649859",
957
+ // "tradePrice": "0.676669",
958
+ // "tradeVolume": "8.8511",
959
+ // "tradeTime": 1760427775894,
960
+ // "aggressor": false,
961
+ // "execAmt": "8.8511",
962
+ // "tradeId": 100599712781,
963
+ // "remainAmt": "0",
964
+ //
949
965
  // spot wrapped trade
950
966
  //
951
967
  // {
@@ -1057,6 +1073,9 @@ class htx extends htx$1["default"] {
1057
1073
  'symbol': market['symbol'],
1058
1074
  'filled': this.parseNumber(filled),
1059
1075
  'remaining': this.parseNumber(remaining),
1076
+ 'price': this.safeNumber(data, 'orderPrice'),
1077
+ 'amount': this.safeNumber(data, 'orderSize'),
1078
+ 'info': data,
1060
1079
  };
1061
1080
  parsedOrder = order;
1062
1081
  }
@@ -453,8 +453,10 @@ class hyperliquid extends hyperliquid$1["default"] {
453
453
  const assetObject = spotAssets[i];
454
454
  const marketId = this.safeString(assetObject, 'coin');
455
455
  const market = this.safeMarket(marketId, undefined, undefined, 'spot');
456
+ const symbol = market['symbol'];
456
457
  const ticker = this.parseWsTicker(assetObject, market);
457
458
  parsedTickers.push(ticker);
459
+ this.tickers[symbol] = ticker;
458
460
  }
459
461
  // perpetuals
460
462
  const meta = this.safeDict(rawData, 'meta', {});
@@ -464,7 +466,9 @@ class hyperliquid extends hyperliquid$1["default"] {
464
466
  const data = this.extend(this.safeDict(universe, i, {}), this.safeDict(assetCtxs, i, {}));
465
467
  const id = data['name'] + '/USDC:USDC';
466
468
  const market = this.safeMarket(id, undefined, undefined, 'swap');
469
+ const symbol = market['symbol'];
467
470
  const ticker = this.parseWsTicker(data, market);
471
+ this.tickers[symbol] = ticker;
468
472
  parsedTickers.push(ticker);
469
473
  }
470
474
  const tickers = this.indexBy(parsedTickers, 'symbol');