ccxt 4.2.94__py2.py3-none-any.whl → 4.2.96__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 (185) hide show
  1. ccxt/__init__.py +2 -2
  2. ccxt/abstract/bitstamp.py +6 -0
  3. ccxt/abstract/coinbase.py +1 -0
  4. ccxt/ace.py +1 -1
  5. ccxt/ascendex.py +1 -1
  6. ccxt/async_support/__init__.py +2 -2
  7. ccxt/async_support/ace.py +1 -1
  8. ccxt/async_support/ascendex.py +1 -1
  9. ccxt/async_support/base/exchange.py +1 -1
  10. ccxt/async_support/bigone.py +1 -1
  11. ccxt/async_support/binance.py +3 -3
  12. ccxt/async_support/bingx.py +1 -1
  13. ccxt/async_support/bit2c.py +1 -1
  14. ccxt/async_support/bitbank.py +1 -1
  15. ccxt/async_support/bitfinex.py +1 -1
  16. ccxt/async_support/bitfinex2.py +1 -1
  17. ccxt/async_support/bitget.py +1 -1
  18. ccxt/async_support/bithumb.py +1 -1
  19. ccxt/async_support/bitmart.py +1 -1
  20. ccxt/async_support/bitmex.py +1 -1
  21. ccxt/async_support/bitopro.py +1 -1
  22. ccxt/async_support/bitrue.py +1 -1
  23. ccxt/async_support/bitso.py +1 -1
  24. ccxt/async_support/bitstamp.py +7 -1
  25. ccxt/async_support/bitteam.py +1 -1
  26. ccxt/async_support/bitvavo.py +1 -1
  27. ccxt/async_support/blockchaincom.py +1 -1
  28. ccxt/async_support/blofin.py +1 -1
  29. ccxt/async_support/btcalpha.py +1 -1
  30. ccxt/async_support/btcbox.py +1 -1
  31. ccxt/async_support/bybit.py +2 -2
  32. ccxt/async_support/cex.py +1 -1
  33. ccxt/async_support/coinbase.py +587 -103
  34. ccxt/async_support/coinbaseinternational.py +1 -1
  35. ccxt/async_support/coinbasepro.py +1 -1
  36. ccxt/async_support/coincheck.py +1 -1
  37. ccxt/async_support/coinex.py +62 -56
  38. ccxt/async_support/coinlist.py +1 -1
  39. ccxt/async_support/coinmate.py +1 -1
  40. ccxt/async_support/coinsph.py +1 -1
  41. ccxt/async_support/cryptocom.py +1 -1
  42. ccxt/async_support/currencycom.py +1 -1
  43. ccxt/async_support/delta.py +1 -1
  44. ccxt/async_support/deribit.py +1 -1
  45. ccxt/async_support/digifinex.py +1 -1
  46. ccxt/async_support/exmo.py +1 -1
  47. ccxt/async_support/gate.py +1 -1
  48. ccxt/async_support/gemini.py +27 -11
  49. ccxt/async_support/hitbtc.py +1 -1
  50. ccxt/async_support/hollaex.py +1 -1
  51. ccxt/async_support/htx.py +117 -116
  52. ccxt/async_support/huobijp.py +1 -1
  53. ccxt/async_support/idex.py +1 -1
  54. ccxt/async_support/indodax.py +1 -1
  55. ccxt/async_support/kraken.py +1 -1
  56. ccxt/async_support/krakenfutures.py +2 -2
  57. ccxt/async_support/kucoin.py +1 -1
  58. ccxt/async_support/kucoinfutures.py +1 -1
  59. ccxt/async_support/latoken.py +1 -1
  60. ccxt/async_support/lbank.py +1 -1
  61. ccxt/async_support/mexc.py +1 -1
  62. ccxt/async_support/ndax.py +1 -1
  63. ccxt/async_support/novadax.py +1 -1
  64. ccxt/async_support/oceanex.py +1 -1
  65. ccxt/async_support/okcoin.py +1 -1
  66. ccxt/async_support/okx.py +42 -42
  67. ccxt/async_support/onetrading.py +1 -1
  68. ccxt/async_support/p2b.py +1 -1
  69. ccxt/async_support/phemex.py +1 -1
  70. ccxt/async_support/poloniex.py +1 -1
  71. ccxt/async_support/poloniexfutures.py +1 -1
  72. ccxt/async_support/probit.py +1 -1
  73. ccxt/async_support/timex.py +1 -1
  74. ccxt/async_support/tokocrypto.py +1 -1
  75. ccxt/async_support/tradeogre.py +1 -1
  76. ccxt/async_support/upbit.py +2 -2
  77. ccxt/async_support/wavesexchange.py +1 -1
  78. ccxt/async_support/whitebit.py +1 -1
  79. ccxt/async_support/woo.py +1 -1
  80. ccxt/async_support/yobit.py +1 -1
  81. ccxt/async_support/zonda.py +1 -1
  82. ccxt/base/errors.py +7 -7
  83. ccxt/base/exchange.py +2 -2
  84. ccxt/bigone.py +1 -1
  85. ccxt/binance.py +3 -3
  86. ccxt/bingx.py +1 -1
  87. ccxt/bit2c.py +1 -1
  88. ccxt/bitbank.py +1 -1
  89. ccxt/bitfinex.py +1 -1
  90. ccxt/bitfinex2.py +1 -1
  91. ccxt/bitget.py +1 -1
  92. ccxt/bithumb.py +1 -1
  93. ccxt/bitmart.py +1 -1
  94. ccxt/bitmex.py +1 -1
  95. ccxt/bitopro.py +1 -1
  96. ccxt/bitrue.py +1 -1
  97. ccxt/bitso.py +1 -1
  98. ccxt/bitstamp.py +7 -1
  99. ccxt/bitteam.py +1 -1
  100. ccxt/bitvavo.py +1 -1
  101. ccxt/blockchaincom.py +1 -1
  102. ccxt/blofin.py +1 -1
  103. ccxt/btcalpha.py +1 -1
  104. ccxt/btcbox.py +1 -1
  105. ccxt/bybit.py +2 -2
  106. ccxt/cex.py +1 -1
  107. ccxt/coinbase.py +587 -103
  108. ccxt/coinbaseinternational.py +1 -1
  109. ccxt/coinbasepro.py +1 -1
  110. ccxt/coincheck.py +1 -1
  111. ccxt/coinex.py +62 -56
  112. ccxt/coinlist.py +1 -1
  113. ccxt/coinmate.py +1 -1
  114. ccxt/coinsph.py +1 -1
  115. ccxt/cryptocom.py +1 -1
  116. ccxt/currencycom.py +1 -1
  117. ccxt/delta.py +1 -1
  118. ccxt/deribit.py +1 -1
  119. ccxt/digifinex.py +1 -1
  120. ccxt/exmo.py +1 -1
  121. ccxt/gate.py +1 -1
  122. ccxt/gemini.py +27 -11
  123. ccxt/hitbtc.py +1 -1
  124. ccxt/hollaex.py +1 -1
  125. ccxt/htx.py +117 -116
  126. ccxt/huobijp.py +1 -1
  127. ccxt/idex.py +1 -1
  128. ccxt/indodax.py +1 -1
  129. ccxt/kraken.py +1 -1
  130. ccxt/krakenfutures.py +2 -2
  131. ccxt/kucoin.py +1 -1
  132. ccxt/kucoinfutures.py +1 -1
  133. ccxt/latoken.py +1 -1
  134. ccxt/lbank.py +1 -1
  135. ccxt/mexc.py +1 -1
  136. ccxt/ndax.py +1 -1
  137. ccxt/novadax.py +1 -1
  138. ccxt/oceanex.py +1 -1
  139. ccxt/okcoin.py +1 -1
  140. ccxt/okx.py +42 -42
  141. ccxt/onetrading.py +1 -1
  142. ccxt/p2b.py +1 -1
  143. ccxt/phemex.py +1 -1
  144. ccxt/poloniex.py +1 -1
  145. ccxt/poloniexfutures.py +1 -1
  146. ccxt/pro/__init__.py +1 -1
  147. ccxt/pro/ascendex.py +1 -1
  148. ccxt/pro/bitfinex2.py +1 -1
  149. ccxt/pro/bitget.py +1 -1
  150. ccxt/pro/bitmart.py +1 -1
  151. ccxt/pro/bitmex.py +1 -1
  152. ccxt/pro/bitstamp.py +1 -1
  153. ccxt/pro/bitvavo.py +1 -1
  154. ccxt/pro/blockchaincom.py +1 -1
  155. ccxt/pro/bybit.py +1 -1
  156. ccxt/pro/coinbase.py +31 -4
  157. ccxt/pro/coinbaseinternational.py +1 -1
  158. ccxt/pro/coinbasepro.py +1 -1
  159. ccxt/pro/coinex.py +1 -1
  160. ccxt/pro/cryptocom.py +1 -1
  161. ccxt/pro/gate.py +1 -1
  162. ccxt/pro/hitbtc.py +1 -1
  163. ccxt/pro/hollaex.py +1 -1
  164. ccxt/pro/htx.py +1 -1
  165. ccxt/pro/kraken.py +1 -1
  166. ccxt/pro/krakenfutures.py +1 -1
  167. ccxt/pro/okcoin.py +1 -1
  168. ccxt/pro/okx.py +1 -1
  169. ccxt/pro/poloniex.py +1 -1
  170. ccxt/pro/poloniexfutures.py +1 -1
  171. ccxt/pro/whitebit.py +1 -1
  172. ccxt/probit.py +1 -1
  173. ccxt/timex.py +1 -1
  174. ccxt/tokocrypto.py +1 -1
  175. ccxt/tradeogre.py +1 -1
  176. ccxt/upbit.py +2 -2
  177. ccxt/wavesexchange.py +1 -1
  178. ccxt/whitebit.py +1 -1
  179. ccxt/woo.py +1 -1
  180. ccxt/yobit.py +1 -1
  181. ccxt/zonda.py +1 -1
  182. {ccxt-4.2.94.dist-info → ccxt-4.2.96.dist-info}/METADATA +4 -4
  183. {ccxt-4.2.94.dist-info → ccxt-4.2.96.dist-info}/RECORD +185 -185
  184. {ccxt-4.2.94.dist-info → ccxt-4.2.96.dist-info}/WHEEL +0 -0
  185. {ccxt-4.2.94.dist-info → ccxt-4.2.96.dist-info}/top_level.txt +0 -0
