ccxt 4.0.5__py2.py3-none-any.whl → 4.0.7__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.

Potentially problematic release.


This version of ccxt might be problematic. Click here for more details.

ccxt/__init__.py CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.0.5'
25
+ __version__ = '4.0.7'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
ccxt/abstract/bitget.py CHANGED
@@ -13,6 +13,7 @@ class ImplicitAPI:
13
13
  public_spot_get_market_candles = publicSpotGetMarketCandles = Entry('market/candles', ['public', 'spot'], 'GET', {'cost': 1})
14
14
  public_spot_get_market_depth = publicSpotGetMarketDepth = Entry('market/depth', ['public', 'spot'], 'GET', {'cost': 1})
15
15
  public_spot_get_market_spot_vip_level = publicSpotGetMarketSpotVipLevel = Entry('market/spot-vip-level', ['public', 'spot'], 'GET', {'cost': 2})
16
+ public_spot_get_market_history_candles = publicSpotGetMarketHistoryCandles = Entry('market/history-candles', ['public', 'spot'], 'GET', {'cost': 1})
16
17
  public_mix_get_market_contracts = publicMixGetMarketContracts = Entry('market/contracts', ['public', 'mix'], 'GET', {'cost': 1})
17
18
  public_mix_get_market_depth = publicMixGetMarketDepth = Entry('market/depth', ['public', 'mix'], 'GET', {'cost': 1})
18
19
  public_mix_get_market_ticker = publicMixGetMarketTicker = Entry('market/ticker', ['public', 'mix'], 'GET', {'cost': 1})
@@ -30,6 +31,9 @@ class ImplicitAPI:
30
31
  public_mix_get_market_symbol_leverage = publicMixGetMarketSymbolLeverage = Entry('market/symbol-leverage', ['public', 'mix'], 'GET', {'cost': 1})
31
32
  public_mix_get_market_querypositionlever = publicMixGetMarketQueryPositionLever = Entry('market/queryPositionLever', ['public', 'mix'], 'GET', {'cost': 1})
32
33
  public_mix_get_market_open_limit = publicMixGetMarketOpenLimit = Entry('market/open-limit', ['public', 'mix'], 'GET', {'cost': 1})
34
+ public_mix_get_market_history_candles = publicMixGetMarketHistoryCandles = Entry('market/history-candles', ['public', 'mix'], 'GET', {'cost': 1})
35
+ public_mix_get_market_history_index_candles = publicMixGetMarketHistoryIndexCandles = Entry('market/history-index-candles', ['public', 'mix'], 'GET', {'cost': 1})
36
+ public_mix_get_market_history_mark_candles = publicMixGetMarketHistoryMarkCandles = Entry('market/history-mark-candles', ['public', 'mix'], 'GET', {'cost': 1})
33
37
  public_margin_get_cross_public_interestrateandlimit = publicMarginGetCrossPublicInterestRateAndLimit = Entry('cross/public/interestRateAndLimit', ['public', 'margin'], 'GET', {'cost': 2})
34
38
  public_margin_get_isolated_public_interestrateandlimit = publicMarginGetIsolatedPublicInterestRateAndLimit = Entry('isolated/public/interestRateAndLimit', ['public', 'margin'], 'GET', {'cost': 2})
35
39
  public_margin_get_cross_public_tierdata = publicMarginGetCrossPublicTierData = Entry('cross/public/tierData', ['public', 'margin'], 'GET', {'cost': 2})
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.0.5'
7
+ __version__ = '4.0.7'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.0.5'
5
+ __version__ = '4.0.7'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -170,6 +170,7 @@ class bitget(Exchange, ImplicitAPI):
170
170
  'market/candles': 1,
171
171
  'market/depth': 1,
172
172
  'market/spot-vip-level': 2,
173
+ 'market/history-candles': 1,
173
174
  },
174
175
  },
175
176
  'mix': {
@@ -191,6 +192,9 @@ class bitget(Exchange, ImplicitAPI):
191
192
  'market/symbol-leverage': 1,
192
193
  'market/queryPositionLever': 1,
193
194
  'market/open-limit': 1,
195
+ 'market/history-candles': 1,
196
+ 'market/history-index-candles': 1,
197
+ 'market/history-mark-candles': 1,
194
198
  },
195
199
  },
