ccxt 4.4.87__py2.py3-none-any.whl → 4.4.88__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 +1 -1
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/base/exchange.py +4 -1
- ccxt/async_support/bybit.py +19 -57
- ccxt/async_support/modetrade.py +7 -7
- ccxt/base/exchange.py +3 -2
- ccxt/bybit.py +19 -57
- ccxt/modetrade.py +7 -7
- ccxt/pro/__init__.py +9 -1
- ccxt/test/tests_async.py +1 -1
- ccxt/test/tests_sync.py +1 -1
- {ccxt-4.4.87.dist-info → ccxt-4.4.88.dist-info}/METADATA +4 -4
- {ccxt-4.4.87.dist-info → ccxt-4.4.88.dist-info}/RECORD +16 -16
- {ccxt-4.4.87.dist-info → ccxt-4.4.88.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.4.87.dist-info → ccxt-4.4.88.dist-info}/WHEEL +0 -0
- {ccxt-4.4.87.dist-info → ccxt-4.4.88.dist-info}/top_level.txt +0 -0
ccxt/__init__.py
CHANGED
ccxt/async_support/__init__.py
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# -----------------------------------------------------------------------------
|
4
4
|
|
5
|
-
__version__ = '4.4.
|
5
|
+
__version__ = '4.4.88'
|
6
6
|
|
7
7
|
# -----------------------------------------------------------------------------
|
8
8
|
|
@@ -282,7 +282,10 @@ class Exchange(BaseExchange):
|
|
282
282
|
currencies = None
|
283
283
|
if self.has['fetchCurrencies'] is True:
|
284
284
|
currencies = await self.fetch_currencies()
|
285
|
+
self.options['cachedCurrencies'] = currencies
|
285
286
|
markets = await self.fetch_markets(params)
|
287
|
+
if 'cachedCurrencies' in self.options:
|
288
|
+
del self.options['cachedCurrencies']
|
286
289
|
return self.set_markets(markets, currencies)
|
287
290
|
|
288
291
|
|
ccxt/async_support/bybit.py
CHANGED
@@ -2302,15 +2302,9 @@ class bybit(Exchange, ImplicitAPI):
|
|
2302
2302
|
# 'baseCoin': '', Base coin. For option only
|
2303
2303
|
# 'expDate': '', Expiry date. e.g., 25DEC22. For option only
|
2304
2304
|
}
|
2305
|
-
|
2306
|
-
|
2307
|
-
|
2308
|
-
if market['option']:
|
2309
|
-
request['category'] = 'option'
|
2310
|
-
elif market['linear']:
|
2311
|
-
request['category'] = 'linear'
|
2312
|
-
elif market['inverse']:
|
2313
|
-
request['category'] = 'inverse'
|
2305
|
+
category = None
|
2306
|
+
category, params = self.get_bybit_type('fetchTicker', market, params)
|
2307
|
+
request['category'] = category
|
2314
2308
|
response = await self.publicGetV5MarketTickers(self.extend(request, params))
|
2315
2309
|
#
|
2316
2310
|
# {
|
@@ -2402,24 +2396,14 @@ class bybit(Exchange, ImplicitAPI):
|
|
2402
2396
|
# 'baseCoin': '', # Base coin. For option only
|
2403
2397
|
# 'expDate': '', # Expiry date. e.g., 25DEC22. For option only
|
2404
2398
|
}
|
2405
|
-
|
2406
|
-
|
2407
|
-
|
2408
|
-
|
2409
|
-
# with higher priority and only default to spot, if `subType` is not set in params
|
2410
|
-
passedSubType = self.safe_string(params, 'subType')
|
2411
|
-
subType = None
|
2412
|
-
subType, params = self.handle_sub_type_and_params('fetchTickers', market, params, 'linear')
|
2413
|
-
# only if passedSubType is None, then use spot
|
2414
|
-
if type == 'spot' and passedSubType is None:
|
2415
|
-
request['category'] = 'spot'
|
2416
|
-
elif type == 'option':
|
2399
|
+
category = None
|
2400
|
+
category, params = self.get_bybit_type('fetchTickers', market, params)
|
2401
|
+
request['category'] = category
|
2402
|
+
if category == 'option':
|
2417
2403
|
request['category'] = 'option'
|
2418
2404
|
if code is None:
|
2419
2405
|
code = 'BTC'
|
2420
2406
|
request['baseCoin'] = code
|
2421
|
-
elif type == 'swap' or type == 'future' or subType is not None:
|
2422
|
-
request['category'] = subType
|
2423
2407
|
response = await self.publicGetV5MarketTickers(self.extend(request, params))
|
2424
2408
|
#
|
2425
2409
|
# {
|
@@ -3891,14 +3875,9 @@ class bybit(Exchange, ImplicitAPI):
|
|
3891
3875
|
request['orderLinkId'] = self.uuid16()
|
3892
3876
|
if isLimit:
|
3893
3877
|
request['price'] = priceString
|
3894
|
-
|
3895
|
-
|
3896
|
-
|
3897
|
-
request['category'] = 'option'
|
3898
|
-
elif market['linear']:
|
3899
|
-
request['category'] = 'linear'
|
3900
|
-
elif market['inverse']:
|
3901
|
-
request['category'] = 'inverse'
|
3878
|
+
category = None
|
3879
|
+
category, params = self.get_bybit_type('createOrderRequest', market, params)
|
3880
|
+
request['category'] = category
|
3902
3881
|
cost = self.safe_string(params, 'cost')
|
3903
3882
|
params = self.omit(params, 'cost')
|
3904
3883
|
# if the cost is inferable, let's keep the old logic and ignore marketUnit, to minimize the impact of the changes
|
@@ -4091,14 +4070,9 @@ class bybit(Exchange, ImplicitAPI):
|
|
4091
4070
|
# Valid for option only.
|
4092
4071
|
# 'orderIv': '0', # Implied volatility; parameters are passed according to the real value; for example, for 10%, 0.1 is passed
|
4093
4072
|
}
|
4094
|
-
|
4095
|
-
|
4096
|
-
|
4097
|
-
request['category'] = 'linear'
|
4098
|
-
elif market['inverse']:
|
4099
|
-
request['category'] = 'inverse'
|
4100
|
-
elif market['option']:
|
4101
|
-
request['category'] = 'option'
|
4073
|
+
category = None
|
4074
|
+
category, params = self.get_bybit_type('editOrderRequest', market, params)
|
4075
|
+
request['category'] = category
|
4102
4076
|
if amount is not None:
|
4103
4077
|
request['qty'] = self.get_amount(symbol, amount)
|
4104
4078
|
if price is not None:
|
@@ -4289,14 +4263,9 @@ class bybit(Exchange, ImplicitAPI):
|
|
4289
4263
|
request['orderFilter'] = 'StopOrder' if isTrigger else 'Order'
|
4290
4264
|
if id is not None: # The user can also use argument params["orderLinkId"]
|
4291
4265
|
request['orderId'] = id
|
4292
|
-
|
4293
|
-
|
4294
|
-
|
4295
|
-
request['category'] = 'linear'
|
4296
|
-
elif market['inverse']:
|
4297
|
-
request['category'] = 'inverse'
|
4298
|
-
elif market['option']:
|
4299
|
-
request['category'] = 'option'
|
4266
|
+
category = None
|
4267
|
+
category, params = self.get_bybit_type('cancelOrderRequest', market, params)
|
4268
|
+
request['category'] = category
|
4300
4269
|
return self.extend(request, params)
|
4301
4270
|
|
4302
4271
|
async def cancel_order(self, id: str, symbol: Str = None, params={}) -> Order:
|
@@ -7189,14 +7158,7 @@ classic accounts only/ spot not supported* fetches information on an order made
|
|
7189
7158
|
'symbol': market['id'],
|
7190
7159
|
}
|
7191
7160
|
category = None
|
7192
|
-
|
7193
|
-
category = 'linear'
|
7194
|
-
elif market['inverse']:
|
7195
|
-
category = 'inverse'
|
7196
|
-
elif market['spot']:
|
7197
|
-
category = 'spot'
|
7198
|
-
else:
|
7199
|
-
category = 'option'
|
7161
|
+
category, params = self.get_bybit_type('fetchTradingFee', market, params)
|
7200
7162
|
request['category'] = category
|
7201
7163
|
response = await self.privateGetV5AccountFeeRate(self.extend(request, params))
|
7202
7164
|
#
|
@@ -7435,9 +7397,9 @@ classic accounts only/ spot not supported* fetches information on an order made
|
|
7435
7397
|
request['symbol'] = market['id']
|
7436
7398
|
type = None
|
7437
7399
|
type, params = self.get_bybit_type('fetchMySettlementHistory', market, params)
|
7438
|
-
if type == 'spot'
|
7400
|
+
if type == 'spot':
|
7439
7401
|
raise NotSupported(self.id + ' fetchMySettlementHistory() is not supported for spot market')
|
7440
|
-
request['category'] =
|
7402
|
+
request['category'] = type
|
7441
7403
|
if limit is not None:
|
7442
7404
|
request['limit'] = limit
|
7443
7405
|
response = await self.privateGetV5AssetDeliveryRecord(self.extend(request, params))
|
ccxt/async_support/modetrade.py
CHANGED
@@ -50,16 +50,16 @@ class modetrade(Exchange, ImplicitAPI):
|
|
50
50
|
'createConvertTrade': False,
|
51
51
|
'createDepositAddress': False,
|
52
52
|
'createMarketBuyOrderWithCost': False,
|
53
|
-
'createMarketOrder':
|
53
|
+
'createMarketOrder': True,
|
54
54
|
'createMarketOrderWithCost': False,
|
55
55
|
'createMarketSellOrderWithCost': False,
|
56
56
|
'createOrder': True,
|
57
57
|
'createOrderWithTakeProfitAndStopLoss': True,
|
58
58
|
'createReduceOnlyOrder': True,
|
59
|
-
'createStopLimitOrder':
|
59
|
+
'createStopLimitOrder': True,
|
60
60
|
'createStopLossOrder': True,
|
61
|
-
'createStopMarketOrder':
|
62
|
-
'createStopOrder':
|
61
|
+
'createStopMarketOrder': True,
|
62
|
+
'createStopOrder': True,
|
63
63
|
'createTakeProfitOrder': True,
|
64
64
|
'createTrailingAmountOrder': False,
|
65
65
|
'createTrailingPercentOrder': False,
|
@@ -298,7 +298,7 @@ class modetrade(Exchange, ImplicitAPI):
|
|
298
298
|
},
|
299
299
|
'options': {
|
300
300
|
'sandboxMode': False,
|
301
|
-
'brokerId': '
|
301
|
+
'brokerId': 'CCXTMODE',
|
302
302
|
'verifyingContractAddress': '0x6F7a338F2aA472838dEFD3283eB360d4Dff5D203',
|
303
303
|
},
|
304
304
|
'features': {
|
@@ -2069,7 +2069,7 @@ class modetrade(Exchange, ImplicitAPI):
|
|
2069
2069
|
code = self.safe_currency_code(self.safe_string(balance, 'token'))
|
2070
2070
|
account = self.account()
|
2071
2071
|
account['total'] = self.safe_string(balance, 'holding')
|
2072
|
-
account['
|
2072
|
+
account['used'] = self.safe_string(balance, 'frozen')
|
2073
2073
|
result[code] = account
|
2074
2074
|
return self.safe_balance(result)
|
2075
2075
|
|
@@ -2671,7 +2671,7 @@ class modetrade(Exchange, ImplicitAPI):
|
|
2671
2671
|
if isPostOrPut and isOrder:
|
2672
2672
|
isSandboxMode = self.safe_bool(self.options, 'sandboxMode', False)
|
2673
2673
|
if not isSandboxMode:
|
2674
|
-
brokerId = self.safe_string(self.options, 'brokerId', '
|
2674
|
+
brokerId = self.safe_string(self.options, 'brokerId', 'CCXTMODE')
|
2675
2675
|
if path == 'batch-order':
|
2676
2676
|
ordersList = self.safe_list(params, 'orders', [])
|
2677
2677
|
for i in range(0, len(ordersList)):
|
ccxt/base/exchange.py
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
# -----------------------------------------------------------------------------
|
6
6
|
|
7
|
-
__version__ = '4.4.
|
7
|
+
__version__ = '4.4.88'
|
8
8
|
|
9
9
|
# -----------------------------------------------------------------------------
|
10
10
|
|
@@ -1536,7 +1536,8 @@ class Exchange(object):
|
|
1536
1536
|
currencies = self.fetch_currencies()
|
1537
1537
|
self.options['cachedCurrencies'] = currencies
|
1538
1538
|
markets = self.fetch_markets(params)
|
1539
|
-
|
1539
|
+
if 'cachedCurrencies' in self.options:
|
1540
|
+
del self.options['cachedCurrencies']
|
1540
1541
|
return self.set_markets(markets, currencies)
|
1541
1542
|
|
1542
1543
|
def fetch_markets(self, params={}):
|
ccxt/bybit.py
CHANGED
@@ -2301,15 +2301,9 @@ class bybit(Exchange, ImplicitAPI):
|
|
2301
2301
|
# 'baseCoin': '', Base coin. For option only
|
2302
2302
|
# 'expDate': '', Expiry date. e.g., 25DEC22. For option only
|
2303
2303
|
}
|
2304
|
-
|
2305
|
-
|
2306
|
-
|
2307
|
-
if market['option']:
|
2308
|
-
request['category'] = 'option'
|
2309
|
-
elif market['linear']:
|
2310
|
-
request['category'] = 'linear'
|
2311
|
-
elif market['inverse']:
|
2312
|
-
request['category'] = 'inverse'
|
2304
|
+
category = None
|
2305
|
+
category, params = self.get_bybit_type('fetchTicker', market, params)
|
2306
|
+
request['category'] = category
|
2313
2307
|
response = self.publicGetV5MarketTickers(self.extend(request, params))
|
2314
2308
|
#
|
2315
2309
|
# {
|
@@ -2401,24 +2395,14 @@ class bybit(Exchange, ImplicitAPI):
|
|
2401
2395
|
# 'baseCoin': '', # Base coin. For option only
|
2402
2396
|
# 'expDate': '', # Expiry date. e.g., 25DEC22. For option only
|
2403
2397
|
}
|
2404
|
-
|
2405
|
-
|
2406
|
-
|
2407
|
-
|
2408
|
-
# with higher priority and only default to spot, if `subType` is not set in params
|
2409
|
-
passedSubType = self.safe_string(params, 'subType')
|
2410
|
-
subType = None
|
2411
|
-
subType, params = self.handle_sub_type_and_params('fetchTickers', market, params, 'linear')
|
2412
|
-
# only if passedSubType is None, then use spot
|
2413
|
-
if type == 'spot' and passedSubType is None:
|
2414
|
-
request['category'] = 'spot'
|
2415
|
-
elif type == 'option':
|
2398
|
+
category = None
|
2399
|
+
category, params = self.get_bybit_type('fetchTickers', market, params)
|
2400
|
+
request['category'] = category
|
2401
|
+
if category == 'option':
|
2416
2402
|
request['category'] = 'option'
|
2417
2403
|
if code is None:
|
2418
2404
|
code = 'BTC'
|
2419
2405
|
request['baseCoin'] = code
|
2420
|
-
elif type == 'swap' or type == 'future' or subType is not None:
|
2421
|
-
request['category'] = subType
|
2422
2406
|
response = self.publicGetV5MarketTickers(self.extend(request, params))
|
2423
2407
|
#
|
2424
2408
|
# {
|
@@ -3890,14 +3874,9 @@ class bybit(Exchange, ImplicitAPI):
|
|
3890
3874
|
request['orderLinkId'] = self.uuid16()
|
3891
3875
|
if isLimit:
|
3892
3876
|
request['price'] = priceString
|
3893
|
-
|
3894
|
-
|
3895
|
-
|
3896
|
-
request['category'] = 'option'
|
3897
|
-
elif market['linear']:
|
3898
|
-
request['category'] = 'linear'
|
3899
|
-
elif market['inverse']:
|
3900
|
-
request['category'] = 'inverse'
|
3877
|
+
category = None
|
3878
|
+
category, params = self.get_bybit_type('createOrderRequest', market, params)
|
3879
|
+
request['category'] = category
|
3901
3880
|
cost = self.safe_string(params, 'cost')
|
3902
3881
|
params = self.omit(params, 'cost')
|
3903
3882
|
# if the cost is inferable, let's keep the old logic and ignore marketUnit, to minimize the impact of the changes
|
@@ -4090,14 +4069,9 @@ class bybit(Exchange, ImplicitAPI):
|
|
4090
4069
|
# Valid for option only.
|
4091
4070
|
# 'orderIv': '0', # Implied volatility; parameters are passed according to the real value; for example, for 10%, 0.1 is passed
|
4092
4071
|
}
|
4093
|
-
|
4094
|
-
|
4095
|
-
|
4096
|
-
request['category'] = 'linear'
|
4097
|
-
elif market['inverse']:
|
4098
|
-
request['category'] = 'inverse'
|
4099
|
-
elif market['option']:
|
4100
|
-
request['category'] = 'option'
|
4072
|
+
category = None
|
4073
|
+
category, params = self.get_bybit_type('editOrderRequest', market, params)
|
4074
|
+
request['category'] = category
|
4101
4075
|
if amount is not None:
|
4102
4076
|
request['qty'] = self.get_amount(symbol, amount)
|
4103
4077
|
if price is not None:
|
@@ -4288,14 +4262,9 @@ class bybit(Exchange, ImplicitAPI):
|
|
4288
4262
|
request['orderFilter'] = 'StopOrder' if isTrigger else 'Order'
|
4289
4263
|
if id is not None: # The user can also use argument params["orderLinkId"]
|
4290
4264
|
request['orderId'] = id
|
4291
|
-
|
4292
|
-
|
4293
|
-
|
4294
|
-
request['category'] = 'linear'
|
4295
|
-
elif market['inverse']:
|
4296
|
-
request['category'] = 'inverse'
|
4297
|
-
elif market['option']:
|
4298
|
-
request['category'] = 'option'
|
4265
|
+
category = None
|
4266
|
+
category, params = self.get_bybit_type('cancelOrderRequest', market, params)
|
4267
|
+
request['category'] = category
|
4299
4268
|
return self.extend(request, params)
|
4300
4269
|
|
4301
4270
|
def cancel_order(self, id: str, symbol: Str = None, params={}) -> Order:
|
@@ -7188,14 +7157,7 @@ classic accounts only/ spot not supported* fetches information on an order made
|
|
7188
7157
|
'symbol': market['id'],
|
7189
7158
|
}
|
7190
7159
|
category = None
|
7191
|
-
|
7192
|
-
category = 'linear'
|
7193
|
-
elif market['inverse']:
|
7194
|
-
category = 'inverse'
|
7195
|
-
elif market['spot']:
|
7196
|
-
category = 'spot'
|
7197
|
-
else:
|
7198
|
-
category = 'option'
|
7160
|
+
category, params = self.get_bybit_type('fetchTradingFee', market, params)
|
7199
7161
|
request['category'] = category
|
7200
7162
|
response = self.privateGetV5AccountFeeRate(self.extend(request, params))
|
7201
7163
|
#
|
@@ -7434,9 +7396,9 @@ classic accounts only/ spot not supported* fetches information on an order made
|
|
7434
7396
|
request['symbol'] = market['id']
|
7435
7397
|
type = None
|
7436
7398
|
type, params = self.get_bybit_type('fetchMySettlementHistory', market, params)
|
7437
|
-
if type == 'spot'
|
7399
|
+
if type == 'spot':
|
7438
7400
|
raise NotSupported(self.id + ' fetchMySettlementHistory() is not supported for spot market')
|
7439
|
-
request['category'] =
|
7401
|
+
request['category'] = type
|
7440
7402
|
if limit is not None:
|
7441
7403
|
request['limit'] = limit
|
7442
7404
|
response = self.privateGetV5AssetDeliveryRecord(self.extend(request, params))
|
ccxt/modetrade.py
CHANGED
@@ -50,16 +50,16 @@ class modetrade(Exchange, ImplicitAPI):
|
|
50
50
|
'createConvertTrade': False,
|
51
51
|
'createDepositAddress': False,
|
52
52
|
'createMarketBuyOrderWithCost': False,
|
53
|
-
'createMarketOrder':
|
53
|
+
'createMarketOrder': True,
|
54
54
|
'createMarketOrderWithCost': False,
|
55
55
|
'createMarketSellOrderWithCost': False,
|
56
56
|
'createOrder': True,
|
57
57
|
'createOrderWithTakeProfitAndStopLoss': True,
|
58
58
|
'createReduceOnlyOrder': True,
|
59
|
-
'createStopLimitOrder':
|
59
|
+
'createStopLimitOrder': True,
|
60
60
|
'createStopLossOrder': True,
|
61
|
-
'createStopMarketOrder':
|
62
|
-
'createStopOrder':
|
61
|
+
'createStopMarketOrder': True,
|
62
|
+
'createStopOrder': True,
|
63
63
|
'createTakeProfitOrder': True,
|
64
64
|
'createTrailingAmountOrder': False,
|
65
65
|
'createTrailingPercentOrder': False,
|
@@ -298,7 +298,7 @@ class modetrade(Exchange, ImplicitAPI):
|
|
298
298
|
},
|
299
299
|
'options': {
|
300
300
|
'sandboxMode': False,
|
301
|
-
'brokerId': '
|
301
|
+
'brokerId': 'CCXTMODE',
|
302
302
|
'verifyingContractAddress': '0x6F7a338F2aA472838dEFD3283eB360d4Dff5D203',
|
303
303
|
},
|
304
304
|
'features': {
|
@@ -2069,7 +2069,7 @@ class modetrade(Exchange, ImplicitAPI):
|
|
2069
2069
|
code = self.safe_currency_code(self.safe_string(balance, 'token'))
|
2070
2070
|
account = self.account()
|
2071
2071
|
account['total'] = self.safe_string(balance, 'holding')
|
2072
|
-
account['
|
2072
|
+
account['used'] = self.safe_string(balance, 'frozen')
|
2073
2073
|
result[code] = account
|
2074
2074
|
return self.safe_balance(result)
|
2075
2075
|
|
@@ -2671,7 +2671,7 @@ class modetrade(Exchange, ImplicitAPI):
|
|
2671
2671
|
if isPostOrPut and isOrder:
|
2672
2672
|
isSandboxMode = self.safe_bool(self.options, 'sandboxMode', False)
|
2673
2673
|
if not isSandboxMode:
|
2674
|
-
brokerId = self.safe_string(self.options, 'brokerId', '
|
2674
|
+
brokerId = self.safe_string(self.options, 'brokerId', 'CCXTMODE')
|
2675
2675
|
if path == 'batch-order':
|
2676
2676
|
ordersList = self.safe_list(params, 'orders', [])
|
2677
2677
|
for i in range(0, len(ordersList)):
|
ccxt/pro/__init__.py
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
# ----------------------------------------------------------------------------
|
6
6
|
|
7
|
-
__version__ = '4.4.
|
7
|
+
__version__ = '4.4.88'
|
8
8
|
|
9
9
|
# ----------------------------------------------------------------------------
|
10
10
|
|
@@ -165,6 +165,14 @@ from ccxt.base.errors import error_hierarchy # noqa: F4
|
|
165
165
|
|
166
166
|
|
167
167
|
|
168
|
+
|
169
|
+
|
170
|
+
|
171
|
+
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
|
168
176
|
|
169
177
|
|
170
178
|
|
ccxt/test/tests_async.py
CHANGED
@@ -1731,7 +1731,7 @@ class testMainClass:
|
|
1731
1731
|
async def test_mode_trade(self):
|
1732
1732
|
exchange = self.init_offline_exchange('modetrade')
|
1733
1733
|
exchange.secret = 'secretsecretsecretsecretsecretsecretsecrets'
|
1734
|
-
id = '
|
1734
|
+
id = 'CCXTMODE'
|
1735
1735
|
await exchange.load_markets()
|
1736
1736
|
request = None
|
1737
1737
|
try:
|
ccxt/test/tests_sync.py
CHANGED
@@ -1728,7 +1728,7 @@ class testMainClass:
|
|
1728
1728
|
def test_mode_trade(self):
|
1729
1729
|
exchange = self.init_offline_exchange('modetrade')
|
1730
1730
|
exchange.secret = 'secretsecretsecretsecretsecretsecretsecrets'
|
1731
|
-
id = '
|
1731
|
+
id = 'CCXTMODE'
|
1732
1732
|
exchange.load_markets()
|
1733
1733
|
request = None
|
1734
1734
|
try:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.4.
|
3
|
+
Version: 4.4.88
|
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
|
@@ -280,13 +280,13 @@ console.log(version, Object.keys(exchanges));
|
|
280
280
|
|
281
281
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
282
282
|
|
283
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.
|
284
|
-
* unpkg: https://unpkg.com/ccxt@4.4.
|
283
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.88/dist/ccxt.browser.min.js
|
284
|
+
* unpkg: https://unpkg.com/ccxt@4.4.88/dist/ccxt.browser.min.js
|
285
285
|
|
286
286
|
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.
|
287
287
|
|
288
288
|
```HTML
|
289
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.
|
289
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.88/dist/ccxt.browser.min.js"></script>
|
290
290
|
```
|
291
291
|
|
292
292
|
Creates a global `ccxt` object:
|
@@ -1,4 +1,4 @@
|
|
1
|
-
ccxt/__init__.py,sha256=
|
1
|
+
ccxt/__init__.py,sha256=BGDLdHsOBvgbuZS9KCxoJ4_lxgd6kMfqw35nv-efthk,16283
|
2
2
|
ccxt/alpaca.py,sha256=S-PvXknJDcYUqHZWg4isZKGbTa8oU2G4Z0BqbvObNPI,80687
|
3
3
|
ccxt/apex.py,sha256=zNACpzgcqESJBg73H7gdDoA7ixjDVhCwFRr5hVtcT5g,82680
|
4
4
|
ccxt/ascendex.py,sha256=J1Ob6JJ-GXLfm5NHKETN985sAPN3nYlzWi57GYB1zpE,158608
|
@@ -34,7 +34,7 @@ ccxt/btcalpha.py,sha256=Qu1-AQMHwXc_-0iSDo48cZDl1v5gIbaU1ITwvzQnHIE,39706
|
|
34
34
|
ccxt/btcbox.py,sha256=kNfz-rnGpVyJ1dnWKcv5gaz4-DwdK-zOT7-f5u0qfFk,31000
|
35
35
|
ccxt/btcmarkets.py,sha256=f157cn1ERJoudlZu-qYbr-nb5EdOYHqmcqJ6JSOS2eY,55829
|
36
36
|
ccxt/btcturk.py,sha256=qy2VlkpclOKMgqmrPHccONIJZQVvGcJy2PG-f6KVKTg,39482
|
37
|
-
ccxt/bybit.py,sha256=
|
37
|
+
ccxt/bybit.py,sha256=Amhb0bOzfGShTWdQ0qcZAM9teZnsoAxrdj_E3P1Zqgg,436082
|
38
38
|
ccxt/cex.py,sha256=3w-RPApgT6JNGQZmc9L0ze6IqycO97Xna69_aT17Lzc,72456
|
39
39
|
ccxt/coinbase.py,sha256=kPQ5_rfs7Qtu_yGCa91R2ylFa2WDbrT_PaAJpA5tQEM,236454
|
40
40
|
ccxt/coinbaseadvanced.py,sha256=Eb1X4_VtdNEu1q0Anr-MzdHG55OhCiZYgdeZv2kFuPg,577
|
@@ -79,7 +79,7 @@ ccxt/lbank.py,sha256=wboC02jnDOCj4Q1QNuwgMJ6umoXuYS1CySiXP4valCg,123621
|
|
79
79
|
ccxt/luno.py,sha256=GE6oeD1cmS56KmATCX-BE5_1IyRYUvKKjEV72KSkKhY,53714
|
80
80
|
ccxt/mercado.py,sha256=xdbHqVJgj570KETzQSUftP_I73ewdVqSg0Sj_oORt0w,38466
|
81
81
|
ccxt/mexc.py,sha256=EuxghSeUvzVJr0QUm6tzC3Hdt0019W6sTOc16NYyXO0,258910
|
82
|
-
ccxt/modetrade.py,sha256=
|
82
|
+
ccxt/modetrade.py,sha256=bKD93Irhu4x08dnV9RFR9u10xnqbSjQcc2KrhI3uVH8,120867
|
83
83
|
ccxt/myokx.py,sha256=1fuUUuz5HuhSzTefnqUayu4NWVLNXzK58LPdpi0GYu4,1773
|
84
84
|
ccxt/ndax.py,sha256=lnfDM_ogPiR5E9SL4iKt9iCeVbeTp8EUrM2N6J0_vM4,113853
|
85
85
|
ccxt/novadax.py,sha256=8K6mKIBY5KyyunyBsYJEosfkr2yDrPVgJfFUpET242k,67583
|
@@ -216,7 +216,7 @@ ccxt/abstract/xt.py,sha256=n3eX1cItL_J0j8prOViV-C_tRwIFv_GO8JTvZZw8jv8,27837
|
|
216
216
|
ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
|
217
217
|
ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
|
218
218
|
ccxt/abstract/zonda.py,sha256=X-hCW0SdX3YKZWixDyW-O2211M58Rno8kKJ6quY7rw4,7183
|
219
|
-
ccxt/async_support/__init__.py,sha256=
|
219
|
+
ccxt/async_support/__init__.py,sha256=4gocvvCSqlr_5DcV5pcLPeXq4SDf61rkq5Y2pYD8lpM,16066
|
220
220
|
ccxt/async_support/alpaca.py,sha256=Tag0HpHxho_qrXoQ8rjZBVJZj9T38qg8g-mZR39_m18,81133
|
221
221
|
ccxt/async_support/apex.py,sha256=Lf740Qrx0kRb2fVZWS0FwZeysyMz65IEFD66jzn-NfA,83168
|
222
222
|
ccxt/async_support/ascendex.py,sha256=sbL_sajKakTo1-Qw87oipkxrA5Qk-ol6bnY3kqh_5Bk,159445
|
@@ -252,7 +252,7 @@ ccxt/async_support/btcalpha.py,sha256=60k6itHUZebFUStxORVOcImG6qeFiad8mKlhTsLqVG
|
|
252
252
|
ccxt/async_support/btcbox.py,sha256=LDK_Pc2RIdvuQ6nD3CxozOKXAZjGUwYFEdXa7OcWdUA,31256
|
253
253
|
ccxt/async_support/btcmarkets.py,sha256=Zg3yrl0Gep_0_-pbRW3og0YUxutQe2iWXPorOhypAkQ,56179
|
254
254
|
ccxt/async_support/btcturk.py,sha256=f2xZPMhw-4CKf9e5DYoNdDkbdqgyWvWRAZ9faaUPUyI,39700
|
255
|
-
ccxt/async_support/bybit.py,sha256=
|
255
|
+
ccxt/async_support/bybit.py,sha256=wCgkgnkPi8EMNTHbEE1RujWLMMU7b_h0aDMX9btK19I,437902
|
256
256
|
ccxt/async_support/cex.py,sha256=glezHtzVpvdGI6GvN2kpwah5uJGStbg2e1rIh7UKRLE,72928
|
257
257
|
ccxt/async_support/coinbase.py,sha256=We_HoNT5JuAFrQngrYC_T69HLbaaEq9_uMjNz2zPQM4,237715
|
258
258
|
ccxt/async_support/coinbaseadvanced.py,sha256=TnsUS2r5fvHIEfQmJh7J6Muyg8tPqDJphKYmK7gUQGE,591
|
@@ -297,7 +297,7 @@ ccxt/async_support/lbank.py,sha256=cIEIQYDUTzTbnCZTxkfSS4ef80zlwlw1GBIRJJReopU,1
|
|
297
297
|
ccxt/async_support/luno.py,sha256=B8VWaNjEYO_vdHypHP_iEpPlo0FQwrO4LMhkhmuYAwk,54088
|
298
298
|
ccxt/async_support/mercado.py,sha256=rC48RX-XpLRd2u0roaGc5JY046mHrI6nq1b-4vhNeGU,38708
|
299
299
|
ccxt/async_support/mexc.py,sha256=y8iNLQZMRq9aH0q456_XgA0nxX4iS6x2nf9YmjT6zG0,260174
|
300
|
-
ccxt/async_support/modetrade.py,sha256
|
300
|
+
ccxt/async_support/modetrade.py,sha256=WrNDl7kVXZNHnXUkbU-Xc4M8_umWE_88GAoe0PLaOD8,121559
|
301
301
|
ccxt/async_support/myokx.py,sha256=hU24R4SOpmyjnvgZe5YSU4ELucsSZlENBox4U0P862w,1787
|
302
302
|
ccxt/async_support/ndax.py,sha256=UPHLwLNELb-CU4uSpxemsH3S4ZhosLmUwUwl1IYrCmA,114377
|
303
303
|
ccxt/async_support/novadax.py,sha256=QIFIoZdkkq2odkX7V0wGn9ytgtzEDOTr4MnFGlgnKEk,67951
|
@@ -328,7 +328,7 @@ ccxt/async_support/yobit.py,sha256=B2T9UXo0ke-YyXxNW9avOPJ8cReVGXWD9OpkORI9ZSU,5
|
|
328
328
|
ccxt/async_support/zaif.py,sha256=jZZv3ZjGQgkPNRfY5B5p5DNMvanHWTTS8m6BLBWm9tA,31357
|
329
329
|
ccxt/async_support/zonda.py,sha256=2QL_B9CmBu4SU4K-Y8segpj57vzAd4aUT2H2cD3b07g,85320
|
330
330
|
ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
|
331
|
-
ccxt/async_support/base/exchange.py,sha256=
|
331
|
+
ccxt/async_support/base/exchange.py,sha256=fbgJlT00ihhKWP1xWzUWIR32BYHsi6WuAPxDH_Toe9Q,119161
|
332
332
|
ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
|
333
333
|
ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
|
334
334
|
ccxt/async_support/base/ws/aiohttp_client.py,sha256=Y5HxAVXyyYduj6b6SbbUZETlq3GrVMzrkW1r-TMgpb8,6329
|
@@ -341,10 +341,10 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=GhnGUt78pJ-AYL_Dq9produGjmB
|
|
341
341
|
ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
|
342
342
|
ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
|
343
343
|
ccxt/base/errors.py,sha256=MvCrL_sAM3de616T6RE0PSxiF2xV6Qqz5b1y1ghidbk,4888
|
344
|
-
ccxt/base/exchange.py,sha256=
|
344
|
+
ccxt/base/exchange.py,sha256=5k_lyLt0b6iu84H4u7pq1TpLtLC-jUPxlqmG0gQfElo,328200
|
345
345
|
ccxt/base/precise.py,sha256=koce64Yrp6vFbGijJtUt-QQ6XhJgeGTCksZ871FPp_A,8886
|
346
346
|
ccxt/base/types.py,sha256=IbLO7Ni-plO36xlOdJQFqujSJBq0q9qll009ShZ0M_U,11468
|
347
|
-
ccxt/pro/__init__.py,sha256=
|
347
|
+
ccxt/pro/__init__.py,sha256=xSFYX5hiCH7icEfmWVF_fgJCU6RI39brGH4P9B8n8Rs,11507
|
348
348
|
ccxt/pro/alpaca.py,sha256=_WEorh5thYhvhn7R8hBvHW2m1P2foIbp8URjIt_9vcg,27623
|
349
349
|
ccxt/pro/apex.py,sha256=fiKLT2R4vSCtTBXtXOgw_rJc6jPGINrpEJagzfvlL9c,42004
|
350
350
|
ccxt/pro/ascendex.py,sha256=aSbIEzJ0Og_Nc5UGTYj3DVjGfIJ0-q0DdXSWJcQCKb4,37512
|
@@ -650,12 +650,12 @@ ccxt/static_dependencies/toolz/curried/operator.py,sha256=ML92mknkAwzBl2NCm-4wer
|
|
650
650
|
ccxt/static_dependencies/typing_inspect/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
651
651
|
ccxt/static_dependencies/typing_inspect/typing_inspect.py,sha256=5gIWomLPfuDpgd3gX1GlnX0MuXM3VorR4j2W2qXORiQ,28269
|
652
652
|
ccxt/test/__init__.py,sha256=GKPbEcj0Rrz5HG-GUm-iY1IHhDYmlvcBXZAGk6-m2CI,141
|
653
|
-
ccxt/test/tests_async.py,sha256=
|
653
|
+
ccxt/test/tests_async.py,sha256=eRqVzaBGt3NGNbWs6HS85x_fNARypXYtaxDe3h-U0jc,94696
|
654
654
|
ccxt/test/tests_helpers.py,sha256=egM69A2ZFYeVF5hwC1Qt-c5DOeClY5bv4jowmceeFV8,9736
|
655
655
|
ccxt/test/tests_init.py,sha256=qM0-Gb0h0p6CANWTkyYZI7wl-iYOcrPur7aj_OKh7m0,1212
|
656
|
-
ccxt/test/tests_sync.py,sha256=
|
657
|
-
ccxt-4.4.
|
658
|
-
ccxt-4.4.
|
659
|
-
ccxt-4.4.
|
660
|
-
ccxt-4.4.
|
661
|
-
ccxt-4.4.
|
656
|
+
ccxt/test/tests_sync.py,sha256=rlvVBtTTdQ92rof64feV-BQX3x1nzIE4HNcxUCF17O0,93656
|
657
|
+
ccxt-4.4.88.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
|
658
|
+
ccxt-4.4.88.dist-info/METADATA,sha256=9yUN_HIA1CHmjhTgiqr2Hu6zDvHrW60Ex6MsS3iwMrg,130748
|
659
|
+
ccxt-4.4.88.dist-info/WHEEL,sha256=Kh9pAotZVRFj97E15yTA4iADqXdQfIVTHcNaZTjxeGM,110
|
660
|
+
ccxt-4.4.88.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
|
661
|
+
ccxt-4.4.88.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|