@@ -10,12 +10,12 @@ from ccxt.base.types import Balances, Currencies, Currency, Int, Market, Order,
10
10
  from typing import List
11
11
  from typing import Any
12
12
  from ccxt.base.errors import ExchangeError
13
+ from ccxt.base.errors import AuthenticationError
13
14
  from ccxt.base.errors import PermissionDenied
14
15
  from ccxt.base.errors import ArgumentsRequired
15
16
  from ccxt.base.errors import BadRequest
16
17
  from ccxt.base.errors import InvalidOrder
17
18
  from ccxt.base.errors import DuplicateOrderId
18
- from ccxt.base.errors import AuthenticationError
19
19
  from ccxt.base.decimal_to_precision import TICK_SIZE
20
20
  from ccxt.base.precise import Precise
21
21
 
ccxt/coinbasepro.py CHANGED
@@ -9,6 +9,7 @@ import hashlib
9
9
  from ccxt.base.types import Account, Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
+ from ccxt.base.errors import AuthenticationError
12
13
  from ccxt.base.errors import PermissionDenied
13
14
  from ccxt.base.errors import ArgumentsRequired
14
15
  from ccxt.base.errors import InsufficientFunds
@@ -17,7 +18,6 @@ from ccxt.base.errors import InvalidOrder
17
18
  from ccxt.base.errors import OrderNotFound