196
200
  'margin': {
@@ -61,6 +61,7 @@ class coinbase(Exchange, ImplicitAPI):
61
61
  'createStopOrder': True,
62
62
  'fetchAccounts': True,
63
63
  'fetchBalance': True,
64
+ 'fetchBidsAsks': True,
64
65
  'fetchBorrowRate': False,
65
66
  'fetchBorrowRateHistories': False,
66
67
  'fetchBorrowRateHistory': False,
@@ -1374,19 +1375,50 @@ class coinbase(Exchange, ImplicitAPI):
1374
1375
  # ...
1375
1376
  # ]
1376
1377
  #
1378
+ # fetchBidsAsks
1379
+ #
1380
+ # {
1381
+ # "product_id": "TRAC-EUR",
1382
+ # "bids": [
1383
+ # {
1384
+ # "price": "0.2384",
1385
+ # "size": "386.1"
1386
+ # }
1387
+ # ],
1388
+ # "asks": [
1389
+ # {
1390
+ # "price": "0.2406",
1391
+ # "size": "672"
1392
+ # }
1393
+ # ],
1394
+ # "time": "2023-06-30T07:15:24.656044Z"
1395
+ # }
1396
+ #
1397
+ bid = self.safe_number(ticker, 'bid')
1398
+ ask = self.safe_number(ticker, 'ask')
1399
+ bidVolume = None
1400
+ askVolume = None
1401
+ if ('bids' in ticker):
1402
+ bids = self.safe_value(ticker, 'bids', [])
1403
+ asks = self.safe_value(ticker, 'asks', [])
1404
+ bid = self.safe_number(bids[0], 'price')
1405
+ bidVolume = self.safe_number(bids[0], 'size')
1406
+ ask = self.safe_number(asks[0], 'price')
1407
+ askVolume = self.safe_number(asks[0], 'size')
1377
1408
  marketId = self.safe_string(ticker, 'product_id')
1378
1409
  last = self.safe_number(ticker, 'price')
1410
+ datetime = self.safe_string(ticker, 'time')
1379
1411
  return self.safe_ticker({
1380
1412
  'symbol': self.safe_symbol(marketId, market),
1381
- 'timestamp': None,
1382
- 'datetime': None,
1383
- 'bid': self.safe_number(ticker, 'bid'),
1384
- 'ask': self.safe_number(ticker, 'ask'),
1413
+ 'timestamp': self.parse8601(datetime),
1414
+ 'datetime': datetime,
1415
+ 'bid': bid,
1416
+ 'ask': ask,
1385
1417
  'last': last,
1386
1418
  'high': None,
1387
1419
  'low': None,
1388
- 'bidVolume': None,
1389
- 'askVolume': None,
1420
+ 'bidVolume': bidVolume,
1421
+ 'askVolume': askVolume,
1390
1422
  'vwap': None,
1391
1423
  'open': None,
1392
1424
  'close': last,
@@ -2616,6 +2648,43 @@ class coinbase(Exchange, ImplicitAPI):
2616
2648
  timestamp = self.parse8601(time)
2617
2649
  return self.parse_order_book(data, symbol, timestamp, 'bids', 'asks', 'price', 'size')
2618
2650
 
2651
+ async def fetch_bids_asks(self, symbols: Optional[List[str]] = None, params={}):
2652
+ """
2653
+ fetches the bid and ask price and volume for multiple markets
2654
+ see https://docs.cloud.coinbase.com/advanced-trade-api/reference/retailbrokerageapi_getbestbidask
2655
+ :param [str]|None symbols: unified symbols of the markets to fetch the bids and asks for, all markets are returned if not assigned
2656
+ :param dict params: extra parameters specific to the coinbase api endpoint
2657
+ :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/en/latest/manual.html#ticker-structure>`
2658
+ """
2659
+ await self.load_markets()
2660
+ symbols = self.market_symbols(symbols)
2661
+ # the 'product_ids' param isn't working properly and returns {"pricebooks":[]} when defined
2662
+ response = await self.v3PrivateGetBrokerageBestBidAsk(params)
2663
+ #
2664
+ # {
2665
+ # "pricebooks": [
2666
+ # {
2667
+ # "product_id": "TRAC-EUR",
2668
+ # "bids": [
2669
+ # {
2670
+ # "price": "0.2384",
2671
+ # "size": "386.1"
2672
+ # }
2673
+ # ],
2674
+ # "asks": [
2675
+ # {
2676
+ # "price": "0.2406",
2677
+ # "size": "672"
2678
+ # }
2679
+ # ],
2680
+ # "time": "2023-06-30T07:15:24.656044Z"
2681
+ # },
2682
+ # ]
2683
+ # }
2684
+ #
2685
+ tickers = self.safe_value(response, 'pricebooks', [])
2686
+ return self.parse_tickers(tickers, symbols)
2687
+
2619
2688
  def sign(self, path, api=[], method='GET', params={}, headers=None, body=None):
2620
2689
  version = api[0]
2621
2690
  signed = api[1] == 'private'
ccxt/async_support/okx.py CHANGED
@@ -168,7 +168,13 @@ class okx(Exchange, ImplicitAPI):
168
168
  'www': 'https://www.okx.com',
169
169
  'doc': 'https://www.okx.com/docs-v5/en/',
170
170
  'fees': 'https://www.okx.com/pages/products/fees.html',
171
- 'referral': 'https://www.okx.com/join/1888677',
171
+ 'referral': {
172
+ # old reflink 0% discount https://www.okx.com/join/1888677
173
+ # new reflink 20% discount https://www.okx.com/join/CCXT2023
174
+ # okx + ccxt campaign reflink with 20% discount https://www.okx.com/activities/ccxt-trade-and-earn?channelid=CCXT2023
175
+ 'url': 'https://www.okx.com/activities/ccxt-trade-and-earn?channelid=CCXT2023',
176
+ 'discount': 0.2,
177
+ },
172
178
  'test': {
173
179
  'rest': 'https://{hostname}',
174
180
  },
ccxt/base/exchange.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.0.5'
7
+ __version__ = '4.0.7'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
ccxt/bitget.py CHANGED
@@ -169,6 +169,7 @@ class bitget(Exchange, ImplicitAPI):
169
169
  'market/candles': 1,
170
170
  'market/depth': 1,
171
171
  'market/spot-vip-level': 2,
172
+ 'market/history-candles': 1,
172
173
  },
173
174
  },
174
175
  'mix': {
@@ -190,6 +191,9 @@ class bitget(Exchange, ImplicitAPI):
190
191
  'market/symbol-leverage': 1,
191
192
  'market/queryPositionLever': 1,
192
193
  'market/open-limit': 1,
194
+ 'market/history-candles': 1,
195
+ 'market/history-index-candles': 1,
196
+ 'market/history-mark-candles': 1,
193
197
  },
194
198
  },
