ccxt 4.1.89__py2.py3-none-any.whl → 4.1.90__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 +1 -1
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/base/exchange.py +3 -3
- ccxt/async_support/binance.py +1 -1
- ccxt/async_support/bitforex.py +2 -0
- ccxt/async_support/bitget.py +9 -4
- ccxt/async_support/bitmex.py +2 -0
- ccxt/async_support/blockchaincom.py +0 -37
- ccxt/async_support/bybit.py +23 -14
- ccxt/async_support/coinlist.py +2 -0
- ccxt/async_support/coinsph.py +2 -0
- ccxt/async_support/cryptocom.py +2 -0
- ccxt/async_support/gate.py +258 -11
- ccxt/async_support/htx.py +223 -207
- ccxt/async_support/kuna.py +2 -0
- ccxt/async_support/mexc.py +2 -0
- ccxt/async_support/okcoin.py +3 -1
- ccxt/async_support/phemex.py +48 -1
- ccxt/async_support/poloniex.py +23 -2
- ccxt/async_support/tokocrypto.py +2 -0
- ccxt/async_support/wazirx.py +2 -0
- ccxt/async_support/whitebit.py +2 -0
- ccxt/base/exchange.py +3 -3
- ccxt/binance.py +1 -1
- ccxt/bitforex.py +2 -0
- ccxt/bitget.py +9 -4
- ccxt/bitmex.py +2 -0
- ccxt/blockchaincom.py +0 -37
- ccxt/bybit.py +23 -14
- ccxt/coinlist.py +2 -0
- ccxt/coinsph.py +2 -0
- ccxt/cryptocom.py +2 -0
- ccxt/gate.py +258 -11
- ccxt/htx.py +223 -207
- ccxt/kuna.py +2 -0
- ccxt/mexc.py +2 -0
- ccxt/okcoin.py +3 -1
- ccxt/phemex.py +48 -1
- ccxt/poloniex.py +23 -2
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/binance.py +6 -6
- ccxt/pro/poloniex.py +15 -11
- ccxt/tokocrypto.py +2 -0
- ccxt/wazirx.py +2 -0
- ccxt/whitebit.py +2 -0
- {ccxt-4.1.89.dist-info → ccxt-4.1.90.dist-info}/METADATA +4 -4
- {ccxt-4.1.89.dist-info → ccxt-4.1.90.dist-info}/RECORD +49 -49
- {ccxt-4.1.89.dist-info → ccxt-4.1.90.dist-info}/WHEEL +0 -0
- {ccxt-4.1.89.dist-info → ccxt-4.1.90.dist-info}/top_level.txt +0 -0
ccxt/async_support/kuna.py
CHANGED
@@ -101,6 +101,8 @@ class kuna(Exchange, ImplicitAPI):
|
|
101
101
|
'fetchWithdrawal': True,
|
102
102
|
'fetchWithdrawals': True,
|
103
103
|
'reduceMargin': False,
|
104
|
+
'repayCrossMargin': False,
|
105
|
+
'repayIsolatedMargin': False,
|
104
106
|
'setLeverage': False,
|
105
107
|
'setMargin': False,
|
106
108
|
'setMarginMode': False,
|
ccxt/async_support/mexc.py
CHANGED
@@ -120,6 +120,8 @@ class mexc(Exchange, ImplicitAPI):
|
|
120
120
|
'fetchWithdrawal': None,
|
121
121
|
'fetchWithdrawals': True,
|
122
122
|
'reduceMargin': True,
|
123
|
+
'repayCrossMargin': False,
|
124
|
+
'repayIsolatedMargin': False,
|
123
125
|
'setLeverage': True,
|
124
126
|
'setMarginMode': None,
|
125
127
|
'setPositionMode': True,
|
ccxt/async_support/okcoin.py
CHANGED
@@ -1383,7 +1383,7 @@ class okcoin(Exchange, ImplicitAPI):
|
|
1383
1383
|
request['tgtCcy'] = tgtCcy
|
1384
1384
|
if isMarketOrder or marketIOC:
|
1385
1385
|
request['ordType'] = 'market'
|
1386
|
-
if
|
1386
|
+
if side == 'buy':
|
1387
1387
|
# spot market buy: "sz" can refer either to base currency units or to quote currency units
|
1388
1388
|
# see documentation: https://www.okx.com/docs-v5/en/#rest-api-trade-place-order
|
1389
1389
|
if tgtCcy == 'quote_ccy':
|
@@ -1408,6 +1408,8 @@ class okcoin(Exchange, ImplicitAPI):
|
|
1408
1408
|
request['sz'] = quoteAmount
|
1409
1409
|
else:
|
1410
1410
|
request['sz'] = self.amount_to_precision(symbol, amount)
|
1411
|
+
else:
|
1412
|
+
request['sz'] = self.amount_to_precision(symbol, amount)
|
1411
1413
|
else:
|
1412
1414
|
request['sz'] = self.amount_to_precision(symbol, amount)
|
1413
1415
|
if (not trigger) and (not conditional):
|
ccxt/async_support/phemex.py
CHANGED
@@ -100,7 +100,7 @@ class phemex(Exchange, ImplicitAPI):
|
|
100
100
|
'setMarginMode': True,
|
101
101
|
'setPositionMode': True,
|
102
102
|
'transfer': True,
|
103
|
-
'withdraw':
|
103
|
+
'withdraw': True,
|
104
104
|
},
|
105
105
|
'urls': {
|
106
106
|
'logo': 'https://user-images.githubusercontent.com/1294454/85225056-221eb600-b3d7-11ea-930d-564d2690e3f6.jpg',
|
@@ -239,6 +239,7 @@ class phemex(Exchange, ImplicitAPI):
|
|
239
239
|
'assets/spots/sub-accounts/transfer': 5, # ?currency=<currency>&start=<start>&end=<end>&limit=<limit>&offset=<offset>
|
240
240
|
'assets/futures/sub-accounts/transfer': 5, # ?currency=<currency>&start=<start>&end=<end>&limit=<limit>&offset=<offset>
|
241
241
|
'assets/quote': 5, # ?fromCurrency=<currency>&toCurrency=<currency>&amountEv=<amount>
|
242
|
+
# deposit/withdraw
|
242
243
|
},
|
243
244
|
'post': {
|
244
245
|
# spot
|
@@ -482,6 +483,16 @@ class phemex(Exchange, ImplicitAPI):
|
|
482
483
|
'spot': 'spot',
|
483
484
|
'swap': 'future',
|
484
485
|
},
|
486
|
+
'stableCoins': [
|
487
|
+
'BUSD',
|
488
|
+
'FEI',
|
489
|
+
'TUSD',
|
490
|
+
'USD',
|
491
|
+
'USDC',
|
492
|
+
'USDD',
|
493
|
+
'USDP',
|
494
|
+
'USDT',
|
495
|
+
],
|
485
496
|
'transfer': {
|
486
497
|
'fillResponseFromRequest': True,
|
487
498
|
},
|
@@ -4227,6 +4238,42 @@ class phemex(Exchange, ImplicitAPI):
|
|
4227
4238
|
sorted = self.sort_by(result, 'timestamp')
|
4228
4239
|
return self.filter_by_symbol_since_limit(sorted, symbol, since, limit)
|
4229
4240
|
|
4241
|
+
async def withdraw(self, code: str, amount, address, tag=None, params={}):
|
4242
|
+
"""
|
4243
|
+
make a withdrawal
|
4244
|
+
:see: https://phemex-docs.github.io/#create-withdraw-request
|
4245
|
+
:param str code: unified currency code
|
4246
|
+
:param float amount: the amount to withdraw
|
4247
|
+
:param str address: the address to withdraw to
|
4248
|
+
:param str tag:
|
4249
|
+
:param dict [params]: extra parameters specific to the phemex api endpoint
|
4250
|
+
:param str [params.network]: unified network code
|
4251
|
+
:returns dict: a `transaction structure <https://github.com/ccxt/ccxt/wiki/Manual#transaction-structure>`
|
4252
|
+
"""
|
4253
|
+
tag, params = self.handle_withdraw_tag_and_params(tag, params)
|
4254
|
+
await self.load_markets()
|
4255
|
+
self.check_address(address)
|
4256
|
+
currency = self.currency(code)
|
4257
|
+
networkCode = None
|
4258
|
+
networkCode, params = self.handle_network_code_and_params(params)
|
4259
|
+
networkId = self.network_code_to_id(networkCode)
|
4260
|
+
stableCoins = self.safe_value(self.options, 'stableCoins')
|
4261
|
+
if networkId is None:
|
4262
|
+
if not (self.in_array(code, stableCoins)):
|
4263
|
+
networkId = currency['id']
|
4264
|
+
else:
|
4265
|
+
raise ArgumentsRequired(self.id + ' withdraw() requires an extra argument params["network"]')
|
4266
|
+
request = {
|
4267
|
+
'currency': currency['id'],
|
4268
|
+
'address': address,
|
4269
|
+
'amount': amount,
|
4270
|
+
'chainName': networkId.upper(),
|
4271
|
+
}
|
4272
|
+
if tag is not None:
|
4273
|
+
request['tag'] = tag
|
4274
|
+
response = await self.privatePostPhemexWithdrawWalletsApiCreateWithdraw(self.extend(request, params))
|
4275
|
+
return self.parse_transaction(response, currency)
|
4276
|
+
|
4230
4277
|
def handle_errors(self, httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
4231
4278
|
if response is None:
|
4232
4279
|
return None # fallback to default error handler
|
ccxt/async_support/poloniex.py
CHANGED
@@ -47,6 +47,9 @@ class poloniex(Exchange, ImplicitAPI):
|
|
47
47
|
'cancelAllOrders': True,
|
48
48
|
'cancelOrder': True,
|
49
49
|
'createDepositAddress': True,
|
50
|
+
'createMarketBuyOrderWithCost': True,
|
51
|
+
'createMarketOrderWithCost': False,
|
52
|
+
'createMarketSellOrderWithCost': False,
|
50
53
|
'createOrder': True,
|
51
54
|
'editOrder': True,
|
52
55
|
'fetchBalance': True,
|
@@ -240,6 +243,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
240
243
|
'UST': 'USTC',
|
241
244
|
},
|
242
245
|
'options': {
|
246
|
+
'createMarketBuyOrderRequiresPrice': True,
|
243
247
|
'networks': {
|
244
248
|
'BEP20': 'BSC',
|
245
249
|
'ERC20': 'ETH',
|
@@ -1219,6 +1223,7 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1219
1223
|
:param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
|
1220
1224
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1221
1225
|
:param float [params.triggerPrice]: *spot only* The price at which a trigger order is triggered at
|
1226
|
+
:param float [params.cost]: *spot market buy only* the quote quantity that can be used alternative for the amount
|
1222
1227
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1223
1228
|
"""
|
1224
1229
|
await self.load_markets()
|
@@ -1251,7 +1256,6 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1251
1256
|
return self.parse_order(response, market)
|
1252
1257
|
|
1253
1258
|
def order_request(self, symbol, type, side, amount, request, price=None, params={}):
|
1254
|
-
market = self.market(symbol)
|
1255
1259
|
upperCaseType = type.upper()
|
1256
1260
|
isMarket = upperCaseType == 'MARKET'
|
1257
1261
|
isPostOnly = self.is_post_only(isMarket, upperCaseType == 'LIMIT_MAKER', params)
|
@@ -1265,7 +1269,24 @@ class poloniex(Exchange, ImplicitAPI):
|
|
1265
1269
|
request['type'] = upperCaseType
|
1266
1270
|
if isMarket:
|
1267
1271
|
if side == 'buy':
|
1268
|
-
|
1272
|
+
quoteAmount = None
|
1273
|
+
createMarketBuyOrderRequiresPrice = True
|
1274
|
+
createMarketBuyOrderRequiresPrice, params = self.handle_option_and_params(params, 'createOrder', 'createMarketBuyOrderRequiresPrice', True)
|
1275
|
+
cost = self.safe_number(params, 'cost')
|
1276
|
+
params = self.omit(params, 'cost')
|
1277
|
+
if cost is not None:
|
1278
|
+
quoteAmount = self.cost_to_precision(symbol, cost)
|
1279
|
+
elif createMarketBuyOrderRequiresPrice:
|
1280
|
+
if price is None:
|
1281
|
+
raise InvalidOrder(self.id + ' createOrder() requires the price argument for market buy orders to calculate the total cost to spend(amount * price), alternatively set the createMarketBuyOrderRequiresPrice option or param to False and pass the cost to spend(quote quantity) in the amount argument')
|
1282
|
+
else:
|
1283
|
+
amountString = self.number_to_string(amount)
|
1284
|
+
priceString = self.number_to_string(price)
|
1285
|
+
costRequest = Precise.string_mul(amountString, priceString)
|
1286
|
+
quoteAmount = self.cost_to_precision(symbol, costRequest)
|
1287
|
+
else:
|
1288
|
+
quoteAmount = self.cost_to_precision(symbol, amount)
|
1289
|
+
request['amount'] = quoteAmount
|
1269
1290
|
else:
|
1270
1291
|
request['quantity'] = self.amount_to_precision(symbol, amount)
|
1271
1292
|
else:
|
ccxt/async_support/tokocrypto.py
CHANGED
@@ -129,6 +129,8 @@ class tokocrypto(Exchange, ImplicitAPI):
|
|
129
129
|
'fetchWithdrawals': True,
|
130
130
|
'fetchWithdrawalWhitelist': False,
|
131
131
|
'reduceMargin': False,
|
132
|
+
'repayCrossMargin': False,
|
133
|
+
'repayIsolatedMargin': False,
|
132
134
|
'setLeverage': False,
|
133
135
|
'setMargin': False,
|
134
136
|
'setMarginMode': False,
|
ccxt/async_support/wazirx.py
CHANGED
@@ -98,6 +98,8 @@ class wazirx(Exchange, ImplicitAPI):
|
|
98
98
|
'fetchTransfers': False,
|
99
99
|
'fetchWithdrawals': False,
|
100
100
|
'reduceMargin': False,
|
101
|
+
'repayCrossMargin': False,
|
102
|
+
'repayIsolatedMargin': False,
|
101
103
|
'setLeverage': False,
|
102
104
|
'setMargin': False,
|
103
105
|
'setMarginMode': False,
|
ccxt/async_support/whitebit.py
CHANGED
ccxt/base/exchange.py
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
# -----------------------------------------------------------------------------
|
6
6
|
|
7
|
-
__version__ = '4.1.
|
7
|
+
__version__ = '4.1.90'
|
8
8
|
|
9
9
|
# -----------------------------------------------------------------------------
|
10
10
|
|
@@ -3740,7 +3740,7 @@ class Exchange(object):
|
|
3740
3740
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
3741
3741
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
3742
3742
|
"""
|
3743
|
-
if self.
|
3743
|
+
if self.has['createMarketOrderWithCost'] or (self.has['createMarketBuyOrderWithCost'] and self.has['createMarketSellOrderWithCost']):
|
3744
3744
|
return self.create_order(symbol, 'market', side, cost, 1, params)
|
3745
3745
|
raise NotSupported(self.id + ' createMarketOrderWithCost() is not supported yet')
|
3746
3746
|
|
@@ -3752,7 +3752,7 @@ class Exchange(object):
|
|
3752
3752
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
3753
3753
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
3754
3754
|
"""
|
3755
|
-
if self.options['createMarketBuyOrderRequiresPrice'] or self.
|
3755
|
+
if self.options['createMarketBuyOrderRequiresPrice'] or self.has['createMarketBuyOrderWithCost']:
|
3756
3756
|
return self.create_order(symbol, 'market', 'buy', cost, 1, params)
|
3757
3757
|
raise NotSupported(self.id + ' createMarketBuyOrderWithCost() is not supported yet')
|
3758
3758
|
|
ccxt/binance.py
CHANGED
@@ -60,7 +60,7 @@ class binance(Exchange, ImplicitAPI):
|
|
60
60
|
'cancelOrder': True,
|
61
61
|
'cancelOrders': True, # contract only
|
62
62
|
'closeAllPositions': False,
|
63
|
-
'closePosition': False,
|
63
|
+
'closePosition': False, # exchange specific closePosition parameter for binance createOrder is not synonymous with how CCXT uses closePositions
|
64
64
|
'createDepositAddress': False,
|
65
65
|
'createOrder': True,
|
66
66
|
'createOrders': True,
|
ccxt/bitforex.py
CHANGED
@@ -84,6 +84,8 @@ class bitforex(Exchange, ImplicitAPI):
|
|
84
84
|
'fetchWithdrawal': False,
|
85
85
|
'fetchWithdrawals': False,
|
86
86
|
'reduceMargin': False,
|
87
|
+
'repayCrossMargin': False,
|
88
|
+
'repayIsolatedMargin': False,
|
87
89
|
'setLeverage': False,
|
88
90
|
'setMargin': False,
|
89
91
|
'setMarginMode': False,
|
ccxt/bitget.py
CHANGED
@@ -3718,17 +3718,22 @@ class bitget(Exchange, ImplicitAPI):
|
|
3718
3718
|
if feeCostString is not None:
|
3719
3719
|
# swap
|
3720
3720
|
fee = {
|
3721
|
-
'cost': feeCostString,
|
3721
|
+
'cost': self.parse_number(Precise.string_abs(feeCostString)),
|
3722
3722
|
'currency': market['settle'],
|
3723
3723
|
}
|
3724
3724
|
feeDetail = self.safe_value(order, 'feeDetail')
|
3725
3725
|
if feeDetail is not None:
|
3726
3726
|
parsedFeeDetail = json.loads(feeDetail)
|
3727
3727
|
feeValues = list(parsedFeeDetail.values())
|
3728
|
-
|
3728
|
+
feeObject = None
|
3729
|
+
for i in range(0, len(feeValues)):
|
3730
|
+
feeValue = feeValues[i]
|
3731
|
+
if self.safe_value(feeValue, 'feeCoinCode') is not None:
|
3732
|
+
feeObject = feeValue
|
3733
|
+
break
|
3729
3734
|
fee = {
|
3730
|
-
'cost': self.safe_string(
|
3731
|
-
'currency': self.safe_currency_code(self.safe_string(
|
3735
|
+
'cost': self.parse_number(Precise.string_abs(self.safe_string(feeObject, 'totalFee'))),
|
3736
|
+
'currency': self.safe_currency_code(self.safe_string(feeObject, 'feeCoinCode')),
|
3732
3737
|
}
|
3733
3738
|
postOnly = None
|
3734
3739
|
timeInForce = self.safe_string_upper(order, 'force')
|
ccxt/bitmex.py
CHANGED
ccxt/blockchaincom.py
CHANGED
@@ -857,43 +857,6 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
857
857
|
'fee': fee,
|
858
858
|
}
|
859
859
|
|
860
|
-
def fetch_withdrawal_whitelist(self, params={}):
|
861
|
-
"""
|
862
|
-
fetch the list of withdrawal addresses on the whitelist
|
863
|
-
:param dict [params]: extra parameters specific to the exchange API endpoint
|
864
|
-
:returns dict: dictionary with keys beneficiaryId, name, currency
|
865
|
-
"""
|
866
|
-
self.load_markets()
|
867
|
-
response = self.privateGetWhitelist()
|
868
|
-
result = []
|
869
|
-
for i in range(0, len(response)):
|
870
|
-
entry = response[i]
|
871
|
-
result.append({
|
872
|
-
'beneficiaryId': self.safe_string(entry, 'whitelistId'),
|
873
|
-
'name': self.safe_string(entry, 'name'),
|
874
|
-
'currency': self.safe_string(entry, 'currency'),
|
875
|
-
'info': entry,
|
876
|
-
})
|
877
|
-
return result
|
878
|
-
|
879
|
-
def fetch_withdrawal_whitelist_by_currency(self, code: str, params={}):
|
880
|
-
self.load_markets()
|
881
|
-
currency = self.currency(code)
|
882
|
-
request = {
|
883
|
-
'currency': currency['id'],
|
884
|
-
}
|
885
|
-
response = self.privateGetWhitelistCurrency(self.extend(request, params))
|
886
|
-
result = []
|
887
|
-
for i in range(0, len(response)):
|
888
|
-
entry = response[i]
|
889
|
-
result.append({
|
890
|
-
'beneficiaryId': self.safe_string(entry, 'whitelistId'),
|
891
|
-
'name': self.safe_string(entry, 'name'),
|
892
|
-
'currency': self.safe_string(entry, 'currency'),
|
893
|
-
'info': entry,
|
894
|
-
})
|
895
|
-
return result
|
896
|
-
|
897
860
|
def withdraw(self, code: str, amount, address, tag=None, params={}):
|
898
861
|
"""
|
899
862
|
make a withdrawal
|
ccxt/bybit.py
CHANGED
@@ -959,6 +959,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
959
959
|
},
|
960
960
|
'precisionMode': TICK_SIZE,
|
961
961
|
'options': {
|
962
|
+
'fetchMarkets': ['spot', 'linear', 'inverse', 'option'],
|
962
963
|
'enableUnifiedMargin': None,
|
963
964
|
'enableUnifiedAccount': None,
|
964
965
|
'createMarketBuyOrderRequiresPrice': True,
|
@@ -1425,21 +1426,29 @@ class bybit(Exchange, ImplicitAPI):
|
|
1425
1426
|
"""
|
1426
1427
|
if self.options['adjustForTimeDifference']:
|
1427
1428
|
self.load_time_difference()
|
1428
|
-
promisesUnresolved = [
|
1429
|
-
|
1430
|
-
|
1431
|
-
|
1432
|
-
|
1433
|
-
|
1434
|
-
|
1435
|
-
|
1429
|
+
promisesUnresolved = []
|
1430
|
+
fetchMarkets = self.safe_value(self.options, 'fetchMarkets', ['spot', 'linear', 'inverse'])
|
1431
|
+
for i in range(0, len(fetchMarkets)):
|
1432
|
+
marketType = fetchMarkets[i]
|
1433
|
+
if marketType == 'spot':
|
1434
|
+
promisesUnresolved.append(self.fetch_spot_markets(params))
|
1435
|
+
elif marketType == 'linear':
|
1436
|
+
promisesUnresolved.append(self.fetch_future_markets({'category': 'linear'}))
|
1437
|
+
elif marketType == 'inverse':
|
1438
|
+
promisesUnresolved.append(self.fetch_future_markets({'category': 'inverse'}))
|
1439
|
+
elif marketType == 'option':
|
1440
|
+
promisesUnresolved.append(self.fetch_option_markets({'baseCoin': 'BTC'}))
|
1441
|
+
promisesUnresolved.append(self.fetch_option_markets({'baseCoin': 'ETH'}))
|
1442
|
+
promisesUnresolved.append(self.fetch_option_markets({'baseCoin': 'SOL'}))
|
1443
|
+
else:
|
1444
|
+
raise ExchangeError(self.id + ' fetchMarkets() self.options fetchMarkets "' + marketType + '" is not a supported market type')
|
1436
1445
|
promises = promisesUnresolved
|
1437
|
-
spotMarkets = promises[
|
1438
|
-
linearMarkets = promises[
|
1439
|
-
inverseMarkets = promises[
|
1440
|
-
btcOptionMarkets = promises[
|
1441
|
-
ethOptionMarkets = promises[
|
1442
|
-
solOptionMarkets = promises[
|
1446
|
+
spotMarkets = self.safe_value(promises, 0, [])
|
1447
|
+
linearMarkets = self.safe_value(promises, 1, [])
|
1448
|
+
inverseMarkets = self.safe_value(promises, 2, [])
|
1449
|
+
btcOptionMarkets = self.safe_value(promises, 3, [])
|
1450
|
+
ethOptionMarkets = self.safe_value(promises, 4, [])
|
1451
|
+
solOptionMarkets = self.safe_value(promises, 5, [])
|
1443
1452
|
futureMarkets = self.array_concat(linearMarkets, inverseMarkets)
|
1444
1453
|
optionMarkets = self.array_concat(btcOptionMarkets, ethOptionMarkets)
|
1445
1454
|
optionMarkets = self.array_concat(optionMarkets, solOptionMarkets)
|
ccxt/coinlist.py
CHANGED
@@ -122,6 +122,8 @@ class coinlist(Exchange, ImplicitAPI):
|
|
122
122
|
'fetchWithdrawals': False,
|
123
123
|
'fetchWithdrawalWhitelist': False,
|
124
124
|
'reduceMargin': False,
|
125
|
+
'repayCrossMargin': False,
|
126
|
+
'repayIsolatedMargin': False,
|
125
127
|
'setLeverage': False,
|
126
128
|
'setMargin': False,
|
127
129
|
'setMarginMode': False,
|
ccxt/coinsph.py
CHANGED
@@ -127,6 +127,8 @@ class coinsph(Exchange, ImplicitAPI):
|
|
127
127
|
'fetchWithdrawals': True,
|
128
128
|
'fetchWithdrawalWhitelist': False,
|
129
129
|
'reduceMargin': False,
|
130
|
+
'repayCrossMargin': False,
|
131
|
+
'repayIsolatedMargin': False,
|
130
132
|
'setLeverage': False,
|
131
133
|
'setMargin': False,
|
132
134
|
'setMarginMode': False,
|
ccxt/cryptocom.py
CHANGED
@@ -111,6 +111,8 @@ class cryptocom(Exchange, ImplicitAPI):
|
|
111
111
|
'fetchVolatilityHistory': False,
|
112
112
|
'fetchWithdrawals': True,
|
113
113
|
'reduceMargin': False,
|
114
|
+
'repayCrossMargin': False,
|
115
|
+
'repayIsolatedMargin': False,
|
114
116
|
'setLeverage': False,
|
115
117
|
'setMarginMode': False,
|
116
118
|
'setPositionMode': False,
|