ccxt 4.4.64__py2.py3-none-any.whl → 4.4.67__py2.py3-none-any.whl

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 (49) hide show
  1. ccxt/__init__.py +5 -3
  2. ccxt/abstract/cryptomus.py +20 -0
  3. ccxt/abstract/derive.py +117 -0
  4. ccxt/abstract/tradeogre.py +1 -0
  5. ccxt/abstract/whitebit.py +16 -0
  6. ccxt/async_support/__init__.py +5 -3
  7. ccxt/async_support/base/exchange.py +1 -1
  8. ccxt/async_support/binance.py +5 -3
  9. ccxt/async_support/bitget.py +22 -12
  10. ccxt/async_support/bitrue.py +5 -2
  11. ccxt/async_support/cryptocom.py +2 -0
  12. ccxt/async_support/cryptomus.py +1041 -0
  13. ccxt/async_support/derive.py +2530 -0
  14. ccxt/async_support/gate.py +5 -1
  15. ccxt/async_support/htx.py +19 -5
  16. ccxt/async_support/hyperliquid.py +108 -68
  17. ccxt/async_support/paradex.py +51 -12
  18. ccxt/async_support/tradeogre.py +131 -13
  19. ccxt/async_support/whitebit.py +276 -2
  20. ccxt/base/errors.py +0 -6
  21. ccxt/base/exchange.py +8 -1
  22. ccxt/binance.py +5 -3
  23. ccxt/bitget.py +22 -12
  24. ccxt/bitrue.py +5 -2
  25. ccxt/cryptocom.py +2 -0
  26. ccxt/cryptomus.py +1041 -0
  27. ccxt/derive.py +2529 -0
  28. ccxt/gate.py +5 -1
  29. ccxt/htx.py +19 -5
  30. ccxt/hyperliquid.py +108 -68
  31. ccxt/paradex.py +51 -12
  32. ccxt/pro/__init__.py +3 -3
  33. ccxt/pro/bybit.py +3 -2
  34. ccxt/pro/derive.py +704 -0
  35. ccxt/pro/gate.py +5 -2
  36. ccxt/pro/hyperliquid.py +3 -3
  37. ccxt/test/tests_async.py +36 -3
  38. ccxt/test/tests_sync.py +36 -3
  39. ccxt/tradeogre.py +131 -13
  40. ccxt/whitebit.py +276 -2
  41. {ccxt-4.4.64.dist-info → ccxt-4.4.67.dist-info}/METADATA +14 -10
  42. {ccxt-4.4.64.dist-info → ccxt-4.4.67.dist-info}/RECORD +45 -42
  43. ccxt/abstract/currencycom.py +0 -68
  44. ccxt/async_support/currencycom.py +0 -2070
  45. ccxt/currencycom.py +0 -2070
  46. ccxt/pro/currencycom.py +0 -536
  47. {ccxt-4.4.64.dist-info → ccxt-4.4.67.dist-info}/LICENSE.txt +0 -0
  48. {ccxt-4.4.64.dist-info → ccxt-4.4.67.dist-info}/WHEEL +0 -0
  49. {ccxt-4.4.64.dist-info → ccxt-4.4.67.dist-info}/top_level.txt +0 -0
ccxt/whitebit.py CHANGED
@@ -6,7 +6,7 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.whitebit import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Any, Balances, BorrowInterest, Bool, Currencies, Currency, DepositAddress, Int, Market, MarketType, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TradingFees, Transaction, TransferEntry
9
+ from ccxt.base.types import Any, Balances, BorrowInterest, Bool, Conversion, Currencies, Currency, DepositAddress, FundingHistory, Int, Market, MarketType, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TradingFees, Transaction, TransferEntry
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
@@ -45,6 +45,7 @@ class whitebit(Exchange, ImplicitAPI):
45
45
  'cancelAllOrdersAfter': True,
46
46
  'cancelOrder': True,
47
47
  'cancelOrders': False,
48
+ 'createConvertTrade': True,
48
49
  'createMarketBuyOrderWithCost': True,