195
199
  'margin': {
ccxt/coinbase.py CHANGED
@@ -61,6 +61,7 @@ class coinbase(Exchange, ImplicitAPI):
61
61
  'createStopOrder': True,
62
62
  'fetchAccounts': True,
63
63
  'fetchBalance': True,
64
+ 'fetchBidsAsks': True,
64
65
  'fetchBorrowRate': False,
65
66
  'fetchBorrowRateHistories': False,
66
67
  'fetchBorrowRateHistory': False,
@@ -1374,19 +1375,50 @@ class coinbase(Exchange, ImplicitAPI):
1374
1375
  # ...
1375
1376
  # ]
1376
1377
  #
1378
+ # fetchBidsAsks
1379
+ #
1380
+ # {
1381
+ # "product_id": "TRAC-EUR",
1382
+ # "bids": [
1383
+ # {
1384
+ # "price": "0.2384",
1385
+ # "size": "386.1"
1386
+ # }
1387
+ # ],
1388
+ # "asks": [
1389
+ # {
1390
+ # "price": "0.2406",
1391
+ # "size": "672"
1392
+ # }
1393
+ # ],
1394
+ # "time": "2023-06-30T07:15:24.656044Z"
1395
+ # }
1396
+ #
1397
+ bid = self.safe_number(ticker, 'bid')
1398
+ ask = self.safe_number(ticker, 'ask')
1399
+ bidVolume = None
1400
+ askVolume = None
1401
+ if ('bids' in ticker):
1402
+ bids = self.safe_value(ticker, 'bids', [])
1403
+ asks = self.safe_value(ticker, 'asks', [])
1404
+ bid = self.safe_number(bids[0], 'price')
1405
+ bidVolume = self.safe_number(bids[0], 'size')
1406
+ ask = self.safe_number(asks[0], 'price')
1407
+ askVolume = self.safe_number(asks[0], 'size')
1377
1408
  marketId = self.safe_string(ticker, 'product_id')
1378
1409
  last = self.safe_number(ticker, 'price')
1410
+ datetime = self.safe_string(ticker, 'time')
1379
1411
  return self.safe_ticker({
1380
1412
  'symbol': self.safe_symbol(marketId, market),
1381
- 'timestamp': None,
1382
- 'datetime': None,
1383
- 'bid': self.safe_number(ticker, 'bid'),
1384
- 'ask': self.safe_number(ticker, 'ask'),
1413
+ 'timestamp': self.parse8601(datetime),
1414
+ 'datetime': datetime,
1415
+ 'bid': bid,
1416
+ 'ask': ask,
1385
1417
  'last': last,
1386
1418
  'high': None,
1387
1419
  'low': None,
1388
- 'bidVolume': None,
1389
- 'askVolume': None,
1420
+ 'bidVolume': bidVolume,
1421
+ 'askVolume': askVolume,
1390
1422
  'vwap': None,
1391
1423
  'open': None,
1392
1424
  'close': last,
@@ -2616,6 +2648,43 @@ class coinbase(Exchange, ImplicitAPI):
2616
2648
  timestamp = self.parse8601(time)
2617
2649
  return self.parse_order_book(data, symbol, timestamp, 'bids', 'asks', 'price', 'size')
2618
2650
 
2651
+ def fetch_bids_asks(self, symbols: Optional[List[str]] = None, params={}):
2652
+ """
2653
+ fetches the bid and ask price and volume for multiple markets
2654
+ see https://docs.cloud.coinbase.com/advanced-trade-api/reference/retailbrokerageapi_getbestbidask
2655
+ :param [str]|None symbols: unified symbols of the markets to fetch the bids and asks for, all markets are returned if not assigned
2656
+ :param dict params: extra parameters specific to the coinbase api endpoint
2657
+ :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/en/latest/manual.html#ticker-structure>`
2658
+ """
2659
+ self.load_markets()
2660
+ symbols = self.market_symbols(symbols)
2661
+ # the 'product_ids' param isn't working properly and returns {"pricebooks":[]} when defined
2662
+ response = self.v3PrivateGetBrokerageBestBidAsk(params)
2663
+ #
2664
+ # {
2665
+ # "pricebooks": [
2666
+ # {
2667
+ # "product_id": "TRAC-EUR",
2668
+ # "bids": [
2669
+ # {
2670
+ # "price": "0.2384",
2671
+ # "size": "386.1"
2672
+ # }
2673
+ # ],
2674
+ # "asks": [
2675
+ # {
2676
+ # "price": "0.2406",
2677
+ # "size": "672"
2678
+ # }
2679
+ # ],
2680
+ # "time": "2023-06-30T07:15:24.656044Z"
2681
+ # },
2682
+ # ]
2683
+ # }
2684
+ #
2685
+ tickers = self.safe_value(response, 'pricebooks', [])
2686
+ return self.parse_tickers(tickers, symbols)
2687
+
2619
2688
  def sign(self, path, api=[], method='GET', params={}, headers=None, body=None):
2620
2689
  version = api[0]
2621
2690
  signed = api[1] == 'private'
ccxt/okx.py CHANGED
@@ -167,7 +167,13 @@ class okx(Exchange, ImplicitAPI):
167
167
  'www': 'https://www.okx.com',
168
168
  'doc': 'https://www.okx.com/docs-v5/en/',
169
169
  'fees': 'https://www.okx.com/pages/products/fees.html',
170
- 'referral': 'https://www.okx.com/join/1888677',
170
+ 'referral': {
171
+ # old reflink 0% discount https://www.okx.com/join/1888677
172
+ # new reflink 20% discount https://www.okx.com/join/CCXT2023
173
+ # okx + ccxt campaign reflink with 20% discount https://www.okx.com/activities/ccxt-trade-and-earn?channelid=CCXT2023
174
+ 'url': 'https://www.okx.com/activities/ccxt-trade-and-earn?channelid=CCXT2023',
175
+ 'discount': 0.2,
176
+ },
171
177
  'test': {
172
178
  'rest': 'https://{hostname}',
173
179
  },
ccxt/pro/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.0.5'
7
+ __version__ = '4.0.7'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.0.5
3
+ Version: 4.0.7
4
4
  Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 130+ exchanges
5
5
  Home-page: https://ccxt.com
6
6
  Author: Igor Kroitor
@@ -62,6 +62,9 @@ Current feature list:
62
62
  - an out of the box unified API that is extremely easy to integrate
63
63
  - works in Node 10.4+, Python 3, PHP 8.1+, netstandard2.0/2.1 and web browsers
64
64
 
65
+ ## Sponsored Promotion
66
+
67
+ [![OKX + CCXT Exclusive Event: Trade And Earn](https://github-production-user-asset-6210df.s3.amazonaws.com/1294454/250898976-6300ed05-6606-4432-b0c0-3bb32854af60.png)](https://www.okx.com/activities/ccxt-trade-and-earn?channelid=CCXT2023)
65
68
 
66
69
  ## See Also
67
70
 
@@ -89,7 +92,7 @@ Current feature list:
89
92
  | [![huobi](https://user-images.githubusercontent.com/1294454/76137448-22748a80-604e-11ea-8069-6e389271911d.jpg)](https://www.huobi.com/en-us/v/register/double-invite/?inviter_id=11343840&invite_code=6rmm2223) | huobi | [Huobi](https://www.huobi.com/en-us/v/register/double-invite/?inviter_id=11343840&invite_code=6rmm2223) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://huobiapi.github.io/docs/spot/v1/en/) | [![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) | [![Sign up with Huobi using CCXT's referral link for a 15% discount!](https://img.shields.io/static/v1?label=Fee&message=%2d15%25&color=orange)](https://www.huobi.com/en-us/v/register/double-invite/?inviter_id=11343840&invite_code=6rmm2223) |
90
93
  | [![kucoin](https://user-images.githubusercontent.com/51840849/87295558-132aaf80-c50e-11ea-9801-a2fb0c57c799.jpg)](https://www.kucoin.com/ucenter/signup?rcode=E5wkqe) | kucoin | [KuCoin](https://www.kucoin.com/ucenter/signup?rcode=E5wkqe) | [![API Version 2](https://img.shields.io/badge/2-lightgray)](https://docs.kucoin.com) | [![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) | |
91
94
  | [![mexc](https://user-images.githubusercontent.com/1294454/137283979-8b2a818d-8633-461b-bfca-de89e8c446b2.jpg)](https://m.mexc.com/auth/signup?inviteCode=1FQ1G) | mexc | [MEXC Global](https://m.mexc.com/auth/signup?inviteCode=1FQ1G) | [![API Version 3](https://img.shields.io/badge/3-lightgray)](https://mxcdevelop.github.io/apidocs/spot_v3_en/) | [![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) | |
92
- | [![okx](https://user-images.githubusercontent.com/1294454/152485636-38b19e4a-bece-4dec-979a-5982859ffc04.jpg)](https://www.okx.com/join/1888677) | okx | [OKX](https://www.okx.com/join/1888677) | [![API Version 5](https://img.shields.io/badge/5-lightgray)](https://www.okx.com/docs-v5/en/) | [![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) | |
95
+ | [![okx](https://user-images.githubusercontent.com/1294454/152485636-38b19e4a-bece-4dec-979a-5982859ffc04.jpg)](https://www.okx.com/activities/ccxt-trade-and-earn?channelid=CCXT2023) | okx | [OKX](https://www.okx.com/activities/ccxt-trade-and-earn?channelid=CCXT2023) | [![API Version 5](https://img.shields.io/badge/5-lightgray)](https://www.okx.com/docs-v5/en/) | [![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) | [![Sign up with OKX using CCXT's referral link for a 20% discount!](https://img.shields.io/static/v1?label=Fee&message=%2d20%25&color=orange)](https://www.okx.com/activities/ccxt-trade-and-earn?channelid=CCXT2023) |
93
96
  | [![wavesexchange](https://user-images.githubusercontent.com/1294454/84547058-5fb27d80-ad0b-11ea-8711-78ac8b3c7f31.jpg)](https://waves.exchange) | wavesexchange | [Waves.Exchange](https://waves.exchange) | [![API Version *](https://img.shields.io/badge/*-lightgray)](https://docs.waves.exchange) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | | |
94
97
  | [![woo](https://user-images.githubusercontent.com/1294454/150730761-1a00e5e0-d28c-480f-9e65-089ce3e6ef3b.jpg)](https://referral.woo.org/BAJS6oNmZb3vi3RGA) | woo | [WOO X](https://referral.woo.org/BAJS6oNmZb3vi3RGA) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://docs.woo.org/) | [![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) | |
95
98
 
@@ -180,7 +183,7 @@ The CCXT library currently supports the following 98 cryptocurrency exchange mar
180
183
  | [![novadax](https://user-images.githubusercontent.com/1294454/92337550-2b085500-f0b3-11ea-98e7-5794fb07dd3b.jpg)](https://www.novadax.com.br/?s=ccxt) | novadax | [NovaDAX](https://www.novadax.com.br/?s=ccxt) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://doc.novadax.com/pt-BR/) | | |
181
184
  | [![oceanex](https://user-images.githubusercontent.com/1294454/58385970-794e2d80-8001-11e9-889c-0567cd79b78e.jpg)](https://oceanex.pro/signup?referral=VE24QX) | oceanex | [OceanEx](https://oceanex.pro/signup?referral=VE24QX) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://api.oceanex.pro/doc/v1) | | |
182
185
  | [![okcoin](https://user-images.githubusercontent.com/51840849/87295551-102fbf00-c50e-11ea-90a9-462eebba5829.jpg)](https://www.okcoin.com/account/register?flag=activity&channelId=600001513) | okcoin | [OKCoin](https://www.okcoin.com/account/register?flag=activity&channelId=600001513) | [![API Version 3](https://img.shields.io/badge/3-lightgray)](https://www.okcoin.com/docs/en/) | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
183
- | [![okx](https://user-images.githubusercontent.com/1294454/152485636-38b19e4a-bece-4dec-979a-5982859ffc04.jpg)](https://www.okx.com/join/1888677) | okx | [OKX](https://www.okx.com/join/1888677) | [![API Version 5](https://img.shields.io/badge/5-lightgray)](https://www.okx.com/docs-v5/en/) | [![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) |
186
+ | [![okx](https://user-images.githubusercontent.com/1294454/152485636-38b19e4a-bece-4dec-979a-5982859ffc04.jpg)](https://www.okx.com/activities/ccxt-trade-and-earn?channelid=CCXT2023) | okx | [OKX](https://www.okx.com/activities/ccxt-trade-and-earn?channelid=CCXT2023) | [![API Version 5](https://img.shields.io/badge/5-lightgray)](https://www.okx.com/docs-v5/en/) | [![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) |
184
187
  | [![paymium](https://user-images.githubusercontent.com/51840849/87153930-f0f02200-c2c0-11ea-9c0a-40337375ae89.jpg)](https://www.paymium.com/page/sign-up?referral=eDAzPoRQFMvaAB8sf-qj) | paymium | [Paymium](https://www.paymium.com/page/sign-up?referral=eDAzPoRQFMvaAB8sf-qj) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://github.com/Paymium/api-documentation) | | |
185
188
  | [![phemex](https://user-images.githubusercontent.com/1294454/85225056-221eb600-b3d7-11ea-930d-564d2690e3f6.jpg)](https://phemex.com/register?referralCode=EDNVJ) | phemex | [Phemex](https://phemex.com/register?referralCode=EDNVJ) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://github.com/phemex/phemex-api-docs) | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
186
189
  | [![poloniex](https://user-images.githubusercontent.com/1294454/27766817-e9456312-5ee6-11e7-9b3c-b628ca5626a5.jpg)](https://poloniex.com/signup?c=UBFZJRPJ) | poloniex | [Poloniex](https://poloniex.com/signup?c=UBFZJRPJ) | [![API Version *](https://img.shields.io/badge/*-lightgray)](https://docs.poloniex.com) | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
@@ -254,13 +257,13 @@ console.log(version, Object.keys(exchanges));
254
257
 
255
258
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
256
259
 
257
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.0.5/dist/ccxt.browser.js
258
- * unpkg: https://unpkg.com/ccxt@4.0.5/dist/ccxt.browser.js
260
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.0.7/dist/ccxt.browser.js
261
+ * unpkg: https://unpkg.com/ccxt@4.0.7/dist/ccxt.browser.js
259
262
 
260
263
  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.
261
264
 
262
265
  ```HTML
263
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.0.5/dist/ccxt.browser.js"></script>
266
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.0.7/dist/ccxt.browser.js"></script>
264
267
  ```
265
268
 
266
269
  Creates a global `ccxt` object:
@@ -1,4 +1,4 @@
1
- ccxt/__init__.py,sha256=5rW1fuEjw8mo9Rm4q41XxqYL0GJLlG6FqFB2HeDXy7E,15341
1
+ ccxt/__init__.py,sha256=X2pIyjou-7fw458mXdCCrcGsELSaJuVHLwqiw1tU-5c,15341
2
2
  ccxt/ace.py,sha256=8uTO7fzyxHnEhE3Y8VDP2EcWxh9gjs9xPMbuXjkUA7A,41372
3
3
  ccxt/alpaca.py,sha256=_cPmZ0obENxKSzsqLu0t1Ae-rUwN8z1DUB3Af8Kh4sA,33434
4
4
  ccxt/ascendex.py,sha256=NAmK1Ss3lDunf5MELZF_4B2_toSiC9OQmowvxyTo--c,132518
@@ -17,7 +17,7 @@ ccxt/bitfinex.py,sha256=jVlZWr9fTOnGk7DljrVBDvWkSuYxlJUhn5bNGWt5Ywo,69390
17
17
  ccxt/bitfinex2.py,sha256=gMef9dPorHkYqStWFp8LS0HtoeAR4qsyPLvHUWpDOLs,111573
18
18
  ccxt/bitflyer.py,sha256=xyiLypcK6XG3ZjDhclD4YVP6pwbwVbDPyFghP3fdags,37759
19
19
  ccxt/bitforex.py,sha256=t3e95zu6aVGmJcdNyXPSHX0BGmFXA7PR8VsbIM4LZuc,32164
20
- ccxt/bitget.py,sha256=Mm3PoiNhrvu_-Hqz4rV6vZypUckAKFk6HvxrIoZj6Uw,225610
20
+ ccxt/bitget.py,sha256=MY0XPnzMyowKzZFFreDbUUR4FAd2Rqy52ddVN_-qwXs,225849
21
21
  ccxt/bithumb.py,sha256=QI2sZWiLN1rfXnn2zur1wosFNEWcyFZv_r-7DIVWkpo,42616
22
22
  ccxt/bitmart.py,sha256=DhJJnr3ZJzY9IutjOvxtHvTXG_LURzbIXllXwMs7Q0A,131509
23
23
  ccxt/bitmex.py,sha256=-ZxduV4zhkpxONModGKuqGJMXm-yMo5Fe_JAQM3TlZk,112225
@@ -39,7 +39,7 @@ ccxt/btctradeua.py,sha256=sy56Hmc0AaducvQ_2piTor0BwTvjD02IgqoQ-gBTYcU,22219
39
39
  ccxt/btcturk.py,sha256=VJ5J9gmTJHIOQ0IQrHyrJym9BNIlWfNPpzO8_twINZo,35397
40
40
  ccxt/bybit.py,sha256=1oRdychu4q4_E5X0OC9SGziu49l74TuiYv_8TK6Pksg,403034
41
41
  ccxt/cex.py,sha256=c-tYAAq397tPuv2D00hSe6QtnJFYiqOtoyIO_erCzhc,65000
42
- ccxt/coinbase.py,sha256=HPHijgbChnGHZcyBE2Dl8HFM951xyH0LL4OEnxiLzOg,126487
42
+ ccxt/coinbase.py,sha256=0rkwHFjxS1lBywcVQQDpVVbSjIbhlfpO6faVOvNrr5A,129313
43
43
  ccxt/coinbaseprime.py,sha256=Ygvljulxb2uKdei5yimCj1LMjLlUJNvP-G7ns1HpUFk,1219
44
44
  ccxt/coinbasepro.py,sha256=npuCTjMKK4xHR-gHdp2owj1VtKT78ZeofxGzx4bLuKo,73828
45
45
  ccxt/coincheck.py,sha256=0Y7Z49gpWfMuFcuJXAnCHAMjh1QUpgcaR95lPTD0h9o,34219
@@ -88,7 +88,7 @@ ccxt/oceanex.py,sha256=-6y1oElL5QOYB82J_N5tVHLdEX9hZ7dPCOCzfbQCKqM,37114
88
88
  ccxt/okcoin.py,sha256=B5otctOYDvWkhckFWW7tfhUQsQaSbPiZh0X0eqR1K_w,177829
89
89
  ccxt/okex.py,sha256=nVDSzVztmboH593DVByjzFoOpFTzumcQFH_T9kdVKlE,434
90
90
  ccxt/okex5.py,sha256=LKTogVF1svNkqW_-Cx0AuAopu6esgFf7ucbv7CaodUg,441
91
- ccxt/okx.py,sha256=rElyOASovrLUIfiIfwIO2yiWO0FBgIuvbkKJrMdS2TA,285406
91
+ ccxt/okx.py,sha256=5SatHSUlxiJWerskNxBUhv-gtO6qEqIhJD1qo74hegE,285826
92
92
  ccxt/paymium.py,sha256=DIlRvOVsYZaPGDUSBZH3-DUIXf7QfHEOFyhephw48HE,23938
93
93
  ccxt/phemex.py,sha256=wikqZDAKdVBr5outIp4gVaG19qHPmYmBlDzdcXkeen0,197800
94
94
  ccxt/poloniex.py,sha256=OqLq7DmJOC1jwaTv4nNb0AaO_0JrtoDqZj-3kjFH5lQ,93674
@@ -124,7 +124,7 @@ ccxt/abstract/bitfinex.py,sha256=OLUXdJEycyN_qrBhPuTTOVlwu3jkqVWenoTmS-W3bOE,760
124
124
  ccxt/abstract/bitfinex2.py,sha256=PAch4aEMHMYjV8up6YHmibfLz6sn4wh-knkSTKZbJrY,19171
125
125
  ccxt/abstract/bitflyer.py,sha256=3ngG1GJJCNMzYMWoNXCEEgLxmTl7eRf7_JU4M0P2rqo,3576
126
126
  ccxt/abstract/bitforex.py,sha256=_vwOUvBfzQazUvoflGK53m8i7xRgsmzFL4qP5UzqnZ8,2789
127
- ccxt/abstract/bitget.py,sha256=Edh3tqSZUNv0rCKaHccy3DULB0FT4XGcJ_ABE_tW88c,34294
127
+ ccxt/abstract/bitget.py,sha256=keNvM6j8cUvB-SZtqxkQgeJw0qNwjDlOr2j_ixE-f2M,34928
128
128
  ccxt/abstract/bithumb.py,sha256=I_ZNjXND1I4IRz6AsIwlZV-XoOt0vtMo4kUroAcC2Kk,2659
129
129
  ccxt/abstract/bitmart.py,sha256=Zw34giZABSCscioucHqX8aBT7EEbADrJW_vgmGqNS-Q,9098
130
130
  ccxt/abstract/bitmex.py,sha256=k00c5G7Tj9u00uV7Qj7tBm4uyr5oi4f73UDJA9nA_IY,8397
@@ -211,7 +211,7 @@ ccxt/abstract/woo.py,sha256=9_cfnwSvBNpcw0ESX4MJpfnXGNm5MSND6CsspevTLww,7866
211
211
  ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
212
212
  ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
213
213
  ccxt/abstract/zonda.py,sha256=VoxuPkSq8vAvKnDvOqnByhwsIf09m7yIrs8HejFrDk4,5482
214
- ccxt/async_support/__init__.py,sha256=Poq2KS75CjIZT_f47jRtdewk8t8XHI1RDKiJM81AAiY,15114
214
+ ccxt/async_support/__init__.py,sha256=o62a9Ti7_6kTgi0KhDTLgPtPFW5IJ_QLHI-8NXI9Dj0,15114
215
215
  ccxt/async_support/ace.py,sha256=xTtzqhVgpoDI4YgR9rRTRHTV2UsQmNYNfbuJc6aBKxA,41596
216
216
  ccxt/async_support/alpaca.py,sha256=hWimV0LrPixw15-FH7lMFB6s6EMEOjDlZOhWjznzu3g,33580
217
217
  ccxt/async_support/ascendex.py,sha256=g_I5OjzdooUCjC8gScns6KgF8x1sa8WcNQTAGEFiUyI,133150
@@ -230,7 +230,7 @@ ccxt/async_support/bitfinex.py,sha256=SLYVaRVTOvaEplpraQ8tfJse0-VKYRtdjfQO3yd7dl
230
230
  ccxt/async_support/bitfinex2.py,sha256=fTjgCsWq1iXleuOYvLUHJvGotnX8yw7qtWnUIYrChWw,112043
231
231
  ccxt/async_support/bitflyer.py,sha256=XJjWrXJBTNW3PPyjH4vw0RKIyOSgn9nMmzJK5LKrwZg,38067
232
232
  ccxt/async_support/bitforex.py,sha256=lI1Zz7snYpmCe10LEdO68kFQ8aRY2UXN3qoz2YUC8uc,32388
233
- ccxt/async_support/bitget.py,sha256=mpO9qI-ZmMfU0dwMMhuRwGnD86kcYDqqnxR-mhFT390,226502
233
+ ccxt/async_support/bitget.py,sha256=ZmYYQRLQUjiDWTEOj8Mt4NBGIjssz-ttKoC9BwIEyV4,226741
234
234
  ccxt/async_support/bithumb.py,sha256=PSbN5liXM68a3ZR13v72VLVEXODBo84dw_M-E-JrVuI,42834
235
235
  ccxt/async_support/bitmart.py,sha256=wgdb1MzuOyzeocbkUALo4i30QglEbyTs8UGoSwqQJBM,132147
236
236
  ccxt/async_support/bitmex.py,sha256=YDF1feJsGurNSoTdsh5Lftq5ainn6XHP7nyzV7uvEzc,112719
@@ -252,7 +252,7 @@ ccxt/async_support/btctradeua.py,sha256=tSaZ_DygP7abbM2wwilf6ea6A7v9JePkWjr2icru
252
252
  ccxt/async_support/btcturk.py,sha256=tJKSlRhwK7VmPBmLbliz2Sr9RC0mqP_t_Si9g7Jyi1w,35615
253
253
  ccxt/async_support/bybit.py,sha256=XDsnVNm-hXccB59JGrGDq4oCBxbFp6nN2poMKoiPaqg,404940
254
254
  ccxt/async_support/cex.py,sha256=gF8OtUpS1oWG_BArd2QCP0kTx29oVbsbZOMRSF1Rj3U,65326
255
- ccxt/async_support/coinbase.py,sha256=0A2ZUUtxIr7DM2NiSrZgDZZvSZDy3ZUZ2UsiUNmGRRg,127149
255
+ ccxt/async_support/coinbase.py,sha256=-7A57M1x2HAwUHig1DFd7TvCBGKtpsixRdjdbM-UWe4,129993
256
256
  ccxt/async_support/coinbaseprime.py,sha256=M5Ez1DsFcW3-vJ-4QoZzwYBAKjAAtJnJpkfnV4sWAIc,1233
257
257
  ccxt/async_support/coinbasepro.py,sha256=JRHiB_RsD0iWU8bD4ixUCkgYoYOBfOm7cmthJ7ih9lY,74334
258
258
  ccxt/async_support/coincheck.py,sha256=scNw54Oj_iGHDPLiFjNEMGMU3ti_wKn5ltM-AD85LB8,34425
@@ -301,7 +301,7 @@ ccxt/async_support/oceanex.py,sha256=8GIbo_O2j9tELlYyiE4MPzOD_MwpDPv26tzztqxklhc
301
301
  ccxt/async_support/okcoin.py,sha256=WvLWTmoUs8ARk7GTglgk4BwMtTj_kWUW6nRuuHVdNVk,178293
302
302
  ccxt/async_support/okex.py,sha256=6dbtH4bC1C2x4cQUK6W62y7PuDgO3YazuFa7DYhM4Jw,448
303
303
  ccxt/async_support/okex5.py,sha256=tq41tKx06j3DDO9pu9iKInpjayVprbobVNTK8qb7hoM,455
304
- ccxt/async_support/okx.py,sha256=BxloWChnfAZYoB-QNThPn4t0N9kn82UzRi8P2mJ6Jps,286478
304
+ ccxt/async_support/okx.py,sha256=tnnL9qKlvDht3HtcTvyQDnHPaoiyw1voTyy8eAYl5jI,286898
305
305
  ccxt/async_support/paymium.py,sha256=6GM4efJ7rngx7LQt0rFb3TbZUKzGwBi11VMA7rQD-kY,24126
306
306
  ccxt/async_support/phemex.py,sha256=vKTDQuYgpg-msvQXqzkoHmXEwBtmTM2Yk2yoOFL-axg,198396
307
307
  ccxt/async_support/poloniex.py,sha256=T-mL9xAEQvtawMoijqf4NLVT_Ds-kb6HZZgBY_LNxsQ,94174
@@ -319,7 +319,7 @@ ccxt/async_support/yobit.py,sha256=cRJgQNE-EfjXAligG8-iKxYA-yt9tKGilGnXg1PDrbg,5
319
319
  ccxt/async_support/zaif.py,sha256=Bg4Bfk63mluMSp1_8VE4_JPZEXSb940MocZGFisG9IA,28985
320
320
  ccxt/async_support/zonda.py,sha256=9je6awNUpQAHqF8uKfqIqjXyG8CQOPmzU1xDdxzpNDo,79823
321
321
  ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
322
- ccxt/async_support/base/exchange.py,sha256=bATRws1Y3oCKoQFTZpITfMWud3TTdf2j7B3Q14-xZcs,140818
322
+ ccxt/async_support/base/exchange.py,sha256=4Ox35Ys4b4MUf0z0OpttCEyuBjP5QHXGtnOy_e5EiX8,140818
323
323
  ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
324
324
  ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
325
325
  ccxt/async_support/base/ws/aiohttp_client.py,sha256=xmlZV30Vb9Kq7JCm3D5FuEmuj1zp5H4F4hrz8-Y-Ir4,4999
@@ -333,10 +333,10 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=GH-475Ni0mLOx7mUDnz4jjzaGkh
333
333
  ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
334
334
  ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
335
335
  ccxt/base/errors.py,sha256=-LVeTNyXvu3QEgb-p-KzMpcBgzHlvFTwDzmZK7Gfc14,3401
336
- ccxt/base/exchange.py,sha256=KWU5fuij2TLYkSKavuoeuDLlp2B1NQo5AyZIR0oZbBI,180207
336
+ ccxt/base/exchange.py,sha256=_aCl8n_zJD4XyMZyb5P0BPsiZ8pDgztwz6QvJI0bBfs,180207
337
337
  ccxt/base/precise.py,sha256=_xfu54sV0vWNnOfGTKRFykeuWP8mn4K1m9lk1tcllX4,8565
338
338
  ccxt/base/types.py,sha256=be7MU-iLHhynL-GmIzPxb0SD6GIps-w3PmPN05irsAA,1406
339
- ccxt/pro/__init__.py,sha256=1QbsRngODCDNZN1vbjB5II55mc1qFoiQTLQkDWRmA5U,6376
339
+ ccxt/pro/__init__.py,sha256=5ElgNXAk1_ug3NXwlp84C4bhnjj__A9XRvVsdpvMUWw,6376
340
340
  ccxt/pro/alpaca.py,sha256=dHcK0EFjEkzs_nZn2DGpwMauOkw2XPKaqYezx4dcDis,26671
341
341
  ccxt/pro/ascendex.py,sha256=QVvtQlv_AZaQTaZcczXocmrf9gL1zFpsLRVcNF21qCI,34555
342
342
  ccxt/pro/bequant.py,sha256=qz8JjnpkAQY_CFiFSKGqrjjgZ2167_TBKjSJOb9NeDw,1081
@@ -446,7 +446,7 @@ ccxt/test/base/test_ticker.py,sha256=h9AV_O6s-Ax3vB3sFoN0Mz22rMOi65i9BDv0SNejH98
446
446
  ccxt/test/base/test_trade.py,sha256=bL9o3S_TGW8Nnlxu-BYkRG8NyRzKAWrU66uO5jJCM3A,2259
447
447
  ccxt/test/base/test_trading_fee.py,sha256=yRCpLHLg_ca9JQXdZB3_pIMHgHLGEfeQF95E6d1e2Bc,1125
448
448
  ccxt/test/base/test_transaction.py,sha256=BTbB4UHHXkrvYgwbrhh867nVRlevmIkIrz1W_odlQJI,1434
449
- ccxt-4.0.5.dist-info/METADATA,sha256=TbXScBgFvxRSnf5lkxn4Izm-ft-DhPka6KxX_QMSRnA,108704
450
- ccxt-4.0.5.dist-info/WHEEL,sha256=a-zpFRIJzOq5QfuhBzbhiA1eHTzNCJn8OdRvhdNX0Rk,110
451
- ccxt-4.0.5.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
452
- ccxt-4.0.5.dist-info/RECORD,,
449
+ ccxt-4.0.7.dist-info/METADATA,sha256=lqflX3ga5CMiJCv77dykVgwBCmU5ub2xjpVyQTlMNpI,108968
450
+ ccxt-4.0.7.dist-info/WHEEL,sha256=a-zpFRIJzOq5QfuhBzbhiA1eHTzNCJn8OdRvhdNX0Rk,110
451
+ ccxt-4.0.7.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
452
+ ccxt-4.0.7.dist-info/RECORD,,
File without changes