18
19
  from ccxt.base.errors import RateLimitExceeded
19
20
  from ccxt.base.errors import OnMaintenance
20
- from ccxt.base.errors import AuthenticationError
21
21
  from ccxt.base.decimal_to_precision import TICK_SIZE
22
22
  from ccxt.base.precise import Precise
23
23
 
ccxt/coincheck.py CHANGED
@@ -9,8 +9,8 @@ import hashlib
9
9
  from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, TradingFees, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
- from ccxt.base.errors import BadSymbol
13
12
  from ccxt.base.errors import AuthenticationError
13
+ from ccxt.base.errors import BadSymbol
14
14
  from ccxt.base.decimal_to_precision import TICK_SIZE
15
15
 
16
16
 
ccxt/coinex.py CHANGED
@@ -8,6 +8,7 @@ from ccxt.abstract.coinex import ImplicitAPI
8
8
  from ccxt.base.types import Balances, Currencies, Currency, Int, Leverage, Leverages, MarginModification, Market, Num, Order, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
9
9
  from typing import List
10
10
  from ccxt.base.errors import ExchangeError
11
+ from ccxt.base.errors import AuthenticationError
11
12
  from ccxt.base.errors import PermissionDenied
12
13
  from ccxt.base.errors import ArgumentsRequired