49
50
  'createMarketOrderWithCost': False,
50
51
  'createMarketSellOrderWithCost': False,
@@ -57,6 +58,9 @@ class whitebit(Exchange, ImplicitAPI):
57
58
  'fetchBorrowRateHistories': False,
58
59
  'fetchBorrowRateHistory': False,
59
60
  'fetchClosedOrders': True,
61
+ 'fetchConvertQuote': True,
62
+ 'fetchConvertTrade': False,
63
+ 'fetchConvertTradeHistory': True,
60
64
  'fetchCrossBorrowRate': False,
61
65
  'fetchCrossBorrowRates': False,
62
66
  'fetchCurrencies': True,
@@ -68,7 +72,7 @@ class whitebit(Exchange, ImplicitAPI):
68
72
  'fetchDepositsWithdrawals': True,
69
73
  'fetchDepositWithdrawFee': 'emulated',
70
74
  'fetchDepositWithdrawFees': True,
71
- 'fetchFundingHistory': False,
75
+ 'fetchFundingHistory': True,
72
76
  'fetchFundingRate': True,
73
77
  'fetchFundingRateHistory': False,
74
78
  'fetchFundingRates': True,
@@ -186,6 +190,7 @@ class whitebit(Exchange, ImplicitAPI):
186
190
  'assets',
187
191
  'collateral/markets',
188
192
  'fee',
193
+ 'orderbook/depth/{market}',
189
194
  'orderbook/{market}',
190
195
  'ticker',
191
196
  'trades/{market}',
@@ -194,6 +199,7 @@ class whitebit(Exchange, ImplicitAPI):
194
199
  'markets',
195
200
  'futures',
196
201
  'platform/status',
202
+ 'mining-pool',
197
203
  ],
198
204
  },
199
205
  'private': {
@@ -204,6 +210,7 @@ class whitebit(Exchange, ImplicitAPI):
204
210
  'collateral-account/leverage',
205
211
  'collateral-account/positions/open',
206
212
  'collateral-account/summary',
213
+ 'collateral-account/funding-history',
207
214
  'main-account/address',
208
215
  'main-account/balance',
209
216
  'main-account/create-new-address',
@@ -230,6 +237,7 @@ class whitebit(Exchange, ImplicitAPI):
230
237
  'order/collateral/market',
231
238
  'order/collateral/stop-limit',
232
239
  'order/collateral/trigger-market',
240
+ 'order/collateral/bulk',
233
241
  'order/new',
234
242
  'order/market',
235
243
  'order/stock_market',
@@ -241,6 +249,7 @@ class whitebit(Exchange, ImplicitAPI):
241
249
  'order/kill-switch/status',
242
250
  'order/bulk',
243
251
  'order/modify',
252
+ 'order/conditional-cancel',
244
253
  'orders',
245
254
  'oco-orders',
246
255
  'order/collateral/oco',
@@ -259,6 +268,17 @@ class whitebit(Exchange, ImplicitAPI):
259
268
  'sub-account/unblock',
260
269
  'sub-account/balances',
261
270
  'sub-account/transfer/history',
271
+ 'sub-account/api-key/create',
272
+ 'sub-account/api-key/edit',
273
+ 'sub-account/api-key/delete',
274
+ 'sub-account/api-key/list',
275
+ 'sub-account/api-key/reset',
276
+ 'sub-account/api-key/ip-address/list',
277
+ 'sub-account/api-key/ip-address/create',
278
+ 'sub-account/api-key/ip-address/delete',
279
+ 'mining/rewards',
280
+ 'market/fee',
281
+ 'conditional-orders',
262
282
  ],
263
283
  },
264
284
  },
@@ -2515,6 +2535,84 @@ class whitebit(Exchange, ImplicitAPI):
2515
2535
  'interval': None,
2516
2536
  }
2517
2537
 
