ccxt 4.3.62 → 4.3.64

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 (86) hide show
  1. package/README.md +3 -3
  2. package/dist/ccxt.browser.min.js +3 -3
  3. package/dist/cjs/ccxt.js +2 -1
  4. package/dist/cjs/src/ace.js +34 -15
  5. package/dist/cjs/src/alpaca.js +1 -0
  6. package/dist/cjs/src/base/Exchange.js +11 -4
  7. package/dist/cjs/src/base/errors.js +8 -1
  8. package/dist/cjs/src/binance.js +6 -9
  9. package/dist/cjs/src/bingx.js +554 -151
  10. package/dist/cjs/src/bitfinex.js +1 -1
  11. package/dist/cjs/src/bitfinex2.js +1 -1
  12. package/dist/cjs/src/cryptocom.js +18 -2
  13. package/dist/cjs/src/independentreserve.js +107 -0
  14. package/dist/cjs/src/kucoin.js +2 -0
  15. package/dist/cjs/src/mercado.js +5 -1
  16. package/dist/cjs/src/pro/binance.js +58 -34
  17. package/dist/cjs/src/pro/bitfinex2.js +6 -3
  18. package/dist/cjs/src/pro/bitget.js +4 -1
  19. package/dist/cjs/src/pro/bitmart.js +3 -3
  20. package/dist/cjs/src/pro/bitvavo.js +1 -1
  21. package/dist/cjs/src/pro/bybit.js +44 -18
  22. package/dist/cjs/src/pro/cryptocom.js +7 -1
  23. package/dist/cjs/src/pro/gate.js +7 -3
  24. package/dist/cjs/src/pro/gemini.js +4 -2
  25. package/dist/cjs/src/pro/htx.js +5 -1
  26. package/dist/cjs/src/pro/independentreserve.js +5 -3
  27. package/dist/cjs/src/pro/kraken.js +82 -4
  28. package/dist/cjs/src/pro/okx.js +3 -3
  29. package/dist/cjs/src/pro/onetrading.js +3 -2
  30. package/dist/cjs/src/pro/poloniexfutures.js +5 -1
  31. package/dist/cjs/src/pro/vertex.js +3 -2
  32. package/dist/cjs/src/pro/woo.js +2 -1
  33. package/dist/cjs/src/pro/woofipro.js +3 -2
  34. package/dist/cjs/src/woo.js +344 -81
  35. package/js/ccxt.d.ts +3 -3
  36. package/js/ccxt.js +3 -3
  37. package/js/src/abstract/cryptocom.d.ts +11 -0
  38. package/js/src/abstract/kucoin.d.ts +1 -0
  39. package/js/src/abstract/kucoinfutures.d.ts +1 -0
  40. package/js/src/abstract/woo.d.ts +3 -0
  41. package/js/src/ace.js +34 -15
  42. package/js/src/alpaca.js +1 -0
  43. package/js/src/base/Exchange.d.ts +1 -0
  44. package/js/src/base/Exchange.js +11 -4
  45. package/js/src/base/errorHierarchy.d.ts +3 -1
  46. package/js/src/base/errorHierarchy.js +3 -1
  47. package/js/src/base/errors.d.ts +5 -1
  48. package/js/src/base/errors.js +8 -2
  49. package/js/src/binance.js +6 -9
  50. package/js/src/bingx.d.ts +4 -1
  51. package/js/src/bingx.js +554 -151
  52. package/js/src/bitfinex.js +1 -1
  53. package/js/src/bitfinex2.js +1 -1
  54. package/js/src/coinbaseinternational.d.ts +1 -1
  55. package/js/src/cryptocom.js +18 -2
  56. package/js/src/independentreserve.d.ts +3 -1
  57. package/js/src/independentreserve.js +106 -0
  58. package/js/src/kucoin.js +2 -0
  59. package/js/src/mercado.js +5 -1
  60. package/js/src/pro/binance.d.ts +1 -0
  61. package/js/src/pro/binance.js +59 -35
  62. package/js/src/pro/bitfinex2.js +7 -4
  63. package/js/src/pro/bitget.js +5 -2
  64. package/js/src/pro/bitmart.js +3 -3
  65. package/js/src/pro/bitvavo.js +1 -1
  66. package/js/src/pro/bybit.d.ts +1 -0
  67. package/js/src/pro/bybit.js +44 -18
  68. package/js/src/pro/cryptocom.js +8 -2
  69. package/js/src/pro/gate.js +8 -4
  70. package/js/src/pro/gemini.js +4 -2
  71. package/js/src/pro/htx.js +6 -2
  72. package/js/src/pro/independentreserve.js +6 -4
  73. package/js/src/pro/kraken.d.ts +3 -1
  74. package/js/src/pro/kraken.js +83 -5
  75. package/js/src/pro/okx.js +4 -4
  76. package/js/src/pro/onetrading.js +3 -2
  77. package/js/src/pro/poloniexfutures.js +6 -2
  78. package/js/src/pro/vertex.js +3 -2
  79. package/js/src/pro/woo.js +2 -1
  80. package/js/src/pro/woofipro.js +3 -2
  81. package/js/src/whitebit.d.ts +1 -1
  82. package/js/src/woo.d.ts +6 -2
  83. package/js/src/woo.js +344 -81
  84. package/js/src/xt.d.ts +3 -3
  85. package/js/src/zonda.d.ts +1 -1
  86. package/package.json +1 -1