13
14
  from ccxt.base.errors import BadRequest
@@ -19,7 +20,6 @@ from ccxt.base.errors import NotSupported
19
20
  from ccxt.base.errors import RateLimitExceeded
20
21
  from ccxt.base.errors import ExchangeNotAvailable
21
22
  from ccxt.base.errors import RequestTimeout
22
- from ccxt.base.errors import AuthenticationError
23
23
  from ccxt.base.decimal_to_precision import TICK_SIZE
24
24
  from ccxt.base.precise import Precise
25
25
 
@@ -1075,8 +1075,8 @@ class coinex(Exchange, ImplicitAPI):
1075
1075
  def fetch_order_book(self, symbol: str, limit: Int = 20, params={}):
1076
1076
  """
1077
1077
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
1078
- :see: https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot001_market004_market_depth
1079
- :see: https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http010_market_depth
1078
+ :see: https://docs.coinex.com/api/v2/spot/market/http/list-market-depth
1079
+ :see: https://docs.coinex.com/api/v2/futures/market/http/list-market-depth
1080
1080
  :param str symbol: unified symbol of the market to fetch the order book for
1081
1081
  :param int [limit]: the maximum amount of order book entries to return
1082
1082
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1087,63 +1087,69 @@ class coinex(Exchange, ImplicitAPI):
1087
1087
  if limit is None:
1088
1088
  limit = 20 # default
1089
1089
  request = {
1090
- 'market': self.market_id(symbol),
1091
- 'merge': '0',
1092
- 'limit': str(limit),
1090
+ 'market': market['id'],
1091
+ 'limit': limit,
1092
+ 'interval': '0',
1093
1093
  }
1094
1094
  response = None
1095
1095
  if market['swap']:
1096
- response = self.v1PerpetualPublicGetMarketDepth(self.extend(request, params))
1096
+ response = self.v2PublicGetFuturesDepth(self.extend(request, params))
1097
+ #
1098
+ # {
1099
+ # "code": 0,
1100
+ # "data": {
1101
+ # "depth": {
1102
+ # "asks": [
1103
+ # ["70851.94", "0.2119"],
1104
+ # ["70851.95", "0.0004"],
1105
+ # ["70851.96", "0.0004"]
1106
+ # ],
1107
+ # "bids": [
1108
+ # ["70851.93", "1.0314"],
1109
+ # ["70850.93", "0.0021"],
1110
+ # ["70850.42", "0.0306"]
1111
+ # ],
1112
+ # "checksum": 2956436260,
1113
+ # "last": "70851.94",
1114
+ # "updated_at": 1712824003252
1115
+ # },
1116
+ # "is_full": True,
1117
+ # "market": "BTCUSDT"
1118
+ # },
1119
+ # "message": "OK"
1120
+ # }
1121
+ #
1097
1122
  else:
1098
- response = self.v1PublicGetMarketDepth(self.extend(request, params))
1099
- #
1100
- # Spot
1101
- #
1102
- # {
1103
- # "code": 0,
1104
- # "data": {
1105
- # "asks": [
1106
- # ["41056.33", "0.31727613"],
1107
- # ["41056.34", "1.05657294"],
1108
- # ["41056.35", "0.02346648"]
1109
- # ],
1110
- # "bids": [
1111
- # ["41050.61", "0.40618608"],
1112
- # ["41046.98", "0.13800000"],
1113
- # ["41046.56", "0.22579234"]
1114
- # ],
1115
- # "last": "41050.61",
1116
- # "time": 1650573220346
1117
- # },
1118
- # "message": "OK"
1119
- # }
1120
- #
1121
- # Swap
1122
- #
1123
- # {
1124
- # "code": 0,
1125
- # "data": {
1126
- # "asks": [
1127
- # ["40620.90", "0.0384"],
1128
- # ["40625.50", "0.0219"],
1129
- # ["40625.90", "0.3506"]
1130
- # ],
1131
- # "bids": [
1132
- # ["40620.89", "19.6861"],
1133
- # ["40620.80", "0.0012"],
1134
- # ["40619.87", "0.0365"]
1135
- # ],
1136
- # "last": "40620.89",
1137
- # "time": 1650587672406,
1138
- # "sign_price": "40619.32",
1139
- # "index_price": "40609.93"
1140
- # },
1141
- # "message": "OK"
1142
- # }
1143
- #
1144
- result = self.safe_value(response, 'data', {})
1145
- timestamp = self.safe_integer(result, 'time')
1146
- return self.parse_order_book(result, symbol, timestamp)
1123
+ response = self.v2PublicGetSpotDepth(self.extend(request, params))
1124
+ #
1125
+ # {
1126
+ # "code": 0,
1127
+ # "data": {
1128
+ # "depth": {
1129
+ # "asks": [
1130
+ # ["70875.31", "0.28670282"],
1131
+ # ["70875.32", "0.31008114"],
1132
+ # ["70875.42", "0.05876653"]
1133
+ # ],
1134
+ # "bids": [
1135
+ # ["70855.3", "0.00632222"],
1136
+ # ["70855.29", "0.36216834"],
1137
+ # ["70855.17", "0.10166802"]
1138
+ # ],
1139
+ # "checksum": 2313816665,
1140
+ # "last": "70857.19",
1141
+ # "updated_at": 1712823790987
1142
+ # },
1143
+ # "is_full": True,
1144
+ # "market": "BTCUSDT"
1145
+ # },
1146
+ # "message": "OK"
1147
+ # }
1148
+ #
1149
+ data = self.safe_dict(response, 'data', {})
1150
+ depth = self.safe_dict(data, 'depth', {})
1151
+ timestamp = self.safe_integer(depth, 'updated_at')
1152
+ return self.parse_order_book(depth, symbol, timestamp)
1147
1153
 
1148
1154
  def parse_trade(self, trade, market: Market = None) -> Trade:
1149
1155
  #
ccxt/coinlist.py CHANGED
@@ -10,6 +10,7 @@ import math
10
10
  from ccxt.base.types import Account, Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction, TransferEntry
11
11
  from typing import List
12
12
  from ccxt.base.errors import ExchangeError
13
+ from ccxt.base.errors import AuthenticationError
13
14
  from ccxt.base.errors import PermissionDenied
14
15
  from ccxt.base.errors import ArgumentsRequired
15
16
  from ccxt.base.errors import BadRequest
@@ -20,7 +21,6 @@ from ccxt.base.errors import InvalidOrder
20
21
  from ccxt.base.errors import OrderNotFound
21
22
  from ccxt.base.errors import NotSupported
22
23
  from ccxt.base.errors import OnMaintenance
23
- from ccxt.base.errors import AuthenticationError
24
24
  from ccxt.base.decimal_to_precision import TICK_SIZE
25
25
  from ccxt.base.precise import Precise
26
26
 
ccxt/coinmate.py CHANGED
@@ -9,12 +9,12 @@ import hashlib
9
9
  from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
+ from ccxt.base.errors import AuthenticationError
12
13
  from ccxt.base.errors import ArgumentsRequired
13
14
  from ccxt.base.errors import InsufficientFunds
14
15
  from ccxt.base.errors import InvalidOrder
15
16
  from ccxt.base.errors import OrderNotFound
16
17
  from ccxt.base.errors import RateLimitExceeded
17
- from ccxt.base.errors import AuthenticationError
18
18
  from ccxt.base.decimal_to_precision import TICK_SIZE
19
19
  from ccxt.base.precise import Precise
20
20
 
ccxt/coinsph.py CHANGED
@@ -9,6 +9,7 @@ import hashlib
9
9
  from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
+ from ccxt.base.errors import AuthenticationError
12
13
  from ccxt.base.errors import PermissionDenied
13
14
  from ccxt.base.errors import ArgumentsRequired
14
15
  from ccxt.base.errors import BadRequest
@@ -23,7 +24,6 @@ from ccxt.base.errors import DuplicateOrderId
23
24
  from ccxt.base.errors import NotSupported
24
25
  from ccxt.base.errors import RateLimitExceeded
25
26
  from ccxt.base.errors import ExchangeNotAvailable
26
- from ccxt.base.errors import AuthenticationError
27
27
  from ccxt.base.decimal_to_precision import TICK_SIZE
28
28
  from ccxt.base.precise import Precise
29
29
 
ccxt/cryptocom.py CHANGED
@@ -9,6 +9,7 @@ import hashlib
9
9
  from ccxt.base.types import Account, Balances, Currency, Int, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
+ from ccxt.base.errors import AuthenticationError
12
13
  from ccxt.base.errors import PermissionDenied
13
14
  from ccxt.base.errors import AccountNotEnabled
14
15
  from ccxt.base.errors import ArgumentsRequired
@@ -20,7 +21,6 @@ from ccxt.base.errors import NotSupported
20
21
  from ccxt.base.errors import DDoSProtection
21
22
  from ccxt.base.errors import OnMaintenance
22
23
  from ccxt.base.errors import InvalidNonce
23
- from ccxt.base.errors import AuthenticationError
24
24
  from ccxt.base.decimal_to_precision import TICK_SIZE
25
25
  from ccxt.base.precise import Precise
26
26
 
ccxt/currencycom.py CHANGED
@@ -9,6 +9,7 @@ import hashlib
9
9
  from ccxt.base.types import Account, Balances, Currencies, Currency, Int, Leverage, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
+ from ccxt.base.errors import AuthenticationError
12
13
  from ccxt.base.errors import ArgumentsRequired
13
14
  from ccxt.base.errors import BadRequest
14
15
  from ccxt.base.errors import BadSymbol
@@ -19,7 +20,6 @@ from ccxt.base.errors import NotSupported
19
20
  from ccxt.base.errors import DDoSProtection
20
21
  from ccxt.base.errors import ExchangeNotAvailable
21
22
  from ccxt.base.errors import InvalidNonce
22
- from ccxt.base.errors import AuthenticationError
23
23
  from ccxt.base.decimal_to_precision import TICK_SIZE
24
24
  from ccxt.base.precise import Precise
25
25
 
ccxt/delta.py CHANGED
@@ -9,6 +9,7 @@ import hashlib
9
9
  from ccxt.base.types import Balances, Currencies, Currency, Greeks, Int, Leverage, MarginMode, MarginModification, Market, MarketInterface, Num, Option, Order, OrderBook, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
+ from ccxt.base.errors import AuthenticationError
12
13
  from ccxt.base.errors import ArgumentsRequired
13
14
  from ccxt.base.errors import BadRequest
14
15
  from ccxt.base.errors import BadSymbol
@@ -16,7 +17,6 @@ from ccxt.base.errors import InsufficientFunds
16
17
  from ccxt.base.errors import InvalidOrder
17
18
  from ccxt.base.errors import OrderNotFound
18
19
  from ccxt.base.errors import ExchangeNotAvailable
19
- from ccxt.base.errors import AuthenticationError
20
20
  from ccxt.base.decimal_to_precision import TICK_SIZE
21
21
  from ccxt.base.precise import Precise
22
22
 
ccxt/deribit.py CHANGED
@@ -9,6 +9,7 @@ import hashlib
9
9
  from ccxt.base.types import Account, Balances, Currencies, Currency, Greeks, Int, Market, MarketInterface, Num, Option, OptionChain, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction, TransferEntry
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
+ from ccxt.base.errors import AuthenticationError
12
13
  from ccxt.base.errors import PermissionDenied
13
14
  from ccxt.base.errors import ArgumentsRequired
14
15
  from ccxt.base.errors import BadRequest
@@ -20,7 +21,6 @@ from ccxt.base.errors import NotSupported
20
21
  from ccxt.base.errors import DDoSProtection
21
22
  from ccxt.base.errors import ExchangeNotAvailable
22
23
  from ccxt.base.errors import OnMaintenance
23
- from ccxt.base.errors import AuthenticationError
24
24
  from ccxt.base.decimal_to_precision import TICK_SIZE
25
25
  from ccxt.base.precise import Precise
26
26
 
ccxt/digifinex.py CHANGED
@@ -10,6 +10,7 @@ import json
10
10
  from ccxt.base.types import Balances, Currencies, Currency, Int, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction, TransferEntry
11
11
  from typing import List
12
12
  from ccxt.base.errors import ExchangeError
13
+ from ccxt.base.errors import AuthenticationError
13
14
  from ccxt.base.errors import PermissionDenied
14
15
  from ccxt.base.errors import AccountSuspended
15
16
  from ccxt.base.errors import ArgumentsRequired
@@ -25,7 +26,6 @@ from ccxt.base.errors import NetworkError
25
26
  from ccxt.base.errors import DDoSProtection
26
27
  from ccxt.base.errors import RateLimitExceeded
27
28
  from ccxt.base.errors import InvalidNonce
28
- from ccxt.base.errors import AuthenticationError
29
29
  from ccxt.base.decimal_to_precision import TICK_SIZE
30
30
  from ccxt.base.precise import Precise
31
31
 
ccxt/exmo.py CHANGED
@@ -9,6 +9,7 @@ import hashlib
9
9
  from ccxt.base.types import Balances, Currencies, Currency, Int, MarginModification, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
+ from ccxt.base.errors import AuthenticationError
12
13
  from ccxt.base.errors import PermissionDenied
13
14
  from ccxt.base.errors import ArgumentsRequired
14
15
  from ccxt.base.errors import BadRequest
@@ -18,7 +19,6 @@ from ccxt.base.errors import OrderNotFound
18
19
  from ccxt.base.errors import RateLimitExceeded
19
20
  from ccxt.base.errors import OnMaintenance
20
21
  from ccxt.base.errors import InvalidNonce
21
- from ccxt.base.errors import AuthenticationError
22
22
  from ccxt.base.decimal_to_precision import TICK_SIZE
23
23
  from ccxt.base.precise import Precise
24
24
 
ccxt/gate.py CHANGED
@@ -9,6 +9,7 @@ import hashlib
9
9
  from ccxt.base.types import Balances, Currencies, Currency, FundingHistory, Greeks, Int, Leverage, Leverages, MarginModification, Market, MarketInterface, Num, Option, OptionChain, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
+ from ccxt.base.errors import AuthenticationError
12
13
  from ccxt.base.errors import PermissionDenied
13
14
  from ccxt.base.errors import AccountNotEnabled
14
15
  from ccxt.base.errors import AccountSuspended
@@ -23,7 +24,6 @@ from ccxt.base.errors import OrderImmediatelyFillable
23
24
  from ccxt.base.errors import NotSupported
24
25
  from ccxt.base.errors import RateLimitExceeded
25
26
  from ccxt.base.errors import ExchangeNotAvailable
26
- from ccxt.base.errors import AuthenticationError
27
27
  from ccxt.base.decimal_to_precision import TICK_SIZE
28
28
  from ccxt.base.precise import Precise
29
29
 
ccxt/gemini.py CHANGED
@@ -9,6 +9,7 @@ import hashlib
9
9
  from ccxt.base.types import Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
+ from ccxt.base.errors import AuthenticationError
12
13
  from ccxt.base.errors import PermissionDenied
13
14
  from ccxt.base.errors import ArgumentsRequired
14
15
  from ccxt.base.errors import BadRequest
@@ -20,7 +21,6 @@ from ccxt.base.errors import RateLimitExceeded
20
21
  from ccxt.base.errors import ExchangeNotAvailable
21
22
  from ccxt.base.errors import OnMaintenance
22
23
  from ccxt.base.errors import InvalidNonce
23
- from ccxt.base.errors import AuthenticationError
24
24
  from ccxt.base.decimal_to_precision import TICK_SIZE
25
25
  from ccxt.base.precise import Precise
26
26
 
@@ -299,7 +299,13 @@ class gemini(Exchange, ImplicitAPI):
299
299
  'ATOM': 'cosmos',
300
300
  'DOT': 'polkadot',
301
301
  },
302
- 'nonce': 'milliseconds', # if getting a Network 400 error change to seconds
302
+ 'nonce': 'milliseconds', # if getting a Network 400 error change to seconds,
303
+ 'conflictingMarkets': {
304
+ 'paxgusd': {
305
+ 'base': 'PAXG',
306
+ 'quote': 'USD',
307
+ },
308
+ },
303
309
  },
304
310
  })
305
311
 
@@ -661,15 +667,25 @@ class gemini(Exchange, ImplicitAPI):
661
667
  marketIdUpper = marketId.upper()
662
668
  isPerp = (marketIdUpper.find('PERP') >= 0)
663
669
  marketIdWithoutPerp = marketIdUpper.replace('PERP', '')
664
- quoteQurrencies = self.handle_option('fetchMarketsFromAPI', 'quoteCurrencies', [])
665
- for i in range(0, len(quoteQurrencies)):
666
- quoteCurrency = quoteQurrencies[i]
667
- if marketIdWithoutPerp.endswith(quoteCurrency):
668
- baseId = marketIdWithoutPerp.replace(quoteCurrency, '')
669
- quoteId = quoteCurrency
670
- if isPerp:
671
- settleId = quoteCurrency # always same
672
- break
670
+ conflictingMarkets = self.safe_dict(self.options, 'conflictingMarkets', {})
671
+ lowerCaseId = marketIdWithoutPerp.lower()
672
+ if lowerCaseId in conflictingMarkets:
673
+ conflictingMarket = conflictingMarkets[lowerCaseId]
674
+ baseId = conflictingMarket['base']
675
+ quoteId = conflictingMarket['quote']
676
+ if isPerp:
677
+ settleId = conflictingMarket['quote']
678
+ else:
679
+ quoteCurrencies = self.handle_option('fetchMarketsFromAPI', 'quoteCurrencies', [])
680
+ for i in range(0, len(quoteCurrencies)):
681
+ quoteCurrency = quoteCurrencies[i]
682
+ if marketIdWithoutPerp.endswith(quoteCurrency):
683
+ quoteLength = self.parse_to_int(-1 * len(quoteCurrency))
684
+ baseId = marketIdWithoutPerp[0:quoteLength]
685
+ quoteId = quoteCurrency
686
+ if isPerp:
687
+ settleId = quoteCurrency # always same
688
+ break
673
689
  base = self.safe_currency_code(baseId)
674
690
  quote = self.safe_currency_code(quoteId)
675
691
  settle = self.safe_currency_code(settleId)
ccxt/hitbtc.py CHANGED
@@ -9,6 +9,7 @@ import hashlib
9
9
  from ccxt.base.types import Balances, Currencies, Currency, Int, Leverage, MarginMode, MarginModes, MarginModification, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
+ from ccxt.base.errors import AuthenticationError
12
13
  from ccxt.base.errors import PermissionDenied
13
14
  from ccxt.base.errors import AccountSuspended
14
15
  from ccxt.base.errors import ArgumentsRequired
@@ -21,7 +22,6 @@ from ccxt.base.errors import NotSupported
21
22
  from ccxt.base.errors import RateLimitExceeded
22
23
  from ccxt.base.errors import ExchangeNotAvailable
23
24
  from ccxt.base.errors import OnMaintenance
24
- from ccxt.base.errors import AuthenticationError
25
25
  from ccxt.base.decimal_to_precision import TICK_SIZE
26
26
  from ccxt.base.precise import Precise
27
27
 
ccxt/hollaex.py CHANGED
@@ -8,13 +8,13 @@ from ccxt.abstract.hollaex import ImplicitAPI
8
8
  import hashlib
9
9
  from ccxt.base.types import Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
10
10
  from typing import List
11
+ from ccxt.base.errors import AuthenticationError
11
12
  from ccxt.base.errors import ArgumentsRequired
12
13
  from ccxt.base.errors import BadRequest
13
14
  from ccxt.base.errors import InsufficientFunds
14
15
  from ccxt.base.errors import OrderNotFound
15
16
  from ccxt.base.errors import OrderImmediatelyFillable
16
17
  from ccxt.base.errors import NetworkError
17
- from ccxt.base.errors import AuthenticationError
18
18
  from ccxt.base.decimal_to_precision import TICK_SIZE
19
19
  from ccxt.base.precise import Precise
20
20