ccxt 4.4.65__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.
- ccxt/__init__.py +5 -1
- ccxt/abstract/cryptomus.py +20 -0
- ccxt/abstract/derive.py +117 -0
- ccxt/abstract/tradeogre.py +1 -0
- ccxt/abstract/whitebit.py +16 -0
- ccxt/async_support/__init__.py +5 -1
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/binance.py +5 -3
- ccxt/async_support/bitget.py +22 -12
- ccxt/async_support/bitrue.py +5 -2
- ccxt/async_support/cryptomus.py +1041 -0
- ccxt/async_support/derive.py +2530 -0
- ccxt/async_support/gate.py +5 -1
- ccxt/async_support/htx.py +19 -5
- ccxt/async_support/tradeogre.py +131 -13
- ccxt/async_support/whitebit.py +276 -2
- ccxt/base/errors.py +0 -6
- ccxt/base/exchange.py +8 -1
- ccxt/binance.py +5 -3
- ccxt/bitget.py +22 -12
- ccxt/bitrue.py +5 -2
- ccxt/cryptomus.py +1041 -0
- ccxt/derive.py +2529 -0
- ccxt/gate.py +5 -1
- ccxt/htx.py +19 -5
- ccxt/pro/__init__.py +3 -1
- ccxt/pro/derive.py +704 -0
- ccxt/pro/gate.py +1 -0
- ccxt/test/tests_async.py +36 -3
- ccxt/test/tests_sync.py +36 -3
- ccxt/tradeogre.py +131 -13
- ccxt/whitebit.py +276 -2
- {ccxt-4.4.65.dist-info → ccxt-4.4.67.dist-info}/METADATA +14 -9
- {ccxt-4.4.65.dist-info → ccxt-4.4.67.dist-info}/RECORD +37 -30
- {ccxt-4.4.65.dist-info → ccxt-4.4.67.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.4.65.dist-info → ccxt-4.4.67.dist-info}/WHEEL +0 -0
- {ccxt-4.4.65.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':
|
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.
|
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
|
-
[](https://www.npmjs.com/package/ccxt) [](https://npmjs.com/package/ccxt) [](https://pypi.python.org/pypi/ccxt) [](https://www.nuget.org/packages/ccxt) [](https://godoc.org/github.com/ccxt/ccxt/go/v4) [](https://discord.gg/ccxt) [](https://www.npmjs.com/package/ccxt) [](https://npmjs.com/package/ccxt) [](https://pypi.python.org/pypi/ccxt) [](https://www.nuget.org/packages/ccxt) [](https://godoc.org/github.com/ccxt/ccxt/go/v4) [](https://discord.gg/ccxt) [](https://github.com/ccxt/ccxt/wiki/Exchange-Markets) [](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
|
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,9 +160,11 @@ The CCXT library currently supports the following 104 cryptocurrency exchange ma
|
|
160
160
|
| [](https://coins.ph/) | coinsph | [Coins.ph](https://coins.ph/) | [](https://coins-docs.github.io/rest-api) |  | | |
|
161
161
|
| [](https://www.coinspot.com.au/register?code=PJURCU) | coinspot | [CoinSpot](https://www.coinspot.com.au/register?code=PJURCU) | [](https://www.coinspot.com.au/api) |  | | |
|
162
162
|
| [](https://crypto.com/exch/kdacthrnxt) | cryptocom | [Crypto.com](https://crypto.com/exch/kdacthrnxt) | [](https://exchange-docs.crypto.com/exchange/v1/rest-ws/index.html) |  | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) |
|
163
|
+
| [](https://app.cryptomus.com/signup/?ref=JRP4yj) | cryptomus | [Cryptomus](https://app.cryptomus.com/signup/?ref=JRP4yj) | [](https://doc.cryptomus.com/personal) |  | | |
|
163
164
|
| [](https://app.defx.com/join/6I2CZ7) | defx | [Defx X](https://app.defx.com/join/6I2CZ7) | [](https://docs.defx.com/docs) |  | | |
|
164
165
|
| [](https://www.delta.exchange/app/signup/?code=IULYNB) | delta | [Delta Exchange](https://www.delta.exchange/app/signup/?code=IULYNB) | [](https://docs.delta.exchange) |  | | |
|
165
166
|
| [](https://www.deribit.com/reg-1189.4038) | deribit | [Deribit](https://www.deribit.com/reg-1189.4038) | [](https://docs.deribit.com/v2) |  | | [](https://ccxt.pro) |
|
167
|
+
| [](https://www.derive.xyz/invite/3VB0B) | derive | [derive](https://www.derive.xyz/invite/3VB0B) | [](https://docs.derive.xyz/docs/) |  | | [](https://ccxt.pro) |
|
166
168
|
| [](https://www.digifinex.com/en-ww/from/DhOzBg?channelCode=ljaUPp) | digifinex | [DigiFinex](https://www.digifinex.com/en-ww/from/DhOzBg?channelCode=ljaUPp) | [](https://docs.digifinex.com) |  | | |
|
167
169
|
| [](https://www.ellipx.com) | ellipx | [Ellipx](https://www.ellipx.com) | [](https://docs.google.com/document/d/1ZXzTQYffKE_EglTaKptxGQERRnunuLHEMmar7VC9syM) |  | | |
|
168
170
|
| [](https://exmo.me/?ref=131685) | exmo | [EXMO](https://exmo.me/?ref=131685) | [](https://exmo.me/en/api_doc?ref=131685) |  | | |
|
@@ -276,13 +278,13 @@ console.log(version, Object.keys(exchanges));
|
|
276
278
|
|
277
279
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
278
280
|
|
279
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.
|
280
|
-
* unpkg: https://unpkg.com/ccxt@4.4.
|
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
|
281
283
|
|
282
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.
|
283
285
|
|
284
286
|
```HTML
|
285
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.
|
287
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.67/dist/ccxt.browser.min.js"></script>
|
286
288
|
```
|
287
289
|
|
288
290
|
Creates a global `ccxt` object:
|
@@ -348,7 +350,7 @@ Console.WriteLine(ccxt.Exchanges) // check this later
|
|
348
350
|
[ccxt in GO with **PKG**](https://pkg.go.dev/github.com/ccxt/ccxt/go/v4)
|
349
351
|
|
350
352
|
```shell
|
351
|
-
go
|
353
|
+
go install github.com/ccxt/ccxt/go/v4@latest
|
352
354
|
```
|
353
355
|
|
354
356
|
```Go
|
@@ -666,7 +668,10 @@ We are investing a significant amount of time into the development of this libra
|
|
666
668
|
|
667
669
|
### Sponsors
|
668
670
|
|
669
|
-
|
671
|
+
|
672
|
+
[](https://vitalitycrypto.com/)
|
673
|
+
|
674
|
+
Support this project by becoming a sponsor.
|
670
675
|
|
671
676
|
[[Become a sponsor](https://opencollective.com/ccxt#sponsor)]
|
672
677
|
|