ccxt 4.4.94__py2.py3-none-any.whl → 4.4.96__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ccxt/__init__.py +3 -1
- ccxt/abstract/bingx.py +3 -0
- ccxt/abstract/foxbit.py +26 -0
- ccxt/abstract/hyperliquid.py +1 -1
- ccxt/abstract/woo.py +59 -4
- ccxt/apex.py +3 -3
- ccxt/ascendex.py +2 -2
- ccxt/async_support/__init__.py +3 -1
- ccxt/async_support/apex.py +3 -3
- ccxt/async_support/ascendex.py +2 -2
- ccxt/async_support/base/exchange.py +5 -3
- ccxt/async_support/base/ws/future.py +5 -1
- ccxt/async_support/bingx.py +129 -92
- ccxt/async_support/bitget.py +31 -144
- ccxt/async_support/bitmart.py +2 -2
- ccxt/async_support/bitrue.py +13 -8
- ccxt/async_support/bitstamp.py +2 -0
- ccxt/async_support/blofin.py +6 -1
- ccxt/async_support/bybit.py +15 -6
- ccxt/async_support/coinbase.py +36 -0
- ccxt/async_support/coinbaseexchange.py +4 -2
- ccxt/async_support/coinbaseinternational.py +2 -2
- ccxt/async_support/coinmate.py +34 -0
- ccxt/async_support/coinone.py +34 -0
- ccxt/async_support/coinsph.py +29 -0
- ccxt/async_support/coinspot.py +36 -1
- ccxt/async_support/cryptocom.py +2 -1
- ccxt/async_support/cryptomus.py +41 -1
- ccxt/async_support/defx.py +1 -1
- ccxt/async_support/derive.py +1 -1
- ccxt/async_support/ellipx.py +40 -0
- ccxt/async_support/foxbit.py +1935 -0
- ccxt/async_support/gate.py +1 -1
- ccxt/async_support/hyperliquid.py +3 -2
- ccxt/async_support/kucoin.py +1 -1
- ccxt/async_support/kucoinfutures.py +3 -2
- ccxt/async_support/mexc.py +28 -13
- ccxt/async_support/modetrade.py +3 -3
- ccxt/async_support/okcoin.py +1 -1
- ccxt/async_support/okx.py +10 -3
- ccxt/async_support/onetrading.py +1 -1
- ccxt/async_support/oxfun.py +2 -1
- ccxt/async_support/paradex.py +2 -2
- ccxt/async_support/vertex.py +3 -2
- ccxt/async_support/woo.py +1255 -875
- ccxt/async_support/woofipro.py +2 -2
- ccxt/base/exchange.py +8 -5
- ccxt/bingx.py +129 -92
- ccxt/bitget.py +31 -144
- ccxt/bitmart.py +2 -2
- ccxt/bitrue.py +13 -8
- ccxt/bitstamp.py +2 -0
- ccxt/blofin.py +6 -1
- ccxt/bybit.py +15 -6
- ccxt/coinbase.py +36 -0
- ccxt/coinbaseexchange.py +4 -2
- ccxt/coinbaseinternational.py +2 -2
- ccxt/coinmate.py +34 -0
- ccxt/coinone.py +34 -0
- ccxt/coinsph.py +29 -0
- ccxt/coinspot.py +36 -1
- ccxt/cryptocom.py +2 -1
- ccxt/cryptomus.py +41 -1
- ccxt/defx.py +1 -1
- ccxt/derive.py +1 -1
- ccxt/ellipx.py +40 -0
- ccxt/foxbit.py +1935 -0
- ccxt/gate.py +1 -1
- ccxt/hyperliquid.py +3 -2
- ccxt/kucoin.py +1 -1
- ccxt/kucoinfutures.py +3 -2
- ccxt/mexc.py +28 -13
- ccxt/modetrade.py +3 -3
- ccxt/okcoin.py +1 -1
- ccxt/okx.py +10 -3
- ccxt/onetrading.py +1 -1
- ccxt/oxfun.py +2 -1
- ccxt/paradex.py +2 -2
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/hyperliquid.py +6 -6
- ccxt/pro/kraken.py +17 -16
- ccxt/pro/mexc.py +10 -10
- ccxt/test/tests_async.py +17 -2
- ccxt/test/tests_sync.py +17 -2
- ccxt/vertex.py +3 -2
- ccxt/woo.py +1255 -875
- ccxt/woofipro.py +2 -2
- {ccxt-4.4.94.dist-info → ccxt-4.4.96.dist-info}/METADATA +8 -8
- {ccxt-4.4.94.dist-info → ccxt-4.4.96.dist-info}/RECORD +92 -89
- {ccxt-4.4.94.dist-info → ccxt-4.4.96.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.4.94.dist-info → ccxt-4.4.96.dist-info}/WHEEL +0 -0
- {ccxt-4.4.94.dist-info → ccxt-4.4.96.dist-info}/top_level.txt +0 -0
ccxt/__init__.py
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
# ----------------------------------------------------------------------------
|
24
24
|
|
25
|
-
__version__ = '4.4.
|
25
|
+
__version__ = '4.4.96'
|
26
26
|
|
27
27
|
# ----------------------------------------------------------------------------
|
28
28
|
|
@@ -139,6 +139,7 @@ from ccxt.digifinex import digifinex # noqa: F4
|
|
139
139
|
from ccxt.ellipx import ellipx # noqa: F401
|
140
140
|
from ccxt.exmo import exmo # noqa: F401
|
141
141
|
from ccxt.fmfwio import fmfwio # noqa: F401
|
142
|
+
from ccxt.foxbit import foxbit # noqa: F401
|
142
143
|
from ccxt.gate import gate # noqa: F401
|
143
144
|
from ccxt.gateio import gateio # noqa: F401
|
144
145
|
from ccxt.gemini import gemini # noqa: F401
|
@@ -246,6 +247,7 @@ exchanges = [
|
|
246
247
|
'ellipx',
|
247
248
|
'exmo',
|
248
249
|
'fmfwio',
|
250
|
+
'foxbit',
|
249
251
|
'gate',
|
250
252
|
'gateio',
|
251
253
|
'gemini',
|
ccxt/abstract/bingx.py
CHANGED
@@ -153,6 +153,9 @@ class ImplicitAPI:
|
|
153
153
|
copytrading_v1_private_post_swap_trace_settpsl = copyTradingV1PrivatePostSwapTraceSetTPSL = Entry('swap/trace/setTPSL', ['copyTrading', 'v1', 'private'], 'POST', {'cost': 2})
|
154
154
|
copytrading_v1_private_post_spot_trader_sellorder = copyTradingV1PrivatePostSpotTraderSellOrder = Entry('spot/trader/sellOrder', ['copyTrading', 'v1', 'private'], 'POST', {'cost': 10})
|
155
155
|
api_v3_private_get_asset_transfer = apiV3PrivateGetAssetTransfer = Entry('asset/transfer', ['api', 'v3', 'private'], 'GET', {'cost': 1})
|
156
|
+
api_v3_private_get_asset_transferrecord = apiV3PrivateGetAssetTransferRecord = Entry('asset/transferRecord', ['api', 'v3', 'private'], 'GET', {'cost': 5})
|
156
157
|
api_v3_private_get_capital_deposit_hisrec = apiV3PrivateGetCapitalDepositHisrec = Entry('capital/deposit/hisrec', ['api', 'v3', 'private'], 'GET', {'cost': 1})
|
157
158
|
api_v3_private_get_capital_withdraw_history = apiV3PrivateGetCapitalWithdrawHistory = Entry('capital/withdraw/history', ['api', 'v3', 'private'], 'GET', {'cost': 1})
|
158
159
|
api_v3_private_post_post_asset_transfer = apiV3PrivatePostPostAssetTransfer = Entry('post/asset/transfer', ['api', 'v3', 'private'], 'POST', {'cost': 1})
|
160
|
+
api_asset_v1_private_post_transfer = apiAssetV1PrivatePostTransfer = Entry('transfer', ['api', 'asset', 'v1', 'private'], 'POST', {'cost': 5})
|
161
|
+
api_asset_v1_public_get_transfer_supportcoins = apiAssetV1PublicGetTransferSupportCoins = Entry('transfer/supportCoins', ['api', 'asset', 'v1', 'public'], 'GET', {'cost': 5})
|
ccxt/abstract/foxbit.py
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
from ccxt.base.types import Entry
|
2
|
+
|
3
|
+
|
4
|
+
class ImplicitAPI:
|
5
|
+
v3_public_get_currencies = v3PublicGetCurrencies = Entry('currencies', ['v3', 'public'], 'GET', {'cost': 5})
|
6
|
+
v3_public_get_markets = v3PublicGetMarkets = Entry('markets', ['v3', 'public'], 'GET', {'cost': 5})
|
7
|
+
v3_public_get_markets_ticker_24hr = v3PublicGetMarketsTicker24hr = Entry('markets/ticker/24hr', ['v3', 'public'], 'GET', {'cost': 60})
|
8
|
+
v3_public_get_markets_market_orderbook = v3PublicGetMarketsMarketOrderbook = Entry('markets/{market}/orderbook', ['v3', 'public'], 'GET', {'cost': 6})
|
9
|
+
v3_public_get_markets_market_candlesticks = v3PublicGetMarketsMarketCandlesticks = Entry('markets/{market}/candlesticks', ['v3', 'public'], 'GET', {'cost': 12})
|
10
|
+
v3_public_get_markets_market_trades_history = v3PublicGetMarketsMarketTradesHistory = Entry('markets/{market}/trades/history', ['v3', 'public'], 'GET', {'cost': 12})
|
11
|
+
v3_public_get_markets_market_ticker_24hr = v3PublicGetMarketsMarketTicker24hr = Entry('markets/{market}/ticker/24hr', ['v3', 'public'], 'GET', {'cost': 15})
|
12
|
+
v3_private_get_accounts = v3PrivateGetAccounts = Entry('accounts', ['v3', 'private'], 'GET', {'cost': 2})
|
13
|
+
v3_private_get_accounts_symbol_transactions = v3PrivateGetAccountsSymbolTransactions = Entry('accounts/{symbol}/transactions', ['v3', 'private'], 'GET', {'cost': 60})
|
14
|
+
v3_private_get_orders = v3PrivateGetOrders = Entry('orders', ['v3', 'private'], 'GET', {'cost': 2})
|
15
|
+
v3_private_get_orders_by_order_id_id = v3PrivateGetOrdersByOrderIdId = Entry('orders/by-order-id/{id}', ['v3', 'private'], 'GET', {'cost': 2})
|
16
|
+
v3_private_get_trades = v3PrivateGetTrades = Entry('trades', ['v3', 'private'], 'GET', {'cost': 6})
|
17
|
+
v3_private_get_deposits_address = v3PrivateGetDepositsAddress = Entry('deposits/address', ['v3', 'private'], 'GET', {'cost': 10})
|
18
|
+
v3_private_get_deposits = v3PrivateGetDeposits = Entry('deposits', ['v3', 'private'], 'GET', {'cost': 10})
|
19
|
+
v3_private_get_withdrawals = v3PrivateGetWithdrawals = Entry('withdrawals', ['v3', 'private'], 'GET', {'cost': 10})
|
20
|
+
v3_private_get_me_fees_trading = v3PrivateGetMeFeesTrading = Entry('me/fees/trading', ['v3', 'private'], 'GET', {'cost': 60})
|
21
|
+
v3_private_post_orders = v3PrivatePostOrders = Entry('orders', ['v3', 'private'], 'POST', {'cost': 2})
|
22
|
+
v3_private_post_orders_batch = v3PrivatePostOrdersBatch = Entry('orders/batch', ['v3', 'private'], 'POST', {'cost': 7.5})
|
23
|
+
v3_private_post_orders_cancel_replace = v3PrivatePostOrdersCancelReplace = Entry('orders/cancel-replace', ['v3', 'private'], 'POST', {'cost': 3})
|
24
|
+
v3_private_post_withdrawals = v3PrivatePostWithdrawals = Entry('withdrawals', ['v3', 'private'], 'POST', {'cost': 10})
|
25
|
+
v3_private_put_orders_cancel = v3PrivatePutOrdersCancel = Entry('orders/cancel', ['v3', 'private'], 'PUT', {'cost': 2})
|
26
|
+
status_public_get_status = statusPublicGetStatus = Entry('status', ['status', 'public'], 'GET', {'cost': 30})
|
ccxt/abstract/hyperliquid.py
CHANGED
@@ -2,5 +2,5 @@ from ccxt.base.types import Entry
|
|
2
2
|
|
3
3
|
|
4
4
|
class ImplicitAPI:
|
5
|
-
public_post_info = publicPostInfo = Entry('info', 'public', 'POST', {'cost': 20, 'byType': {'l2Book': 2, 'allMids': 2, 'clearinghouseState': 2, 'orderStatus': 2, 'spotClearinghouseState': 2, 'exchangeStatus': 2}})
|
5
|
+
public_post_info = publicPostInfo = Entry('info', 'public', 'POST', {'cost': 20, 'byType': {'l2Book': 2, 'allMids': 2, 'clearinghouseState': 2, 'orderStatus': 2, 'spotClearinghouseState': 2, 'exchangeStatus': 2, 'candleSnapshot': 4}})
|
6
6
|
private_post_exchange = privatePostExchange = Entry('exchange', 'private', 'POST', {'cost': 1})
|
ccxt/abstract/woo.py
CHANGED
@@ -60,26 +60,81 @@ class ImplicitAPI:
|
|
60
60
|
v1_private_delete_orders = v1PrivateDeleteOrders = Entry('orders', ['v1', 'private'], 'DELETE', {'cost': 1})
|
61
61
|
v1_private_delete_asset_withdraw = v1PrivateDeleteAssetWithdraw = Entry('asset/withdraw', ['v1', 'private'], 'DELETE', {'cost': 120})
|
62
62
|
v2_private_get_client_holding = v2PrivateGetClientHolding = Entry('client/holding', ['v2', 'private'], 'GET', {'cost': 1})
|
63
|
-
|
63
|
+
v3_public_get_systeminfo = v3PublicGetSystemInfo = Entry('systemInfo', ['v3', 'public'], 'GET', {'cost': 1})
|
64
|
+
v3_public_get_instruments = v3PublicGetInstruments = Entry('instruments', ['v3', 'public'], 'GET', {'cost': 1})
|
65
|
+
v3_public_get_token = v3PublicGetToken = Entry('token', ['v3', 'public'], 'GET', {'cost': 1})
|
66
|
+
v3_public_get_tokennetwork = v3PublicGetTokenNetwork = Entry('tokenNetwork', ['v3', 'public'], 'GET', {'cost': 1})
|
67
|
+
v3_public_get_tokeninfo = v3PublicGetTokenInfo = Entry('tokenInfo', ['v3', 'public'], 'GET', {'cost': 1})
|
68
|
+
v3_public_get_markettrades = v3PublicGetMarketTrades = Entry('marketTrades', ['v3', 'public'], 'GET', {'cost': 1})
|
69
|
+
v3_public_get_markettradeshistory = v3PublicGetMarketTradesHistory = Entry('marketTradesHistory', ['v3', 'public'], 'GET', {'cost': 1})
|
70
|
+
v3_public_get_orderbook = v3PublicGetOrderbook = Entry('orderbook', ['v3', 'public'], 'GET', {'cost': 1})
|
71
|
+
v3_public_get_kline = v3PublicGetKline = Entry('kline', ['v3', 'public'], 'GET', {'cost': 1})
|
72
|
+
v3_public_get_klinehistory = v3PublicGetKlineHistory = Entry('klineHistory', ['v3', 'public'], 'GET', {'cost': 1})
|
73
|
+
v3_public_get_futures = v3PublicGetFutures = Entry('futures', ['v3', 'public'], 'GET', {'cost': 1})
|
74
|
+
v3_public_get_fundingrate = v3PublicGetFundingRate = Entry('fundingRate', ['v3', 'public'], 'GET', {'cost': 1})
|
75
|
+
v3_public_get_fundingratehistory = v3PublicGetFundingRateHistory = Entry('fundingRateHistory', ['v3', 'public'], 'GET', {'cost': 1})
|
76
|
+
v3_public_get_insurancefund = v3PublicGetInsuranceFund = Entry('insuranceFund', ['v3', 'public'], 'GET', {'cost': 1})
|
77
|
+
v3_private_get_trade_order = v3PrivateGetTradeOrder = Entry('trade/order', ['v3', 'private'], 'GET', {'cost': 2})
|
78
|
+
v3_private_get_trade_orders = v3PrivateGetTradeOrders = Entry('trade/orders', ['v3', 'private'], 'GET', {'cost': 1})
|
79
|
+
v3_private_get_trade_algoorder = v3PrivateGetTradeAlgoOrder = Entry('trade/algoOrder', ['v3', 'private'], 'GET', {'cost': 1})
|
80
|
+
v3_private_get_trade_algoorders = v3PrivateGetTradeAlgoOrders = Entry('trade/algoOrders', ['v3', 'private'], 'GET', {'cost': 1})
|
81
|
+
v3_private_get_trade_transaction = v3PrivateGetTradeTransaction = Entry('trade/transaction', ['v3', 'private'], 'GET', {'cost': 1})
|
82
|
+
v3_private_get_trade_transactionhistory = v3PrivateGetTradeTransactionHistory = Entry('trade/transactionHistory', ['v3', 'private'], 'GET', {'cost': 5})
|
83
|
+
v3_private_get_trade_tradingfee = v3PrivateGetTradeTradingFee = Entry('trade/tradingFee', ['v3', 'private'], 'GET', {'cost': 5})
|
84
|
+
v3_private_get_account_info = v3PrivateGetAccountInfo = Entry('account/info', ['v3', 'private'], 'GET', {'cost': 60})
|
85
|
+
v3_private_get_account_tokenconfig = v3PrivateGetAccountTokenConfig = Entry('account/tokenConfig', ['v3', 'private'], 'GET', {'cost': 1})
|
86
|
+
v3_private_get_account_symbolconfig = v3PrivateGetAccountSymbolConfig = Entry('account/symbolConfig', ['v3', 'private'], 'GET', {'cost': 1})
|
87
|
+
v3_private_get_account_subaccounts_all = v3PrivateGetAccountSubAccountsAll = Entry('account/subAccounts/all', ['v3', 'private'], 'GET', {'cost': 60})
|
88
|
+
v3_private_get_account_referral_summary = v3PrivateGetAccountReferralSummary = Entry('account/referral/summary', ['v3', 'private'], 'GET', {'cost': 60})
|
89
|
+
v3_private_get_account_referral_rewardhistory = v3PrivateGetAccountReferralRewardHistory = Entry('account/referral/rewardHistory', ['v3', 'private'], 'GET', {'cost': 60})
|
90
|
+
v3_private_get_account_credentials = v3PrivateGetAccountCredentials = Entry('account/credentials', ['v3', 'private'], 'GET', {'cost': 60})
|
91
|
+
v3_private_get_asset_balances = v3PrivateGetAssetBalances = Entry('asset/balances', ['v3', 'private'], 'GET', {'cost': 1})
|
92
|
+
v3_private_get_asset_token_history = v3PrivateGetAssetTokenHistory = Entry('asset/token/history', ['v3', 'private'], 'GET', {'cost': 60})
|
93
|
+
v3_private_get_asset_transfer_history = v3PrivateGetAssetTransferHistory = Entry('asset/transfer/history', ['v3', 'private'], 'GET', {'cost': 30})
|
94
|
+
v3_private_get_asset_wallet_history = v3PrivateGetAssetWalletHistory = Entry('asset/wallet/history', ['v3', 'private'], 'GET', {'cost': 60})
|
95
|
+
v3_private_get_asset_wallet_deposit = v3PrivateGetAssetWalletDeposit = Entry('asset/wallet/deposit', ['v3', 'private'], 'GET', {'cost': 60})
|
96
|
+
v3_private_get_asset_staking_yieldhistory = v3PrivateGetAssetStakingYieldHistory = Entry('asset/staking/yieldHistory', ['v3', 'private'], 'GET', {'cost': 60})
|
97
|
+
v3_private_get_futures_positions = v3PrivateGetFuturesPositions = Entry('futures/positions', ['v3', 'private'], 'GET', {'cost': 3.33})
|
98
|
+
v3_private_get_futures_leverage = v3PrivateGetFuturesLeverage = Entry('futures/leverage', ['v3', 'private'], 'GET', {'cost': 60})
|
99
|
+
v3_private_get_futures_defaultmarginmode = v3PrivateGetFuturesDefaultMarginMode = Entry('futures/defaultMarginMode', ['v3', 'private'], 'GET', {'cost': 60})
|
100
|
+
v3_private_get_futures_fundingfee_history = v3PrivateGetFuturesFundingFeeHistory = Entry('futures/fundingFee/history', ['v3', 'private'], 'GET', {'cost': 30})
|
101
|
+
v3_private_get_spotmargin_interestrate = v3PrivateGetSpotMarginInterestRate = Entry('spotMargin/interestRate', ['v3', 'private'], 'GET', {'cost': 60})
|
102
|
+
v3_private_get_spotmargin_interesthistory = v3PrivateGetSpotMarginInterestHistory = Entry('spotMargin/interestHistory', ['v3', 'private'], 'GET', {'cost': 60})
|
103
|
+
v3_private_get_spotmargin_maxmargin = v3PrivateGetSpotMarginMaxMargin = Entry('spotMargin/maxMargin', ['v3', 'private'], 'GET', {'cost': 60})
|
64
104
|
v3_private_get_algo_order_oid = v3PrivateGetAlgoOrderOid = Entry('algo/order/{oid}', ['v3', 'private'], 'GET', {'cost': 1})
|
65
105
|
v3_private_get_algo_orders = v3PrivateGetAlgoOrders = Entry('algo/orders', ['v3', 'private'], 'GET', {'cost': 1})
|
66
106
|
v3_private_get_balances = v3PrivateGetBalances = Entry('balances', ['v3', 'private'], 'GET', {'cost': 1})
|
67
|
-
v3_private_get_accountinfo = v3PrivateGetAccountinfo = Entry('accountinfo', ['v3', 'private'], 'GET', {'cost': 60})
|
68
107
|
v3_private_get_positions = v3PrivateGetPositions = Entry('positions', ['v3', 'private'], 'GET', {'cost': 3.33})
|
69
108
|
v3_private_get_buypower = v3PrivateGetBuypower = Entry('buypower', ['v3', 'private'], 'GET', {'cost': 1})
|
70
|
-
v3_private_get_referrals = v3PrivateGetReferrals = Entry('referrals', ['v3', 'private'], 'GET', {'cost': 60})
|
71
|
-
v3_private_get_referral_rewards = v3PrivateGetReferralRewards = Entry('referral_rewards', ['v3', 'private'], 'GET', {'cost': 60})
|
72
109
|
v3_private_get_convert_exchangeinfo = v3PrivateGetConvertExchangeInfo = Entry('convert/exchangeInfo', ['v3', 'private'], 'GET', {'cost': 1})
|
73
110
|
v3_private_get_convert_assetinfo = v3PrivateGetConvertAssetInfo = Entry('convert/assetInfo', ['v3', 'private'], 'GET', {'cost': 1})
|
74
111
|
v3_private_get_convert_rfq = v3PrivateGetConvertRfq = Entry('convert/rfq', ['v3', 'private'], 'GET', {'cost': 60})
|
75
112
|
v3_private_get_convert_trade = v3PrivateGetConvertTrade = Entry('convert/trade', ['v3', 'private'], 'GET', {'cost': 1})
|
76
113
|
v3_private_get_convert_trades = v3PrivateGetConvertTrades = Entry('convert/trades', ['v3', 'private'], 'GET', {'cost': 1})
|
114
|
+
v3_private_post_trade_order = v3PrivatePostTradeOrder = Entry('trade/order', ['v3', 'private'], 'POST', {'cost': 2})
|
115
|
+
v3_private_post_trade_algoorder = v3PrivatePostTradeAlgoOrder = Entry('trade/algoOrder', ['v3', 'private'], 'POST', {'cost': 5})
|
116
|
+
v3_private_post_trade_cancelallafter = v3PrivatePostTradeCancelAllAfter = Entry('trade/cancelAllAfter', ['v3', 'private'], 'POST', {'cost': 1})
|
117
|
+
v3_private_post_account_tradingmode = v3PrivatePostAccountTradingMode = Entry('account/tradingMode', ['v3', 'private'], 'POST', {'cost': 120})
|
118
|
+
v3_private_post_account_listenkey = v3PrivatePostAccountListenKey = Entry('account/listenKey', ['v3', 'private'], 'POST', {'cost': 20})
|
119
|
+
v3_private_post_asset_transfer = v3PrivatePostAssetTransfer = Entry('asset/transfer', ['v3', 'private'], 'POST', {'cost': 30})
|
120
|
+
v3_private_post_asset_wallet_withdraw = v3PrivatePostAssetWalletWithdraw = Entry('asset/wallet/withdraw', ['v3', 'private'], 'POST', {'cost': 60})
|
121
|
+
v3_private_post_spotmargin_leverage = v3PrivatePostSpotMarginLeverage = Entry('spotMargin/leverage', ['v3', 'private'], 'POST', {'cost': 120})
|
122
|
+
v3_private_post_spotmargin_interestrepay = v3PrivatePostSpotMarginInterestRepay = Entry('spotMargin/interestRepay', ['v3', 'private'], 'POST', {'cost': 60})
|
77
123
|
v3_private_post_algo_order = v3PrivatePostAlgoOrder = Entry('algo/order', ['v3', 'private'], 'POST', {'cost': 5})
|
78
124
|
v3_private_post_convert_rft = v3PrivatePostConvertRft = Entry('convert/rft', ['v3', 'private'], 'POST', {'cost': 60})
|
125
|
+
v3_private_put_trade_order = v3PrivatePutTradeOrder = Entry('trade/order', ['v3', 'private'], 'PUT', {'cost': 2})
|
126
|
+
v3_private_put_trade_algoorder = v3PrivatePutTradeAlgoOrder = Entry('trade/algoOrder', ['v3', 'private'], 'PUT', {'cost': 2})
|
127
|
+
v3_private_put_futures_leverage = v3PrivatePutFuturesLeverage = Entry('futures/leverage', ['v3', 'private'], 'PUT', {'cost': 60})
|
128
|
+
v3_private_put_futures_positionmode = v3PrivatePutFuturesPositionMode = Entry('futures/positionMode', ['v3', 'private'], 'PUT', {'cost': 120})
|
79
129
|
v3_private_put_order_oid = v3PrivatePutOrderOid = Entry('order/{oid}', ['v3', 'private'], 'PUT', {'cost': 2})
|
80
130
|
v3_private_put_order_client_client_order_id = v3PrivatePutOrderClientClientOrderId = Entry('order/client/{client_order_id}', ['v3', 'private'], 'PUT', {'cost': 2})
|
81
131
|
v3_private_put_algo_order_oid = v3PrivatePutAlgoOrderOid = Entry('algo/order/{oid}', ['v3', 'private'], 'PUT', {'cost': 2})
|
82
132
|
v3_private_put_algo_order_client_client_order_id = v3PrivatePutAlgoOrderClientClientOrderId = Entry('algo/order/client/{client_order_id}', ['v3', 'private'], 'PUT', {'cost': 2})
|
133
|
+
v3_private_delete_trade_order = v3PrivateDeleteTradeOrder = Entry('trade/order', ['v3', 'private'], 'DELETE', {'cost': 1})
|
134
|
+
v3_private_delete_trade_orders = v3PrivateDeleteTradeOrders = Entry('trade/orders', ['v3', 'private'], 'DELETE', {'cost': 1})
|
135
|
+
v3_private_delete_trade_algoorder = v3PrivateDeleteTradeAlgoOrder = Entry('trade/algoOrder', ['v3', 'private'], 'DELETE', {'cost': 1})
|
136
|
+
v3_private_delete_trade_algoorders = v3PrivateDeleteTradeAlgoOrders = Entry('trade/algoOrders', ['v3', 'private'], 'DELETE', {'cost': 1})
|
137
|
+
v3_private_delete_trade_allorders = v3PrivateDeleteTradeAllOrders = Entry('trade/allOrders', ['v3', 'private'], 'DELETE', {'cost': 1})
|
83
138
|
v3_private_delete_algo_order_order_id = v3PrivateDeleteAlgoOrderOrderId = Entry('algo/order/{order_id}', ['v3', 'private'], 'DELETE', {'cost': 1})
|
84
139
|
v3_private_delete_algo_orders_pending = v3PrivateDeleteAlgoOrdersPending = Entry('algo/orders/pending', ['v3', 'private'], 'DELETE', {'cost': 1})
|
85
140
|
v3_private_delete_algo_orders_pending_symbol = v3PrivateDeleteAlgoOrdersPendingSymbol = Entry('algo/orders/pending/{symbol}', ['v3', 'private'], 'DELETE', {'cost': 1})
|
ccxt/apex.py
CHANGED
@@ -1485,7 +1485,7 @@ class apex(Exchange, ImplicitAPI):
|
|
1485
1485
|
'status': self.safe_string(transfer, 'status'),
|
1486
1486
|
}
|
1487
1487
|
|
1488
|
-
def cancel_all_orders(self, symbol: Str = None, params={}):
|
1488
|
+
def cancel_all_orders(self, symbol: Str = None, params={}) -> List[Order]:
|
1489
1489
|
"""
|
1490
1490
|
cancel all open orders in a market
|
1491
1491
|
|
@@ -1503,7 +1503,7 @@ class apex(Exchange, ImplicitAPI):
|
|
1503
1503
|
request['symbol'] = market['id']
|
1504
1504
|
response = self.privatePostV3DeleteOpenOrders(self.extend(request, params))
|
1505
1505
|
data = self.safe_dict(response, 'data', {})
|
1506
|
-
return data
|
1506
|
+
return [self.parse_order(data, market)]
|
1507
1507
|
|
1508
1508
|
def cancel_order(self, id: str, symbol: Str = None, params={}):
|
1509
1509
|
"""
|
@@ -1527,7 +1527,7 @@ class apex(Exchange, ImplicitAPI):
|
|
1527
1527
|
request['id'] = id
|
1528
1528
|
response = self.privatePostV3DeleteOrder(self.extend(request, params))
|
1529
1529
|
data = self.safe_dict(response, 'data', {})
|
1530
|
-
return data
|
1530
|
+
return self.safe_order(data)
|
1531
1531
|
|
1532
1532
|
def fetch_order(self, id: str, symbol: Str = None, params={}):
|
1533
1533
|
"""
|
ccxt/ascendex.py
CHANGED
@@ -2432,9 +2432,9 @@ class ascendex(Exchange, ImplicitAPI):
|
|
2432
2432
|
# }
|
2433
2433
|
# }
|
2434
2434
|
#
|
2435
|
-
return self.safe_order({
|
2435
|
+
return [self.safe_order({
|
2436
2436
|
'info': response,
|
2437
|
-
})
|
2437
|
+
})]
|
2438
2438
|
|
2439
2439
|
def parse_deposit_address(self, depositAddress, currency: Currency = None) -> DepositAddress:
|
2440
2440
|
#
|
ccxt/async_support/__init__.py
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
# -----------------------------------------------------------------------------
|
6
6
|
|
7
|
-
__version__ = '4.4.
|
7
|
+
__version__ = '4.4.96'
|
8
8
|
|
9
9
|
# -----------------------------------------------------------------------------
|
10
10
|
|
@@ -119,6 +119,7 @@ from ccxt.async_support.digifinex import digifinex
|
|
119
119
|
from ccxt.async_support.ellipx import ellipx # noqa: F401
|
120
120
|
from ccxt.async_support.exmo import exmo # noqa: F401
|
121
121
|
from ccxt.async_support.fmfwio import fmfwio # noqa: F401
|
122
|
+
from ccxt.async_support.foxbit import foxbit # noqa: F401
|
122
123
|
from ccxt.async_support.gate import gate # noqa: F401
|
123
124
|
from ccxt.async_support.gateio import gateio # noqa: F401
|
124
125
|
from ccxt.async_support.gemini import gemini # noqa: F401
|
@@ -226,6 +227,7 @@ exchanges = [
|
|
226
227
|
'ellipx',
|
227
228
|
'exmo',
|
228
229
|
'fmfwio',
|
230
|
+
'foxbit',
|
229
231
|
'gate',
|
230
232
|
'gateio',
|
231
233
|
'gemini',
|
ccxt/async_support/apex.py
CHANGED
@@ -1485,7 +1485,7 @@ class apex(Exchange, ImplicitAPI):
|
|
1485
1485
|
'status': self.safe_string(transfer, 'status'),
|
1486
1486
|
}
|
1487
1487
|
|
1488
|
-
async def cancel_all_orders(self, symbol: Str = None, params={}):
|
1488
|
+
async def cancel_all_orders(self, symbol: Str = None, params={}) -> List[Order]:
|
1489
1489
|
"""
|
1490
1490
|
cancel all open orders in a market
|
1491
1491
|
|
@@ -1503,7 +1503,7 @@ class apex(Exchange, ImplicitAPI):
|
|
1503
1503
|
request['symbol'] = market['id']
|
1504
1504
|
response = await self.privatePostV3DeleteOpenOrders(self.extend(request, params))
|
1505
1505
|
data = self.safe_dict(response, 'data', {})
|
1506
|
-
return data
|
1506
|
+
return [self.parse_order(data, market)]
|
1507
1507
|
|
1508
1508
|
async def cancel_order(self, id: str, symbol: Str = None, params={}):
|
1509
1509
|
"""
|
@@ -1527,7 +1527,7 @@ class apex(Exchange, ImplicitAPI):
|
|
1527
1527
|
request['id'] = id
|
1528
1528
|
response = await self.privatePostV3DeleteOrder(self.extend(request, params))
|
1529
1529
|
data = self.safe_dict(response, 'data', {})
|
1530
|
-
return data
|
1530
|
+
return self.safe_order(data)
|
1531
1531
|
|
1532
1532
|
async def fetch_order(self, id: str, symbol: Str = None, params={}):
|
1533
1533
|
"""
|
ccxt/async_support/ascendex.py
CHANGED
@@ -2433,9 +2433,9 @@ class ascendex(Exchange, ImplicitAPI):
|
|
2433
2433
|
# }
|
2434
2434
|
# }
|
2435
2435
|
#
|
2436
|
-
return self.safe_order({
|
2436
|
+
return [self.safe_order({
|
2437
2437
|
'info': response,
|
2438
|
-
})
|
2438
|
+
})]
|
2439
2439
|
|
2440
2440
|
def parse_deposit_address(self, depositAddress, currency: Currency = None) -> DepositAddress:
|
2441
2441
|
#
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# -----------------------------------------------------------------------------
|
4
4
|
|
5
|
-
__version__ = '4.4.
|
5
|
+
__version__ = '4.4.96'
|
6
6
|
|
7
7
|
# -----------------------------------------------------------------------------
|
8
8
|
|
@@ -231,6 +231,8 @@ class Exchange(BaseExchange):
|
|
231
231
|
self.last_json_response = json_response
|
232
232
|
if self.verbose:
|
233
233
|
self.log("\nfetch Response:", self.id, method, url, http_status_code, "ResponseHeaders:", headers, "ResponseBody:", http_response)
|
234
|
+
if json_response and not isinstance(json_response, list) and self.returnResponseHeaders:
|
235
|
+
json_response['responseHeaders'] = headers
|
234
236
|
self.logger.debug("%s %s, Response: %s %s %s", method, url, http_status_code, headers, http_response)
|
235
237
|
|
236
238
|
except socket.gaierror as e:
|
@@ -1596,10 +1598,10 @@ class Exchange(BaseExchange):
|
|
1596
1598
|
"""
|
1597
1599
|
raise NotSupported(self.id + ' fetchDepositsWithdrawals() is not supported yet')
|
1598
1600
|
|
1599
|
-
async def fetch_deposits(self,
|
1601
|
+
async def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
|
1600
1602
|
raise NotSupported(self.id + ' fetchDeposits() is not supported yet')
|
1601
1603
|
|
1602
|
-
async def fetch_withdrawals(self,
|
1604
|
+
async def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
|
1603
1605
|
raise NotSupported(self.id + ' fetchWithdrawals() is not supported yet')
|
1604
1606
|
|
1605
1607
|
async def fetch_deposits_ws(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
|
@@ -1,6 +1,8 @@
|
|
1
1
|
import asyncio
|
2
2
|
|
3
|
-
|
3
|
+
# Test by running:
|
4
|
+
# - python python/ccxt/pro/test/base/test_close.py
|
5
|
+
# - python python/ccxt/pro/test/base/test_future.py
|
4
6
|
class Future(asyncio.Future):
|
5
7
|
|
6
8
|
def resolve(self, result=None):
|
@@ -30,6 +32,8 @@ class Future(asyncio.Future):
|
|
30
32
|
if err:
|
31
33
|
exceptions.append(err)
|
32
34
|
# if any exceptions return with first exception
|
35
|
+
if future.cancelled():
|
36
|
+
return
|
33
37
|
if len(exceptions) > 0:
|
34
38
|
future.set_exception(exceptions[0])
|
35
39
|
# else return first result
|