2538
+ def fetch_funding_history(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[FundingHistory]:
2539
+ """
2540
+ fetch the history of funding payments paid and received on self account
2541
+
2542
+ https://docs.whitebit.com/private/http-trade-v4/#funding-history
2543
+
2544
+ :param str [symbol]: unified market symbol
2545
+ :param int [since]: the starting timestamp in milliseconds
2546
+ :param int [limit]: the number of entries to return
2547
+ :param dict [params]: extra parameters specific to the exchange API endpoint
2548
+ :param int [params.until]: the latest time in ms to fetch funding history for
2549
+ :returns dict[]: a list of `funding history structures <https://docs.ccxt.com/#/?id=funding-history-structure>`
2550
+ """
2551
+ self.load_markets()
2552
+ if symbol is None:
2553
+ raise ArgumentsRequired(self.id + ' fetchFundingHistory() requires a symbol argument')
2554
+ market = self.market(symbol)
2555
+ request: dict = {
2556
+ 'market': market['id'],
2557
+ }
2558
+ if since is not None:
2559
+ request['startDate'] = since
2560
+ if limit is not None:
2561
+ request['limit'] = since
2562
+ request, params = self.handle_until_option('endDate', request, params)
2563
+ response = self.v4PrivatePostCollateralAccountFundingHistory(request)
2564
+ #
2565
+ # {
2566
+ # "records": [
2567
+ # {
2568
+ # "market": "BTC_PERP",
2569
+ # "fundingTime": "1708704000000",
2570
+ # "fundingRate": "0.00017674",
2571
+ # "fundingAmount": "-0.171053531892",
2572
+ # "positionAmount": "0.019",
2573
+ # "settlementPrice": "50938.2",
2574
+ # "rateCalculatedTime": "1708675200000"
2575
+ # },
2576
+ # ],
2577
+ # "limit": 100,
2578
+ # "offset": 0
2579
+ # }
2580
+ #
2581
+ data = self.safe_list(response, 'records', [])
2582
+ return self.parse_funding_histories(data, market, since, limit)
2583
+
2584
+ def parse_funding_history(self, contract, market: Market = None):
2585
+ #
2586
+ # {
2587
+ # "market": "BTC_PERP",
2588
+ # "fundingTime": "1708704000000",
2589
+ # "fundingRate": "0.00017674",
2590
+ # "fundingAmount": "-0.171053531892",
2591
+ # "positionAmount": "0.019",
2592
+ # "settlementPrice": "50938.2",
2593
+ # "rateCalculatedTime": "1708675200000"
2594
+ # }
2595
+ #
2596
+ marketId = self.safe_string(contract, 'market')
2597
+ timestamp = self.safe_integer(contract, 'fundingTime')
2598
+ return {
2599
+ 'info': contract,
2600
+ 'symbol': self.safe_symbol(marketId, market, None, 'swap'),
2601
+ 'code': None,
2602
+ 'timestamp': timestamp,
2603
+ 'datetime': self.iso8601(timestamp),
2604
+ 'id': None,
2605
+ 'amount': self.safe_number(contract, 'fundingAmount'),
2606
+ }
2607
+
2608
+ def parse_funding_histories(self, contracts, market=None, since: Int = None, limit: Int = None) -> List[FundingHistory]:
2609
+ result = []
2610
+ for i in range(0, len(contracts)):
2611
+ contract = contracts[i]
2612
+ result.append(self.parse_funding_history(contract, market))
2613
+ sorted = self.sort_by(result, 'timestamp')
2614
+ return self.filter_by_since_limit(sorted, since, limit)
2615
+
2518
2616
  def fetch_deposits_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
2519
2617
  """
2520
2618
  fetch history of deposits and withdrawals
@@ -2585,6 +2683,182 @@ class whitebit(Exchange, ImplicitAPI):
2585
2683
  records = self.safe_list(response, 'records')
2586
2684
  return self.parse_transactions(records, currency, since, limit)
2587
2685
 
2686
+ def fetch_convert_quote(self, fromCode: str, toCode: str, amount: Num = None, params={}) -> Conversion:
2687
+ """
2688
+ fetch a quote for converting from one currency to another
2689
+
2690
+ https://docs.whitebit.com/private/http-trade-v4/#convert-estimate
2691
+
2692
+ :param str fromCode: the currency that you want to sell and convert from
2693
+ :param str toCode: the currency that you want to buy and convert into
2694
+ :param float amount: how much you want to trade in units of the from currency
2695
+ :param dict [params]: extra parameters specific to the exchange API endpoint
2696
+ :returns dict: a `conversion structure <https://docs.ccxt.com/#/?id=conversion-structure>`
2697
+ """
2698
+ self.load_markets()
2699
+ fromCurrency = self.currency(fromCode)
2700
+ toCurrency = self.currency(toCode)
2701
+ request: dict = {
2702
+ 'from': fromCode,
2703
+ 'to': toCode,
2704
+ 'amount': self.number_to_string(amount),
2705
+ 'direction': 'from',
2706
+ }
2707
+ response = self.v4PrivatePostConvertEstimate(self.extend(request, params))
2708
+ #
2709
+ # {
2710
+ # "give": "4",
2711
+ # "receive": "0.00004762",
2712
+ # "rate": "0.0000119",
2713
+ # "id": "1740889",
2714
+ # "expireAt": 1741090147,
2715
+ # "from": "USDT",
2716
+ # "to": "BTC"
2717
+ # }
2718
+ #
2719
+ return self.parse_conversion(response, fromCurrency, toCurrency)
2720
+
2721
+ def create_convert_trade(self, id: str, fromCode: str, toCode: str, amount: Num = None, params={}) -> Conversion:
2722
+ """
2723
+ convert from one currency to another
2724
+
2725
+ https://docs.whitebit.com/private/http-trade-v4/#convert-confirm
2726
+
2727
+ :param str id: the id of the trade that you want to make
2728
+ :param str fromCode: the currency that you want to sell and convert from
2729
+ :param str toCode: the currency that you want to buy and convert into
2730
+ :param float [amount]: how much you want to trade in units of the from currency
2731
+ :param dict [params]: extra parameters specific to the exchange API endpoint
2732
+ :returns dict: a `conversion structure <https://docs.ccxt.com/#/?id=conversion-structure>`
2733
+ """
2734
+ self.load_markets()
2735
+ fromCurrency = self.currency(fromCode)
2736
+ toCurrency = self.currency(toCode)
2737
+ request: dict = {
2738
+ 'quoteId': id,
2739
+ }
2740
+ response = self.v4PrivatePostConvertConfirm(self.extend(request, params))
2741
+ #
2742
+ # {
2743
+ # "finalGive": "4",
2744
+ # "finalReceive": "0.00004772"
2745
+ # }
2746
+ #
2747
+ return self.parse_conversion(response, fromCurrency, toCurrency)
2748
+
2749
+ def fetch_convert_trade_history(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Conversion]:
2750
+ """
2751
+ fetch the users history of conversion trades
2752
+
2753
+ https://docs.whitebit.com/private/http-trade-v4/#convert-history
2754
+
2755
+ :param str [code]: the unified currency code
2756
+ :param int [since]: the earliest time in ms to fetch conversions for
2757
+ :param int [limit]: the maximum number of conversion structures to retrieve, default 20, max 200
2758
+ :param dict [params]: extra parameters specific to the exchange API endpoint
2759
+ :param str [params.until]: the end time in ms
2760
+ :param str [params.fromTicker]: the currency that you sold and converted from
2761
+ :param str [params.toTicker]: the currency that you bought and converted into
2762
+ :param str [params.quoteId]: the quote id of the conversion
2763
+ :returns dict[]: a list of `conversion structures <https://docs.ccxt.com/#/?id=conversion-structure>`
2764
+ """
2765
+ self.load_markets()
2766
+ request: dict = {}
2767
+ if code is not None:
2768
+ request['fromTicker'] = code
2769
+ if since is not None:
2770
+ start = self.parse_to_int(since / 1000)
2771
+ request['from'] = self.number_to_string(start)
2772
+ if limit is not None:
2773
+ request['limit'] = limit
2774
+ request, params = self.handle_until_option('to', request, params, 0.001)
2775
+ response = self.v4PrivatePostConvertHistory(self.extend(request, params))
2776
+ #
2777
+ # {
2778
+ # "records": [
2779
+ # {
2780
+ # "id": "1741105",
2781
+ # "path": [
2782
+ # {
2783
+ # "from": "USDT",
2784
+ # "to": "BTC",
2785
+ # "rate": "0.00001193"
2786
+ # }
2787
+ # ],
2788
+ # "date": 1741090757,
2789
+ # "give": "4",
2790
+ # "receive": "0.00004772",
2791
+ # "rate": "0.00001193"
2792
+ # }
2793
+ # ],
2794
+ # "total": 1,
2795
+ # "limit": 100,
2796
+ # "offset": 0
2797
+ # }
2798
+ #
2799
+ rows = self.safe_list(response, 'records', [])
2800
+ return self.parse_conversions(rows, code, 'fromCurrency', 'toCurrency', since, limit)
2801
+
2802
+ def parse_conversion(self, conversion: dict, fromCurrency: Currency = None, toCurrency: Currency = None) -> Conversion:
2803
+ #
2804
+ # fetchConvertQuote
2805
+ #
2806
+ # {
2807
+ # "give": "4",
2808
+ # "receive": "0.00004762",
2809
+ # "rate": "0.0000119",
2810
+ # "id": "1740889",
2811
+ # "expireAt": 1741090147,
2812
+ # "from": "USDT",
2813
+ # "to": "BTC"
2814
+ # }
2815
+ #
2816
+ # createConvertTrade
2817
+ #
2818
+ # {
2819
+ # "finalGive": "4",
2820
+ # "finalReceive": "0.00004772"
2821
+ # }
2822
+ #
2823
+ # fetchConvertTradeHistory
2824
+ #
2825
+ # {
2826
+ # "id": "1741105",
2827
+ # "path": [
2828
+ # {
2829
+ # "from": "USDT",
2830
+ # "to": "BTC",
2831
+ # "rate": "0.00001193"
2832
+ # }
2833
+ # ],
2834
+ # "date": 1741090757,
2835
+ # "give": "4",
2836
+ # "receive": "0.00004772",
2837
+ # "rate": "0.00001193"
2838
+ # }
2839
+ #
2840
+ path = self.safe_list(conversion, 'path', [])
2841
+ first = self.safe_dict(path, 0, {})
2842
+ fromPath = self.safe_string(first, 'from')
2843
+ toPath = self.safe_string(first, 'to')
2844
+ timestamp = self.safe_timestamp_2(conversion, 'date', 'expireAt')
2845
+ fromCoin = self.safe_string(conversion, 'from', fromPath)
2846
+ fromCode = self.safe_currency_code(fromCoin, fromCurrency)
2847
+ toCoin = self.safe_string(conversion, 'to', toPath)
2848
+ toCode = self.safe_currency_code(toCoin, toCurrency)
2849
+ return {
2850
+ 'info': conversion,
2851
+ 'timestamp': timestamp,
2852
+ 'datetime': self.iso8601(timestamp),
2853
+ 'id': self.safe_string(conversion, 'id'),
2854
+ 'fromCurrency': fromCode,
2855
+ 'fromAmount': self.safe_number_2(conversion, 'give', 'finalGive'),
2856
+ 'toCurrency': toCode,
2857
+ 'toAmount': self.safe_number_2(conversion, 'receive', 'finalReceive'),
2858
+ 'price': self.safe_number(conversion, 'rate'),
2859
+ 'fee': None,
2860
+ }
2861
+
2588
2862
  def is_fiat(self, currency: str) -> bool:
2589
2863
  fiatCurrencies = self.safe_value(self.options, 'fiatCurrencies', [])
2590
2864
  return self.in_array(currency, fiatCurrencies)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.4.64
3
+ Version: 4.4.67
4
4
  Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges
5
5
  Home-page: https://ccxt.com
6
6
  Author: Igor Kroitor
@@ -49,7 +49,7 @@ Requires-Dist: mypy==1.6.1; extra == "type"
49
49
 
50
50
  # CCXT – CryptoCurrency eXchange Trading Library
51
51
 
52
- [![NPM Downloads](https://img.shields.io/npm/dy/ccxt.svg)](https://www.npmjs.com/package/ccxt) [![npm](https://img.shields.io/npm/v/ccxt.svg)](https://npmjs.com/package/ccxt) [![PyPI](https://img.shields.io/pypi/v/ccxt.svg)](https://pypi.python.org/pypi/ccxt) [![NuGet version](https://img.shields.io/nuget/v/ccxt)](https://www.nuget.org/packages/ccxt) [![GoDoc](https://pkg.go.dev/badge/github.com/ccxt/ccxt/go/v4?utm_source=godoc)](https://godoc.org/github.com/ccxt/ccxt/go/v4) [![Discord](https://img.shields.io/discord/690203284119617602?logo=discord&logoColor=white)](https://discord.gg/ccxt) [![Supported Exchanges](https://img.shields.io/badge/exchanges-110-blue.svg)](https://github.com/ccxt/ccxt/wiki/Exchange-Markets) [![Follow CCXT at x.com](https://img.shields.io/twitter/follow/ccxt_official.svg?style=social&label=CCXT)](https://x.com/ccxt_official)
52
+ [![NPM Downloads](https://img.shields.io/npm/dy/ccxt.svg)](https://www.npmjs.com/package/ccxt) [![npm](https://img.shields.io/npm/v/ccxt.svg)](https://npmjs.com/package/ccxt) [![PyPI](https://img.shields.io/pypi/v/ccxt.svg)](https://pypi.python.org/pypi/ccxt) [![NuGet version](https://img.shields.io/nuget/v/ccxt)](https://www.nuget.org/packages/ccxt) [![GoDoc](https://pkg.go.dev/badge/github.com/ccxt/ccxt/go/v4?utm_source=godoc)](https://godoc.org/github.com/ccxt/ccxt/go/v4) [![Discord](https://img.shields.io/discord/690203284119617602?logo=discord&logoColor=white)](https://discord.gg/ccxt) [![Supported Exchanges](https://img.shields.io/badge/exchanges-111-blue.svg)](https://github.com/ccxt/ccxt/wiki/Exchange-Markets) [![Follow CCXT at x.com](https://img.shields.io/twitter/follow/ccxt_official.svg?style=social&label=CCXT)](https://x.com/ccxt_official)
53
53
 
54
54
  A JavaScript / Python / PHP / C# / Go library for cryptocurrency trading and e-commerce with support for many bitcoin/ether/altcoin exchange markets and merchant APIs.
55
55
 
@@ -65,7 +65,7 @@ Current feature list:
65
65
  - fully implemented public and private APIs
66
66
  - optional normalized data for cross-exchange analytics and arbitrage
67
67
  - an out of the box unified API that is extremely easy to integrate
68
- - works in Node 10.4+, Python 3, PHP 8.1+, netstandard2.0/2.1 and web browsers
68
+ - works in Node 10.4+, Python 3, PHP 8.1+, netstandard2.0/2.1, Go 1.20+ and web browsers
69
69
 
70
70
 
71
71
  ## Sponsored Promotion
@@ -108,7 +108,7 @@ Current feature list:
108
108
 
109
109
  ## Supported Cryptocurrency Exchanges
110
110
 
111
- The CCXT library currently supports the following 105 cryptocurrency exchange markets and trading APIs:
111
+ The CCXT library currently supports the following 106 cryptocurrency exchange markets and trading APIs:
112
112
 
113
113
  | logo | id | name | ver | type | certified | pro |
114
114
  |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------|----------------------------------------------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------:|--------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------|
@@ -160,10 +160,11 @@ The CCXT library currently supports the following 105 cryptocurrency exchange ma
160
160
  | [![coinsph](https://user-images.githubusercontent.com/1294454/225719995-48ab2026-4ddb-496c-9da7-0d7566617c9b.jpg)](https://coins.ph/) | coinsph | [Coins.ph](https://coins.ph/) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://coins-docs.github.io/rest-api) | ![CEX – Centralized EXchange](https://img.shields.io/badge/CEX-green.svg "CEX – Centralized EXchange") | | |
161
161
  | [![coinspot](https://user-images.githubusercontent.com/1294454/28208429-3cacdf9a-6896-11e7-854e-4c79a772a30f.jpg)](https://www.coinspot.com.au/register?code=PJURCU) | coinspot | [CoinSpot](https://www.coinspot.com.au/register?code=PJURCU) | [![API Version *](https://img.shields.io/badge/*-lightgray)](https://www.coinspot.com.au/api) | ![CEX – Centralized EXchange](https://img.shields.io/badge/CEX-green.svg "CEX – Centralized EXchange") | | |
162
162
  | [![cryptocom](https://user-images.githubusercontent.com/1294454/147792121-38ed5e36-c229-48d6-b49a-48d05fc19ed4.jpeg)](https://crypto.com/exch/kdacthrnxt) | cryptocom | [Crypto.com](https://crypto.com/exch/kdacthrnxt) | [![API Version 2](https://img.shields.io/badge/2-lightgray)](https://exchange-docs.crypto.com/exchange/v1/rest-ws/index.html) | ![CEX – Centralized EXchange](https://img.shields.io/badge/CEX-green.svg "CEX – Centralized EXchange") | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
163
- | [![currencycom](https://user-images.githubusercontent.com/1294454/83718672-36745c00-a63e-11ea-81a9-677b1f789a4d.jpg)](https://currency.com/trading/signup?c=362jaimv&pid=referral) | currencycom | [Currency.com](https://currency.com/trading/signup?c=362jaimv&pid=referral) | [![API Version 2](https://img.shields.io/badge/2-lightgray)](https://currency.com/api) | ![CEX – Centralized EXchange](https://img.shields.io/badge/CEX-green.svg "CEX – Centralized EXchange") | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
163
+ | [![cryptomus](https://github.com/user-attachments/assets/8e0b1c48-7c01-4177-9224-f1b01d89d7e7)](https://app.cryptomus.com/signup/?ref=JRP4yj) | cryptomus | [Cryptomus](https://app.cryptomus.com/signup/?ref=JRP4yj) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://doc.cryptomus.com/personal) | ![CEX – Centralized EXchange](https://img.shields.io/badge/CEX-green.svg "CEX – Centralized EXchange") | | |
164
164
  | [![defx](https://github.com/user-attachments/assets/4e92bace-d7a9-45ea-92be-122168dc87e4)](https://app.defx.com/join/6I2CZ7) | defx | [Defx X](https://app.defx.com/join/6I2CZ7) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://docs.defx.com/docs) | ![DEX - Distributed EXchange](https://img.shields.io/badge/DEX-blue.svg "DEX - Distributed EXchange") | | |
165
165
  | [![delta](https://user-images.githubusercontent.com/1294454/99450025-3be60a00-2931-11eb-9302-f4fd8d8589aa.jpg)](https://www.delta.exchange/app/signup/?code=IULYNB) | delta | [Delta Exchange](https://www.delta.exchange/app/signup/?code=IULYNB) | [![API Version 2](https://img.shields.io/badge/2-lightgray)](https://docs.delta.exchange) | ![CEX – Centralized EXchange](https://img.shields.io/badge/CEX-green.svg "CEX – Centralized EXchange") | | |
166
166
  | [![deribit](https://user-images.githubusercontent.com/1294454/41933112-9e2dd65a-798b-11e8-8440-5bab2959fcb8.jpg)](https://www.deribit.com/reg-1189.4038) | deribit | [Deribit](https://www.deribit.com/reg-1189.4038) | [![API Version 2](https://img.shields.io/badge/2-lightgray)](https://docs.deribit.com/v2) | ![CEX – Centralized EXchange](https://img.shields.io/badge/CEX-green.svg "CEX – Centralized EXchange") | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
167
+ | [![derive](https://github.com/user-attachments/assets/f835b95f-033a-43dd-b6bb-24e698fc498c)](https://www.derive.xyz/invite/3VB0B) | derive | [derive](https://www.derive.xyz/invite/3VB0B) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://docs.derive.xyz/docs/) | ![DEX - Distributed EXchange](https://img.shields.io/badge/DEX-blue.svg "DEX - Distributed EXchange") | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
167
168
  | [![digifinex](https://user-images.githubusercontent.com/51840849/87443315-01283a00-c5fe-11ea-8628-c2a0feaf07ac.jpg)](https://www.digifinex.com/en-ww/from/DhOzBg?channelCode=ljaUPp) | digifinex | [DigiFinex](https://www.digifinex.com/en-ww/from/DhOzBg?channelCode=ljaUPp) | [![API Version 3](https://img.shields.io/badge/3-lightgray)](https://docs.digifinex.com) | ![CEX – Centralized EXchange](https://img.shields.io/badge/CEX-green.svg "CEX – Centralized EXchange") | | |
168
169
  | [![ellipx](https://github.com/user-attachments/assets/e07c3f40-281c-4cdf-bacf-fa1c58218a2c)](https://www.ellipx.com) | ellipx | [Ellipx](https://www.ellipx.com) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://docs.google.com/document/d/1ZXzTQYffKE_EglTaKptxGQERRnunuLHEMmar7VC9syM) | ![CEX – Centralized EXchange](https://img.shields.io/badge/CEX-green.svg "CEX – Centralized EXchange") | | |
169
170
  | [![exmo](https://user-images.githubusercontent.com/1294454/27766491-1b0ea956-5eda-11e7-9225-40d67b481b8d.jpg)](https://exmo.me/?ref=131685) | exmo | [EXMO](https://exmo.me/?ref=131685) | [![API Version 1.1](https://img.shields.io/badge/1.1-lightgray)](https://exmo.me/en/api_doc?ref=131685) | ![CEX – Centralized EXchange](https://img.shields.io/badge/CEX-green.svg "CEX – Centralized EXchange") | | |
@@ -277,13 +278,13 @@ console.log(version, Object.keys(exchanges));
277
278
 
278
279
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
279
280
 
280
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.64/dist/ccxt.browser.min.js
281
- * unpkg: https://unpkg.com/ccxt@4.4.64/dist/ccxt.browser.min.js
281
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.67/dist/ccxt.browser.min.js
282
+ * unpkg: https://unpkg.com/ccxt@4.4.67/dist/ccxt.browser.min.js
282
283
 
283
284
  CDNs are not updated in real-time and may have delays. Defaulting to the most recent version without specifying the version number is not recommended. Please, keep in mind that we are not responsible for the correct operation of those CDN servers.
284
285
 
285
286
  ```HTML
286
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.64/dist/ccxt.browser.min.js"></script>
287
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.67/dist/ccxt.browser.min.js"></script>
287
288
  ```
288
289
 
289
290
  Creates a global `ccxt` object:
@@ -349,7 +350,7 @@ Console.WriteLine(ccxt.Exchanges) // check this later
349
350
  [ccxt in GO with **PKG**](https://pkg.go.dev/github.com/ccxt/ccxt/go/v4)
350
351
 
351
352
  ```shell
352
- go get github.com/ccxt/ccxt/go/v4
353
+ go install github.com/ccxt/ccxt/go/v4@latest
353
354
  ```
354
355
 
355
356
  ```Go
@@ -667,7 +668,10 @@ We are investing a significant amount of time into the development of this libra
667
668
 
668
669
  ### Sponsors
669
670
 
670
- Support this project by becoming a sponsor. Your logo will show up here with a link to your website.
671
+
672
+ [![Vitality](https://github.com/user-attachments/assets/0981aae2-3e12-4b57-8d2f-c5ae2b3b8b1c)](https://vitalitycrypto.com/)
673
+
674
+ Support this project by becoming a sponsor.
671
675
 
672
676
  [[Become a sponsor](https://opencollective.com/ccxt#sponsor)]
673
677