ccxt 4.4.24__py2.py3-none-any.whl → 4.4.25__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 +1 -1
- ccxt/async_support/bitmex.py +8 -7
- ccxt/async_support/coinex.py +45 -21
- ccxt/async_support/hitbtc.py +5 -9
- ccxt/async_support/htx.py +16 -16
- ccxt/async_support/woofipro.py +1 -1
- ccxt/async_support/xt.py +4 -1
- ccxt/base/exchange.py +1 -1
- ccxt/bitmex.py +8 -7
- ccxt/coinex.py +45 -21
- ccxt/hitbtc.py +5 -9
- ccxt/htx.py +16 -16
- ccxt/pro/__init__.py +1 -1
- ccxt/woofipro.py +1 -1
- ccxt/xt.py +4 -1
- {ccxt-4.4.24.dist-info → ccxt-4.4.25.dist-info}/METADATA +6 -6
- {ccxt-4.4.24.dist-info → ccxt-4.4.25.dist-info}/RECORD +22 -22
- {ccxt-4.4.24.dist-info → ccxt-4.4.25.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.4.24.dist-info → ccxt-4.4.25.dist-info}/WHEEL +0 -0
- {ccxt-4.4.24.dist-info → ccxt-4.4.25.dist-info}/top_level.txt +0 -0
ccxt/__init__.py
CHANGED
ccxt/async_support/__init__.py
CHANGED
ccxt/async_support/bitmex.py
CHANGED
@@ -1108,17 +1108,18 @@ class bitmex(Exchange, ImplicitAPI):
|
|
1108
1108
|
# set the timestamp to zero, 1970 Jan 1 00:00:00
|
1109
1109
|
# for unrealized pnl and other transactions without a timestamp
|
1110
1110
|
timestamp = 0 # see comments above
|
1111
|
+
fee = None
|
1111
1112
|
feeCost = self.safe_string(item, 'fee')
|
1112
1113
|
if feeCost is not None:
|
1113
1114
|
feeCost = self.convert_to_real_amount(code, feeCost)
|
1114
|
-
|
1115
|
-
|
1116
|
-
|
1117
|
-
|
1115
|
+
fee = {
|
1116
|
+
'cost': self.parse_number(feeCost),
|
1117
|
+
'currency': code,
|
1118
|
+
}
|
1118
1119
|
after = self.safe_string(item, 'walletBalance')
|
1119
1120
|
if after is not None:
|
1120
1121
|
after = self.convert_to_real_amount(code, after)
|
1121
|
-
before = self.
|
1122
|
+
before = self.parse_number(Precise.string_sub(self.number_to_string(after), self.number_to_string(amount)))
|
1122
1123
|
direction = None
|
1123
1124
|
if Precise.string_lt(amountString, '0'):
|
1124
1125
|
direction = 'out'
|
@@ -1137,9 +1138,9 @@ class bitmex(Exchange, ImplicitAPI):
|
|
1137
1138
|
'referenceAccount': referenceAccount,
|
1138
1139
|
'type': type,
|
1139
1140
|
'currency': code,
|
1140
|
-
'amount': self.
|
1141
|
+
'amount': self.parse_number(amount),
|
1141
1142
|
'before': before,
|
1142
|
-
'after': self.
|
1143
|
+
'after': self.parse_number(after),
|
1143
1144
|
'status': status,
|
1144
1145
|
'fee': fee,
|
1145
1146
|
}, currency)
|
ccxt/async_support/coinex.py
CHANGED
@@ -474,9 +474,43 @@ class coinex(Exchange, ImplicitAPI):
|
|
474
474
|
'FUTURES': 'swap',
|
475
475
|
},
|
476
476
|
'networks': {
|
477
|
+
'BTC': 'BTC',
|
477
478
|
'BEP20': 'BSC',
|
478
|
-
'
|
479
|
-
'
|
479
|
+
'TRC20': 'TRC20',
|
480
|
+
'ERC20': 'ERC20',
|
481
|
+
'BRC20': 'BRC20',
|
482
|
+
'SOL': 'SOL',
|
483
|
+
'TON': 'SOL',
|
484
|
+
'BSV': 'BSV',
|
485
|
+
'AVAXC': 'AVA_C',
|
486
|
+
'AVAXX': 'AVA',
|
487
|
+
'SUI': 'SUI',
|
488
|
+
'ACA': 'ACA',
|
489
|
+
'CHZ': 'CHILIZ',
|
490
|
+
'ADA': 'ADA',
|
491
|
+
'ARB': 'ARBITRUM',
|
492
|
+
'ARBNOVA': 'ARBITRUM_NOVA',
|
493
|
+
'OP': 'OPTIMISM',
|
494
|
+
'APT': 'APTOS',
|
495
|
+
'ATOM': 'ATOM',
|
496
|
+
'FTM': 'FTM',
|
497
|
+
'BCH': 'BCH',
|
498
|
+
'ASTR': 'ASTR',
|
499
|
+
'LTC': 'LTC',
|
500
|
+
'MATIC': 'MATIC',
|
501
|
+
'CRONOS': 'CRONOS',
|
502
|
+
'DASH': 'DASH',
|
503
|
+
'DOT': 'DOT',
|
504
|
+
'ETC': 'ETC',
|
505
|
+
'ETHW': 'ETHPOW',
|
506
|
+
'FIL': 'FIL',
|
507
|
+
'ZIL': 'ZIL',
|
508
|
+
'DOGE': 'DOGE',
|
509
|
+
'TIA': 'CELESTIA',
|
510
|
+
'SEI': 'SEI',
|
511
|
+
'XRP': 'XRP',
|
512
|
+
'XMR': 'XMR',
|
513
|
+
# CSC, AE, BASE, AIPG, AKASH, POLKADOTASSETHUB ?, ALEO, STX, ALGO, ALPH, BLAST, AR, ARCH, ARDR, ARK, ARRR, MANTA, NTRN, LUNA, AURORA, AVAIL, ASC20, AVA, AYA, AZERO, BAN, BAND, BB, RUNES, BEAM, BELLSCOIN, BITCI, NEAR, AGORIC, BLOCX, BNC, BOBA, BRISE, KRC20, CANTO, CAPS, CCD, CELO, CFX, CHI, CKB, CLORE, CLV, CORE, CSPR, CTXC, DAG, DCR, DERO, DESO, DEFI, DGB, DNX, DOCK, DOGECHAIN, DYDX, DYMENSION, EGLD, ELA, ELF, ENJIN, EOSIO, ERG, ETN_SC, EVMOS, EWC, SGB, FACT, FB, FET, FIO, FIRO, NEO3, FLOW, FLARE, FLUX, LINEA, FREN, FSN, FB_BRC20, GLMR, GRIN, GRS, HACASH, HBAR, HERB, HIVE, MAPO, HMND, HNS, ZKSYNC, HTR, HUAHUA, MERLIN, ICP, ICX, INJ, IOST, IOTA, IOTX, IRIS, IRON, ONE, JOYSTREAM, KAI, KAR, KAS, KAVA, KCN, KDA, KLAY, KLY, KMD, KSM, KUB, KUJIRA, LAT, LBC, LUNC, LUKSO, MARS, METIS, MINA, MANTLE, MOB, MODE, MONA, MOVR, MTL, NEOX, NEXA, NIBI, NIMIQ, NMC, ONOMY, NRG, WAVES, NULS, OAS, OCTA, OLT, ONT, OORT, ORAI, OSMO, P3D, COMPOSABLE, PIVX, RON, POKT, POLYMESH, PRE_MARKET, PYI, QKC, QTUM, QUBIC, RSK, ROSE, ROUTE, RTM, THORCHAIN, RVN, RADIANT, SAGA, SALVIUM, SATOX, SC, SCP, _NULL, SCRT, SDN, RGBPP, SELF, SMH, SPACE, STARGAZE, STC, STEEM, STRATISEVM, STRD, STARKNET, SXP, SYS, TAIKO, TAO, TARA, TENET, THETA, TT, VENOM, VECHAIN, TOMO, VITE, VLX, VSYS, VTC, WAN, WAXP, WEMIX, XCH, XDC, XEC, XELIS, NEM, XHV, XLM, XNA, NANO, XPLA, XPR, XPRT, XRD, XTZ, XVG, XYM, ZANO, ZEC, ZEN, ZEPH, ZETA
|
480
514
|
},
|
481
515
|
},
|
482
516
|
'commonCurrencies': {
|
@@ -3547,20 +3581,14 @@ class coinex(Exchange, ImplicitAPI):
|
|
3547
3581
|
"""
|
3548
3582
|
await self.load_markets()
|
3549
3583
|
currency = self.currency(code)
|
3550
|
-
networks = self.safe_dict(currency, 'networks', {})
|
3551
|
-
network = self.safe_string_2(params, 'network', 'chain')
|
3552
|
-
params = self.omit(params, 'network')
|
3553
|
-
networksKeys = list(networks.keys())
|
3554
|
-
numOfNetworks = len(networksKeys)
|
3555
|
-
if networks is not None and numOfNetworks > 1:
|
3556
|
-
if network is None:
|
3557
|
-
raise ArgumentsRequired(self.id + ' fetchDepositAddress() ' + code + ' requires a network parameter')
|
3558
|
-
if not (network in networks):
|
3559
|
-
raise ExchangeError(self.id + ' fetchDepositAddress() ' + network + ' network not supported for ' + code)
|
3560
3584
|
request: dict = {
|
3561
3585
|
'ccy': currency['id'],
|
3562
|
-
'chain': network,
|
3563
3586
|
}
|
3587
|
+
networkCode = None
|
3588
|
+
networkCode, params = self.handle_network_code_and_params(params)
|
3589
|
+
if networkCode is None:
|
3590
|
+
raise ArgumentsRequired(self.id + ' fetchDepositAddress() requires a "network" parameter')
|
3591
|
+
request['chain'] = self.network_code_to_id(networkCode) # required for on-chain, not required for inter-user transfer
|
3564
3592
|
response = await self.v2PrivateGetAssetsDepositAddress(self.extend(request, params))
|
3565
3593
|
#
|
3566
3594
|
# {
|
@@ -3573,12 +3601,7 @@ class coinex(Exchange, ImplicitAPI):
|
|
3573
3601
|
# }
|
3574
3602
|
#
|
3575
3603
|
data = self.safe_dict(response, 'data', {})
|
3576
|
-
|
3577
|
-
options = self.safe_dict(self.options, 'fetchDepositAddress', {})
|
3578
|
-
fillResponseFromRequest = self.safe_bool(options, 'fillResponseFromRequest', True)
|
3579
|
-
if fillResponseFromRequest:
|
3580
|
-
depositAddress['network'] = self.network_id_to_code(network, currency).upper()
|
3581
|
-
return depositAddress
|
3604
|
+
return self.parse_deposit_address(data, currency)
|
3582
3605
|
|
3583
3606
|
def parse_deposit_address(self, depositAddress, currency: Currency = None) -> DepositAddress:
|
3584
3607
|
#
|
@@ -4418,8 +4441,6 @@ class coinex(Exchange, ImplicitAPI):
|
|
4418
4441
|
self.check_address(address)
|
4419
4442
|
await self.load_markets()
|
4420
4443
|
currency = self.currency(code)
|
4421
|
-
networkCode = self.safe_string_upper_2(params, 'network', 'chain')
|
4422
|
-
params = self.omit(params, 'network')
|
4423
4444
|
if tag:
|
4424
4445
|
address = address + ':' + tag
|
4425
4446
|
request: dict = {
|
@@ -4427,6 +4448,8 @@ class coinex(Exchange, ImplicitAPI):
|
|
4427
4448
|
'to_address': address, # must be authorized, inter-user transfer by a registered mobile phone number or an email address is supported
|
4428
4449
|
'amount': self.number_to_string(amount), # the actual amount without fees, https://www.coinex.com/fees
|
4429
4450
|
}
|
4451
|
+
networkCode = None
|
4452
|
+
networkCode, params = self.handle_network_code_and_params(params)
|
4430
4453
|
if networkCode is not None:
|
4431
4454
|
request['chain'] = self.network_code_to_id(networkCode) # required for on-chain, not required for inter-user transfer
|
4432
4455
|
response = await self.v2PrivatePostAssetsWithdraw(self.extend(request, params))
|
@@ -4463,6 +4486,7 @@ class coinex(Exchange, ImplicitAPI):
|
|
4463
4486
|
statuses: dict = {
|
4464
4487
|
'audit': 'pending',
|
4465
4488
|
'pass': 'pending',
|
4489
|
+
'audit_required': 'pending',
|
4466
4490
|
'processing': 'pending',
|
4467
4491
|
'confirming': 'pending',
|
4468
4492
|
'not_pass': 'failed',
|
ccxt/async_support/hitbtc.py
CHANGED
@@ -859,7 +859,8 @@ class hitbtc(Exchange, ImplicitAPI):
|
|
859
859
|
for j in range(0, len(rawNetworks)):
|
860
860
|
rawNetwork = rawNetworks[j]
|
861
861
|
networkId = self.safe_string_2(rawNetwork, 'protocol', 'network')
|
862
|
-
|
862
|
+
networkCode = self.network_id_to_code(networkId)
|
863
|
+
networkCode = networkCode.upper() if (networkCode is not None) else None
|
863
864
|
fee = self.safe_number(rawNetwork, 'payout_fee')
|
864
865
|
networkPrecision = self.safe_number(rawNetwork, 'precision_payout')
|
865
866
|
payinEnabledNetwork = self.safe_bool(rawNetwork, 'payin_enabled', False)
|
@@ -873,10 +874,10 @@ class hitbtc(Exchange, ImplicitAPI):
|
|
873
874
|
withdrawEnabled = True
|
874
875
|
elif not payoutEnabledNetwork:
|
875
876
|
withdrawEnabled = False
|
876
|
-
networks[
|
877
|
+
networks[networkCode] = {
|
877
878
|
'info': rawNetwork,
|
878
879
|
'id': networkId,
|
879
|
-
'network':
|
880
|
+
'network': networkCode,
|
880
881
|
'fee': fee,
|
881
882
|
'active': activeNetwork,
|
882
883
|
'deposit': payinEnabledNetwork,
|
@@ -911,12 +912,6 @@ class hitbtc(Exchange, ImplicitAPI):
|
|
911
912
|
}
|
912
913
|
return result
|
913
914
|
|
914
|
-
def safe_network(self, networkId):
|
915
|
-
if networkId is None:
|
916
|
-
return None
|
917
|
-
else:
|
918
|
-
return networkId.upper()
|
919
|
-
|
920
915
|
async def create_deposit_address(self, code: str, params={}):
|
921
916
|
"""
|
922
917
|
create a currency deposit address
|
@@ -3298,6 +3293,7 @@ class hitbtc(Exchange, ImplicitAPI):
|
|
3298
3293
|
networkEntry = networks[j]
|
3299
3294
|
networkId = self.safe_string(networkEntry, 'network')
|
3300
3295
|
networkCode = self.network_id_to_code(networkId)
|
3296
|
+
networkCode = networkCode.upper() if (networkCode is not None) else None
|
3301
3297
|
withdrawFee = self.safe_number(networkEntry, 'payout_fee')
|
3302
3298
|
isDefault = self.safe_value(networkEntry, 'default')
|
3303
3299
|
withdrawResult: dict = {
|
ccxt/async_support/htx.py
CHANGED
@@ -4905,15 +4905,15 @@ class htx(Exchange, ImplicitAPI):
|
|
4905
4905
|
orderType = type.replace('buy-', '')
|
4906
4906
|
orderType = orderType.replace('sell-', '')
|
4907
4907
|
options = self.safe_value(self.options, market['type'], {})
|
4908
|
-
|
4909
|
-
if
|
4908
|
+
triggerPrice = self.safe_string_n(params, ['triggerPrice', 'stopPrice', 'stop-price'])
|
4909
|
+
if triggerPrice is None:
|
4910
4910
|
stopOrderTypes = self.safe_value(options, 'stopOrderTypes', {})
|
4911
4911
|
if orderType in stopOrderTypes:
|
4912
|
-
raise ArgumentsRequired(self.id + ' createOrder() requires a
|
4912
|
+
raise ArgumentsRequired(self.id + ' createOrder() requires a triggerPrice for a stop order')
|
4913
4913
|
else:
|
4914
4914
|
defaultOperator = 'lte' if (side == 'sell') else 'gte'
|
4915
4915
|
stopOperator = self.safe_string(params, 'operator', defaultOperator)
|
4916
|
-
request['stop-price'] = self.price_to_precision(symbol,
|
4916
|
+
request['stop-price'] = self.price_to_precision(symbol, triggerPrice)
|
4917
4917
|
request['operator'] = stopOperator
|
4918
4918
|
if (orderType == 'limit') or (orderType == 'limit-fok'):
|
4919
4919
|
orderType = 'stop-' + orderType
|
@@ -4971,7 +4971,7 @@ class htx(Exchange, ImplicitAPI):
|
|
4971
4971
|
limitOrderTypes = self.safe_value(options, 'limitOrderTypes', {})
|
4972
4972
|
if orderType in limitOrderTypes:
|
4973
4973
|
request['price'] = self.price_to_precision(symbol, price)
|
4974
|
-
params = self.omit(params, ['stopPrice', 'stop-price', 'clientOrderId', 'client-order-id', 'operator', 'timeInForce'])
|
4974
|
+
params = self.omit(params, ['triggerPrice', 'stopPrice', 'stop-price', 'clientOrderId', 'client-order-id', 'operator', 'timeInForce'])
|
4975
4975
|
return self.extend(request, params)
|
4976
4976
|
|
4977
4977
|
def create_contract_order_request(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
@@ -5004,16 +5004,16 @@ class htx(Exchange, ImplicitAPI):
|
|
5004
5004
|
type = 'fok'
|
5005
5005
|
elif timeInForce == 'IOC':
|
5006
5006
|
type = 'ioc'
|
5007
|
-
triggerPrice = self.
|
5007
|
+
triggerPrice = self.safe_number_n(params, ['triggerPrice', 'stopPrice', 'trigger_price'])
|
5008
5008
|
stopLossTriggerPrice = self.safe_number_2(params, 'stopLossPrice', 'sl_trigger_price')
|
5009
5009
|
takeProfitTriggerPrice = self.safe_number_2(params, 'takeProfitPrice', 'tp_trigger_price')
|
5010
5010
|
trailingPercent = self.safe_string_2(params, 'trailingPercent', 'callback_rate')
|
5011
5011
|
trailingTriggerPrice = self.safe_number(params, 'trailingTriggerPrice', price)
|
5012
5012
|
isTrailingPercentOrder = trailingPercent is not None
|
5013
|
-
|
5013
|
+
isTrigger = triggerPrice is not None
|
5014
5014
|
isStopLossTriggerOrder = stopLossTriggerPrice is not None
|
5015
5015
|
isTakeProfitTriggerOrder = takeProfitTriggerPrice is not None
|
5016
|
-
if
|
5016
|
+
if isTrigger:
|
5017
5017
|
triggerType = self.safe_string_2(params, 'triggerType', 'trigger_type', 'le')
|
5018
5018
|
request['trigger_type'] = triggerType
|
5019
5019
|
request['trigger_price'] = self.price_to_precision(symbol, triggerPrice)
|
@@ -5052,7 +5052,7 @@ class htx(Exchange, ImplicitAPI):
|
|
5052
5052
|
broker = self.safe_value(self.options, 'broker', {})
|
5053
5053
|
brokerId = self.safe_string(broker, 'id')
|
5054
5054
|
request['channel_code'] = brokerId
|
5055
|
-
params = self.omit(params, ['reduceOnly', 'stopPrice', 'stopLossPrice', 'takeProfitPrice', 'triggerType', 'leverRate', 'timeInForce', 'leverage', 'trailingPercent', 'trailingTriggerPrice'])
|
5055
|
+
params = self.omit(params, ['reduceOnly', 'triggerPrice', 'stopPrice', 'stopLossPrice', 'takeProfitPrice', 'triggerType', 'leverRate', 'timeInForce', 'leverage', 'trailingPercent', 'trailingTriggerPrice'])
|
5056
5056
|
return self.extend(request, params)
|
5057
5057
|
|
5058
5058
|
async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
@@ -5073,7 +5073,7 @@ class htx(Exchange, ImplicitAPI):
|
|
5073
5073
|
:param float amount: how much you want to trade in units of the base currency
|
5074
5074
|
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
5075
5075
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
5076
|
-
:param float [params.
|
5076
|
+
:param float [params.triggerPrice]: the price a trigger order is triggered at
|
5077
5077
|
:param str [params.triggerType]: *contract trigger orders only* ge: greater than or equal to, le: less than or equal to
|
5078
5078
|
:param float [params.stopLossPrice]: *contract only* the price a stop-loss order is triggered at
|
5079
5079
|
:param float [params.takeProfitPrice]: *contract only* the price a take-profit order is triggered at
|
@@ -5089,12 +5089,12 @@ class htx(Exchange, ImplicitAPI):
|
|
5089
5089
|
"""
|
5090
5090
|
await self.load_markets()
|
5091
5091
|
market = self.market(symbol)
|
5092
|
-
triggerPrice = self.
|
5092
|
+
triggerPrice = self.safe_number_n(params, ['triggerPrice', 'stopPrice', 'trigger_price'])
|
5093
5093
|
stopLossTriggerPrice = self.safe_number_2(params, 'stopLossPrice', 'sl_trigger_price')
|
5094
5094
|
takeProfitTriggerPrice = self.safe_number_2(params, 'takeProfitPrice', 'tp_trigger_price')
|
5095
5095
|
trailingPercent = self.safe_number(params, 'trailingPercent')
|
5096
5096
|
isTrailingPercentOrder = trailingPercent is not None
|
5097
|
-
|
5097
|
+
isTrigger = triggerPrice is not None
|
5098
5098
|
isStopLossTriggerOrder = stopLossTriggerPrice is not None
|
5099
5099
|
isTakeProfitTriggerOrder = takeProfitTriggerPrice is not None
|
5100
5100
|
response = None
|
@@ -5110,7 +5110,7 @@ class htx(Exchange, ImplicitAPI):
|
|
5110
5110
|
marginMode, contractRequest = self.handle_margin_mode_and_params('createOrder', contractRequest)
|
5111
5111
|
marginMode = 'cross' if (marginMode is None) else marginMode
|
5112
5112
|
if marginMode == 'isolated':
|
5113
|
-
if
|
5113
|
+
if isTrigger:
|
5114
5114
|
response = await self.contractPrivatePostLinearSwapApiV1SwapTriggerOrder(contractRequest)
|
5115
5115
|
elif isStopLossTriggerOrder or isTakeProfitTriggerOrder:
|
5116
5116
|
response = await self.contractPrivatePostLinearSwapApiV1SwapTpslOrder(contractRequest)
|
@@ -5119,7 +5119,7 @@ class htx(Exchange, ImplicitAPI):
|
|
5119
5119
|
else:
|
5120
5120
|
response = await self.contractPrivatePostLinearSwapApiV1SwapOrder(contractRequest)
|
5121
5121
|
elif marginMode == 'cross':
|
5122
|
-
if
|
5122
|
+
if isTrigger:
|
5123
5123
|
response = await self.contractPrivatePostLinearSwapApiV1SwapCrossTriggerOrder(contractRequest)
|
5124
5124
|
elif isStopLossTriggerOrder or isTakeProfitTriggerOrder:
|
5125
5125
|
response = await self.contractPrivatePostLinearSwapApiV1SwapCrossTpslOrder(contractRequest)
|
@@ -5132,7 +5132,7 @@ class htx(Exchange, ImplicitAPI):
|
|
5132
5132
|
if offset is None:
|
5133
5133
|
raise ArgumentsRequired(self.id + ' createOrder() requires an extra parameter params["offset"] to be set to "open" or "close" when placing orders in inverse markets')
|
5134
5134
|
if market['swap']:
|
5135
|
-
if
|
5135
|
+
if isTrigger:
|
5136
5136
|
response = await self.contractPrivatePostSwapApiV1SwapTriggerOrder(contractRequest)
|
5137
5137
|
elif isStopLossTriggerOrder or isTakeProfitTriggerOrder:
|
5138
5138
|
response = await self.contractPrivatePostSwapApiV1SwapTpslOrder(contractRequest)
|
@@ -5141,7 +5141,7 @@ class htx(Exchange, ImplicitAPI):
|
|
5141
5141
|
else:
|
5142
5142
|
response = await self.contractPrivatePostSwapApiV1SwapOrder(contractRequest)
|
5143
5143
|
elif market['future']:
|
5144
|
-
if
|
5144
|
+
if isTrigger:
|
5145
5145
|
response = await self.contractPrivatePostApiV1ContractTriggerOrder(contractRequest)
|
5146
5146
|
elif isStopLossTriggerOrder or isTakeProfitTriggerOrder:
|
5147
5147
|
response = await self.contractPrivatePostApiV1ContractTpslOrder(contractRequest)
|
ccxt/async_support/woofipro.py
CHANGED
@@ -133,7 +133,7 @@ class woofipro(Exchange, ImplicitAPI):
|
|
133
133
|
'1y': '1y',
|
134
134
|
},
|
135
135
|
'urls': {
|
136
|
-
'logo': 'https://github.com/
|
136
|
+
'logo': 'https://github.com/user-attachments/assets/9ba21b8a-a9c7-4770-b7f1-ce3bcbde68c1',
|
137
137
|
'api': {
|
138
138
|
'public': 'https://api-evm.orderly.org',
|
139
139
|
'private': 'https://api-evm.orderly.org',
|
ccxt/async_support/xt.py
CHANGED
@@ -1699,6 +1699,9 @@ class xt(Exchange, ImplicitAPI):
|
|
1699
1699
|
market = self.safe_market(marketId, market, '_', marketType)
|
1700
1700
|
symbol = market['symbol']
|
1701
1701
|
timestamp = self.safe_integer(ticker, 't')
|
1702
|
+
percentage = self.safe_string_2(ticker, 'cr', 'r')
|
1703
|
+
if percentage is not None:
|
1704
|
+
percentage = Precise.string_mul(percentage, '100')
|
1702
1705
|
return self.safe_ticker({
|
1703
1706
|
'symbol': symbol,
|
1704
1707
|
'timestamp': timestamp,
|
@@ -1715,7 +1718,7 @@ class xt(Exchange, ImplicitAPI):
|
|
1715
1718
|
'last': self.safe_string(ticker, 'c'),
|
1716
1719
|
'previousClose': None,
|
1717
1720
|
'change': self.safe_number(ticker, 'cv'),
|
1718
|
-
'percentage': self.
|
1721
|
+
'percentage': self.parse_number(percentage),
|
1719
1722
|
'average': None,
|
1720
1723
|
'baseVolume': None,
|
1721
1724
|
'quoteVolume': self.safe_number_2(ticker, 'a', 'v'),
|
ccxt/base/exchange.py
CHANGED
ccxt/bitmex.py
CHANGED
@@ -1108,17 +1108,18 @@ class bitmex(Exchange, ImplicitAPI):
|
|
1108
1108
|
# set the timestamp to zero, 1970 Jan 1 00:00:00
|
1109
1109
|
# for unrealized pnl and other transactions without a timestamp
|
1110
1110
|
timestamp = 0 # see comments above
|
1111
|
+
fee = None
|
1111
1112
|
feeCost = self.safe_string(item, 'fee')
|
1112
1113
|
if feeCost is not None:
|
1113
1114
|
feeCost = self.convert_to_real_amount(code, feeCost)
|
1114
|
-
|
1115
|
-
|
1116
|
-
|
1117
|
-
|
1115
|
+
fee = {
|
1116
|
+
'cost': self.parse_number(feeCost),
|
1117
|
+
'currency': code,
|
1118
|
+
}
|
1118
1119
|
after = self.safe_string(item, 'walletBalance')
|
1119
1120
|
if after is not None:
|
1120
1121
|
after = self.convert_to_real_amount(code, after)
|
1121
|
-
before = self.
|
1122
|
+
before = self.parse_number(Precise.string_sub(self.number_to_string(after), self.number_to_string(amount)))
|
1122
1123
|
direction = None
|
1123
1124
|
if Precise.string_lt(amountString, '0'):
|
1124
1125
|
direction = 'out'
|
@@ -1137,9 +1138,9 @@ class bitmex(Exchange, ImplicitAPI):
|
|
1137
1138
|
'referenceAccount': referenceAccount,
|
1138
1139
|
'type': type,
|
1139
1140
|
'currency': code,
|
1140
|
-
'amount': self.
|
1141
|
+
'amount': self.parse_number(amount),
|
1141
1142
|
'before': before,
|
1142
|
-
'after': self.
|
1143
|
+
'after': self.parse_number(after),
|
1143
1144
|
'status': status,
|
1144
1145
|
'fee': fee,
|
1145
1146
|
}, currency)
|
ccxt/coinex.py
CHANGED
@@ -473,9 +473,43 @@ class coinex(Exchange, ImplicitAPI):
|
|
473
473
|
'FUTURES': 'swap',
|
474
474
|
},
|
475
475
|
'networks': {
|
476
|
+
'BTC': 'BTC',
|
476
477
|
'BEP20': 'BSC',
|
477
|
-
'
|
478
|
-
'
|
478
|
+
'TRC20': 'TRC20',
|
479
|
+
'ERC20': 'ERC20',
|
480
|
+
'BRC20': 'BRC20',
|
481
|
+
'SOL': 'SOL',
|
482
|
+
'TON': 'SOL',
|
483
|
+
'BSV': 'BSV',
|
484
|
+
'AVAXC': 'AVA_C',
|
485
|
+
'AVAXX': 'AVA',
|
486
|
+
'SUI': 'SUI',
|
487
|
+
'ACA': 'ACA',
|
488
|
+
'CHZ': 'CHILIZ',
|
489
|
+
'ADA': 'ADA',
|
490
|
+
'ARB': 'ARBITRUM',
|
491
|
+
'ARBNOVA': 'ARBITRUM_NOVA',
|
492
|
+
'OP': 'OPTIMISM',
|
493
|
+
'APT': 'APTOS',
|
494
|
+
'ATOM': 'ATOM',
|
495
|
+
'FTM': 'FTM',
|
496
|
+
'BCH': 'BCH',
|
497
|
+
'ASTR': 'ASTR',
|
498
|
+
'LTC': 'LTC',
|
499
|
+
'MATIC': 'MATIC',
|
500
|
+
'CRONOS': 'CRONOS',
|
501
|
+
'DASH': 'DASH',
|
502
|
+
'DOT': 'DOT',
|
503
|
+
'ETC': 'ETC',
|
504
|
+
'ETHW': 'ETHPOW',
|
505
|
+
'FIL': 'FIL',
|
506
|
+
'ZIL': 'ZIL',
|
507
|
+
'DOGE': 'DOGE',
|
508
|
+
'TIA': 'CELESTIA',
|
509
|
+
'SEI': 'SEI',
|
510
|
+
'XRP': 'XRP',
|
511
|
+
'XMR': 'XMR',
|
512
|
+
# CSC, AE, BASE, AIPG, AKASH, POLKADOTASSETHUB ?, ALEO, STX, ALGO, ALPH, BLAST, AR, ARCH, ARDR, ARK, ARRR, MANTA, NTRN, LUNA, AURORA, AVAIL, ASC20, AVA, AYA, AZERO, BAN, BAND, BB, RUNES, BEAM, BELLSCOIN, BITCI, NEAR, AGORIC, BLOCX, BNC, BOBA, BRISE, KRC20, CANTO, CAPS, CCD, CELO, CFX, CHI, CKB, CLORE, CLV, CORE, CSPR, CTXC, DAG, DCR, DERO, DESO, DEFI, DGB, DNX, DOCK, DOGECHAIN, DYDX, DYMENSION, EGLD, ELA, ELF, ENJIN, EOSIO, ERG, ETN_SC, EVMOS, EWC, SGB, FACT, FB, FET, FIO, FIRO, NEO3, FLOW, FLARE, FLUX, LINEA, FREN, FSN, FB_BRC20, GLMR, GRIN, GRS, HACASH, HBAR, HERB, HIVE, MAPO, HMND, HNS, ZKSYNC, HTR, HUAHUA, MERLIN, ICP, ICX, INJ, IOST, IOTA, IOTX, IRIS, IRON, ONE, JOYSTREAM, KAI, KAR, KAS, KAVA, KCN, KDA, KLAY, KLY, KMD, KSM, KUB, KUJIRA, LAT, LBC, LUNC, LUKSO, MARS, METIS, MINA, MANTLE, MOB, MODE, MONA, MOVR, MTL, NEOX, NEXA, NIBI, NIMIQ, NMC, ONOMY, NRG, WAVES, NULS, OAS, OCTA, OLT, ONT, OORT, ORAI, OSMO, P3D, COMPOSABLE, PIVX, RON, POKT, POLYMESH, PRE_MARKET, PYI, QKC, QTUM, QUBIC, RSK, ROSE, ROUTE, RTM, THORCHAIN, RVN, RADIANT, SAGA, SALVIUM, SATOX, SC, SCP, _NULL, SCRT, SDN, RGBPP, SELF, SMH, SPACE, STARGAZE, STC, STEEM, STRATISEVM, STRD, STARKNET, SXP, SYS, TAIKO, TAO, TARA, TENET, THETA, TT, VENOM, VECHAIN, TOMO, VITE, VLX, VSYS, VTC, WAN, WAXP, WEMIX, XCH, XDC, XEC, XELIS, NEM, XHV, XLM, XNA, NANO, XPLA, XPR, XPRT, XRD, XTZ, XVG, XYM, ZANO, ZEC, ZEN, ZEPH, ZETA
|
479
513
|
},
|
480
514
|
},
|
481
515
|
'commonCurrencies': {
|
@@ -3546,20 +3580,14 @@ class coinex(Exchange, ImplicitAPI):
|
|
3546
3580
|
"""
|
3547
3581
|
self.load_markets()
|
3548
3582
|
currency = self.currency(code)
|
3549
|
-
networks = self.safe_dict(currency, 'networks', {})
|
3550
|
-
network = self.safe_string_2(params, 'network', 'chain')
|
3551
|
-
params = self.omit(params, 'network')
|
3552
|
-
networksKeys = list(networks.keys())
|
3553
|
-
numOfNetworks = len(networksKeys)
|
3554
|
-
if networks is not None and numOfNetworks > 1:
|
3555
|
-
if network is None:
|
3556
|
-
raise ArgumentsRequired(self.id + ' fetchDepositAddress() ' + code + ' requires a network parameter')
|
3557
|
-
if not (network in networks):
|
3558
|
-
raise ExchangeError(self.id + ' fetchDepositAddress() ' + network + ' network not supported for ' + code)
|
3559
3583
|
request: dict = {
|
3560
3584
|
'ccy': currency['id'],
|
3561
|
-
'chain': network,
|
3562
3585
|
}
|
3586
|
+
networkCode = None
|
3587
|
+
networkCode, params = self.handle_network_code_and_params(params)
|
3588
|
+
if networkCode is None:
|
3589
|
+
raise ArgumentsRequired(self.id + ' fetchDepositAddress() requires a "network" parameter')
|
3590
|
+
request['chain'] = self.network_code_to_id(networkCode) # required for on-chain, not required for inter-user transfer
|
3563
3591
|
response = self.v2PrivateGetAssetsDepositAddress(self.extend(request, params))
|
3564
3592
|
#
|
3565
3593
|
# {
|
@@ -3572,12 +3600,7 @@ class coinex(Exchange, ImplicitAPI):
|
|
3572
3600
|
# }
|
3573
3601
|
#
|
3574
3602
|
data = self.safe_dict(response, 'data', {})
|
3575
|
-
|
3576
|
-
options = self.safe_dict(self.options, 'fetchDepositAddress', {})
|
3577
|
-
fillResponseFromRequest = self.safe_bool(options, 'fillResponseFromRequest', True)
|
3578
|
-
if fillResponseFromRequest:
|
3579
|
-
depositAddress['network'] = self.network_id_to_code(network, currency).upper()
|
3580
|
-
return depositAddress
|
3603
|
+
return self.parse_deposit_address(data, currency)
|
3581
3604
|
|
3582
3605
|
def parse_deposit_address(self, depositAddress, currency: Currency = None) -> DepositAddress:
|
3583
3606
|
#
|
@@ -4417,8 +4440,6 @@ class coinex(Exchange, ImplicitAPI):
|
|
4417
4440
|
self.check_address(address)
|
4418
4441
|
self.load_markets()
|
4419
4442
|
currency = self.currency(code)
|
4420
|
-
networkCode = self.safe_string_upper_2(params, 'network', 'chain')
|
4421
|
-
params = self.omit(params, 'network')
|
4422
4443
|
if tag:
|
4423
4444
|
address = address + ':' + tag
|
4424
4445
|
request: dict = {
|
@@ -4426,6 +4447,8 @@ class coinex(Exchange, ImplicitAPI):
|
|
4426
4447
|
'to_address': address, # must be authorized, inter-user transfer by a registered mobile phone number or an email address is supported
|
4427
4448
|
'amount': self.number_to_string(amount), # the actual amount without fees, https://www.coinex.com/fees
|
4428
4449
|
}
|
4450
|
+
networkCode = None
|
4451
|
+
networkCode, params = self.handle_network_code_and_params(params)
|
4429
4452
|
if networkCode is not None:
|
4430
4453
|
request['chain'] = self.network_code_to_id(networkCode) # required for on-chain, not required for inter-user transfer
|
4431
4454
|
response = self.v2PrivatePostAssetsWithdraw(self.extend(request, params))
|
@@ -4462,6 +4485,7 @@ class coinex(Exchange, ImplicitAPI):
|
|
4462
4485
|
statuses: dict = {
|
4463
4486
|
'audit': 'pending',
|
4464
4487
|
'pass': 'pending',
|
4488
|
+
'audit_required': 'pending',
|
4465
4489
|
'processing': 'pending',
|
4466
4490
|
'confirming': 'pending',
|
4467
4491
|
'not_pass': 'failed',
|
ccxt/hitbtc.py
CHANGED
@@ -859,7 +859,8 @@ class hitbtc(Exchange, ImplicitAPI):
|
|
859
859
|
for j in range(0, len(rawNetworks)):
|
860
860
|
rawNetwork = rawNetworks[j]
|
861
861
|
networkId = self.safe_string_2(rawNetwork, 'protocol', 'network')
|
862
|
-
|
862
|
+
networkCode = self.network_id_to_code(networkId)
|
863
|
+
networkCode = networkCode.upper() if (networkCode is not None) else None
|
863
864
|
fee = self.safe_number(rawNetwork, 'payout_fee')
|
864
865
|
networkPrecision = self.safe_number(rawNetwork, 'precision_payout')
|
865
866
|
payinEnabledNetwork = self.safe_bool(rawNetwork, 'payin_enabled', False)
|
@@ -873,10 +874,10 @@ class hitbtc(Exchange, ImplicitAPI):
|
|
873
874
|
withdrawEnabled = True
|
874
875
|
elif not payoutEnabledNetwork:
|
875
876
|
withdrawEnabled = False
|
876
|
-
networks[
|
877
|
+
networks[networkCode] = {
|
877
878
|
'info': rawNetwork,
|
878
879
|
'id': networkId,
|
879
|
-
'network':
|
880
|
+
'network': networkCode,
|
880
881
|
'fee': fee,
|
881
882
|
'active': activeNetwork,
|
882
883
|
'deposit': payinEnabledNetwork,
|
@@ -911,12 +912,6 @@ class hitbtc(Exchange, ImplicitAPI):
|
|
911
912
|
}
|
912
913
|
return result
|
913
914
|
|
914
|
-
def safe_network(self, networkId):
|
915
|
-
if networkId is None:
|
916
|
-
return None
|
917
|
-
else:
|
918
|
-
return networkId.upper()
|
919
|
-
|
920
915
|
def create_deposit_address(self, code: str, params={}):
|
921
916
|
"""
|
922
917
|
create a currency deposit address
|
@@ -3298,6 +3293,7 @@ class hitbtc(Exchange, ImplicitAPI):
|
|
3298
3293
|
networkEntry = networks[j]
|
3299
3294
|
networkId = self.safe_string(networkEntry, 'network')
|
3300
3295
|
networkCode = self.network_id_to_code(networkId)
|
3296
|
+
networkCode = networkCode.upper() if (networkCode is not None) else None
|
3301
3297
|
withdrawFee = self.safe_number(networkEntry, 'payout_fee')
|
3302
3298
|
isDefault = self.safe_value(networkEntry, 'default')
|
3303
3299
|
withdrawResult: dict = {
|
ccxt/htx.py
CHANGED
@@ -4904,15 +4904,15 @@ class htx(Exchange, ImplicitAPI):
|
|
4904
4904
|
orderType = type.replace('buy-', '')
|
4905
4905
|
orderType = orderType.replace('sell-', '')
|
4906
4906
|
options = self.safe_value(self.options, market['type'], {})
|
4907
|
-
|
4908
|
-
if
|
4907
|
+
triggerPrice = self.safe_string_n(params, ['triggerPrice', 'stopPrice', 'stop-price'])
|
4908
|
+
if triggerPrice is None:
|
4909
4909
|
stopOrderTypes = self.safe_value(options, 'stopOrderTypes', {})
|
4910
4910
|
if orderType in stopOrderTypes:
|
4911
|
-
raise ArgumentsRequired(self.id + ' createOrder() requires a
|
4911
|
+
raise ArgumentsRequired(self.id + ' createOrder() requires a triggerPrice for a stop order')
|
4912
4912
|
else:
|
4913
4913
|
defaultOperator = 'lte' if (side == 'sell') else 'gte'
|
4914
4914
|
stopOperator = self.safe_string(params, 'operator', defaultOperator)
|
4915
|
-
request['stop-price'] = self.price_to_precision(symbol,
|
4915
|
+
request['stop-price'] = self.price_to_precision(symbol, triggerPrice)
|
4916
4916
|
request['operator'] = stopOperator
|
4917
4917
|
if (orderType == 'limit') or (orderType == 'limit-fok'):
|
4918
4918
|
orderType = 'stop-' + orderType
|
@@ -4970,7 +4970,7 @@ class htx(Exchange, ImplicitAPI):
|
|
4970
4970
|
limitOrderTypes = self.safe_value(options, 'limitOrderTypes', {})
|
4971
4971
|
if orderType in limitOrderTypes:
|
4972
4972
|
request['price'] = self.price_to_precision(symbol, price)
|
4973
|
-
params = self.omit(params, ['stopPrice', 'stop-price', 'clientOrderId', 'client-order-id', 'operator', 'timeInForce'])
|
4973
|
+
params = self.omit(params, ['triggerPrice', 'stopPrice', 'stop-price', 'clientOrderId', 'client-order-id', 'operator', 'timeInForce'])
|
4974
4974
|
return self.extend(request, params)
|
4975
4975
|
|
4976
4976
|
def create_contract_order_request(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
@@ -5003,16 +5003,16 @@ class htx(Exchange, ImplicitAPI):
|
|
5003
5003
|
type = 'fok'
|
5004
5004
|
elif timeInForce == 'IOC':
|
5005
5005
|
type = 'ioc'
|
5006
|
-
triggerPrice = self.
|
5006
|
+
triggerPrice = self.safe_number_n(params, ['triggerPrice', 'stopPrice', 'trigger_price'])
|
5007
5007
|
stopLossTriggerPrice = self.safe_number_2(params, 'stopLossPrice', 'sl_trigger_price')
|
5008
5008
|
takeProfitTriggerPrice = self.safe_number_2(params, 'takeProfitPrice', 'tp_trigger_price')
|
5009
5009
|
trailingPercent = self.safe_string_2(params, 'trailingPercent', 'callback_rate')
|
5010
5010
|
trailingTriggerPrice = self.safe_number(params, 'trailingTriggerPrice', price)
|
5011
5011
|
isTrailingPercentOrder = trailingPercent is not None
|
5012
|
-
|
5012
|
+
isTrigger = triggerPrice is not None
|
5013
5013
|
isStopLossTriggerOrder = stopLossTriggerPrice is not None
|
5014
5014
|
isTakeProfitTriggerOrder = takeProfitTriggerPrice is not None
|
5015
|
-
if
|
5015
|
+
if isTrigger:
|
5016
5016
|
triggerType = self.safe_string_2(params, 'triggerType', 'trigger_type', 'le')
|
5017
5017
|
request['trigger_type'] = triggerType
|
5018
5018
|
request['trigger_price'] = self.price_to_precision(symbol, triggerPrice)
|
@@ -5051,7 +5051,7 @@ class htx(Exchange, ImplicitAPI):
|
|
5051
5051
|
broker = self.safe_value(self.options, 'broker', {})
|
5052
5052
|
brokerId = self.safe_string(broker, 'id')
|
5053
5053
|
request['channel_code'] = brokerId
|
5054
|
-
params = self.omit(params, ['reduceOnly', 'stopPrice', 'stopLossPrice', 'takeProfitPrice', 'triggerType', 'leverRate', 'timeInForce', 'leverage', 'trailingPercent', 'trailingTriggerPrice'])
|
5054
|
+
params = self.omit(params, ['reduceOnly', 'triggerPrice', 'stopPrice', 'stopLossPrice', 'takeProfitPrice', 'triggerType', 'leverRate', 'timeInForce', 'leverage', 'trailingPercent', 'trailingTriggerPrice'])
|
5055
5055
|
return self.extend(request, params)
|
5056
5056
|
|
5057
5057
|
def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
|
@@ -5072,7 +5072,7 @@ class htx(Exchange, ImplicitAPI):
|
|
5072
5072
|
:param float amount: how much you want to trade in units of the base currency
|
5073
5073
|
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
5074
5074
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
5075
|
-
:param float [params.
|
5075
|
+
:param float [params.triggerPrice]: the price a trigger order is triggered at
|
5076
5076
|
:param str [params.triggerType]: *contract trigger orders only* ge: greater than or equal to, le: less than or equal to
|
5077
5077
|
:param float [params.stopLossPrice]: *contract only* the price a stop-loss order is triggered at
|
5078
5078
|
:param float [params.takeProfitPrice]: *contract only* the price a take-profit order is triggered at
|
@@ -5088,12 +5088,12 @@ class htx(Exchange, ImplicitAPI):
|
|
5088
5088
|
"""
|
5089
5089
|
self.load_markets()
|
5090
5090
|
market = self.market(symbol)
|
5091
|
-
triggerPrice = self.
|
5091
|
+
triggerPrice = self.safe_number_n(params, ['triggerPrice', 'stopPrice', 'trigger_price'])
|
5092
5092
|
stopLossTriggerPrice = self.safe_number_2(params, 'stopLossPrice', 'sl_trigger_price')
|
5093
5093
|
takeProfitTriggerPrice = self.safe_number_2(params, 'takeProfitPrice', 'tp_trigger_price')
|
5094
5094
|
trailingPercent = self.safe_number(params, 'trailingPercent')
|
5095
5095
|
isTrailingPercentOrder = trailingPercent is not None
|
5096
|
-
|
5096
|
+
isTrigger = triggerPrice is not None
|
5097
5097
|
isStopLossTriggerOrder = stopLossTriggerPrice is not None
|
5098
5098
|
isTakeProfitTriggerOrder = takeProfitTriggerPrice is not None
|
5099
5099
|
response = None
|
@@ -5109,7 +5109,7 @@ class htx(Exchange, ImplicitAPI):
|
|
5109
5109
|
marginMode, contractRequest = self.handle_margin_mode_and_params('createOrder', contractRequest)
|
5110
5110
|
marginMode = 'cross' if (marginMode is None) else marginMode
|
5111
5111
|
if marginMode == 'isolated':
|
5112
|
-
if
|
5112
|
+
if isTrigger:
|
5113
5113
|
response = self.contractPrivatePostLinearSwapApiV1SwapTriggerOrder(contractRequest)
|
5114
5114
|
elif isStopLossTriggerOrder or isTakeProfitTriggerOrder:
|
5115
5115
|
response = self.contractPrivatePostLinearSwapApiV1SwapTpslOrder(contractRequest)
|
@@ -5118,7 +5118,7 @@ class htx(Exchange, ImplicitAPI):
|
|
5118
5118
|
else:
|
5119
5119
|
response = self.contractPrivatePostLinearSwapApiV1SwapOrder(contractRequest)
|
5120
5120
|
elif marginMode == 'cross':
|
5121
|
-
if
|
5121
|
+
if isTrigger:
|
5122
5122
|
response = self.contractPrivatePostLinearSwapApiV1SwapCrossTriggerOrder(contractRequest)
|
5123
5123
|
elif isStopLossTriggerOrder or isTakeProfitTriggerOrder:
|
5124
5124
|
response = self.contractPrivatePostLinearSwapApiV1SwapCrossTpslOrder(contractRequest)
|
@@ -5131,7 +5131,7 @@ class htx(Exchange, ImplicitAPI):
|
|
5131
5131
|
if offset is None:
|
5132
5132
|
raise ArgumentsRequired(self.id + ' createOrder() requires an extra parameter params["offset"] to be set to "open" or "close" when placing orders in inverse markets')
|
5133
5133
|
if market['swap']:
|
5134
|
-
if
|
5134
|
+
if isTrigger:
|
5135
5135
|
response = self.contractPrivatePostSwapApiV1SwapTriggerOrder(contractRequest)
|
5136
5136
|
elif isStopLossTriggerOrder or isTakeProfitTriggerOrder:
|
5137
5137
|
response = self.contractPrivatePostSwapApiV1SwapTpslOrder(contractRequest)
|
@@ -5140,7 +5140,7 @@ class htx(Exchange, ImplicitAPI):
|
|
5140
5140
|
else:
|
5141
5141
|
response = self.contractPrivatePostSwapApiV1SwapOrder(contractRequest)
|
5142
5142
|
elif market['future']:
|
5143
|
-
if
|
5143
|
+
if isTrigger:
|
5144
5144
|
response = self.contractPrivatePostApiV1ContractTriggerOrder(contractRequest)
|
5145
5145
|
elif isStopLossTriggerOrder or isTakeProfitTriggerOrder:
|
5146
5146
|
response = self.contractPrivatePostApiV1ContractTpslOrder(contractRequest)
|
ccxt/pro/__init__.py
CHANGED
ccxt/woofipro.py
CHANGED
@@ -133,7 +133,7 @@ class woofipro(Exchange, ImplicitAPI):
|
|
133
133
|
'1y': '1y',
|
134
134
|
},
|
135
135
|
'urls': {
|
136
|
-
'logo': 'https://github.com/
|
136
|
+
'logo': 'https://github.com/user-attachments/assets/9ba21b8a-a9c7-4770-b7f1-ce3bcbde68c1',
|
137
137
|
'api': {
|
138
138
|
'public': 'https://api-evm.orderly.org',
|
139
139
|
'private': 'https://api-evm.orderly.org',
|
ccxt/xt.py
CHANGED
@@ -1698,6 +1698,9 @@ class xt(Exchange, ImplicitAPI):
|
|
1698
1698
|
market = self.safe_market(marketId, market, '_', marketType)
|
1699
1699
|
symbol = market['symbol']
|
1700
1700
|
timestamp = self.safe_integer(ticker, 't')
|
1701
|
+
percentage = self.safe_string_2(ticker, 'cr', 'r')
|
1702
|
+
if percentage is not None:
|
1703
|
+
percentage = Precise.string_mul(percentage, '100')
|
1701
1704
|
return self.safe_ticker({
|
1702
1705
|
'symbol': symbol,
|
1703
1706
|
'timestamp': timestamp,
|
@@ -1714,7 +1717,7 @@ class xt(Exchange, ImplicitAPI):
|
|
1714
1717
|
'last': self.safe_string(ticker, 'c'),
|
1715
1718
|
'previousClose': None,
|
1716
1719
|
'change': self.safe_number(ticker, 'cv'),
|
1717
|
-
'percentage': self.
|
1720
|
+
'percentage': self.parse_number(percentage),
|
1718
1721
|
'average': None,
|
1719
1722
|
'baseVolume': None,
|
1720
1723
|
'quoteVolume': self.safe_number_2(ticker, 'a', 'v'),
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.4.
|
3
|
+
Version: 4.4.25
|
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
|
@@ -103,7 +103,7 @@ Current feature list:
|
|
103
103
|
| [](https://www.mexc.com/register?inviteCode=mexc-1FQ1GNu1) | mexc | [MEXC Global](https://www.mexc.com/register?inviteCode=mexc-1FQ1GNu1) | [](https://mexcdevelop.github.io/apidocs/) | cex | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) | |
|
104
104
|
| [](https://www.okx.com/join/CCXT2023) | okx | [OKX](https://www.okx.com/join/CCXT2023) | [](https://www.okx.com/docs-v5/en/) | cex | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) | [](https://www.okx.com/join/CCXT2023) |
|
105
105
|
| [](https://x.woo.org/register?ref=DIJT0CNL) | woo | [WOO X](https://x.woo.org/register?ref=DIJT0CNL) | [](https://docs.woo.org/) | cex | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) | [](https://x.woo.org/register?ref=DIJT0CNL) |
|
106
|
-
| [](https://dex.woo.org/en/trade?ref=CCXT) | woofipro | [WOOFI PRO](https://dex.woo.org/en/trade?ref=CCXT) | [](https://orderly.network/docs/build-on-evm/building-on-evm) | dex | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) | [](https://dex.woo.org/en/trade?ref=CCXT) |
|
107
107
|
|
108
108
|
## Supported Cryptocurrency Exchanges
|
109
109
|
|
@@ -210,7 +210,7 @@ The CCXT library currently supports the following 104 cryptocurrency exchange ma
|
|
210
210
|
| [](https://wazirx.com/invite/k7rrnks5) | wazirx | [WazirX](https://wazirx.com/invite/k7rrnks5) | [](https://docs.wazirx.com/#public-rest-api-for-wazirx) | cex | | [](https://ccxt.pro) |
|
211
211
|
| [](https://whitebit.com/referral/d9bdf40e-28f2-4b52-b2f9-cd1415d82963) | whitebit | [WhiteBit](https://whitebit.com/referral/d9bdf40e-28f2-4b52-b2f9-cd1415d82963) | [](https://github.com/whitebit-exchange/api-docs) | cex | | [](https://ccxt.pro) |
|
212
212
|
| [](https://x.woo.org/register?ref=DIJT0CNL) | woo | [WOO X](https://x.woo.org/register?ref=DIJT0CNL) | [](https://docs.woo.org/) | cex | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) |
|
213
|
-
| [](https://dex.woo.org/en/trade?ref=CCXT) | woofipro | [WOOFI PRO](https://dex.woo.org/en/trade?ref=CCXT) | [](https://orderly.network/docs/build-on-evm/building-on-evm) | dex | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) |
|
214
214
|
| [](https://www.xt.com/en/accounts/register?ref=9PTM9VW) | xt | [XT](https://www.xt.com/en/accounts/register?ref=9PTM9VW) | [](https://doc.xt.com/) | cex | | [](https://ccxt.pro) |
|
215
215
|
| [](https://www.yobit.net) | yobit | [YoBit](https://www.yobit.net) | [](https://www.yobit.net/en/api/) | cex | | |
|
216
216
|
| [](https://zaif.jp) | zaif | [Zaif](https://zaif.jp) | [](https://techbureau-api-document.readthedocs.io/ja/latest/index.html) | cex | | |
|
@@ -272,13 +272,13 @@ console.log(version, Object.keys(exchanges));
|
|
272
272
|
|
273
273
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
274
274
|
|
275
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.
|
276
|
-
* unpkg: https://unpkg.com/ccxt@4.4.
|
275
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.25/dist/ccxt.browser.min.js
|
276
|
+
* unpkg: https://unpkg.com/ccxt@4.4.25/dist/ccxt.browser.min.js
|
277
277
|
|
278
278
|
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.
|
279
279
|
|
280
280
|
```HTML
|
281
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.
|
281
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.25/dist/ccxt.browser.min.js"></script>
|
282
282
|
```
|
283
283
|
|
284
284
|
Creates a global `ccxt` object:
|
@@ -1,4 +1,4 @@
|
|
1
|
-
ccxt/__init__.py,sha256=
|
1
|
+
ccxt/__init__.py,sha256=88mUdDFP0tVqApyXrTKQ50ztuNG8c06dYGLiHUYAp4M,16586
|
2
2
|
ccxt/ace.py,sha256=3KFlbRm6N9hXsKUsgZbQCFPZT5WGLm4HOjR19Q3uPts,42419
|
3
3
|
ccxt/alpaca.py,sha256=yGBD1qwBx2lFjj_0D_4Fz9bjfmIWwGHnoApMhwaA1hc,47554
|
4
4
|
ccxt/ascendex.py,sha256=aJ5_UysmRijYUvjenq5EDLldl2JUO6lXGofJ_NqPvJU,151676
|
@@ -20,7 +20,7 @@ ccxt/bitflyer.py,sha256=3IuU4cwj1e9kP_9gln3JM1q3a4UR6OsryLn0wH8hqwg,43961
|
|
20
20
|
ccxt/bitget.py,sha256=qt8nxlCd4u6aIuTKPCY0gZL1s5yUjGlihBCAdJOs7jk,432060
|
21
21
|
ccxt/bithumb.py,sha256=8oTnFWi8Ai9fnm5FPXvNmaUAVJEOqYi-18VC23cWmXY,47935
|
22
22
|
ccxt/bitmart.py,sha256=8D8pFVsaEMJZ5PQuheTigQ_-BEfHyvieIxwlM9o1-Yw,222097
|
23
|
-
ccxt/bitmex.py,sha256=
|
23
|
+
ccxt/bitmex.py,sha256=yewJ5y03RKFCVAR2Q9rgEgjK1i5oqJlQiPaDkVccQt0,127426
|
24
24
|
ccxt/bitopro.py,sha256=XV878befM45AOnlSRpMYTnaBol342JAYWbFshvJ9fvs,69358
|
25
25
|
ccxt/bitpanda.py,sha256=aiwPkx9lKbVzt4ggoYdq_mIbMGtg5ZtGl2yRHO5xyz8,471
|
26
26
|
ccxt/bitrue.py,sha256=N2rwD5efFrmeZXlkWuR8uRRudSH2Nhs3MU6JL-zWXls,136526
|
@@ -43,7 +43,7 @@ ccxt/coinbaseexchange.py,sha256=QWSx0JYePSrLUk-4I7IsJW9qUl83XAbzpK0vwqRcdOw,7917
|
|
43
43
|
ccxt/coinbaseinternational.py,sha256=-hCiM3wE4_V0GHuNZimHx9SSV0ozBj4zkUZEAh0UxFg,97509
|
44
44
|
ccxt/coincatch.py,sha256=Yov8rP-7mFShwgBW1GjIXmdClgCPB4B_gRaPQ34oYcc,240865
|
45
45
|
ccxt/coincheck.py,sha256=SeNvZm_3p01IsW8y6b3rw67qiMu29S59HHPG6Jma_T4,35942
|
46
|
-
ccxt/coinex.py,sha256=
|
46
|
+
ccxt/coinex.py,sha256=yMs-BMTDt4Tf5XlpUV3RFtbQTrzVulFoNjw2S811fqA,263607
|
47
47
|
ccxt/coinlist.py,sha256=KI49yKisargPm5nApMMfWfFs3e0Uxbx9yMRibY9n7Tw,104273
|
48
48
|
ccxt/coinmate.py,sha256=BkPcT92OQFeUQtnLDIkl-Sg0PcLrQ87RfHMFIybJoWk,46190
|
49
49
|
ccxt/coinmetro.py,sha256=sVDcyA3ZC3MBEvslnkOepbYGlnonbf8K5MRoLIIQ2-k,80647
|
@@ -61,10 +61,10 @@ ccxt/gate.py,sha256=crxDxniIDQBPdLwAuK4g6KYohhNEBtTPx6NCb8320gg,342636
|
|
61
61
|
ccxt/gateio.py,sha256=86AETJWODl_vA5VNeQRHZprmpNIY1HAxCddKZcnKSi8,445
|
62
62
|
ccxt/gemini.py,sha256=cFAHx-qA26A9WMJ3i6f_uQH83Q4k6UDwS8zBQcLI5Fs,81056
|
63
63
|
ccxt/hashkey.py,sha256=LMV9wPTn2_qT2om74OdF-IfHreaySxNHOilsNDrgB7Q,192148
|
64
|
-
ccxt/hitbtc.py,sha256=
|
64
|
+
ccxt/hitbtc.py,sha256=xeVD5oxt_vAYXvOAuhF_f1jvwGSz-RT3QxX5MqQhBuI,153660
|
65
65
|
ccxt/hitbtc3.py,sha256=qRAr4Zvaju9IQWRZUohdoN7xRnzIMPq8AyYb3gPv-Is,455
|
66
66
|
ccxt/hollaex.py,sha256=bGaqSEwR42i1etwXgSYbluStoyKcIbuj4Qx-YQkVUhM,76255
|
67
|
-
ccxt/htx.py,sha256=
|
67
|
+
ccxt/htx.py,sha256=DOIL0lOeZYVncsB8ltiftiWCqkrEsP8cAYhqDAvBOTo,436039
|
68
68
|
ccxt/huobi.py,sha256=4vaG7IRN7fyjaJ_ac6S-njlHOfSEN5de7aq0noznxYw,438
|
69
69
|
ccxt/huobijp.py,sha256=Kw1HQhoox1qp-bEiGpCcJSg1UAhPVLRRi-BRbQLMljI,89741
|
70
70
|
ccxt/hyperliquid.py,sha256=xE3XrBbLedqE8gxvKkv10-b_-yHAlfLktwkQvJ0fdPo,123439
|
@@ -105,8 +105,8 @@ ccxt/wavesexchange.py,sha256=Zc4OQk8RKCm_9KHFbK1sHo7MtdWqDxeoR02dxgxS7d0,114925
|
|
105
105
|
ccxt/wazirx.py,sha256=aNKxEFog4dwFfl9Vwoqn8ta6EfpYwzgLo_CsfRDLKdc,53350
|
106
106
|
ccxt/whitebit.py,sha256=tVkwl5cP52l8CFldvaGaFGE112fZzqdQ4vyDpYQgiwA,119576
|
107
107
|
ccxt/woo.py,sha256=X0gUhdBqJuybSqR7zk3iOdkK_O_Amp1iRNJvuYQ0zAc,155418
|
108
|
-
ccxt/woofipro.py,sha256=
|
109
|
-
ccxt/xt.py,sha256=
|
108
|
+
ccxt/woofipro.py,sha256=uX09Z2hFh3q10VukNvkzN9kb6974aGNDAvsIJT3B7MM,117099
|
109
|
+
ccxt/xt.py,sha256=xmHPPxpV3LcRfMKplvNHpK72MOsQyt2gIiY67HhoZ_E,203998
|
110
110
|
ccxt/yobit.py,sha256=YJIyUGQ4qK1tpoTZ1aKKU8K85Vgqp3BmdbqqeiblL3Y,55374
|
111
111
|
ccxt/zaif.py,sha256=LgeOsvAo4ShQW1s-RidgUYK4DnRU-Dk0eJG0Ca6M_9U,28862
|
112
112
|
ccxt/zonda.py,sha256=clgLxb-WvsvbpB4hseo3X87blzI6TNrfG9hBAVJBlJ0,82800
|
@@ -220,7 +220,7 @@ ccxt/abstract/xt.py,sha256=JkWvsic3L2O968BCr9H5Wd5NIbRE9aTT2A-9WbAtl0c,27146
|
|
220
220
|
ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
|
221
221
|
ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
|
222
222
|
ccxt/abstract/zonda.py,sha256=X-hCW0SdX3YKZWixDyW-O2211M58Rno8kKJ6quY7rw4,7183
|
223
|
-
ccxt/async_support/__init__.py,sha256=
|
223
|
+
ccxt/async_support/__init__.py,sha256=QoKJWcd8Vfps6-gxfoOj7AA7xs5xV7RsVZQQjjGohT0,16399
|
224
224
|
ccxt/async_support/ace.py,sha256=ucCkKaWRkILAIK9g4iEi1Q_-zmn0V89-rX8Al4WdK8s,42643
|
225
225
|
ccxt/async_support/alpaca.py,sha256=lwaRgyLZH82z1SeIF43OePicJ2v9i6a75iK7ZXb-0YE,47766
|
226
226
|
ccxt/async_support/ascendex.py,sha256=YcGVveIDir8A1rDak-DdS_qVO1yPwAUX9sRDwCVNX80,152489
|
@@ -242,7 +242,7 @@ ccxt/async_support/bitflyer.py,sha256=Mog9b-SSkZ-MEnIIO5kgxiIFJ4BVsBupHTIZwJyCi2
|
|
242
242
|
ccxt/async_support/bitget.py,sha256=gmXaxFdSmxmiBje_y5B7_Rr5NYonPIrW8BGUbBfAmw0,433732
|
243
243
|
ccxt/async_support/bithumb.py,sha256=Q0Cx_cRKZRfdpBAhQyINm63Qw3M6BRYQRiF0UqYzfis,48214
|
244
244
|
ccxt/async_support/bitmart.py,sha256=WNfWDZvw8lgzC8WGvuR67-07uqtt_woyfVPeua3IhXQ,223089
|
245
|
-
ccxt/async_support/bitmex.py,sha256=
|
245
|
+
ccxt/async_support/bitmex.py,sha256=ocfsY_xReNJPA-bk8yqEWwP0x2LXpRvASCgB66RMxNg,128004
|
246
246
|
ccxt/async_support/bitopro.py,sha256=uWrH_HdRkf0UCs-N_JE1hCN6eWYWwXpc8VXMb0niM78,69762
|
247
247
|
ccxt/async_support/bitpanda.py,sha256=2k3URBWrpnh2xHa7JiYenI7_4MW5UeOPGzetlmRkR4U,485
|
248
248
|
ccxt/async_support/bitrue.py,sha256=ymqJnYEAEkAiRZW4ZOBVJRGLyQz-7nsjoV7IHSRvqlk,137184
|
@@ -265,7 +265,7 @@ ccxt/async_support/coinbaseexchange.py,sha256=LgswQGPBKM2FZ3qeQCXxf4_88mp_r90rGw
|
|
265
265
|
ccxt/async_support/coinbaseinternational.py,sha256=lkBNMcyDi6V_ilZ3co-33wTHVsyn87XDdXiW8ItUKZw,98123
|
266
266
|
ccxt/async_support/coincatch.py,sha256=p3UWNXDSQpBVB8yfGQXx3E4nkDcNz4eMPolrh6WdKYM,241923
|
267
267
|
ccxt/async_support/coincheck.py,sha256=N_0cDMAiFRC4G--QgOmSH8esKDr_lEVZUpukc4QoHk8,36148
|
268
|
-
ccxt/async_support/coinex.py,sha256=
|
268
|
+
ccxt/async_support/coinex.py,sha256=kJKDm1p83pPbegL9yCDePLE-77FCguH5RIQjKs0Ab4I,264895
|
269
269
|
ccxt/async_support/coinlist.py,sha256=VOqcXFP1fpK5vXKALS8GcioZhb1o-VvhpOUym594xl8,104761
|
270
270
|
ccxt/async_support/coinmate.py,sha256=NI58zYMkuOL9lB3UFzyjUNbuFZGrtjZbb4PBFTOsbz4,46456
|
271
271
|
ccxt/async_support/coinmetro.py,sha256=7Ao4bkTg4xR1vD9EB9y9oI65_s5fXPB6u9k2wP9gSwo,80967
|
@@ -283,10 +283,10 @@ ccxt/async_support/gate.py,sha256=ZCArwuNHQdZ3yWCVRgRl-6RD0mQ0ou_Qwb6UsVZ1d60,34
|
|
283
283
|
ccxt/async_support/gateio.py,sha256=6_t032F9p9x5KGTjtSuqGXITzFOx-XAQBYLpsuQjzxw,459
|
284
284
|
ccxt/async_support/gemini.py,sha256=gy0ALSeHrenXa2aJoAW1alVOgF6rUNxUoydX5Degikc,81580
|
285
285
|
ccxt/async_support/hashkey.py,sha256=XaSBqm0eh3R_2HCbOCZWaLuqJwVg5DJbttvfFYJpNZA,192990
|
286
|
-
ccxt/async_support/hitbtc.py,sha256=
|
286
|
+
ccxt/async_support/hitbtc.py,sha256=U9HhGwPrFNVOu_bM3aiXCfgBHpDb9qgT43W8e_TCx88,154706
|
287
287
|
ccxt/async_support/hitbtc3.py,sha256=dmSYoD2o4av_zzbZI8HNIoj8BWxA7QozsVpy8JaOXzU,469
|
288
288
|
ccxt/async_support/hollaex.py,sha256=k_KeUA5jEiyA7ypOAZsYL4RBonNG6dYxb50mpvWw_qQ,76689
|
289
|
-
ccxt/async_support/htx.py,sha256=
|
289
|
+
ccxt/async_support/htx.py,sha256=dtwWXcwe4CLsLpMavK32wJTlrsrg_wZrzjrCPRvF5Ho,438431
|
290
290
|
ccxt/async_support/huobi.py,sha256=fup0j6wQ1khAtfbb1H4CSyJAOzhxuoHMmrM6sgTuhr8,452
|
291
291
|
ccxt/async_support/huobijp.py,sha256=4Pj8qPn2xzzyvdsy08gnbiF-eSKXQNT0p6VIOVkpisM,90241
|
292
292
|
ccxt/async_support/hyperliquid.py,sha256=kHceKSc0j6BqTjhENg1RKFHvp9YtJdqMOhZBaS2qmVU,124103
|
@@ -327,13 +327,13 @@ ccxt/async_support/wavesexchange.py,sha256=7vV54oIHgufX5InrRaPqvcBTqm7DEV09SNozt
|
|
327
327
|
ccxt/async_support/wazirx.py,sha256=ZHahzytYKnpjbqz4BRT8cLngExQ8SChcdajdYHzqGE0,53652
|
328
328
|
ccxt/async_support/whitebit.py,sha256=Qoh7p4WO6f3nmBRi6-MCDrfVeAyd82mfWTAmCaMD2mQ,120226
|
329
329
|
ccxt/async_support/woo.py,sha256=XnCo3jreMU5V1h5m67eggf_2YLpo0WNlJxDA5Mk60TI,156398
|
330
|
-
ccxt/async_support/woofipro.py,sha256=
|
331
|
-
ccxt/async_support/xt.py,sha256=
|
330
|
+
ccxt/async_support/woofipro.py,sha256=crhkod3OzxfUy4tXoEVreng-aUFXj9gRGI-5UnaDoM4,117791
|
331
|
+
ccxt/async_support/xt.py,sha256=1ouG2nlAfdTOtSQvBah4htaXjr21JThEIj4DZNCocec,205164
|
332
332
|
ccxt/async_support/yobit.py,sha256=gMA6Fy7hbcF6ztNBbuow_pW6cwui5n2TWE8RRKMmls0,55702
|
333
333
|
ccxt/async_support/zaif.py,sha256=-ZTr8M2JaIRCL90VrbCDXBMAsZwbiwsFChSQ2rWODuQ,29044
|
334
334
|
ccxt/async_support/zonda.py,sha256=Z4gA6o0bF_4MarQ5KiR2Zwi2wpmOuZTHS1JChAtNWjo,83114
|
335
335
|
ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
|
336
|
-
ccxt/async_support/base/exchange.py,sha256=
|
336
|
+
ccxt/async_support/base/exchange.py,sha256=axBG5cUHqnKzYiP3HSPru4oF2YTKmmsa55gqUl9w6wQ,114218
|
337
337
|
ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
|
338
338
|
ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
|
339
339
|
ccxt/async_support/base/ws/aiohttp_client.py,sha256=5IEiT0elWI9a7Vr-KV0jgmlbpLJWBzIlrLaCkTKGaqY,5752
|
@@ -347,10 +347,10 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=GhnGUt78pJ-AYL_Dq9produGjmB
|
|
347
347
|
ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
|
348
348
|
ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
|
349
349
|
ccxt/base/errors.py,sha256=Pad-6ugvGUwhoYuKUliX-N7FTrcnKCQGFjsaq2tMn0I,4610
|
350
|
-
ccxt/base/exchange.py,sha256=
|
350
|
+
ccxt/base/exchange.py,sha256=fE5naPn5NnPxg-EfRUe7HJfF-TQ4hXwvu57iMo_6m2k,303646
|
351
351
|
ccxt/base/precise.py,sha256=koce64Yrp6vFbGijJtUt-QQ6XhJgeGTCksZ871FPp_A,8886
|
352
352
|
ccxt/base/types.py,sha256=5VRXAPPjQe2D7wjlzklrE8eGwAhllB-KXehglgHeu7s,10199
|
353
|
-
ccxt/pro/__init__.py,sha256=
|
353
|
+
ccxt/pro/__init__.py,sha256=BaNLsHq-58rjuZDxw1bso21Qg7FZeZu-bIOH9oJIFzI,7925
|
354
354
|
ccxt/pro/alpaca.py,sha256=xh1yg1Ok-Zh_Mfx-MBjNrfJDs6MUU0exFfEj3GuQPC4,27631
|
355
355
|
ccxt/pro/ascendex.py,sha256=QueLgISoIxgGSOta2W7En4pwAsEXbTP5q5ef4UjpTQQ,37524
|
356
356
|
ccxt/pro/bequant.py,sha256=33OEUWBi4D9-2w8CmkwN3aF1qS-AlLqX3pxrWwNbXPY,1552
|
@@ -655,8 +655,8 @@ ccxt/test/tests_async.py,sha256=8TdpWiswLAVMF85CVBfMRqt8lFByr1Su7w5IgZ_w72w,8620
|
|
655
655
|
ccxt/test/tests_helpers.py,sha256=z5TiaK0WyUCmM_uGTFz7cgMNqNwG_SMI9qk7yec5ces,9693
|
656
656
|
ccxt/test/tests_init.py,sha256=GodMIrJue4KBHHqD4vSPZxokPWpxbZIuEp19UdxlFAg,1166
|
657
657
|
ccxt/test/tests_sync.py,sha256=EEc20Cjl7u-EJ6S-lR0VXJmjpX1ew-oRS7uYceVxQ4A,85249
|
658
|
-
ccxt-4.4.
|
659
|
-
ccxt-4.4.
|
660
|
-
ccxt-4.4.
|
661
|
-
ccxt-4.4.
|
662
|
-
ccxt-4.4.
|
658
|
+
ccxt-4.4.25.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
|
659
|
+
ccxt-4.4.25.dist-info/METADATA,sha256=i0UtyzY1UXj9iONNI4sIY-F6KLfLvT7UCS3yJnOoyHU,115162
|
660
|
+
ccxt-4.4.25.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
|
661
|
+
ccxt-4.4.25.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
|
662
|
+
ccxt-4.4.25.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|