ccxt 4.3.42__py2.py3-none-any.whl → 4.3.44__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ccxt might be problematic. Click here for more details.
- ccxt/__init__.py +3 -1
- ccxt/abstract/coinex.py +2 -1
- ccxt/abstract/xt.py +152 -0
- ccxt/async_support/__init__.py +3 -1
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/binance.py +163 -42
- ccxt/async_support/btcmarkets.py +31 -2
- ccxt/async_support/coinex.py +103 -103
- ccxt/async_support/lykke.py +10 -2
- ccxt/async_support/ndax.py +5 -1
- ccxt/async_support/phemex.py +4 -4
- ccxt/async_support/poloniexfutures.py +2 -2
- ccxt/async_support/tradeogre.py +10 -4
- ccxt/async_support/wavesexchange.py +2 -2
- ccxt/async_support/wazirx.py +38 -15
- ccxt/async_support/xt.py +4454 -0
- ccxt/async_support/zonda.py +9 -1
- ccxt/base/exchange.py +1 -1
- ccxt/binance.py +163 -42
- ccxt/btcmarkets.py +31 -2
- ccxt/coinex.py +103 -103
- ccxt/lykke.py +10 -2
- ccxt/ndax.py +5 -1
- ccxt/phemex.py +4 -4
- ccxt/poloniexfutures.py +2 -2
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/bitget.py +27 -20
- ccxt/pro/bitmex.py +6 -0
- ccxt/pro/bybit.py +1 -1
- ccxt/pro/mexc.py +1 -1
- ccxt/pro/woo.py +1 -1
- ccxt/test/test_async.py +21 -1
- ccxt/test/test_sync.py +21 -1
- ccxt/tradeogre.py +10 -4
- ccxt/wavesexchange.py +2 -2
- ccxt/wazirx.py +38 -15
- ccxt/xt.py +4453 -0
- ccxt/zonda.py +9 -1
- {ccxt-4.3.42.dist-info → ccxt-4.3.44.dist-info}/METADATA +10 -8
- {ccxt-4.3.42.dist-info → ccxt-4.3.44.dist-info}/RECORD +42 -39
- {ccxt-4.3.42.dist-info → ccxt-4.3.44.dist-info}/WHEEL +0 -0
- {ccxt-4.3.42.dist-info → ccxt-4.3.44.dist-info}/top_level.txt +0 -0
ccxt/__init__.py
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
# ----------------------------------------------------------------------------
|
24
24
|
|
25
|
-
__version__ = '4.3.
|
25
|
+
__version__ = '4.3.44'
|
26
26
|
|
27
27
|
# ----------------------------------------------------------------------------
|
28
28
|
|
@@ -182,6 +182,7 @@ from ccxt.wazirx import wazirx # noqa: F4
|
|
182
182
|
from ccxt.whitebit import whitebit # noqa: F401
|
183
183
|
from ccxt.woo import woo # noqa: F401
|
184
184
|
from ccxt.woofipro import woofipro # noqa: F401
|
185
|
+
from ccxt.xt import xt # noqa: F401
|
185
186
|
from ccxt.yobit import yobit # noqa: F401
|
186
187
|
from ccxt.zaif import zaif # noqa: F401
|
187
188
|
from ccxt.zonda import zonda # noqa: F401
|
@@ -289,6 +290,7 @@ exchanges = [
|
|
289
290
|
'whitebit',
|
290
291
|
'woo',
|
291
292
|
'woofipro',
|
293
|
+
'xt',
|
292
294
|
'yobit',
|
293
295
|
'zaif',
|
294
296
|
'zonda',
|
ccxt/abstract/coinex.py
CHANGED
@@ -145,6 +145,8 @@ class ImplicitAPI:
|
|
145
145
|
v2_public_get_futures_position_level = v2PublicGetFuturesPositionLevel = Entry('futures/position-level', ['v2', 'public'], 'GET', {'cost': 1})
|
146
146
|
v2_public_get_futures_liquidation_history = v2PublicGetFuturesLiquidationHistory = Entry('futures/liquidation-history', ['v2', 'public'], 'GET', {'cost': 1})
|
147
147
|
v2_public_get_futures_basis_history = v2PublicGetFuturesBasisHistory = Entry('futures/basis-history', ['v2', 'public'], 'GET', {'cost': 1})
|
148
|
+
v2_public_get_assets_deposit_withdraw_config = v2PublicGetAssetsDepositWithdrawConfig = Entry('assets/deposit-withdraw-config', ['v2', 'public'], 'GET', {'cost': 1})
|
149
|
+
v2_public_get_assets_all_deposit_withdraw_config = v2PublicGetAssetsAllDepositWithdrawConfig = Entry('assets/all-deposit-withdraw-config', ['v2', 'public'], 'GET', {'cost': 1})
|
148
150
|
v2_private_get_account_subs = v2PrivateGetAccountSubs = Entry('account/subs', ['v2', 'private'], 'GET', {'cost': 1})
|
149
151
|
v2_private_get_account_subs_api_detail = v2PrivateGetAccountSubsApiDetail = Entry('account/subs/api-detail', ['v2', 'private'], 'GET', {'cost': 40})
|
150
152
|
v2_private_get_account_subs_info = v2PrivateGetAccountSubsInfo = Entry('account/subs/info', ['v2', 'private'], 'GET', {'cost': 1})
|
@@ -163,7 +165,6 @@ class ImplicitAPI:
|
|
163
165
|
v2_private_get_assets_deposit_address = v2PrivateGetAssetsDepositAddress = Entry('assets/deposit-address', ['v2', 'private'], 'GET', {'cost': 40})
|
164
166
|
v2_private_get_assets_deposit_history = v2PrivateGetAssetsDepositHistory = Entry('assets/deposit-history', ['v2', 'private'], 'GET', {'cost': 40})
|
165
167
|
v2_private_get_assets_withdraw = v2PrivateGetAssetsWithdraw = Entry('assets/withdraw', ['v2', 'private'], 'GET', {'cost': 40})
|
166
|
-
v2_private_get_assets_deposit_withdraw_config = v2PrivateGetAssetsDepositWithdrawConfig = Entry('assets/deposit-withdraw-config', ['v2', 'private'], 'GET', {'cost': 1})
|
167
168
|
v2_private_get_assets_transfer_history = v2PrivateGetAssetsTransferHistory = Entry('assets/transfer-history', ['v2', 'private'], 'GET', {'cost': 40})
|
168
169
|
v2_private_get_spot_order_status = v2PrivateGetSpotOrderStatus = Entry('spot/order-status', ['v2', 'private'], 'GET', {'cost': 8})
|
169
170
|
v2_private_get_spot_batch_order_status = v2PrivateGetSpotBatchOrderStatus = Entry('spot/batch-order-status', ['v2', 'private'], 'GET', {'cost': 8})
|
ccxt/abstract/xt.py
ADDED
@@ -0,0 +1,152 @@
|
|
1
|
+
from ccxt.base.types import Entry
|
2
|
+
|
3
|
+
|
4
|
+
class ImplicitAPI:
|
5
|
+
public_spot_get_currencies = publicSpotGetCurrencies = Entry('currencies', ['public', 'spot'], 'GET', {'cost': 1})
|
6
|
+
public_spot_get_depth = publicSpotGetDepth = Entry('depth', ['public', 'spot'], 'GET', {'cost': 0.05})
|
7
|
+
public_spot_get_kline = publicSpotGetKline = Entry('kline', ['public', 'spot'], 'GET', {'cost': 0.1})
|
8
|
+
public_spot_get_symbol = publicSpotGetSymbol = Entry('symbol', ['public', 'spot'], 'GET', {'cost': 1})
|
9
|
+
public_spot_get_ticker = publicSpotGetTicker = Entry('ticker', ['public', 'spot'], 'GET', {'cost': 1})
|
10
|
+
public_spot_get_ticker_book = publicSpotGetTickerBook = Entry('ticker/book', ['public', 'spot'], 'GET', {'cost': 1})
|
11
|
+
public_spot_get_ticker_price = publicSpotGetTickerPrice = Entry('ticker/price', ['public', 'spot'], 'GET', {'cost': 1})
|
12
|
+
public_spot_get_ticker_24h = publicSpotGetTicker24h = Entry('ticker/24h', ['public', 'spot'], 'GET', {'cost': 1})
|
13
|
+
public_spot_get_time = publicSpotGetTime = Entry('time', ['public', 'spot'], 'GET', {'cost': 1})
|
14
|
+
public_spot_get_trade_history = publicSpotGetTradeHistory = Entry('trade/history', ['public', 'spot'], 'GET', {'cost': 0.1})
|
15
|
+
public_spot_get_trade_recent = publicSpotGetTradeRecent = Entry('trade/recent', ['public', 'spot'], 'GET', {'cost': 0.1})
|
16
|
+
public_spot_get_wallet_support_currency = publicSpotGetWalletSupportCurrency = Entry('wallet/support/currency', ['public', 'spot'], 'GET', {'cost': 1})
|
17
|
+
public_linear_get_future_market_v1_public_contract_risk_balance = publicLinearGetFutureMarketV1PublicContractRiskBalance = Entry('future/market/v1/public/contract/risk-balance', ['public', 'linear'], 'GET', {'cost': 1})
|
18
|
+
public_linear_get_future_market_v1_public_contract_open_interest = publicLinearGetFutureMarketV1PublicContractOpenInterest = Entry('future/market/v1/public/contract/open-interest', ['public', 'linear'], 'GET', {'cost': 1})
|
19
|
+
public_linear_get_future_market_v1_public_leverage_bracket_detail = publicLinearGetFutureMarketV1PublicLeverageBracketDetail = Entry('future/market/v1/public/leverage/bracket/detail', ['public', 'linear'], 'GET', {'cost': 1})
|
20
|
+
public_linear_get_future_market_v1_public_leverage_bracket_list = publicLinearGetFutureMarketV1PublicLeverageBracketList = Entry('future/market/v1/public/leverage/bracket/list', ['public', 'linear'], 'GET', {'cost': 1})
|
21
|
+
public_linear_get_future_market_v1_public_q_agg_ticker = publicLinearGetFutureMarketV1PublicQAggTicker = Entry('future/market/v1/public/q/agg-ticker', ['public', 'linear'], 'GET', {'cost': 1})
|
22
|
+
public_linear_get_future_market_v1_public_q_agg_tickers = publicLinearGetFutureMarketV1PublicQAggTickers = Entry('future/market/v1/public/q/agg-tickers', ['public', 'linear'], 'GET', {'cost': 1})
|
23
|
+
public_linear_get_future_market_v1_public_q_deal = publicLinearGetFutureMarketV1PublicQDeal = Entry('future/market/v1/public/q/deal', ['public', 'linear'], 'GET', {'cost': 1})
|
24
|
+
public_linear_get_future_market_v1_public_q_depth = publicLinearGetFutureMarketV1PublicQDepth = Entry('future/market/v1/public/q/depth', ['public', 'linear'], 'GET', {'cost': 1})
|
25
|
+
public_linear_get_future_market_v1_public_q_funding_rate = publicLinearGetFutureMarketV1PublicQFundingRate = Entry('future/market/v1/public/q/funding-rate', ['public', 'linear'], 'GET', {'cost': 1})
|
26
|
+
public_linear_get_future_market_v1_public_q_funding_rate_record = publicLinearGetFutureMarketV1PublicQFundingRateRecord = Entry('future/market/v1/public/q/funding-rate-record', ['public', 'linear'], 'GET', {'cost': 1})
|
27
|
+
public_linear_get_future_market_v1_public_q_index_price = publicLinearGetFutureMarketV1PublicQIndexPrice = Entry('future/market/v1/public/q/index-price', ['public', 'linear'], 'GET', {'cost': 1})
|
28
|
+
public_linear_get_future_market_v1_public_q_kline = publicLinearGetFutureMarketV1PublicQKline = Entry('future/market/v1/public/q/kline', ['public', 'linear'], 'GET', {'cost': 1})
|
29
|
+
public_linear_get_future_market_v1_public_q_mark_price = publicLinearGetFutureMarketV1PublicQMarkPrice = Entry('future/market/v1/public/q/mark-price', ['public', 'linear'], 'GET', {'cost': 1})
|
30
|
+
public_linear_get_future_market_v1_public_q_symbol_index_price = publicLinearGetFutureMarketV1PublicQSymbolIndexPrice = Entry('future/market/v1/public/q/symbol-index-price', ['public', 'linear'], 'GET', {'cost': 1})
|
31
|
+
public_linear_get_future_market_v1_public_q_symbol_mark_price = publicLinearGetFutureMarketV1PublicQSymbolMarkPrice = Entry('future/market/v1/public/q/symbol-mark-price', ['public', 'linear'], 'GET', {'cost': 1})
|
32
|
+
public_linear_get_future_market_v1_public_q_ticker = publicLinearGetFutureMarketV1PublicQTicker = Entry('future/market/v1/public/q/ticker', ['public', 'linear'], 'GET', {'cost': 1})
|
33
|
+
public_linear_get_future_market_v1_public_q_tickers = publicLinearGetFutureMarketV1PublicQTickers = Entry('future/market/v1/public/q/tickers', ['public', 'linear'], 'GET', {'cost': 1})
|
34
|
+
public_linear_get_future_market_v1_public_symbol_coins = publicLinearGetFutureMarketV1PublicSymbolCoins = Entry('future/market/v1/public/symbol/coins', ['public', 'linear'], 'GET', {'cost': 3.33})
|
35
|
+
public_linear_get_future_market_v1_public_symbol_detail = publicLinearGetFutureMarketV1PublicSymbolDetail = Entry('future/market/v1/public/symbol/detail', ['public', 'linear'], 'GET', {'cost': 3.33})
|
36
|
+
public_linear_get_future_market_v1_public_symbol_list = publicLinearGetFutureMarketV1PublicSymbolList = Entry('future/market/v1/public/symbol/list', ['public', 'linear'], 'GET', {'cost': 1})
|
37
|
+
public_inverse_get_future_market_v1_public_contract_risk_balance = publicInverseGetFutureMarketV1PublicContractRiskBalance = Entry('future/market/v1/public/contract/risk-balance', ['public', 'inverse'], 'GET', {'cost': 1})
|
38
|
+
public_inverse_get_future_market_v1_public_contract_open_interest = publicInverseGetFutureMarketV1PublicContractOpenInterest = Entry('future/market/v1/public/contract/open-interest', ['public', 'inverse'], 'GET', {'cost': 1})
|
39
|
+
public_inverse_get_future_market_v1_public_leverage_bracket_detail = publicInverseGetFutureMarketV1PublicLeverageBracketDetail = Entry('future/market/v1/public/leverage/bracket/detail', ['public', 'inverse'], 'GET', {'cost': 1})
|
40
|
+
public_inverse_get_future_market_v1_public_leverage_bracket_list = publicInverseGetFutureMarketV1PublicLeverageBracketList = Entry('future/market/v1/public/leverage/bracket/list', ['public', 'inverse'], 'GET', {'cost': 1})
|
41
|
+
public_inverse_get_future_market_v1_public_q_agg_ticker = publicInverseGetFutureMarketV1PublicQAggTicker = Entry('future/market/v1/public/q/agg-ticker', ['public', 'inverse'], 'GET', {'cost': 1})
|
42
|
+
public_inverse_get_future_market_v1_public_q_agg_tickers = publicInverseGetFutureMarketV1PublicQAggTickers = Entry('future/market/v1/public/q/agg-tickers', ['public', 'inverse'], 'GET', {'cost': 1})
|
43
|
+
public_inverse_get_future_market_v1_public_q_deal = publicInverseGetFutureMarketV1PublicQDeal = Entry('future/market/v1/public/q/deal', ['public', 'inverse'], 'GET', {'cost': 1})
|
44
|
+
public_inverse_get_future_market_v1_public_q_depth = publicInverseGetFutureMarketV1PublicQDepth = Entry('future/market/v1/public/q/depth', ['public', 'inverse'], 'GET', {'cost': 1})
|
45
|
+
public_inverse_get_future_market_v1_public_q_funding_rate = publicInverseGetFutureMarketV1PublicQFundingRate = Entry('future/market/v1/public/q/funding-rate', ['public', 'inverse'], 'GET', {'cost': 1})
|
46
|
+
public_inverse_get_future_market_v1_public_q_funding_rate_record = publicInverseGetFutureMarketV1PublicQFundingRateRecord = Entry('future/market/v1/public/q/funding-rate-record', ['public', 'inverse'], 'GET', {'cost': 1})
|
47
|
+
public_inverse_get_future_market_v1_public_q_index_price = publicInverseGetFutureMarketV1PublicQIndexPrice = Entry('future/market/v1/public/q/index-price', ['public', 'inverse'], 'GET', {'cost': 1})
|
48
|
+
public_inverse_get_future_market_v1_public_q_kline = publicInverseGetFutureMarketV1PublicQKline = Entry('future/market/v1/public/q/kline', ['public', 'inverse'], 'GET', {'cost': 1})
|
49
|
+
public_inverse_get_future_market_v1_public_q_mark_price = publicInverseGetFutureMarketV1PublicQMarkPrice = Entry('future/market/v1/public/q/mark-price', ['public', 'inverse'], 'GET', {'cost': 1})
|
50
|
+
public_inverse_get_future_market_v1_public_q_symbol_index_price = publicInverseGetFutureMarketV1PublicQSymbolIndexPrice = Entry('future/market/v1/public/q/symbol-index-price', ['public', 'inverse'], 'GET', {'cost': 1})
|
51
|
+
public_inverse_get_future_market_v1_public_q_symbol_mark_price = publicInverseGetFutureMarketV1PublicQSymbolMarkPrice = Entry('future/market/v1/public/q/symbol-mark-price', ['public', 'inverse'], 'GET', {'cost': 1})
|
52
|
+
public_inverse_get_future_market_v1_public_q_ticker = publicInverseGetFutureMarketV1PublicQTicker = Entry('future/market/v1/public/q/ticker', ['public', 'inverse'], 'GET', {'cost': 1})
|
53
|
+
public_inverse_get_future_market_v1_public_q_tickers = publicInverseGetFutureMarketV1PublicQTickers = Entry('future/market/v1/public/q/tickers', ['public', 'inverse'], 'GET', {'cost': 1})
|
54
|
+
public_inverse_get_future_market_v1_public_symbol_coins = publicInverseGetFutureMarketV1PublicSymbolCoins = Entry('future/market/v1/public/symbol/coins', ['public', 'inverse'], 'GET', {'cost': 3.33})
|
55
|
+
public_inverse_get_future_market_v1_public_symbol_detail = publicInverseGetFutureMarketV1PublicSymbolDetail = Entry('future/market/v1/public/symbol/detail', ['public', 'inverse'], 'GET', {'cost': 3.33})
|
56
|
+
public_inverse_get_future_market_v1_public_symbol_list = publicInverseGetFutureMarketV1PublicSymbolList = Entry('future/market/v1/public/symbol/list', ['public', 'inverse'], 'GET', {'cost': 1})
|
57
|
+
private_spot_get_balance = privateSpotGetBalance = Entry('balance', ['private', 'spot'], 'GET', {'cost': 1})
|
58
|
+
private_spot_get_balances = privateSpotGetBalances = Entry('balances', ['private', 'spot'], 'GET', {'cost': 1})
|
59
|
+
private_spot_get_batch_order = privateSpotGetBatchOrder = Entry('batch-order', ['private', 'spot'], 'GET', {'cost': 1})
|
60
|
+
private_spot_get_deposit_address = privateSpotGetDepositAddress = Entry('deposit/address', ['private', 'spot'], 'GET', {'cost': 1})
|
61
|
+
private_spot_get_deposit_history = privateSpotGetDepositHistory = Entry('deposit/history', ['private', 'spot'], 'GET', {'cost': 1})
|
62
|
+
private_spot_get_history_order = privateSpotGetHistoryOrder = Entry('history-order', ['private', 'spot'], 'GET', {'cost': 1})
|
63
|
+
private_spot_get_open_order = privateSpotGetOpenOrder = Entry('open-order', ['private', 'spot'], 'GET', {'cost': 1})
|
64
|
+
private_spot_get_order = privateSpotGetOrder = Entry('order', ['private', 'spot'], 'GET', {'cost': 1})
|
65
|
+
private_spot_get_order_orderid = privateSpotGetOrderOrderId = Entry('order/{orderId}', ['private', 'spot'], 'GET', {'cost': 1})
|
66
|
+
private_spot_get_trade = privateSpotGetTrade = Entry('trade', ['private', 'spot'], 'GET', {'cost': 1})
|
67
|
+
private_spot_get_withdraw_history = privateSpotGetWithdrawHistory = Entry('withdraw/history', ['private', 'spot'], 'GET', {'cost': 1})
|
68
|
+
private_spot_post_order = privateSpotPostOrder = Entry('order', ['private', 'spot'], 'POST', {'cost': 0.2})
|
69
|
+
private_spot_post_withdraw = privateSpotPostWithdraw = Entry('withdraw', ['private', 'spot'], 'POST', {'cost': 1})
|
70
|
+
private_spot_post_balance_transfer = privateSpotPostBalanceTransfer = Entry('balance/transfer', ['private', 'spot'], 'POST', {'cost': 1})
|
71
|
+
private_spot_post_balance_account_transfer = privateSpotPostBalanceAccountTransfer = Entry('balance/account/transfer', ['private', 'spot'], 'POST', {'cost': 1})
|
72
|
+
private_spot_delete_batch_order = privateSpotDeleteBatchOrder = Entry('batch-order', ['private', 'spot'], 'DELETE', {'cost': 1})
|
73
|
+
private_spot_delete_open_order = privateSpotDeleteOpenOrder = Entry('open-order', ['private', 'spot'], 'DELETE', {'cost': 1})
|
74
|
+
private_spot_delete_order_orderid = privateSpotDeleteOrderOrderId = Entry('order/{orderId}', ['private', 'spot'], 'DELETE', {'cost': 1})
|
75
|
+
private_linear_get_future_trade_v1_entrust_plan_detail = privateLinearGetFutureTradeV1EntrustPlanDetail = Entry('future/trade/v1/entrust/plan-detail', ['private', 'linear'], 'GET', {'cost': 1})
|
76
|
+
private_linear_get_future_trade_v1_entrust_plan_list = privateLinearGetFutureTradeV1EntrustPlanList = Entry('future/trade/v1/entrust/plan-list', ['private', 'linear'], 'GET', {'cost': 1})
|
77
|
+
private_linear_get_future_trade_v1_entrust_plan_list_history = privateLinearGetFutureTradeV1EntrustPlanListHistory = Entry('future/trade/v1/entrust/plan-list-history', ['private', 'linear'], 'GET', {'cost': 1})
|
78
|
+
private_linear_get_future_trade_v1_entrust_profit_detail = privateLinearGetFutureTradeV1EntrustProfitDetail = Entry('future/trade/v1/entrust/profit-detail', ['private', 'linear'], 'GET', {'cost': 1})
|
79
|
+
private_linear_get_future_trade_v1_entrust_profit_list = privateLinearGetFutureTradeV1EntrustProfitList = Entry('future/trade/v1/entrust/profit-list', ['private', 'linear'], 'GET', {'cost': 1})
|
80
|
+
private_linear_get_future_trade_v1_order_detail = privateLinearGetFutureTradeV1OrderDetail = Entry('future/trade/v1/order/detail', ['private', 'linear'], 'GET', {'cost': 1})
|
81
|
+
private_linear_get_future_trade_v1_order_list = privateLinearGetFutureTradeV1OrderList = Entry('future/trade/v1/order/list', ['private', 'linear'], 'GET', {'cost': 1})
|
82
|
+
private_linear_get_future_trade_v1_order_list_history = privateLinearGetFutureTradeV1OrderListHistory = Entry('future/trade/v1/order/list-history', ['private', 'linear'], 'GET', {'cost': 1})
|
83
|
+
private_linear_get_future_trade_v1_order_trade_list = privateLinearGetFutureTradeV1OrderTradeList = Entry('future/trade/v1/order/trade-list', ['private', 'linear'], 'GET', {'cost': 1})
|
84
|
+
private_linear_get_future_user_v1_account_info = privateLinearGetFutureUserV1AccountInfo = Entry('future/user/v1/account/info', ['private', 'linear'], 'GET', {'cost': 1})
|
85
|
+
private_linear_get_future_user_v1_balance_bills = privateLinearGetFutureUserV1BalanceBills = Entry('future/user/v1/balance/bills', ['private', 'linear'], 'GET', {'cost': 1})
|
86
|
+
private_linear_get_future_user_v1_balance_detail = privateLinearGetFutureUserV1BalanceDetail = Entry('future/user/v1/balance/detail', ['private', 'linear'], 'GET', {'cost': 1})
|
87
|
+
private_linear_get_future_user_v1_balance_funding_rate_list = privateLinearGetFutureUserV1BalanceFundingRateList = Entry('future/user/v1/balance/funding-rate-list', ['private', 'linear'], 'GET', {'cost': 1})
|
88
|
+
private_linear_get_future_user_v1_balance_list = privateLinearGetFutureUserV1BalanceList = Entry('future/user/v1/balance/list', ['private', 'linear'], 'GET', {'cost': 1})
|
89
|
+
private_linear_get_future_user_v1_position_adl = privateLinearGetFutureUserV1PositionAdl = Entry('future/user/v1/position/adl', ['private', 'linear'], 'GET', {'cost': 1})
|
90
|
+
private_linear_get_future_user_v1_position_list = privateLinearGetFutureUserV1PositionList = Entry('future/user/v1/position/list', ['private', 'linear'], 'GET', {'cost': 1})
|
91
|
+
private_linear_get_future_user_v1_user_collection_list = privateLinearGetFutureUserV1UserCollectionList = Entry('future/user/v1/user/collection/list', ['private', 'linear'], 'GET', {'cost': 1})
|
92
|
+
private_linear_get_future_user_v1_user_listen_key = privateLinearGetFutureUserV1UserListenKey = Entry('future/user/v1/user/listen-key', ['private', 'linear'], 'GET', {'cost': 1})
|
93
|
+
private_linear_post_future_trade_v1_entrust_cancel_all_plan = privateLinearPostFutureTradeV1EntrustCancelAllPlan = Entry('future/trade/v1/entrust/cancel-all-plan', ['private', 'linear'], 'POST', {'cost': 1})
|
94
|
+
private_linear_post_future_trade_v1_entrust_cancel_all_profit_stop = privateLinearPostFutureTradeV1EntrustCancelAllProfitStop = Entry('future/trade/v1/entrust/cancel-all-profit-stop', ['private', 'linear'], 'POST', {'cost': 1})
|
95
|
+
private_linear_post_future_trade_v1_entrust_cancel_plan = privateLinearPostFutureTradeV1EntrustCancelPlan = Entry('future/trade/v1/entrust/cancel-plan', ['private', 'linear'], 'POST', {'cost': 1})
|
96
|
+
private_linear_post_future_trade_v1_entrust_cancel_profit_stop = privateLinearPostFutureTradeV1EntrustCancelProfitStop = Entry('future/trade/v1/entrust/cancel-profit-stop', ['private', 'linear'], 'POST', {'cost': 1})
|
97
|
+
private_linear_post_future_trade_v1_entrust_create_plan = privateLinearPostFutureTradeV1EntrustCreatePlan = Entry('future/trade/v1/entrust/create-plan', ['private', 'linear'], 'POST', {'cost': 1})
|
98
|
+
private_linear_post_future_trade_v1_entrust_create_profit = privateLinearPostFutureTradeV1EntrustCreateProfit = Entry('future/trade/v1/entrust/create-profit', ['private', 'linear'], 'POST', {'cost': 1})
|
99
|
+
private_linear_post_future_trade_v1_entrust_update_profit_stop = privateLinearPostFutureTradeV1EntrustUpdateProfitStop = Entry('future/trade/v1/entrust/update-profit-stop', ['private', 'linear'], 'POST', {'cost': 1})
|
100
|
+
private_linear_post_future_trade_v1_order_cancel = privateLinearPostFutureTradeV1OrderCancel = Entry('future/trade/v1/order/cancel', ['private', 'linear'], 'POST', {'cost': 1})
|
101
|
+
private_linear_post_future_trade_v1_order_cancel_all = privateLinearPostFutureTradeV1OrderCancelAll = Entry('future/trade/v1/order/cancel-all', ['private', 'linear'], 'POST', {'cost': 1})
|
102
|
+
private_linear_post_future_trade_v1_order_create = privateLinearPostFutureTradeV1OrderCreate = Entry('future/trade/v1/order/create', ['private', 'linear'], 'POST', {'cost': 1})
|
103
|
+
private_linear_post_future_trade_v1_order_create_batch = privateLinearPostFutureTradeV1OrderCreateBatch = Entry('future/trade/v1/order/create-batch', ['private', 'linear'], 'POST', {'cost': 1})
|
104
|
+
private_linear_post_future_user_v1_account_open = privateLinearPostFutureUserV1AccountOpen = Entry('future/user/v1/account/open', ['private', 'linear'], 'POST', {'cost': 1})
|
105
|
+
private_linear_post_future_user_v1_position_adjust_leverage = privateLinearPostFutureUserV1PositionAdjustLeverage = Entry('future/user/v1/position/adjust-leverage', ['private', 'linear'], 'POST', {'cost': 1})
|
106
|
+
private_linear_post_future_user_v1_position_auto_margin = privateLinearPostFutureUserV1PositionAutoMargin = Entry('future/user/v1/position/auto-margin', ['private', 'linear'], 'POST', {'cost': 1})
|
107
|
+
private_linear_post_future_user_v1_position_close_all = privateLinearPostFutureUserV1PositionCloseAll = Entry('future/user/v1/position/close-all', ['private', 'linear'], 'POST', {'cost': 1})
|
108
|
+
private_linear_post_future_user_v1_position_margin = privateLinearPostFutureUserV1PositionMargin = Entry('future/user/v1/position/margin', ['private', 'linear'], 'POST', {'cost': 1})
|
109
|
+
private_linear_post_future_user_v1_user_collection_add = privateLinearPostFutureUserV1UserCollectionAdd = Entry('future/user/v1/user/collection/add', ['private', 'linear'], 'POST', {'cost': 1})
|
110
|
+
private_linear_post_future_user_v1_user_collection_cancel = privateLinearPostFutureUserV1UserCollectionCancel = Entry('future/user/v1/user/collection/cancel', ['private', 'linear'], 'POST', {'cost': 1})
|
111
|
+
private_inverse_get_future_trade_v1_entrust_plan_detail = privateInverseGetFutureTradeV1EntrustPlanDetail = Entry('future/trade/v1/entrust/plan-detail', ['private', 'inverse'], 'GET', {'cost': 1})
|
112
|
+
private_inverse_get_future_trade_v1_entrust_plan_list = privateInverseGetFutureTradeV1EntrustPlanList = Entry('future/trade/v1/entrust/plan-list', ['private', 'inverse'], 'GET', {'cost': 1})
|
113
|
+
private_inverse_get_future_trade_v1_entrust_plan_list_history = privateInverseGetFutureTradeV1EntrustPlanListHistory = Entry('future/trade/v1/entrust/plan-list-history', ['private', 'inverse'], 'GET', {'cost': 1})
|
114
|
+
private_inverse_get_future_trade_v1_entrust_profit_detail = privateInverseGetFutureTradeV1EntrustProfitDetail = Entry('future/trade/v1/entrust/profit-detail', ['private', 'inverse'], 'GET', {'cost': 1})
|
115
|
+
private_inverse_get_future_trade_v1_entrust_profit_list = privateInverseGetFutureTradeV1EntrustProfitList = Entry('future/trade/v1/entrust/profit-list', ['private', 'inverse'], 'GET', {'cost': 1})
|
116
|
+
private_inverse_get_future_trade_v1_order_detail = privateInverseGetFutureTradeV1OrderDetail = Entry('future/trade/v1/order/detail', ['private', 'inverse'], 'GET', {'cost': 1})
|
117
|
+
private_inverse_get_future_trade_v1_order_list = privateInverseGetFutureTradeV1OrderList = Entry('future/trade/v1/order/list', ['private', 'inverse'], 'GET', {'cost': 1})
|
118
|
+
private_inverse_get_future_trade_v1_order_list_history = privateInverseGetFutureTradeV1OrderListHistory = Entry('future/trade/v1/order/list-history', ['private', 'inverse'], 'GET', {'cost': 1})
|
119
|
+
private_inverse_get_future_trade_v1_order_trade_list = privateInverseGetFutureTradeV1OrderTradeList = Entry('future/trade/v1/order/trade-list', ['private', 'inverse'], 'GET', {'cost': 1})
|
120
|
+
private_inverse_get_future_user_v1_account_info = privateInverseGetFutureUserV1AccountInfo = Entry('future/user/v1/account/info', ['private', 'inverse'], 'GET', {'cost': 1})
|
121
|
+
private_inverse_get_future_user_v1_balance_bills = privateInverseGetFutureUserV1BalanceBills = Entry('future/user/v1/balance/bills', ['private', 'inverse'], 'GET', {'cost': 1})
|
122
|
+
private_inverse_get_future_user_v1_balance_detail = privateInverseGetFutureUserV1BalanceDetail = Entry('future/user/v1/balance/detail', ['private', 'inverse'], 'GET', {'cost': 1})
|
123
|
+
private_inverse_get_future_user_v1_balance_funding_rate_list = privateInverseGetFutureUserV1BalanceFundingRateList = Entry('future/user/v1/balance/funding-rate-list', ['private', 'inverse'], 'GET', {'cost': 1})
|
124
|
+
private_inverse_get_future_user_v1_balance_list = privateInverseGetFutureUserV1BalanceList = Entry('future/user/v1/balance/list', ['private', 'inverse'], 'GET', {'cost': 1})
|
125
|
+
private_inverse_get_future_user_v1_position_adl = privateInverseGetFutureUserV1PositionAdl = Entry('future/user/v1/position/adl', ['private', 'inverse'], 'GET', {'cost': 1})
|
126
|
+
private_inverse_get_future_user_v1_position_list = privateInverseGetFutureUserV1PositionList = Entry('future/user/v1/position/list', ['private', 'inverse'], 'GET', {'cost': 1})
|
127
|
+
private_inverse_get_future_user_v1_user_collection_list = privateInverseGetFutureUserV1UserCollectionList = Entry('future/user/v1/user/collection/list', ['private', 'inverse'], 'GET', {'cost': 1})
|
128
|
+
private_inverse_get_future_user_v1_user_listen_key = privateInverseGetFutureUserV1UserListenKey = Entry('future/user/v1/user/listen-key', ['private', 'inverse'], 'GET', {'cost': 1})
|
129
|
+
private_inverse_post_future_trade_v1_entrust_cancel_all_plan = privateInversePostFutureTradeV1EntrustCancelAllPlan = Entry('future/trade/v1/entrust/cancel-all-plan', ['private', 'inverse'], 'POST', {'cost': 1})
|
130
|
+
private_inverse_post_future_trade_v1_entrust_cancel_all_profit_stop = privateInversePostFutureTradeV1EntrustCancelAllProfitStop = Entry('future/trade/v1/entrust/cancel-all-profit-stop', ['private', 'inverse'], 'POST', {'cost': 1})
|
131
|
+
private_inverse_post_future_trade_v1_entrust_cancel_plan = privateInversePostFutureTradeV1EntrustCancelPlan = Entry('future/trade/v1/entrust/cancel-plan', ['private', 'inverse'], 'POST', {'cost': 1})
|
132
|
+
private_inverse_post_future_trade_v1_entrust_cancel_profit_stop = privateInversePostFutureTradeV1EntrustCancelProfitStop = Entry('future/trade/v1/entrust/cancel-profit-stop', ['private', 'inverse'], 'POST', {'cost': 1})
|
133
|
+
private_inverse_post_future_trade_v1_entrust_create_plan = privateInversePostFutureTradeV1EntrustCreatePlan = Entry('future/trade/v1/entrust/create-plan', ['private', 'inverse'], 'POST', {'cost': 1})
|
134
|
+
private_inverse_post_future_trade_v1_entrust_create_profit = privateInversePostFutureTradeV1EntrustCreateProfit = Entry('future/trade/v1/entrust/create-profit', ['private', 'inverse'], 'POST', {'cost': 1})
|
135
|
+
private_inverse_post_future_trade_v1_entrust_update_profit_stop = privateInversePostFutureTradeV1EntrustUpdateProfitStop = Entry('future/trade/v1/entrust/update-profit-stop', ['private', 'inverse'], 'POST', {'cost': 1})
|
136
|
+
private_inverse_post_future_trade_v1_order_cancel = privateInversePostFutureTradeV1OrderCancel = Entry('future/trade/v1/order/cancel', ['private', 'inverse'], 'POST', {'cost': 1})
|
137
|
+
private_inverse_post_future_trade_v1_order_cancel_all = privateInversePostFutureTradeV1OrderCancelAll = Entry('future/trade/v1/order/cancel-all', ['private', 'inverse'], 'POST', {'cost': 1})
|
138
|
+
private_inverse_post_future_trade_v1_order_create = privateInversePostFutureTradeV1OrderCreate = Entry('future/trade/v1/order/create', ['private', 'inverse'], 'POST', {'cost': 1})
|
139
|
+
private_inverse_post_future_trade_v1_order_create_batch = privateInversePostFutureTradeV1OrderCreateBatch = Entry('future/trade/v1/order/create-batch', ['private', 'inverse'], 'POST', {'cost': 1})
|
140
|
+
private_inverse_post_future_user_v1_account_open = privateInversePostFutureUserV1AccountOpen = Entry('future/user/v1/account/open', ['private', 'inverse'], 'POST', {'cost': 1})
|
141
|
+
private_inverse_post_future_user_v1_position_adjust_leverage = privateInversePostFutureUserV1PositionAdjustLeverage = Entry('future/user/v1/position/adjust-leverage', ['private', 'inverse'], 'POST', {'cost': 1})
|
142
|
+
private_inverse_post_future_user_v1_position_auto_margin = privateInversePostFutureUserV1PositionAutoMargin = Entry('future/user/v1/position/auto-margin', ['private', 'inverse'], 'POST', {'cost': 1})
|
143
|
+
private_inverse_post_future_user_v1_position_close_all = privateInversePostFutureUserV1PositionCloseAll = Entry('future/user/v1/position/close-all', ['private', 'inverse'], 'POST', {'cost': 1})
|
144
|
+
private_inverse_post_future_user_v1_position_margin = privateInversePostFutureUserV1PositionMargin = Entry('future/user/v1/position/margin', ['private', 'inverse'], 'POST', {'cost': 1})
|
145
|
+
private_inverse_post_future_user_v1_user_collection_add = privateInversePostFutureUserV1UserCollectionAdd = Entry('future/user/v1/user/collection/add', ['private', 'inverse'], 'POST', {'cost': 1})
|
146
|
+
private_inverse_post_future_user_v1_user_collection_cancel = privateInversePostFutureUserV1UserCollectionCancel = Entry('future/user/v1/user/collection/cancel', ['private', 'inverse'], 'POST', {'cost': 1})
|
147
|
+
private_user_get_user_account = privateUserGetUserAccount = Entry('user/account', ['private', 'user'], 'GET', {'cost': 1})
|
148
|
+
private_user_get_user_account_api_key = privateUserGetUserAccountApiKey = Entry('user/account/api-key', ['private', 'user'], 'GET', {'cost': 1})
|
149
|
+
private_user_post_user_account = privateUserPostUserAccount = Entry('user/account', ['private', 'user'], 'POST', {'cost': 1})
|
150
|
+
private_user_post_user_account_api_key = privateUserPostUserAccountApiKey = Entry('user/account/api-key', ['private', 'user'], 'POST', {'cost': 1})
|
151
|
+
private_user_put_user_account_api_key = privateUserPutUserAccountApiKey = Entry('user/account/api-key', ['private', 'user'], 'PUT', {'cost': 1})
|
152
|
+
private_user_delete_user_account_apikeyid = privateUserDeleteUserAccountApikeyId = Entry('user/account/{apikeyId}', ['private', 'user'], 'DELETE', {'cost': 1})
|
ccxt/async_support/__init__.py
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
# -----------------------------------------------------------------------------
|
6
6
|
|
7
|
-
__version__ = '4.3.
|
7
|
+
__version__ = '4.3.44'
|
8
8
|
|
9
9
|
# -----------------------------------------------------------------------------
|
10
10
|
|
@@ -162,6 +162,7 @@ from ccxt.async_support.wazirx import wazirx
|
|
162
162
|
from ccxt.async_support.whitebit import whitebit # noqa: F401
|
163
163
|
from ccxt.async_support.woo import woo # noqa: F401
|
164
164
|
from ccxt.async_support.woofipro import woofipro # noqa: F401
|
165
|
+
from ccxt.async_support.xt import xt # noqa: F401
|
165
166
|
from ccxt.async_support.yobit import yobit # noqa: F401
|
166
167
|
from ccxt.async_support.zaif import zaif # noqa: F401
|
167
168
|
from ccxt.async_support.zonda import zonda # noqa: F401
|
@@ -269,6 +270,7 @@ exchanges = [
|
|
269
270
|
'whitebit',
|
270
271
|
'woo',
|
271
272
|
'woofipro',
|
273
|
+
'xt',
|
272
274
|
'yobit',
|
273
275
|
'zaif',
|
274
276
|
'zonda',
|
ccxt/async_support/binance.py
CHANGED
@@ -7557,8 +7557,56 @@ class binance(Exchange, ImplicitAPI):
|
|
7557
7557
|
# "tranId": 43000126248
|
7558
7558
|
# }
|
7559
7559
|
#
|
7560
|
-
|
7561
|
-
|
7560
|
+
# {
|
7561
|
+
# "orderType": "C2C", # Enum:PAY(C2B Merchant Acquiring Payment), PAY_REFUND(C2B Merchant Acquiring Payment,refund), C2C(C2C Transfer Payment),CRYPTO_BOX(Crypto box), CRYPTO_BOX_RF(Crypto Box, refund), C2C_HOLDING(Transfer to new Binance user), C2C_HOLDING_RF(Transfer to new Binance user,refund), PAYOUT(B2C Disbursement Payment), REMITTANCE(Send cash)
|
7562
|
+
# "transactionId": "M_P_71505104267788288",
|
7563
|
+
# "transactionTime": 1610090460133, #trade timestamp
|
7564
|
+
# "amount": "23.72469206", #order amount(up to 8 decimal places), positive is income, negative is expenditure
|
7565
|
+
# "currency": "BNB",
|
7566
|
+
# "walletType": 1, #main wallet type, 1 for funding wallet, 2 for spot wallet, 3 for fiat wallet, 4 or 6 for card payment, 5 for earn wallet
|
7567
|
+
# "walletTypes": [1,2], #array format,there are multiple values when using combination payment
|
7568
|
+
# "fundsDetail": [ # details
|
7569
|
+
# {
|
7570
|
+
# "currency": "USDT", #asset
|
7571
|
+
# "amount": "1.2",
|
7572
|
+
# "walletAssetCost":[ #details of asset cost per wallet
|
7573
|
+
# {"1":"0.6"},
|
7574
|
+
# {"2":"0.6"}
|
7575
|
+
# ]
|
7576
|
+
# },
|
7577
|
+
# {
|
7578
|
+
# "currency": "ETH",
|
7579
|
+
# "amount": "0.0001",
|
7580
|
+
# "walletAssetCost":[
|
7581
|
+
# {"1":"0.00005"},
|
7582
|
+
# {"2":"0.00005"}
|
7583
|
+
# ]
|
7584
|
+
# }
|
7585
|
+
# ],
|
7586
|
+
# "payerInfo":{
|
7587
|
+
# "name":"Jack", #nickname or merchant name
|
7588
|
+
# "type":"USER", #account type,USER for personal,MERCHANT for merchant
|
7589
|
+
# "binanceId":"12345678", #binance uid
|
7590
|
+
# "accountId":"67736251" #binance pay id
|
7591
|
+
# },
|
7592
|
+
# "receiverInfo":{
|
7593
|
+
# "name":"Alan", #nickname or merchant name
|
7594
|
+
# "type":"MERCHANT", #account type,USER for personal,MERCHANT for merchant
|
7595
|
+
# "email":"alan@binance.com", #email
|
7596
|
+
# "binanceId":"34355667", #binance uid
|
7597
|
+
# "accountId":"21326891", #binance pay id
|
7598
|
+
# "countryCode":"1", #International area code
|
7599
|
+
# "phoneNumber":"8057651210",
|
7600
|
+
# "mobileCode":"US", #country code
|
7601
|
+
# "extend":[ #extension field
|
7602
|
+
# "institutionName": "",
|
7603
|
+
# "cardNumber": "",
|
7604
|
+
# "digitalWalletId": ""
|
7605
|
+
# ]
|
7606
|
+
# }
|
7607
|
+
# }
|
7608
|
+
id = self.safe_string_2(transfer, 'tranId', 'transactionId')
|
7609
|
+
currencyId = self.safe_string_2(transfer, 'asset', 'currency')
|
7562
7610
|
code = self.safe_currency_code(currencyId, currency)
|
7563
7611
|
amount = self.safe_number(transfer, 'amount')
|
7564
7612
|
type = self.safe_string(transfer, 'type')
|
@@ -7571,7 +7619,13 @@ class binance(Exchange, ImplicitAPI):
|
|
7571
7619
|
toAccount = self.safe_value(parts, 1)
|
7572
7620
|
fromAccount = self.safe_string(accountsById, fromAccount, fromAccount)
|
7573
7621
|
toAccount = self.safe_string(accountsById, toAccount, toAccount)
|
7574
|
-
|
7622
|
+
walletType = self.safe_integer(transfer, 'walletType')
|
7623
|
+
if walletType is not None:
|
7624
|
+
payer = self.safe_dict(transfer, 'payerInfo', {})
|
7625
|
+
receiver = self.safe_dict(transfer, 'receiverInfo', {})
|
7626
|
+
fromAccount = self.safe_string(payer, 'accountId')
|
7627
|
+
toAccount = self.safe_string(receiver, 'accountId')
|
7628
|
+
timestamp = self.safe_integer_2(transfer, 'timestamp', 'transactionTime')
|
7575
7629
|
status = self.parse_transfer_status(self.safe_string(transfer, 'status'))
|
7576
7630
|
return {
|
7577
7631
|
'info': transfer,
|
@@ -7700,66 +7754,133 @@ class binance(Exchange, ImplicitAPI):
|
|
7700
7754
|
"""
|
7701
7755
|
fetch a history of internal transfers made on an account
|
7702
7756
|
:see: https://binance-docs.github.io/apidocs/spot/en/#query-user-universal-transfer-history-user_data
|
7757
|
+
:see: https://binance-docs.github.io/apidocs/spot/en/#pay-endpoints
|
7703
7758
|
:param str code: unified currency code of the currency transferred
|
7704
7759
|
:param int [since]: the earliest time in ms to fetch transfers for
|
7705
7760
|
:param int [limit]: the maximum number of transfers structures to retrieve
|
7706
7761
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
7707
7762
|
:param int [params.until]: the latest time in ms to fetch transfers for
|
7708
7763
|
:param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
7764
|
+
:param boolean [params.internal]: default False, when True will fetch pay trade history
|
7709
7765
|
:returns dict[]: a list of `transfer structures <https://docs.ccxt.com/#/?id=transfer-structure>`
|
7710
7766
|
"""
|
7711
7767
|
await self.load_markets()
|
7768
|
+
internal = self.safe_bool(params, 'internal')
|
7769
|
+
params = self.omit(params, 'internal')
|
7712
7770
|
paginate = False
|
7713
7771
|
paginate, params = self.handle_option_and_params(params, 'fetchTransfers', 'paginate')
|
7714
|
-
if paginate:
|
7772
|
+
if paginate and not internal:
|
7715
7773
|
return await self.fetch_paginated_call_dynamic('fetchTransfers', code, since, limit, params)
|
7716
7774
|
currency = None
|
7717
7775
|
if code is not None:
|
7718
7776
|
currency = self.currency(code)
|
7719
|
-
|
7720
|
-
|
7721
|
-
|
7722
|
-
|
7723
|
-
|
7724
|
-
|
7725
|
-
|
7726
|
-
|
7727
|
-
|
7728
|
-
|
7729
|
-
|
7730
|
-
|
7731
|
-
|
7732
|
-
|
7733
|
-
|
7734
|
-
|
7735
|
-
|
7736
|
-
|
7737
|
-
|
7777
|
+
request: dict = {}
|
7778
|
+
limitKey = 'limit'
|
7779
|
+
if not internal:
|
7780
|
+
defaultType = self.safe_string_2(self.options, 'fetchTransfers', 'defaultType', 'spot')
|
7781
|
+
fromAccount = self.safe_string(params, 'fromAccount', defaultType)
|
7782
|
+
defaultTo = 'spot' if (fromAccount == 'future') else 'future'
|
7783
|
+
toAccount = self.safe_string(params, 'toAccount', defaultTo)
|
7784
|
+
type = self.safe_string(params, 'type')
|
7785
|
+
accountsByType = self.safe_dict(self.options, 'accountsByType', {})
|
7786
|
+
fromId = self.safe_string(accountsByType, fromAccount)
|
7787
|
+
toId = self.safe_string(accountsByType, toAccount)
|
7788
|
+
if type is None:
|
7789
|
+
if fromId is None:
|
7790
|
+
keys = list(accountsByType.keys())
|
7791
|
+
raise ExchangeError(self.id + ' fromAccount parameter must be one of ' + ', '.join(keys))
|
7792
|
+
if toId is None:
|
7793
|
+
keys = list(accountsByType.keys())
|
7794
|
+
raise ExchangeError(self.id + ' toAccount parameter must be one of ' + ', '.join(keys))
|
7795
|
+
type = fromId + '_' + toId
|
7796
|
+
request['type'] = type
|
7797
|
+
limitKey = 'size'
|
7798
|
+
if limit is not None:
|
7799
|
+
request[limitKey] = limit
|
7738
7800
|
if since is not None:
|
7739
7801
|
request['startTime'] = since
|
7740
|
-
if limit is not None:
|
7741
|
-
request['size'] = limit
|
7742
7802
|
until = self.safe_integer(params, 'until')
|
7743
7803
|
if until is not None:
|
7744
7804
|
params = self.omit(params, 'until')
|
7745
7805
|
request['endTime'] = until
|
7746
|
-
response =
|
7747
|
-
|
7748
|
-
|
7749
|
-
|
7750
|
-
|
7751
|
-
|
7752
|
-
|
7753
|
-
|
7754
|
-
|
7755
|
-
|
7756
|
-
|
7757
|
-
|
7758
|
-
|
7759
|
-
|
7760
|
-
|
7761
|
-
|
7762
|
-
|
7806
|
+
response = None
|
7807
|
+
if internal:
|
7808
|
+
response = await self.sapiGetPayTransactions(self.extend(request, params))
|
7809
|
+
#
|
7810
|
+
# {
|
7811
|
+
# "code": "000000",
|
7812
|
+
# "message": "success",
|
7813
|
+
# "data": [
|
7814
|
+
# {
|
7815
|
+
# "orderType": "C2C", # Enum:PAY(C2B Merchant Acquiring Payment), PAY_REFUND(C2B Merchant Acquiring Payment,refund), C2C(C2C Transfer Payment),CRYPTO_BOX(Crypto box), CRYPTO_BOX_RF(Crypto Box, refund), C2C_HOLDING(Transfer to new Binance user), C2C_HOLDING_RF(Transfer to new Binance user,refund), PAYOUT(B2C Disbursement Payment), REMITTANCE(Send cash)
|
7816
|
+
# "transactionId": "M_P_71505104267788288",
|
7817
|
+
# "transactionTime": 1610090460133, #trade timestamp
|
7818
|
+
# "amount": "23.72469206", #order amount(up to 8 decimal places), positive is income, negative is expenditure
|
7819
|
+
# "currency": "BNB",
|
7820
|
+
# "walletType": 1, #main wallet type, 1 for funding wallet, 2 for spot wallet, 3 for fiat wallet, 4 or 6 for card payment, 5 for earn wallet
|
7821
|
+
# "walletTypes": [1,2], #array format,there are multiple values when using combination payment
|
7822
|
+
# "fundsDetail": [ # details
|
7823
|
+
# {
|
7824
|
+
# "currency": "USDT", #asset
|
7825
|
+
# "amount": "1.2",
|
7826
|
+
# "walletAssetCost":[ #details of asset cost per wallet
|
7827
|
+
# {"1":"0.6"},
|
7828
|
+
# {"2":"0.6"}
|
7829
|
+
# ]
|
7830
|
+
# },
|
7831
|
+
# {
|
7832
|
+
# "currency": "ETH",
|
7833
|
+
# "amount": "0.0001",
|
7834
|
+
# "walletAssetCost":[
|
7835
|
+
# {"1":"0.00005"},
|
7836
|
+
# {"2":"0.00005"}
|
7837
|
+
# ]
|
7838
|
+
# }
|
7839
|
+
# ],
|
7840
|
+
# "payerInfo":{
|
7841
|
+
# "name":"Jack", #nickname or merchant name
|
7842
|
+
# "type":"USER", #account type,USER for personal,MERCHANT for merchant
|
7843
|
+
# "binanceId":"12345678", #binance uid
|
7844
|
+
# "accountId":"67736251" #binance pay id
|
7845
|
+
# },
|
7846
|
+
# "receiverInfo":{
|
7847
|
+
# "name":"Alan", #nickname or merchant name
|
7848
|
+
# "type":"MERCHANT", #account type,USER for personal,MERCHANT for merchant
|
7849
|
+
# "email":"alan@binance.com", #email
|
7850
|
+
# "binanceId":"34355667", #binance uid
|
7851
|
+
# "accountId":"21326891", #binance pay id
|
7852
|
+
# "countryCode":"1", #International area code
|
7853
|
+
# "phoneNumber":"8057651210",
|
7854
|
+
# "mobileCode":"US", #country code
|
7855
|
+
# "extend":[ #extension field
|
7856
|
+
# "institutionName": "",
|
7857
|
+
# "cardNumber": "",
|
7858
|
+
# "digitalWalletId": ""
|
7859
|
+
# ]
|
7860
|
+
# }
|
7861
|
+
# }
|
7862
|
+
# ],
|
7863
|
+
# "success": True
|
7864
|
+
# }
|
7865
|
+
#
|
7866
|
+
else:
|
7867
|
+
response = await self.sapiGetAssetTransfer(self.extend(request, params))
|
7868
|
+
#
|
7869
|
+
# {
|
7870
|
+
# "total": 3,
|
7871
|
+
# "rows": [
|
7872
|
+
# {
|
7873
|
+
# "timestamp": 1614640878000,
|
7874
|
+
# "asset": "USDT",
|
7875
|
+
# "amount": "25",
|
7876
|
+
# "type": "MAIN_UMFUTURE",
|
7877
|
+
# "status": "CONFIRMED",
|
7878
|
+
# "tranId": 43000126248
|
7879
|
+
# },
|
7880
|
+
# ]
|
7881
|
+
# }
|
7882
|
+
#
|
7883
|
+
rows = self.safe_list_2(response, 'rows', 'data', [])
|
7763
7884
|
return self.parse_transfers(rows, currency, since, limit)
|
7764
7885
|
|
7765
7886
|
async def fetch_deposit_address(self, code: str, params={}):
|
ccxt/async_support/btcmarkets.py
CHANGED
@@ -855,7 +855,29 @@ class btcmarkets(Exchange, ImplicitAPI):
|
|
855
855
|
request: dict = {
|
856
856
|
'ids': ids,
|
857
857
|
}
|
858
|
-
|
858
|
+
response = await self.privateDeleteBatchordersIds(self.extend(request, params))
|
859
|
+
#
|
860
|
+
# {
|
861
|
+
# "cancelOrders": [
|
862
|
+
# {
|
863
|
+
# "orderId": "414186",
|
864
|
+
# "clientOrderId": "6"
|
865
|
+
# },
|
866
|
+
# ...
|
867
|
+
# ],
|
868
|
+
# "unprocessedRequests": [
|
869
|
+
# {
|
870
|
+
# "code": "OrderAlreadyCancelled",
|
871
|
+
# "message": "order is already cancelled.",
|
872
|
+
# "requestId": "1"
|
873
|
+
# }
|
874
|
+
# ]
|
875
|
+
# }
|
876
|
+
#
|
877
|
+
cancelOrders = self.safe_list(response, 'cancelOrders', [])
|
878
|
+
unprocessedRequests = self.safe_list(response, 'unprocessedRequests', [])
|
879
|
+
orders = self.array_concat(cancelOrders, unprocessedRequests)
|
880
|
+
return self.parse_orders(orders)
|
859
881
|
|
860
882
|
async def cancel_order(self, id: str, symbol: Str = None, params={}):
|
861
883
|
"""
|
@@ -870,7 +892,14 @@ class btcmarkets(Exchange, ImplicitAPI):
|
|
870
892
|
request: dict = {
|
871
893
|
'id': id,
|
872
894
|
}
|
873
|
-
|
895
|
+
response = await self.privateDeleteOrdersId(self.extend(request, params))
|
896
|
+
#
|
897
|
+
# {
|
898
|
+
# "orderId": "7524",
|
899
|
+
# "clientOrderId": "123-456"
|
900
|
+
# }
|
901
|
+
#
|
902
|
+
return self.parse_order(response)
|
874
903
|
|
875
904
|
def calculate_fee(self, symbol, type, side, amount, price, takerOrMaker='taker', params={}):
|
876
905
|
"""
|