@@ -30,7 +30,7 @@ class woo extends woo$1 {
30
30
  'swap': true,
31
31
  'future': false,
32
32
  'option': false,
33
- 'addMargin': false,
33
+ 'addMargin': true,
34
34
  'cancelAllOrders': true,
35
35
  'cancelAllOrdersAfter': true,
36
36
  'cancelOrder': true,
@@ -200,6 +200,7 @@ class woo extends woo$1 {
200
200
  'positions': 3.33,
201
201
  'position/{symbol}': 3.33,
202
202
  'client/transaction_history': 60,
203
+ 'client/futures_leverage': 60,
203
204
  },
204
205
  'post': {
205
206
  'order': 5,
@@ -212,6 +213,8 @@ class woo extends woo$1 {
212
213
  'client/account_mode': 120,
213
214
  'client/position_mode': 5,
214
215
  'client/leverage': 120,
216
+ 'client/futures_leverage': 30,
217
+ 'client/isolated_margin': 30,
215
218
  },
216
219
  'delete': {
217
220
  'order': 1,
@@ -935,16 +938,18 @@ class woo extends woo$1 {
935
938
  * @param {float} amount how much of currency you want to trade in units of base currency
936
939
  * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
937
940
  * @param {object} [params] extra parameters specific to the exchange API endpoint
941
+ * @param {string} [params.marginMode] *for swap markets only* 'cross' or 'isolated', default 'cross'
938
942
  * @param {float} [params.triggerPrice] The price a trigger order is triggered at
939
943
  * @param {object} [params.takeProfit] *takeProfit object in params* containing the triggerPrice at which the attached take profit order will be triggered (perpetual swap markets only)
940
944
  * @param {float} [params.takeProfit.triggerPrice] take profit trigger price
941
945
  * @param {object} [params.stopLoss] *stopLoss object in params* containing the triggerPrice at which the attached stop loss order will be triggered (perpetual swap markets only)
942
946
  * @param {float} [params.stopLoss.triggerPrice] stop loss trigger price
943
- * @param {float} [params.algoType] 'STOP'or 'TRAILING_STOP' or 'OCO' or 'CLOSE_POSITION'
947
+ * @param {float} [params.algoType] 'STOP' or 'TRAILING_STOP' or 'OCO' or 'CLOSE_POSITION'
944
948
  * @param {float} [params.cost] *spot market buy only* the quote quantity that can be used as an alternative for the amount
945
949
  * @param {string} [params.trailingAmount] the quote amount to trail away from the current market price
946
950
  * @param {string} [params.trailingPercent] the percent to trail away from the current market price
947
951
  * @param {string} [params.trailingTriggerPrice] the price to trigger a trailing order, default uses the price argument
952
+ * @param {string} [params.position_side] 'SHORT' or 'LONG' - if position mode is HEDGE_MODE and the trading involves futures, then is required, otherwise this parameter is not required
948
953
  * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
949
954
  */
950
955
  const reduceOnly = this.safeBool2(params, 'reduceOnly', 'reduce_only');
@@ -957,6 +962,11 @@ class woo extends woo$1 {
957
962
  'symbol': market['id'],
958
963
  'side': orderSide,
959
964
  };
965
+ let marginMode = undefined;
966
+ [marginMode, params] = this.handleMarginModeAndParams('createOrder', params);
967
+ if (marginMode !== undefined) {
968
+ request['margin_mode'] = this.encodeMarginMode(marginMode);
969
+ }
960
970
  const stopPrice = this.safeNumber2(params, 'triggerPrice', 'stopPrice');
961
971
  const stopLoss = this.safeValue(params, 'stopLoss');
962
972
  const takeProfit = this.safeValue(params, 'takeProfit');
@@ -1118,6 +1128,13 @@ class woo extends woo$1 {
1118
1128
  order['type'] = type;
1119
1129
  return order;
1120
1130
  }
1131
+ encodeMarginMode(mode) {
1132
+ const modes = {
1133
+ 'cross': 'CROSS',
1134
+ 'isolated': 'ISOLATED',
1135
+ };
1136
+ return this.safeString(modes, mode, mode);
1137
+ }
1121
1138
  async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
1122
1139
  /**
1123
1140
  * @method
@@ -2654,7 +2671,24 @@ class woo extends woo$1 {
2654
2671
  };
2655
2672
  }
2656
2673
  async fetchFundingHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
2674
+ /**
2675
+ * @method
2676
+ * @name woo#fetchFundingHistory
2677
+ * @description fetch the history of funding payments paid and received on this account
2678
+ * @see https://docs.woo.org/#get-funding-fee-history
2679
+ * @param {string} [symbol] unified market symbol
2680
+ * @param {int} [since] the earliest time in ms to fetch funding history for
2681
+ * @param {int} [limit] the maximum number of funding history structures to retrieve
2682
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2683
+ * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
2684
+ * @returns {object} a [funding history structure]{@link https://docs.ccxt.com/#/?id=funding-history-structure}
2685
+ */
2657
2686
  await this.loadMarkets();
2687
+ let paginate = false;
2688
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchFundingHistory', 'paginate');
2689
+ if (paginate) {
2690
+ return await this.fetchPaginatedCallCursor('fetchFundingHistory', symbol, since, limit, params, 'page', 'page', 1, 500);
2691
+ }
2658
2692
  const request = {};
2659
2693
  let market = undefined;
2660
2694
  if (symbol !== undefined) {
@@ -2664,6 +2698,12 @@ class woo extends woo$1 {
2664
2698
  if (since !== undefined) {
2665
2699
  request['start_t'] = since;
2666
2700
  }
2701
+ if (limit !== undefined) {
2702
+ request['size'] = limit;
2703
+ }
2704
+ else {
2705
+ request['size'] = 5000;
2706
+ }
2667
2707
  const response = await this.v1PrivateGetFundingFeeHistory(this.extend(request, params));
2668
2708
  //
2669
2709
  // {
@@ -2688,7 +2728,15 @@ class woo extends woo$1 {
2688
2728
  // "success":true
2689
2729
  // }
2690
2730
  //
2731
+ const meta = this.safeDict(response, 'meta', {});
2732
+ const cursor = this.safeInteger(meta, 'current_page');
2691
2733
  const result = this.safeList(response, 'rows', []);
2734
+ const resultLength = result.length;
2735
+ if (resultLength > 0) {
2736
+ const lastItem = result[resultLength - 1];
2737
+ lastItem['page'] = cursor;
2738
+ result[resultLength - 1] = lastItem;
2739
+ }
2692
2740
  return this.parseIncomes(result, market, since, limit);
2693
2741
  }
2694
2742
  parseFundingRate(fundingRate, market = undefined) {
@@ -2879,61 +2927,204 @@ class woo extends woo$1 {
2879
2927
  * @see https://docs.woo.org/#get-account-information-new
2880
2928
  * @param {string} symbol unified market symbol
2881
2929
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2930
+ * @param {string} [params.marginMode] *for swap markets only* 'cross' or 'isolated'
2931
+ * @param {string} [params.position_mode] *for swap markets only* 'ONE_WAY' or 'HEDGE_MODE'
2882
2932
  * @returns {object} a [leverage structure]{@link https://docs.ccxt.com/#/?id=leverage-structure}
2883
2933
  */
2884
2934
  await this.loadMarkets();
2885
2935
  const market = this.market(symbol);
2886
- const response = await this.v3PrivateGetAccountinfo(params);
2887
- //
2888
- // {
2889
- // "success": true,
2890
- // "data": {
2891
- // "applicationId": "dsa",
2892
- // "account": "dsa",
2893
- // "alias": "haha",
2894
- // "accountMode": "MARGIN",
2895
- // "leverage": 1,
2896
- // "takerFeeRate": 1,
2897
- // "makerFeeRate": 1,
2898
- // "interestRate": 1,
2899
- // "futuresTakerFeeRate": 1,
2900
- // "futuresMakerFeeRate": 1,
2901
- // "otpauth": true,
2902
- // "marginRatio": 1,
2903
- // "openMarginRatio": 1,
2904
- // "initialMarginRatio": 1,
2905
- // "maintenanceMarginRatio": 1,
2906
- // "totalCollateral": 1,
2907
- // "freeCollateral": 1,
2908
- // "totalAccountValue": 1,
2909
- // "totalVaultValue": 1,
2910
- // "totalStakingValue": 1
2911
- // },
2912
- // "timestamp": 1673323685109
2913
- // }
2914
- //
2936
+ let response = undefined;
2937
+ if (market['spot']) {
2938
+ response = await this.v3PrivateGetAccountinfo(params);
2939
+ //
2940
+ // {
2941
+ // "success": true,
2942
+ // "data": {
2943
+ // "applicationId": "dsa",
2944
+ // "account": "dsa",
2945
+ // "alias": "haha",
2946
+ // "accountMode": "MARGIN",
2947
+ // "leverage": 1,
2948
+ // "takerFeeRate": 1,
2949
+ // "makerFeeRate": 1,
2950
+ // "interestRate": 1,
2951
+ // "futuresTakerFeeRate": 1,
2952
+ // "futuresMakerFeeRate": 1,
2953
+ // "otpauth": true,
2954
+ // "marginRatio": 1,
2955
+ // "openMarginRatio": 1,
2956
+ // "initialMarginRatio": 1,
2957
+ // "maintenanceMarginRatio": 1,
2958
+ // "totalCollateral": 1,
2959
+ // "freeCollateral": 1,
2960
+ // "totalAccountValue": 1,
2961
+ // "totalVaultValue": 1,
2962
+ // "totalStakingValue": 1
2963
+ // },
2964
+ // "timestamp": 1673323685109
2965
+ // }
2966
+ //
2967
+ }
2968
+ else if (market['swap']) {
2969
+ const request = {
2970
+ 'symbol': market['id'],
2971
+ };
2972
+ let marginMode = undefined;
2973
+ [marginMode, params] = this.handleMarginModeAndParams('fetchLeverage', params, 'cross');
2974
+ request['margin_mode'] = this.encodeMarginMode(marginMode);
2975
+ response = await this.v1PrivateGetClientFuturesLeverage(this.extend(request, params));
2976
+ //
2977
+ // HEDGE_MODE
2978
+ // {
2979
+ // "success": true,
2980
+ // "data":
2981
+ // {
2982
+ // "symbol": "PERP_ETH_USDT",
2983
+ // "default_margin_mode": "CROSS",
2984
+ // "position_mode": "HEDGE_MODE",
2985
+ // "details": [
2986
+ // {
2987
+ // "position_side": "LONG",
2988
+ // "leverage": 10
2989
+ // },
2990
+ // {
2991
+ // "position_side": "SHORT",
2992
+ // "leverage": 10
2993
+ // }
2994
+ // ]
2995
+ // },
2996
+ // "timestamp": 1720886470482
2997
+ // }
2998
+ //
2999
+ // ONE_WAY
3000
+ // {
3001
+ // "success": true,
3002
+ // "data": {
3003
+ // "symbol": "PERP_ETH_USDT",
3004
+ // "default_margin_mode": "ISOLATED",
3005
+ // "position_mode": "ONE_WAY",
3006
+ // "details": [
3007
+ // {
3008
+ // "position_side": "BOTH",
3009
+ // "leverage": 10
3010
+ // }
3011
+ // ]
3012
+ // },
3013
+ // "timestamp": 1720886810317
3014
+ // }
3015
+ //
3016
+ }
3017
+ else {
3018
+ throw new errors.NotSupported(this.id + ' fetchLeverage() is not supported for ' + market['type'] + ' markets');
3019
+ }
2915
3020
  const data = this.safeDict(response, 'data', {});
2916
3021
  return this.parseLeverage(data, market);
2917
3022
  }
2918
3023
  parseLeverage(leverage, market = undefined) {
2919
- const leverageValue = this.safeInteger(leverage, 'leverage');
3024
+ const marketId = this.safeString(leverage, 'symbol');
3025
+ market = this.safeMarket(marketId, market);
3026
+ const marginMode = this.safeStringLower(leverage, 'default_margin_mode');
3027
+ const spotLeverage = this.safeInteger(leverage, 'leverage');
3028
+ let longLeverage = spotLeverage;
3029
+ let shortLeverage = spotLeverage;
3030
+ const details = this.safeList(leverage, 'details', []);
3031
+ for (let i = 0; i < details.length; i++) {
3032
+ const position = this.safeDict(details, i, {});
3033
+ const positionLeverage = this.safeInteger(position, 'leverage');
3034
+ const side = this.safeString(position, 'position_side');
3035
+ if (side === 'BOTH') {
3036
+ longLeverage = positionLeverage;
3037
+ shortLeverage = positionLeverage;
3038
+ }
3039
+ else if (side === 'LONG') {
3040
+ longLeverage = positionLeverage;
3041
+ }
3042
+ else if (side === 'SHORT') {
3043
+ shortLeverage = positionLeverage;
3044
+ }
3045
+ }
2920
3046
  return {
2921
3047
  'info': leverage,
2922
3048
  'symbol': market['symbol'],
2923
- 'marginMode': undefined,
2924
- 'longLeverage': leverageValue,
2925
- 'shortLeverage': leverageValue,
3049
+ 'marginMode': marginMode,
3050
+ 'longLeverage': longLeverage,
3051
+ 'shortLeverage': shortLeverage,
2926
3052
  };
2927
3053
  }
2928
3054
  async setLeverage(leverage, symbol = undefined, params = {}) {
3055
+ /**
3056
+ * @method
3057
+ * @name woo#setLeverage
3058
+ * @description set the level of leverage for a market
3059
+ * @see https://docs.woo.org/#update-leverage-setting
3060
+ * @see https://docs.woo.org/#update-futures-leverage-setting
3061
+ * @param {float} leverage the rate of leverage (1, 2, 3, 4 or 5 for spot markets, 1, 2, 3, 4, 5, 10, 15, 20 for swap markets)
3062
+ * @param {string} [symbo] unified market symbol (is mandatory for swap markets)
3063
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
3064
+ * @param {string} [params.marginMode] *for swap markets only* 'cross' or 'isolated'
3065
+ * @param {string} [params.position_side] *for swap markets only* 'LONG' or 'SHORT' in hedge mode, 'BOTH' in one way mode.
3066
+ * @returns {object} response from the exchange
3067
+ */
2929
3068
  await this.loadMarkets();
2930
- if ((leverage < 1) || (leverage > 20)) {
2931
- throw new errors.BadRequest(this.id + ' leverage should be between 1 and 20');
2932
- }
2933
3069
  const request = {
2934
3070
  'leverage': leverage,
2935
3071
  };
2936
- return await this.v1PrivatePostClientLeverage(this.extend(request, params));
3072
+ let market = undefined;
3073
+ if (symbol !== undefined) {
3074
+ market = this.market(symbol);
3075
+ }
3076
+ if ((symbol === undefined) || market['spot']) {
3077
+ return await this.v1PrivatePostClientLeverage(this.extend(request, params));
3078
+ }
3079
+ else if (market['swap']) {
3080
+ request['symbol'] = market['id'];
3081
+ let marginMode = undefined;
3082
+ [marginMode, params] = this.handleMarginModeAndParams('fetchLeverage', params, 'cross');
3083
+ request['margin_mode'] = this.encodeMarginMode(marginMode);
3084
+ return await this.v1PrivatePostClientFuturesLeverage(this.extend(request, params));
3085
+ }
3086
+ else {
3087
+ throw new errors.NotSupported(this.id + ' fetchLeverage() is not supported for ' + market['type'] + ' markets');
3088
+ }
3089
+ }
3090
+ async addMargin(symbol, amount, params = {}) {
3091
+ /**
3092
+ * @method
3093
+ * @name woo#addMargin
3094
+ * @description add margin
3095
+ * @see https://docs.woo.org/#update-isolated-margin-setting
3096
+ * @param {string} symbol unified market symbol
3097
+ * @param {float} amount amount of margin to add
3098
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
3099
+ * @param {string} [params.position_side] 'LONG' or 'SHORT' in hedge mode, 'BOTH' in one way mode
3100
+ * @returns {object} a [margin structure]{@link https://docs.ccxt.com/#/?id=add-margin-structure}
3101
+ */
3102
+ return await this.modifyMarginHelper(symbol, amount, 'ADD', params);
3103
+ }
3104
+ async reduceMargin(symbol, amount, params = {}) {
3105
+ /**
3106
+ * @method
3107
+ * @name woo#reduceMargin
3108
+ * @description remove margin from a position
3109
+ * @see https://docs.woo.org/#update-isolated-margin-setting
3110
+ * @param {string} symbol unified market symbol
3111
+ * @param {float} amount amount of margin to remove
3112
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
3113
+ * @param {string} [params.position_side] 'LONG' or 'SHORT' in hedge mode, 'BOTH' in one way mode
3114
+ * @returns {object} a [margin structure]{@link https://docs.ccxt.com/#/?id=reduce-margin-structure}
3115
+ */
3116
+ return await this.modifyMarginHelper(symbol, amount, 'REDUCE', params);
3117
+ }
3118
+ async modifyMarginHelper(symbol, amount, type, params = {}) {
3119
+ await this.loadMarkets();
3120
+ const market = this.market(symbol);
3121
+ const request = {
3122
+ 'symbol': market['id'],
3123
+ 'adjust_token': 'USDT',
3124
+ 'adjust_amount': amount,
3125
+ 'action': type,
3126
+ };
3127
+ return await this.v1PrivatePostClientIsolatedMargin(this.extend(request, params));
2937
3128
  }
2938
3129
  async fetchPosition(symbol = undefined, params = {}) {
2939
3130
  await this.loadMarkets();
@@ -2944,17 +3135,26 @@ class woo extends woo$1 {
2944
3135
  const response = await this.v1PrivateGetPositionSymbol(this.extend(request, params));
2945
3136
  //
2946
3137
  // {
2947
- // "symbol":"PERP_ETC_USDT",
2948
- // "holding":0.0,
2949
- // "pnl_24_h":0,
2950
- // "settle_price":0.0,
2951
- // "average_open_price":0,
2952
- // "success":true,
2953
- // "mark_price":22.6955,
2954
- // "pending_short_qty":0.0,
2955
- // "pending_long_qty":0.0,
2956
- // "fee_24_h":0,
2957
- // "timestamp":"1652231044.920"
3138
+ // "symbol": "PERP_ETH_USDT",
3139
+ // "position_side": "BOTH",
3140
+ // "leverage": 10,
3141
+ // "margin_mode": "CROSS",
3142
+ // "average_open_price": 3139.9,
3143
+ // "isolated_margin_amount": 0.0,
3144
+ // "isolated_margin_token": "",
3145
+ // "opening_time": "1720627963.094",
3146
+ // "mark_price": 3155.19169891,
3147
+ // "pending_short_qty": 0.0,
3148
+ // "pending_long_qty": 0.0,
3149
+ // "holding": -0.7,
3150
+ // "pnl_24_h": 0.0,
3151
+ // "est_liq_price": 9107.40055552,
3152
+ // "settle_price": 3151.0319904,
3153
+ // "success": true,
3154
+ // "fee_24_h": 0.0,
3155
+ // "isolated_frozen_long": 0.0,
3156
+ // "isolated_frozen_short": 0.0,
3157
+ // "timestamp": "1720867502.544"
2958
3158
  // }
2959
3159
  //
2960
3160
  return this.parsePosition(response, market);
@@ -2965,24 +3165,54 @@ class woo extends woo$1 {
2965
3165
  //
2966
3166
  // {
2967
3167
  // "success": true,
2968
- // "data": {
3168
+ // "data":
3169
+ // {
2969
3170
  // "positions": [
2970
3171
  // {
2971
- // "symbol": "0_symbol",
2972
- // "holding": 1,
2973
- // "pendingLongQty": 0,
2974
- // "pendingShortQty": 1,
2975
- // "settlePrice": 1,
2976
- // "averageOpenPrice": 1,
2977
- // "pnl24H": 1,
2978
- // "fee24H": 1,
2979
- // "markPrice": 1,
2980
- // "estLiqPrice": 1,
2981
- // "timestamp": 12321321
3172
+ // "symbol": "PERP_ETH_USDT",
3173
+ // "holding": -1.0,
3174
+ // "pendingLongQty": 0.0,
3175
+ // "pendingShortQty": 0.0,
3176
+ // "settlePrice": 3143.2,
3177
+ // "averageOpenPrice": 3143.2,
3178
+ // "pnl24H": 0.0,
3179
+ // "fee24H": 1.5716,
3180
+ // "markPrice": 3134.97984158,
3181
+ // "estLiqPrice": 3436.176349,
3182
+ // "timestamp": 1720628031.463,
3183
+ // "adlQuantile": 5,
3184
+ // "positionSide": "BOTH",
3185
+ // "marginMode": "ISOLATED",
3186
+ // "isolatedMarginToken": "USDT",
3187
+ // "isolatedMarginAmount": 314.62426,
3188
+ // "isolatedFrozenLong": 0.0,
3189
+ // "isolatedFrozenShort": 0.0,
3190
+ // "leverage": 10
3191
+ // },
3192
+ // {
3193
+ // "symbol": "PERP_SOL_USDT",
3194
+ // "holding": -1.0,
3195
+ // "pendingLongQty": 0.0,
3196
+ // "pendingShortQty": 0.0,
3197
+ // "settlePrice": 141.89933923,
3198
+ // "averageOpenPrice": 171.38,
3199
+ // "pnl24H": 0.0,
3200
+ // "fee24H": 0.0,
3201
+ // "markPrice": 141.65155427,
3202
+ // "estLiqPrice": 4242.73548551,
3203
+ // "timestamp": 1720616702.68,
3204
+ // "adlQuantile": 5,
3205
+ // "positionSide": "BOTH",
3206
+ // "marginMode": "CROSS",
3207
+ // "isolatedMarginToken": "",
3208
+ // "isolatedMarginAmount": 0.0,
3209
+ // "isolatedFrozenLong": 0.0,
3210
+ // "isolatedFrozenShort": 0.0,
3211
+ // "leverage": 10
2982
3212
  // }
2983
3213
  // ]
2984
3214
  // },
2985
- // "timestamp": 1673323880342
3215
+ // "timestamp": 1720628675078
2986
3216
  // }
2987
3217
  //
2988
3218
  const result = this.safeDict(response, 'data', {});
@@ -2991,18 +3221,51 @@ class woo extends woo$1 {
2991
3221
  }
2992
3222
  parsePosition(position, market = undefined) {
2993
3223
  //
3224
+ // v1PrivateGetPositionSymbol
3225
+ // {
3226
+ // "symbol": "PERP_ETH_USDT",
3227
+ // "position_side": "BOTH",
3228
+ // "leverage": 10,
3229
+ // "margin_mode": "CROSS",
3230
+ // "average_open_price": 3139.9,
3231
+ // "isolated_margin_amount": 0.0,
3232
+ // "isolated_margin_token": "",
3233
+ // "opening_time": "1720627963.094",
3234
+ // "mark_price": 3155.19169891,
3235
+ // "pending_short_qty": 0.0,
3236
+ // "pending_long_qty": 0.0,
3237
+ // "holding": -0.7,
3238
+ // "pnl_24_h": 0.0,
3239
+ // "est_liq_price": 9107.40055552,
3240
+ // "settle_price": 3151.0319904,
3241
+ // "success": true,
3242
+ // "fee_24_h": 0.0,
3243
+ // "isolated_frozen_long": 0.0,
3244
+ // "isolated_frozen_short": 0.0,
3245
+ // "timestamp": "1720867502.544"
3246
+ // }
3247
+ //
3248
+ // v3PrivateGetPositions
2994
3249
  // {
2995
- // "symbol": "0_symbol",
2996
- // "holding": 1,
2997
- // "pendingLongQty": 0,
2998
- // "pendingShortQty": 1,
2999
- // "settlePrice": 1,
3000
- // "averageOpenPrice": 1,
3001
- // "pnl24H": 1,
3002
- // "fee24H": 1,
3003
- // "markPrice": 1,
3004
- // "estLiqPrice": 1,
3005
- // "timestamp": 12321321
3250
+ // "symbol": "PERP_ETH_USDT",
3251
+ // "holding": -1.0,
3252
+ // "pendingLongQty": 0.0, // todo: check
3253
+ // "pendingShortQty": 0.0, // todo: check
3254
+ // "settlePrice": 3143.2,
3255
+ // "averageOpenPrice": 3143.2,
3256
+ // "pnl24H": 0.0, // todo: check
3257
+ // "fee24H": 1.5716, // todo: check
3258
+ // "markPrice": 3134.97984158,
3259
+ // "estLiqPrice": 3436.176349,
3260
+ // "timestamp": 1720628031.463,
3261
+ // "adlQuantile": 5,
3262
+ // "positionSide": "BOTH",
3263
+ // "marginMode": "ISOLATED",
3264
+ // "isolatedMarginToken": "USDT", // todo: check
3265
+ // "isolatedMarginAmount": 314.62426, // todo: check
3266
+ // "isolatedFrozenLong": 0.0, // todo: check
3267
+ // "isolatedFrozenShort": 0.0, // todo: check
3268
+ // "leverage": 10
3006
3269
  // }
3007
3270
  //
3008
3271
  const contract = this.safeString(position, 'symbol');
@@ -3016,13 +3279,14 @@ class woo extends woo$1 {
3016
3279
  side = 'short';
3017
3280
  }
3018
3281
  const contractSize = this.safeString(market, 'contractSize');
3019
- const markPrice = this.safeString(position, 'markPrice');
3282
+ const markPrice = this.safeString2(position, 'markPrice', 'mark_price');
3020
3283
  const timestamp = this.safeTimestamp(position, 'timestamp');
3021
- const entryPrice = this.safeString(position, 'averageOpenPrice');
3284
+ const entryPrice = this.safeString2(position, 'averageOpenPrice', 'average_open_price');
3022
3285
  const priceDifference = Precise["default"].stringSub(markPrice, entryPrice);
3023
3286
  const unrealisedPnl = Precise["default"].stringMul(priceDifference, size);
3024
3287
  size = Precise["default"].stringAbs(size);
3025
3288
  const notional = Precise["default"].stringMul(size, markPrice);
3289
+ const positionSide = this.safeString(position, 'positionSide'); // 'SHORT' or 'LONG' for hedged, 'BOTH' for non-hedged
3026
3290
  return this.safePosition({
3027
3291
  'info': position,
3028
3292
  'id': undefined,
@@ -3036,20 +3300,19 @@ class woo extends woo$1 {
3036
3300
  'maintenanceMarginPercentage': undefined,
3037
3301
  'entryPrice': this.parseNumber(entryPrice),
3038
3302
  'notional': this.parseNumber(notional),
3039
- 'leverage': undefined,
3303
+ 'leverage': this.safeNumber(position, 'leverage'),
3040
3304
  'unrealizedPnl': this.parseNumber(unrealisedPnl),
3041
3305
  'contracts': this.parseNumber(size),
3042
3306
  'contractSize': this.parseNumber(contractSize),
3043
3307
  'marginRatio': undefined,
3044
- 'liquidationPrice': this.safeNumber(position, 'estLiqPrice'),
3308
+ 'liquidationPrice': this.safeNumber2(position, 'estLiqPrice', 'est_liq_price'),
3045
3309
  'markPrice': this.parseNumber(markPrice),
3046
3310
  'lastPrice': undefined,
3047
3311
  'collateral': undefined,
3048
- 'marginMode': 'cross',
3049
- 'marginType': undefined,
3312
+ 'marginMode': this.safeStringLower2(position, 'marginMode', 'margin_mode'),
3050
3313
  'side': side,
3051
3314
  'percentage': undefined,
3052
- 'hedged': undefined,
3315
+ 'hedged': positionSide !== 'BOTH',
3053
3316
  'stopLossPrice': undefined,
3054
3317
  'takeProfitPrice': undefined,
3055
3318
  });
package/js/ccxt.d.ts CHANGED
@@ -3,8 +3,8 @@ import { Precise } from './src/base/Precise.js';
3
3
  import * as functions from './src/base/functions.js';
4
4
  import * as errors from './src/base/errors.js';
5
5
  import type { Int, int, Str, Strings, Num, Bool, IndexType, OrderSide, OrderType, MarketType, SubType, Dict, NullableDict, List, NullableList, Fee, OHLCV, OHLCVC, implicitReturnType, Market, Currency, Dictionary, MinMax, FeeInterface, TradingFeeInterface, MarketInterface, Trade, Order, OrderBook, Ticker, Transaction, Tickers, CurrencyInterface, Balance, BalanceAccount, Account, PartialBalances, Balances, DepositAddress, WithdrawalResponse, DepositAddressResponse, FundingRate, FundingRates, Position, BorrowInterest, LeverageTier, LedgerEntry, DepositWithdrawFeeNetwork, DepositWithdrawFee, TransferEntry, CrossBorrowRate, IsolatedBorrowRate, FundingRateHistory, OpenInterest, Liquidation, OrderRequest, CancellationRequest, FundingHistory, MarginMode, Greeks, Conversion, Option, LastPrice, Leverage, MarginModification, Leverages, LastPrices, Currencies, TradingFees, MarginModes, OptionChain, IsolatedBorrowRates, CrossBorrowRates, TransferEntries, LeverageTiers } from './src/base/types.js';
6
- import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, BadResponse, NullResponse, CancelPending } from './src/base/errors.js';
7
- declare const version = "4.3.61";
6
+ import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending } from './src/base/errors.js';
7
+ declare const version = "4.3.63";
8
8
  import ace from './src/ace.js';
9
9
  import alpaca from './src/alpaca.js';
10
10
  import ascendex from './src/ascendex.js';
@@ -546,5 +546,5 @@ declare const ccxt: {
546
546
  zaif: typeof zaif;
547
547
  zonda: typeof zonda;
548
548
  } & typeof functions & typeof errors;
549
- export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, BadResponse, NullResponse, CancelPending, Int, int, Str, Strings, Num, Bool, IndexType, OrderSide, OrderType, MarketType, SubType, Dict, NullableDict, List, NullableList, Fee, OHLCV, OHLCVC, implicitReturnType, Market, Currency, Dictionary, MinMax, FeeInterface, TradingFeeInterface, MarketInterface, Trade, Order, OrderBook, Ticker, Transaction, Tickers, CurrencyInterface, Balance, BalanceAccount, Account, PartialBalances, Balances, DepositAddress, WithdrawalResponse, DepositAddressResponse, FundingRate, FundingRates, Position, BorrowInterest, LeverageTier, LedgerEntry, DepositWithdrawFeeNetwork, DepositWithdrawFee, TransferEntry, CrossBorrowRate, IsolatedBorrowRate, FundingRateHistory, OpenInterest, Liquidation, OrderRequest, CancellationRequest, FundingHistory, MarginMode, Greeks, Conversion, Option, LastPrice, Leverage, MarginModification, Leverages, LastPrices, Currencies, TradingFees, MarginModes, OptionChain, IsolatedBorrowRates, CrossBorrowRates, TransferEntries, LeverageTiers, ace, alpaca, ascendex, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit2c, bitbank, bitbay, bitbns, bitcoincom, bitfinex, bitfinex2, bitflyer, bitget, bithumb, bitmart, bitmex, bitopro, bitpanda, bitrue, bitso, bitstamp, bitteam, bitvavo, bl3p, blockchaincom, blofin, btcalpha, btcbox, btcmarkets, btcturk, bybit, cex, coinbase, coinbaseadvanced, coinbaseexchange, coinbaseinternational, coincheck, coinex, coinlist, coinmate, coinmetro, coinone, coinsph, coinspot, cryptocom, currencycom, delta, deribit, digifinex, exmo, fmfwio, gate, gateio, gemini, hitbtc, hitbtc3, hollaex, htx, huobi, huobijp, hyperliquid, idex, independentreserve, indodax, kraken, krakenfutures, kucoin, kucoinfutures, kuna, latoken, lbank, luno, lykke, mercado, mexc, ndax, novadax, oceanex, okcoin, okx, onetrading, oxfun, p2b, paymium, phemex, poloniex, poloniexfutures, probit, timex, tokocrypto, tradeogre, upbit, vertex, wavesexchange, wazirx, whitebit, woo, woofipro, xt, yobit, zaif, zonda, };
549
+ export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, Int, int, Str, Strings, Num, Bool, IndexType, OrderSide, OrderType, MarketType, SubType, Dict, NullableDict, List, NullableList, Fee, OHLCV, OHLCVC, implicitReturnType, Market, Currency, Dictionary, MinMax, FeeInterface, TradingFeeInterface, MarketInterface, Trade, Order, OrderBook, Ticker, Transaction, Tickers, CurrencyInterface, Balance, BalanceAccount, Account, PartialBalances, Balances, DepositAddress, WithdrawalResponse, DepositAddressResponse, FundingRate, FundingRates, Position, BorrowInterest, LeverageTier, LedgerEntry, DepositWithdrawFeeNetwork, DepositWithdrawFee, TransferEntry, CrossBorrowRate, IsolatedBorrowRate, FundingRateHistory, OpenInterest, Liquidation, OrderRequest, CancellationRequest, FundingHistory, MarginMode, Greeks, Conversion, Option, LastPrice, Leverage, MarginModification, Leverages, LastPrices, Currencies, TradingFees, MarginModes, OptionChain, IsolatedBorrowRates, CrossBorrowRates, TransferEntries, LeverageTiers, ace, alpaca, ascendex, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit2c, bitbank, bitbay, bitbns, bitcoincom, bitfinex, bitfinex2, bitflyer, bitget, bithumb, bitmart, bitmex, bitopro, bitpanda, bitrue, bitso, bitstamp, bitteam, bitvavo, bl3p, blockchaincom, blofin, btcalpha, btcbox, btcmarkets, btcturk, bybit, cex, coinbase, coinbaseadvanced, coinbaseexchange, coinbaseinternational, coincheck, coinex, coinlist, coinmate, coinmetro, coinone, coinsph, coinspot, cryptocom, currencycom, delta, deribit, digifinex, exmo, fmfwio, gate, gateio, gemini, hitbtc, hitbtc3, hollaex, htx, huobi, huobijp, hyperliquid, idex, independentreserve, indodax, kraken, krakenfutures, kucoin, kucoinfutures, kuna, latoken, lbank, luno, lykke, mercado, mexc, ndax, novadax, oceanex, okcoin, okx, onetrading, oxfun, p2b, paymium, phemex, poloniex, poloniexfutures, probit, timex, tokocrypto, tradeogre, upbit, vertex, wavesexchange, wazirx, whitebit, woo, woofipro, xt, yobit, zaif, zonda, };
550
550
  export default ccxt;
package/js/ccxt.js CHANGED
@@ -35,10 +35,10 @@ import { Exchange } from './src/base/Exchange.js';
35
35
  import { Precise } from './src/base/Precise.js';
36
36
  import * as functions from './src/base/functions.js';
37
37
  import * as errors from './src/base/errors.js';
38
- import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, BadResponse, NullResponse, CancelPending } from './src/base/errors.js';
38
+ import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending } from './src/base/errors.js';
39
39
  //-----------------------------------------------------------------------------
40
40
  // this is updated by vss.js when building
41
- const version = '4.3.62';
41
+ const version = '4.3.64';
42
42
  Exchange.ccxtVersion = version;
43
43
  //-----------------------------------------------------------------------------
44
44
  import ace from './src/ace.js';
@@ -410,6 +410,6 @@ pro.exchanges = Object.keys(pro);
410
410
  pro['Exchange'] = Exchange; // now the same for rest and ts
411
411
  //-----------------------------------------------------------------------------
412
412
  const ccxt = Object.assign({ version, Exchange, Precise, 'exchanges': Object.keys(exchanges), 'pro': pro }, exchanges, functions, errors);
413
- export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, BadResponse, NullResponse, CancelPending, ace, alpaca, ascendex, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit2c, bitbank, bitbay, bitbns, bitcoincom, bitfinex, bitfinex2, bitflyer, bitget, bithumb, bitmart, bitmex, bitopro, bitpanda, bitrue, bitso, bitstamp, bitteam, bitvavo, bl3p, blockchaincom, blofin, btcalpha, btcbox, btcmarkets, btcturk, bybit, cex, coinbase, coinbaseadvanced, coinbaseexchange, coinbaseinternational, coincheck, coinex, coinlist, coinmate, coinmetro, coinone, coinsph, coinspot, cryptocom, currencycom, delta, deribit, digifinex, exmo, fmfwio, gate, gateio, gemini, hitbtc, hitbtc3, hollaex, htx, huobi, huobijp, hyperliquid, idex, independentreserve, indodax, kraken, krakenfutures, kucoin, kucoinfutures, kuna, latoken, lbank, luno, lykke, mercado, mexc, ndax, novadax, oceanex, okcoin, okx, onetrading, oxfun, p2b, paymium, phemex, poloniex, poloniexfutures, probit, timex, tokocrypto, tradeogre, upbit, vertex, wavesexchange, wazirx, whitebit, woo, woofipro, xt, yobit, zaif, zonda, };
413
+ export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, ace, alpaca, ascendex, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit2c, bitbank, bitbay, bitbns, bitcoincom, bitfinex, bitfinex2, bitflyer, bitget, bithumb, bitmart, bitmex, bitopro, bitpanda, bitrue, bitso, bitstamp, bitteam, bitvavo, bl3p, blockchaincom, blofin, btcalpha, btcbox, btcmarkets, btcturk, bybit, cex, coinbase, coinbaseadvanced, coinbaseexchange, coinbaseinternational, coincheck, coinex, coinlist, coinmate, coinmetro, coinone, coinsph, coinspot, cryptocom, currencycom, delta, deribit, digifinex, exmo, fmfwio, gate, gateio, gemini, hitbtc, hitbtc3, hollaex, htx, huobi, huobijp, hyperliquid, idex, independentreserve, indodax, kraken, krakenfutures, kucoin, kucoinfutures, kuna, latoken, lbank, luno, lykke, mercado, mexc, ndax, novadax, oceanex, okcoin, okx, onetrading, oxfun, p2b, paymium, phemex, poloniex, poloniexfutures, probit, timex, tokocrypto, tradeogre, upbit, vertex, wavesexchange, wazirx, whitebit, woo, woofipro, xt, yobit, zaif, zonda, };
414
414
  export default ccxt;
415
415
  //-----------------------------------------------------------------------------