ccxt 4.4.63__py2.py3-none-any.whl → 4.4.68__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 +5 -3
- ccxt/abstract/binance.py +1 -0
- ccxt/abstract/binancecoinm.py +1 -0
- ccxt/abstract/binanceus.py +1 -0
- ccxt/abstract/binanceusdm.py +1 -0
- ccxt/abstract/cryptomus.py +20 -0
- ccxt/abstract/derive.py +117 -0
- ccxt/abstract/tradeogre.py +1 -0
- ccxt/abstract/whitebit.py +16 -0
- ccxt/async_support/__init__.py +5 -3
- ccxt/async_support/base/exchange.py +6 -5
- ccxt/async_support/binance.py +8 -6
- ccxt/async_support/bitget.py +22 -12
- ccxt/async_support/bitrue.py +6 -3
- ccxt/async_support/bybit.py +1 -1
- ccxt/async_support/coinbase.py +73 -2
- ccxt/async_support/cryptocom.py +2 -0
- ccxt/async_support/cryptomus.py +1041 -0
- ccxt/async_support/derive.py +2530 -0
- ccxt/async_support/gate.py +5 -1
- ccxt/async_support/htx.py +19 -5
- ccxt/async_support/hyperliquid.py +108 -68
- ccxt/async_support/luno.py +113 -1
- ccxt/async_support/paradex.py +51 -12
- ccxt/async_support/tradeogre.py +132 -13
- ccxt/async_support/whitebit.py +276 -2
- ccxt/base/exchange.py +13 -4
- ccxt/binance.py +8 -6
- ccxt/bitget.py +22 -12
- ccxt/bitrue.py +6 -3
- ccxt/bybit.py +1 -1
- ccxt/coinbase.py +73 -2
- ccxt/cryptocom.py +2 -0
- ccxt/cryptomus.py +1041 -0
- ccxt/derive.py +2529 -0
- ccxt/gate.py +5 -1
- ccxt/htx.py +19 -5
- ccxt/hyperliquid.py +108 -68
- ccxt/luno.py +113 -1
- ccxt/paradex.py +51 -12
- ccxt/pro/__init__.py +3 -3
- ccxt/pro/bitopro.py +1 -1
- ccxt/pro/bybit.py +3 -2
- ccxt/pro/derive.py +704 -0
- ccxt/pro/gate.py +8 -1
- ccxt/pro/hyperliquid.py +3 -3
- ccxt/pro/vertex.py +5 -0
- ccxt/test/tests_async.py +36 -3
- ccxt/test/tests_sync.py +36 -3
- ccxt/tradeogre.py +132 -13
- ccxt/whitebit.py +276 -2
- {ccxt-4.4.63.dist-info → ccxt-4.4.68.dist-info}/METADATA +16 -12
- {ccxt-4.4.63.dist-info → ccxt-4.4.68.dist-info}/RECORD +56 -53
- ccxt/abstract/currencycom.py +0 -68
- ccxt/async_support/currencycom.py +0 -2070
- ccxt/currencycom.py +0 -2070
- ccxt/pro/currencycom.py +0 -536
- {ccxt-4.4.63.dist-info → ccxt-4.4.68.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.4.63.dist-info → ccxt-4.4.68.dist-info}/WHEEL +0 -0
- {ccxt-4.4.63.dist-info → ccxt-4.4.68.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.68'
|
26
26
|
|
27
27
|
# ----------------------------------------------------------------------------
|
28
28
|
|
@@ -134,10 +134,11 @@ from ccxt.coinone import coinone # noqa: F4
|
|
134
134
|
from ccxt.coinsph import coinsph # noqa: F401
|
135
135
|
from ccxt.coinspot import coinspot # noqa: F401
|
136
136
|
from ccxt.cryptocom import cryptocom # noqa: F401
|
137
|
-
from ccxt.
|
137
|
+
from ccxt.cryptomus import cryptomus # noqa: F401
|
138
138
|
from ccxt.defx import defx # noqa: F401
|
139
139
|
from ccxt.delta import delta # noqa: F401
|
140
140
|
from ccxt.deribit import deribit # noqa: F401
|
141
|
+
from ccxt.derive import derive # noqa: F401
|
141
142
|
from ccxt.digifinex import digifinex # noqa: F401
|
142
143
|
from ccxt.ellipx import ellipx # noqa: F401
|
143
144
|
from ccxt.exmo import exmo # noqa: F401
|
@@ -246,10 +247,11 @@ exchanges = [
|
|
246
247
|
'coinsph',
|
247
248
|
'coinspot',
|
248
249
|
'cryptocom',
|
249
|
-
'
|
250
|
+
'cryptomus',
|
250
251
|
'defx',
|
251
252
|
'delta',
|
252
253
|
'deribit',
|
254
|
+
'derive',
|
253
255
|
'digifinex',
|
254
256
|
'ellipx',
|
255
257
|
'exmo',
|
ccxt/abstract/binance.py
CHANGED
@@ -221,6 +221,7 @@ class ImplicitAPI:
|
|
221
221
|
sapi_get_portfolio_margin_asset_leverage = sapiGetPortfolioMarginAssetLeverage = Entry('portfolio/margin-asset-leverage', 'sapi', 'GET', {'cost': 5})
|
222
222
|
sapi_get_portfolio_balance = sapiGetPortfolioBalance = Entry('portfolio/balance', 'sapi', 'GET', {'cost': 2})
|
223
223
|
sapi_get_portfolio_negative_balance_exchange_record = sapiGetPortfolioNegativeBalanceExchangeRecord = Entry('portfolio/negative-balance-exchange-record', 'sapi', 'GET', {'cost': 2})
|
224
|
+
sapi_get_portfolio_pmloan_history = sapiGetPortfolioPmloanHistory = Entry('portfolio/pmloan-history', 'sapi', 'GET', {'cost': 5})
|
224
225
|
sapi_get_staking_productlist = sapiGetStakingProductList = Entry('staking/productList', 'sapi', 'GET', {'cost': 0.1})
|
225
226
|
sapi_get_staking_position = sapiGetStakingPosition = Entry('staking/position', 'sapi', 'GET', {'cost': 0.1})
|
226
227
|
sapi_get_staking_stakingrecord = sapiGetStakingStakingRecord = Entry('staking/stakingRecord', 'sapi', 'GET', {'cost': 0.1})
|
ccxt/abstract/binancecoinm.py
CHANGED
@@ -221,6 +221,7 @@ class ImplicitAPI:
|
|
221
221
|
sapi_get_portfolio_margin_asset_leverage = sapiGetPortfolioMarginAssetLeverage = Entry('portfolio/margin-asset-leverage', 'sapi', 'GET', {'cost': 5})
|
222
222
|
sapi_get_portfolio_balance = sapiGetPortfolioBalance = Entry('portfolio/balance', 'sapi', 'GET', {'cost': 2})
|
223
223
|
sapi_get_portfolio_negative_balance_exchange_record = sapiGetPortfolioNegativeBalanceExchangeRecord = Entry('portfolio/negative-balance-exchange-record', 'sapi', 'GET', {'cost': 2})
|
224
|
+
sapi_get_portfolio_pmloan_history = sapiGetPortfolioPmloanHistory = Entry('portfolio/pmloan-history', 'sapi', 'GET', {'cost': 5})
|
224
225
|
sapi_get_staking_productlist = sapiGetStakingProductList = Entry('staking/productList', 'sapi', 'GET', {'cost': 0.1})
|
225
226
|
sapi_get_staking_position = sapiGetStakingPosition = Entry('staking/position', 'sapi', 'GET', {'cost': 0.1})
|
226
227
|
sapi_get_staking_stakingrecord = sapiGetStakingStakingRecord = Entry('staking/stakingRecord', 'sapi', 'GET', {'cost': 0.1})
|
ccxt/abstract/binanceus.py
CHANGED
@@ -221,6 +221,7 @@ class ImplicitAPI:
|
|
221
221
|
sapi_get_portfolio_margin_asset_leverage = sapiGetPortfolioMarginAssetLeverage = Entry('portfolio/margin-asset-leverage', 'sapi', 'GET', {'cost': 5})
|
222
222
|
sapi_get_portfolio_balance = sapiGetPortfolioBalance = Entry('portfolio/balance', 'sapi', 'GET', {'cost': 2})
|
223
223
|
sapi_get_portfolio_negative_balance_exchange_record = sapiGetPortfolioNegativeBalanceExchangeRecord = Entry('portfolio/negative-balance-exchange-record', 'sapi', 'GET', {'cost': 2})
|
224
|
+
sapi_get_portfolio_pmloan_history = sapiGetPortfolioPmloanHistory = Entry('portfolio/pmloan-history', 'sapi', 'GET', {'cost': 5})
|
224
225
|
sapi_get_staking_productlist = sapiGetStakingProductList = Entry('staking/productList', 'sapi', 'GET', {'cost': 0.1})
|
225
226
|
sapi_get_staking_position = sapiGetStakingPosition = Entry('staking/position', 'sapi', 'GET', {'cost': 0.1})
|
226
227
|
sapi_get_staking_stakingrecord = sapiGetStakingStakingRecord = Entry('staking/stakingRecord', 'sapi', 'GET', {'cost': 0.1})
|
ccxt/abstract/binanceusdm.py
CHANGED
@@ -221,6 +221,7 @@ class ImplicitAPI:
|
|
221
221
|
sapi_get_portfolio_margin_asset_leverage = sapiGetPortfolioMarginAssetLeverage = Entry('portfolio/margin-asset-leverage', 'sapi', 'GET', {'cost': 5})
|
222
222
|
sapi_get_portfolio_balance = sapiGetPortfolioBalance = Entry('portfolio/balance', 'sapi', 'GET', {'cost': 2})
|
223
223
|
sapi_get_portfolio_negative_balance_exchange_record = sapiGetPortfolioNegativeBalanceExchangeRecord = Entry('portfolio/negative-balance-exchange-record', 'sapi', 'GET', {'cost': 2})
|
224
|
+
sapi_get_portfolio_pmloan_history = sapiGetPortfolioPmloanHistory = Entry('portfolio/pmloan-history', 'sapi', 'GET', {'cost': 5})
|
224
225
|
sapi_get_staking_productlist = sapiGetStakingProductList = Entry('staking/productList', 'sapi', 'GET', {'cost': 0.1})
|
225
226
|
sapi_get_staking_position = sapiGetStakingPosition = Entry('staking/position', 'sapi', 'GET', {'cost': 0.1})
|
226
227
|
sapi_get_staking_stakingrecord = sapiGetStakingStakingRecord = Entry('staking/stakingRecord', 'sapi', 'GET', {'cost': 0.1})
|
@@ -0,0 +1,20 @@
|
|
1
|
+
from ccxt.base.types import Entry
|
2
|
+
|
3
|
+
|
4
|
+
class ImplicitAPI:
|
5
|
+
public_get_v2_user_api_exchange_markets = publicGetV2UserApiExchangeMarkets = Entry('v2/user-api/exchange/markets', 'public', 'GET', {'cost': 1})
|
6
|
+
public_get_v2_user_api_exchange_market_price = publicGetV2UserApiExchangeMarketPrice = Entry('v2/user-api/exchange/market/price', 'public', 'GET', {'cost': 1})
|
7
|
+
public_get_v1_exchange_market_assets = publicGetV1ExchangeMarketAssets = Entry('v1/exchange/market/assets', 'public', 'GET', {'cost': 1})
|
8
|
+
public_get_v1_exchange_market_order_book_currencypair = publicGetV1ExchangeMarketOrderBookCurrencyPair = Entry('v1/exchange/market/order-book/{currencyPair}', 'public', 'GET', {'cost': 1})
|
9
|
+
public_get_v1_exchange_market_tickers = publicGetV1ExchangeMarketTickers = Entry('v1/exchange/market/tickers', 'public', 'GET', {'cost': 1})
|
10
|
+
public_get_v1_exchange_market_trades_currencypair = publicGetV1ExchangeMarketTradesCurrencyPair = Entry('v1/exchange/market/trades/{currencyPair}', 'public', 'GET', {'cost': 1})
|
11
|
+
private_get_v2_user_api_exchange_orders = privateGetV2UserApiExchangeOrders = Entry('v2/user-api/exchange/orders', 'private', 'GET', {'cost': 1})
|
12
|
+
private_get_v2_user_api_exchange_orders_history = privateGetV2UserApiExchangeOrdersHistory = Entry('v2/user-api/exchange/orders/history', 'private', 'GET', {'cost': 1})
|
13
|
+
private_get_v2_user_api_exchange_account_balance = privateGetV2UserApiExchangeAccountBalance = Entry('v2/user-api/exchange/account/balance', 'private', 'GET', {'cost': 1})
|
14
|
+
private_get_v2_user_api_exchange_account_tariffs = privateGetV2UserApiExchangeAccountTariffs = Entry('v2/user-api/exchange/account/tariffs', 'private', 'GET', {'cost': 1})
|
15
|
+
private_get_v2_user_api_payment_services = privateGetV2UserApiPaymentServices = Entry('v2/user-api/payment/services', 'private', 'GET', {'cost': 1})
|
16
|
+
private_get_v2_user_api_payout_services = privateGetV2UserApiPayoutServices = Entry('v2/user-api/payout/services', 'private', 'GET', {'cost': 1})
|
17
|
+
private_get_v2_user_api_transaction_list = privateGetV2UserApiTransactionList = Entry('v2/user-api/transaction/list', 'private', 'GET', {'cost': 1})
|
18
|
+
private_post_v2_user_api_exchange_orders = privatePostV2UserApiExchangeOrders = Entry('v2/user-api/exchange/orders', 'private', 'POST', {'cost': 1})
|
19
|
+
private_post_v2_user_api_exchange_orders_market = privatePostV2UserApiExchangeOrdersMarket = Entry('v2/user-api/exchange/orders/market', 'private', 'POST', {'cost': 1})
|
20
|
+
private_delete_v2_user_api_exchange_orders_orderid = privateDeleteV2UserApiExchangeOrdersOrderId = Entry('v2/user-api/exchange/orders/{orderId}', 'private', 'DELETE', {'cost': 1})
|
ccxt/abstract/derive.py
ADDED
@@ -0,0 +1,117 @@
|
|
1
|
+
from ccxt.base.types import Entry
|
2
|
+
|
3
|
+
|
4
|
+
class ImplicitAPI:
|
5
|
+
public_get_get_all_currencies = publicGetGetAllCurrencies = Entry('get_all_currencies', 'public', 'GET', {})
|
6
|
+
public_post_build_register_session_key_tx = publicPostBuildRegisterSessionKeyTx = Entry('build_register_session_key_tx', 'public', 'POST', {})
|
7
|
+
public_post_register_session_key = publicPostRegisterSessionKey = Entry('register_session_key', 'public', 'POST', {})
|
8
|
+
public_post_deregister_session_key = publicPostDeregisterSessionKey = Entry('deregister_session_key', 'public', 'POST', {})
|
9
|
+
public_post_login = publicPostLogin = Entry('login', 'public', 'POST', {})
|
10
|
+
public_post_statistics = publicPostStatistics = Entry('statistics', 'public', 'POST', {})
|
11
|
+
public_post_get_all_currencies = publicPostGetAllCurrencies = Entry('get_all_currencies', 'public', 'POST', {})
|
12
|
+
public_post_get_currency = publicPostGetCurrency = Entry('get_currency', 'public', 'POST', {})
|
13
|
+
public_post_get_instrument = publicPostGetInstrument = Entry('get_instrument', 'public', 'POST', {})
|
14
|
+
public_post_get_all_instruments = publicPostGetAllInstruments = Entry('get_all_instruments', 'public', 'POST', {})
|
15
|
+
public_post_get_instruments = publicPostGetInstruments = Entry('get_instruments', 'public', 'POST', {})
|
16
|
+
public_post_get_ticker = publicPostGetTicker = Entry('get_ticker', 'public', 'POST', {})
|
17
|
+
public_post_get_latest_signed_feeds = publicPostGetLatestSignedFeeds = Entry('get_latest_signed_feeds', 'public', 'POST', {})
|
18
|
+
public_post_get_option_settlement_prices = publicPostGetOptionSettlementPrices = Entry('get_option_settlement_prices', 'public', 'POST', {})
|
19
|
+
public_post_get_spot_feed_history = publicPostGetSpotFeedHistory = Entry('get_spot_feed_history', 'public', 'POST', {})
|
20
|
+
public_post_get_spot_feed_history_candles = publicPostGetSpotFeedHistoryCandles = Entry('get_spot_feed_history_candles', 'public', 'POST', {})
|
21
|
+
public_post_get_funding_rate_history = publicPostGetFundingRateHistory = Entry('get_funding_rate_history', 'public', 'POST', {})
|
22
|
+
public_post_get_trade_history = publicPostGetTradeHistory = Entry('get_trade_history', 'public', 'POST', {})
|
23
|
+
public_post_get_option_settlement_history = publicPostGetOptionSettlementHistory = Entry('get_option_settlement_history', 'public', 'POST', {})
|
24
|
+
public_post_get_liquidation_history = publicPostGetLiquidationHistory = Entry('get_liquidation_history', 'public', 'POST', {})
|
25
|
+
public_post_get_interest_rate_history = publicPostGetInterestRateHistory = Entry('get_interest_rate_history', 'public', 'POST', {})
|
26
|
+
public_post_get_transaction = publicPostGetTransaction = Entry('get_transaction', 'public', 'POST', {})
|
27
|
+
public_post_get_margin = publicPostGetMargin = Entry('get_margin', 'public', 'POST', {})
|
28
|
+
public_post_margin_watch = publicPostMarginWatch = Entry('margin_watch', 'public', 'POST', {})
|
29
|
+
public_post_validate_invite_code = publicPostValidateInviteCode = Entry('validate_invite_code', 'public', 'POST', {})
|
30
|
+
public_post_get_points = publicPostGetPoints = Entry('get_points', 'public', 'POST', {})
|
31
|
+
public_post_get_all_points = publicPostGetAllPoints = Entry('get_all_points', 'public', 'POST', {})
|
32
|
+
public_post_get_points_leaderboard = publicPostGetPointsLeaderboard = Entry('get_points_leaderboard', 'public', 'POST', {})
|
33
|
+
public_post_get_descendant_tree = publicPostGetDescendantTree = Entry('get_descendant_tree', 'public', 'POST', {})
|
34
|
+
public_post_get_tree_roots = publicPostGetTreeRoots = Entry('get_tree_roots', 'public', 'POST', {})
|
35
|
+
public_post_get_swell_percent_points = publicPostGetSwellPercentPoints = Entry('get_swell_percent_points', 'public', 'POST', {})
|
36
|
+
public_post_get_vault_assets = publicPostGetVaultAssets = Entry('get_vault_assets', 'public', 'POST', {})
|
37
|
+
public_post_get_etherfi_effective_balances = publicPostGetEtherfiEffectiveBalances = Entry('get_etherfi_effective_balances', 'public', 'POST', {})
|
38
|
+
public_post_get_kelp_effective_balances = publicPostGetKelpEffectiveBalances = Entry('get_kelp_effective_balances', 'public', 'POST', {})
|
39
|
+
public_post_get_bridge_balances = publicPostGetBridgeBalances = Entry('get_bridge_balances', 'public', 'POST', {})
|
40
|
+
public_post_get_ethena_participants = publicPostGetEthenaParticipants = Entry('get_ethena_participants', 'public', 'POST', {})
|
41
|
+
public_post_get_vault_share = publicPostGetVaultShare = Entry('get_vault_share', 'public', 'POST', {})
|
42
|
+
public_post_get_vault_statistics = publicPostGetVaultStatistics = Entry('get_vault_statistics', 'public', 'POST', {})
|
43
|
+
public_post_get_vault_balances = publicPostGetVaultBalances = Entry('get_vault_balances', 'public', 'POST', {})
|
44
|
+
public_post_estimate_integrator_points = publicPostEstimateIntegratorPoints = Entry('estimate_integrator_points', 'public', 'POST', {})
|
45
|
+
public_post_create_subaccount_debug = publicPostCreateSubaccountDebug = Entry('create_subaccount_debug', 'public', 'POST', {})
|
46
|
+
public_post_deposit_debug = publicPostDepositDebug = Entry('deposit_debug', 'public', 'POST', {})
|
47
|
+
public_post_withdraw_debug = publicPostWithdrawDebug = Entry('withdraw_debug', 'public', 'POST', {})
|
48
|
+
public_post_send_quote_debug = publicPostSendQuoteDebug = Entry('send_quote_debug', 'public', 'POST', {})
|
49
|
+
public_post_execute_quote_debug = publicPostExecuteQuoteDebug = Entry('execute_quote_debug', 'public', 'POST', {})
|
50
|
+
public_post_get_invite_code = publicPostGetInviteCode = Entry('get_invite_code', 'public', 'POST', {})
|
51
|
+
public_post_register_invite = publicPostRegisterInvite = Entry('register_invite', 'public', 'POST', {})
|
52
|
+
public_post_get_time = publicPostGetTime = Entry('get_time', 'public', 'POST', {})
|
53
|
+
public_post_get_live_incidents = publicPostGetLiveIncidents = Entry('get_live_incidents', 'public', 'POST', {})
|
54
|
+
public_post_get_maker_programs = publicPostGetMakerPrograms = Entry('get_maker_programs', 'public', 'POST', {})
|
55
|
+
public_post_get_maker_program_scores = publicPostGetMakerProgramScores = Entry('get_maker_program_scores', 'public', 'POST', {})
|
56
|
+
private_post_get_account = privatePostGetAccount = Entry('get_account', 'private', 'POST', {})
|
57
|
+
private_post_create_subaccount = privatePostCreateSubaccount = Entry('create_subaccount', 'private', 'POST', {})
|
58
|
+
private_post_get_subaccount = privatePostGetSubaccount = Entry('get_subaccount', 'private', 'POST', {})
|
59
|
+
private_post_get_subaccounts = privatePostGetSubaccounts = Entry('get_subaccounts', 'private', 'POST', {})
|
60
|
+
private_post_get_all_portfolios = privatePostGetAllPortfolios = Entry('get_all_portfolios', 'private', 'POST', {})
|
61
|
+
private_post_change_subaccount_label = privatePostChangeSubaccountLabel = Entry('change_subaccount_label', 'private', 'POST', {})
|
62
|
+
private_post_get_notificationsv = privatePostGetNotificationsv = Entry('get_notificationsv', 'private', 'POST', {})
|
63
|
+
private_post_update_notifications = privatePostUpdateNotifications = Entry('update_notifications', 'private', 'POST', {})
|
64
|
+
private_post_deposit = privatePostDeposit = Entry('deposit', 'private', 'POST', {})
|
65
|
+
private_post_withdraw = privatePostWithdraw = Entry('withdraw', 'private', 'POST', {})
|
66
|
+
private_post_transfer_erc20 = privatePostTransferErc20 = Entry('transfer_erc20', 'private', 'POST', {})
|
67
|
+
private_post_transfer_position = privatePostTransferPosition = Entry('transfer_position', 'private', 'POST', {})
|
68
|
+
private_post_transfer_positions = privatePostTransferPositions = Entry('transfer_positions', 'private', 'POST', {})
|
69
|
+
private_post_order = privatePostOrder = Entry('order', 'private', 'POST', {})
|
70
|
+
private_post_replace = privatePostReplace = Entry('replace', 'private', 'POST', {})
|
71
|
+
private_post_order_debug = privatePostOrderDebug = Entry('order_debug', 'private', 'POST', {})
|
72
|
+
private_post_get_order = privatePostGetOrder = Entry('get_order', 'private', 'POST', {})
|
73
|
+
private_post_get_orders = privatePostGetOrders = Entry('get_orders', 'private', 'POST', {})
|
74
|
+
private_post_get_open_orders = privatePostGetOpenOrders = Entry('get_open_orders', 'private', 'POST', {})
|
75
|
+
private_post_cancel = privatePostCancel = Entry('cancel', 'private', 'POST', {})
|
76
|
+
private_post_cancel_by_label = privatePostCancelByLabel = Entry('cancel_by_label', 'private', 'POST', {})
|
77
|
+
private_post_cancel_by_nonce = privatePostCancelByNonce = Entry('cancel_by_nonce', 'private', 'POST', {})
|
78
|
+
private_post_cancel_by_instrument = privatePostCancelByInstrument = Entry('cancel_by_instrument', 'private', 'POST', {})
|
79
|
+
private_post_cancel_all = privatePostCancelAll = Entry('cancel_all', 'private', 'POST', {})
|
80
|
+
private_post_cancel_trigger_order = privatePostCancelTriggerOrder = Entry('cancel_trigger_order', 'private', 'POST', {})
|
81
|
+
private_post_get_order_history = privatePostGetOrderHistory = Entry('get_order_history', 'private', 'POST', {})
|
82
|
+
private_post_get_trade_history = privatePostGetTradeHistory = Entry('get_trade_history', 'private', 'POST', {})
|
83
|
+
private_post_get_deposit_history = privatePostGetDepositHistory = Entry('get_deposit_history', 'private', 'POST', {})
|
84
|
+
private_post_get_withdrawal_history = privatePostGetWithdrawalHistory = Entry('get_withdrawal_history', 'private', 'POST', {})
|
85
|
+
private_post_send_rfq = privatePostSendRfq = Entry('send_rfq', 'private', 'POST', {})
|
86
|
+
private_post_cancel_rfq = privatePostCancelRfq = Entry('cancel_rfq', 'private', 'POST', {})
|
87
|
+
private_post_cancel_batch_rfqs = privatePostCancelBatchRfqs = Entry('cancel_batch_rfqs', 'private', 'POST', {})
|
88
|
+
private_post_get_rfqs = privatePostGetRfqs = Entry('get_rfqs', 'private', 'POST', {})
|
89
|
+
private_post_poll_rfqs = privatePostPollRfqs = Entry('poll_rfqs', 'private', 'POST', {})
|
90
|
+
private_post_send_quote = privatePostSendQuote = Entry('send_quote', 'private', 'POST', {})
|
91
|
+
private_post_cancel_quote = privatePostCancelQuote = Entry('cancel_quote', 'private', 'POST', {})
|
92
|
+
private_post_cancel_batch_quotes = privatePostCancelBatchQuotes = Entry('cancel_batch_quotes', 'private', 'POST', {})
|
93
|
+
private_post_get_quotes = privatePostGetQuotes = Entry('get_quotes', 'private', 'POST', {})
|
94
|
+
private_post_poll_quotes = privatePostPollQuotes = Entry('poll_quotes', 'private', 'POST', {})
|
95
|
+
private_post_execute_quote = privatePostExecuteQuote = Entry('execute_quote', 'private', 'POST', {})
|
96
|
+
private_post_rfq_get_best_quote = privatePostRfqGetBestQuote = Entry('rfq_get_best_quote', 'private', 'POST', {})
|
97
|
+
private_post_get_margin = privatePostGetMargin = Entry('get_margin', 'private', 'POST', {})
|
98
|
+
private_post_get_collaterals = privatePostGetCollaterals = Entry('get_collaterals', 'private', 'POST', {})
|
99
|
+
private_post_get_positions = privatePostGetPositions = Entry('get_positions', 'private', 'POST', {})
|
100
|
+
private_post_get_option_settlement_history = privatePostGetOptionSettlementHistory = Entry('get_option_settlement_history', 'private', 'POST', {})
|
101
|
+
private_post_get_subaccount_value_history = privatePostGetSubaccountValueHistory = Entry('get_subaccount_value_history', 'private', 'POST', {})
|
102
|
+
private_post_expired_and_cancelled_history = privatePostExpiredAndCancelledHistory = Entry('expired_and_cancelled_history', 'private', 'POST', {})
|
103
|
+
private_post_get_funding_history = privatePostGetFundingHistory = Entry('get_funding_history', 'private', 'POST', {})
|
104
|
+
private_post_get_interest_history = privatePostGetInterestHistory = Entry('get_interest_history', 'private', 'POST', {})
|
105
|
+
private_post_get_erc20_transfer_history = privatePostGetErc20TransferHistory = Entry('get_erc20_transfer_history', 'private', 'POST', {})
|
106
|
+
private_post_get_liquidation_history = privatePostGetLiquidationHistory = Entry('get_liquidation_history', 'private', 'POST', {})
|
107
|
+
private_post_liquidate = privatePostLiquidate = Entry('liquidate', 'private', 'POST', {})
|
108
|
+
private_post_get_liquidator_history = privatePostGetLiquidatorHistory = Entry('get_liquidator_history', 'private', 'POST', {})
|
109
|
+
private_post_session_keys = privatePostSessionKeys = Entry('session_keys', 'private', 'POST', {})
|
110
|
+
private_post_edit_session_key = privatePostEditSessionKey = Entry('edit_session_key', 'private', 'POST', {})
|
111
|
+
private_post_register_scoped_session_key = privatePostRegisterScopedSessionKey = Entry('register_scoped_session_key', 'private', 'POST', {})
|
112
|
+
private_post_get_mmp_config = privatePostGetMmpConfig = Entry('get_mmp_config', 'private', 'POST', {})
|
113
|
+
private_post_set_mmp_config = privatePostSetMmpConfig = Entry('set_mmp_config', 'private', 'POST', {})
|
114
|
+
private_post_reset_mmp = privatePostResetMmp = Entry('reset_mmp', 'private', 'POST', {})
|
115
|
+
private_post_set_cancel_on_disconnect = privatePostSetCancelOnDisconnect = Entry('set_cancel_on_disconnect', 'private', 'POST', {})
|
116
|
+
private_post_get_invite_code = privatePostGetInviteCode = Entry('get_invite_code', 'private', 'POST', {})
|
117
|
+
private_post_register_invite = privatePostRegisterInvite = Entry('register_invite', 'private', 'POST', {})
|
ccxt/abstract/tradeogre.py
CHANGED
@@ -6,6 +6,7 @@ class ImplicitAPI:
|
|
6
6
|
public_get_orders_market = publicGetOrdersMarket = Entry('orders/{market}', 'public', 'GET', {'cost': 1})
|
7
7
|
public_get_ticker_market = publicGetTickerMarket = Entry('ticker/{market}', 'public', 'GET', {'cost': 1})
|
8
8
|
public_get_history_market = publicGetHistoryMarket = Entry('history/{market}', 'public', 'GET', {'cost': 1})
|
9
|
+
public_get_chart_interval_market = publicGetChartIntervalMarket = Entry('chart/{interval}/{market}', 'public', 'GET', {'cost': 1})
|
9
10
|
private_get_account_balance = privateGetAccountBalance = Entry('account/balance', 'private', 'GET', {'cost': 1})
|
10
11
|
private_get_account_balances = privateGetAccountBalances = Entry('account/balances', 'private', 'GET', {'cost': 1})
|
11
12
|
private_get_account_order_uuid = privateGetAccountOrderUuid = Entry('account/order/{uuid}', 'private', 'GET', {'cost': 1})
|
ccxt/abstract/whitebit.py
CHANGED
@@ -27,6 +27,7 @@ class ImplicitAPI:
|
|
27
27
|
v4_public_get_assets = v4PublicGetAssets = Entry('assets', ['v4', 'public'], 'GET', {})
|
28
28
|
v4_public_get_collateral_markets = v4PublicGetCollateralMarkets = Entry('collateral/markets', ['v4', 'public'], 'GET', {})
|
29
29
|
v4_public_get_fee = v4PublicGetFee = Entry('fee', ['v4', 'public'], 'GET', {})
|
30
|
+
v4_public_get_orderbook_depth_market = v4PublicGetOrderbookDepthMarket = Entry('orderbook/depth/{market}', ['v4', 'public'], 'GET', {})
|
30
31
|
v4_public_get_orderbook_market = v4PublicGetOrderbookMarket = Entry('orderbook/{market}', ['v4', 'public'], 'GET', {})
|
31
32
|
v4_public_get_ticker = v4PublicGetTicker = Entry('ticker', ['v4', 'public'], 'GET', {})
|
32
33
|
v4_public_get_trades_market = v4PublicGetTradesMarket = Entry('trades/{market}', ['v4', 'public'], 'GET', {})
|
@@ -35,12 +36,14 @@ class ImplicitAPI:
|
|
35
36
|
v4_public_get_markets = v4PublicGetMarkets = Entry('markets', ['v4', 'public'], 'GET', {})
|
36
37
|
v4_public_get_futures = v4PublicGetFutures = Entry('futures', ['v4', 'public'], 'GET', {})
|
37
38
|
v4_public_get_platform_status = v4PublicGetPlatformStatus = Entry('platform/status', ['v4', 'public'], 'GET', {})
|
39
|
+
v4_public_get_mining_pool = v4PublicGetMiningPool = Entry('mining-pool', ['v4', 'public'], 'GET', {})
|
38
40
|
v4_private_post_collateral_account_balance = v4PrivatePostCollateralAccountBalance = Entry('collateral-account/balance', ['v4', 'private'], 'POST', {})
|
39
41
|
v4_private_post_collateral_account_balance_summary = v4PrivatePostCollateralAccountBalanceSummary = Entry('collateral-account/balance-summary', ['v4', 'private'], 'POST', {})
|
40
42
|
v4_private_post_collateral_account_positions_history = v4PrivatePostCollateralAccountPositionsHistory = Entry('collateral-account/positions/history', ['v4', 'private'], 'POST', {})
|
41
43
|
v4_private_post_collateral_account_leverage = v4PrivatePostCollateralAccountLeverage = Entry('collateral-account/leverage', ['v4', 'private'], 'POST', {})
|
42
44
|
v4_private_post_collateral_account_positions_open = v4PrivatePostCollateralAccountPositionsOpen = Entry('collateral-account/positions/open', ['v4', 'private'], 'POST', {})
|
43
45
|
v4_private_post_collateral_account_summary = v4PrivatePostCollateralAccountSummary = Entry('collateral-account/summary', ['v4', 'private'], 'POST', {})
|
46
|
+
v4_private_post_collateral_account_funding_history = v4PrivatePostCollateralAccountFundingHistory = Entry('collateral-account/funding-history', ['v4', 'private'], 'POST', {})
|
44
47
|
v4_private_post_main_account_address = v4PrivatePostMainAccountAddress = Entry('main-account/address', ['v4', 'private'], 'POST', {})
|
45
48
|
v4_private_post_main_account_balance = v4PrivatePostMainAccountBalance = Entry('main-account/balance', ['v4', 'private'], 'POST', {})
|
46
49
|
v4_private_post_main_account_create_new_address = v4PrivatePostMainAccountCreateNewAddress = Entry('main-account/create-new-address', ['v4', 'private'], 'POST', {})
|
@@ -67,6 +70,7 @@ class ImplicitAPI:
|
|
67
70
|
v4_private_post_order_collateral_market = v4PrivatePostOrderCollateralMarket = Entry('order/collateral/market', ['v4', 'private'], 'POST', {})
|
68
71
|
v4_private_post_order_collateral_stop_limit = v4PrivatePostOrderCollateralStopLimit = Entry('order/collateral/stop-limit', ['v4', 'private'], 'POST', {})
|
69
72
|
v4_private_post_order_collateral_trigger_market = v4PrivatePostOrderCollateralTriggerMarket = Entry('order/collateral/trigger-market', ['v4', 'private'], 'POST', {})
|
73
|
+
v4_private_post_order_collateral_bulk = v4PrivatePostOrderCollateralBulk = Entry('order/collateral/bulk', ['v4', 'private'], 'POST', {})
|
70
74
|
v4_private_post_order_new = v4PrivatePostOrderNew = Entry('order/new', ['v4', 'private'], 'POST', {})
|
71
75
|
v4_private_post_order_market = v4PrivatePostOrderMarket = Entry('order/market', ['v4', 'private'], 'POST', {})
|
72
76
|
v4_private_post_order_stock_market = v4PrivatePostOrderStockMarket = Entry('order/stock_market', ['v4', 'private'], 'POST', {})
|
@@ -78,6 +82,7 @@ class ImplicitAPI:
|
|
78
82
|
v4_private_post_order_kill_switch_status = v4PrivatePostOrderKillSwitchStatus = Entry('order/kill-switch/status', ['v4', 'private'], 'POST', {})
|
79
83
|
v4_private_post_order_bulk = v4PrivatePostOrderBulk = Entry('order/bulk', ['v4', 'private'], 'POST', {})
|
80
84
|
v4_private_post_order_modify = v4PrivatePostOrderModify = Entry('order/modify', ['v4', 'private'], 'POST', {})
|
85
|
+
v4_private_post_order_conditional_cancel = v4PrivatePostOrderConditionalCancel = Entry('order/conditional-cancel', ['v4', 'private'], 'POST', {})
|
81
86
|
v4_private_post_orders = v4PrivatePostOrders = Entry('orders', ['v4', 'private'], 'POST', {})
|
82
87
|
v4_private_post_oco_orders = v4PrivatePostOcoOrders = Entry('oco-orders', ['v4', 'private'], 'POST', {})
|
83
88
|
v4_private_post_order_collateral_oco = v4PrivatePostOrderCollateralOco = Entry('order/collateral/oco', ['v4', 'private'], 'POST', {})
|
@@ -96,3 +101,14 @@ class ImplicitAPI:
|
|
96
101
|
v4_private_post_sub_account_unblock = v4PrivatePostSubAccountUnblock = Entry('sub-account/unblock', ['v4', 'private'], 'POST', {})
|
97
102
|
v4_private_post_sub_account_balances = v4PrivatePostSubAccountBalances = Entry('sub-account/balances', ['v4', 'private'], 'POST', {})
|
98
103
|
v4_private_post_sub_account_transfer_history = v4PrivatePostSubAccountTransferHistory = Entry('sub-account/transfer/history', ['v4', 'private'], 'POST', {})
|
104
|
+
v4_private_post_sub_account_api_key_create = v4PrivatePostSubAccountApiKeyCreate = Entry('sub-account/api-key/create', ['v4', 'private'], 'POST', {})
|
105
|
+
v4_private_post_sub_account_api_key_edit = v4PrivatePostSubAccountApiKeyEdit = Entry('sub-account/api-key/edit', ['v4', 'private'], 'POST', {})
|
106
|
+
v4_private_post_sub_account_api_key_delete = v4PrivatePostSubAccountApiKeyDelete = Entry('sub-account/api-key/delete', ['v4', 'private'], 'POST', {})
|
107
|
+
v4_private_post_sub_account_api_key_list = v4PrivatePostSubAccountApiKeyList = Entry('sub-account/api-key/list', ['v4', 'private'], 'POST', {})
|
108
|
+
v4_private_post_sub_account_api_key_reset = v4PrivatePostSubAccountApiKeyReset = Entry('sub-account/api-key/reset', ['v4', 'private'], 'POST', {})
|
109
|
+
v4_private_post_sub_account_api_key_ip_address_list = v4PrivatePostSubAccountApiKeyIpAddressList = Entry('sub-account/api-key/ip-address/list', ['v4', 'private'], 'POST', {})
|
110
|
+
v4_private_post_sub_account_api_key_ip_address_create = v4PrivatePostSubAccountApiKeyIpAddressCreate = Entry('sub-account/api-key/ip-address/create', ['v4', 'private'], 'POST', {})
|
111
|
+
v4_private_post_sub_account_api_key_ip_address_delete = v4PrivatePostSubAccountApiKeyIpAddressDelete = Entry('sub-account/api-key/ip-address/delete', ['v4', 'private'], 'POST', {})
|
112
|
+
v4_private_post_mining_rewards = v4PrivatePostMiningRewards = Entry('mining/rewards', ['v4', 'private'], 'POST', {})
|
113
|
+
v4_private_post_market_fee = v4PrivatePostMarketFee = Entry('market/fee', ['v4', 'private'], 'POST', {})
|
114
|
+
v4_private_post_conditional_orders = v4PrivatePostConditionalOrders = Entry('conditional-orders', ['v4', 'private'], 'POST', {})
|
ccxt/async_support/__init__.py
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
# -----------------------------------------------------------------------------
|
6
6
|
|
7
|
-
__version__ = '4.4.
|
7
|
+
__version__ = '4.4.68'
|
8
8
|
|
9
9
|
# -----------------------------------------------------------------------------
|
10
10
|
|
@@ -114,10 +114,11 @@ from ccxt.async_support.coinone import coinone
|
|
114
114
|
from ccxt.async_support.coinsph import coinsph # noqa: F401
|
115
115
|
from ccxt.async_support.coinspot import coinspot # noqa: F401
|
116
116
|
from ccxt.async_support.cryptocom import cryptocom # noqa: F401
|
117
|
-
from ccxt.async_support.
|
117
|
+
from ccxt.async_support.cryptomus import cryptomus # noqa: F401
|
118
118
|
from ccxt.async_support.defx import defx # noqa: F401
|
119
119
|
from ccxt.async_support.delta import delta # noqa: F401
|
120
120
|
from ccxt.async_support.deribit import deribit # noqa: F401
|
121
|
+
from ccxt.async_support.derive import derive # noqa: F401
|
121
122
|
from ccxt.async_support.digifinex import digifinex # noqa: F401
|
122
123
|
from ccxt.async_support.ellipx import ellipx # noqa: F401
|
123
124
|
from ccxt.async_support.exmo import exmo # noqa: F401
|
@@ -226,10 +227,11 @@ exchanges = [
|
|
226
227
|
'coinsph',
|
227
228
|
'coinspot',
|
228
229
|
'cryptocom',
|
229
|
-
'
|
230
|
+
'cryptomus',
|
230
231
|
'defx',
|
231
232
|
'delta',
|
232
233
|
'deribit',
|
234
|
+
'derive',
|
233
235
|
'digifinex',
|
234
236
|
'ellipx',
|
235
237
|
'exmo',
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# -----------------------------------------------------------------------------
|
4
4
|
|
5
|
-
__version__ = '4.4.
|
5
|
+
__version__ = '4.4.68'
|
6
6
|
|
7
7
|
# -----------------------------------------------------------------------------
|
8
8
|
|
@@ -24,7 +24,7 @@ from ccxt.async_support.base.throttler import Throttler
|
|
24
24
|
|
25
25
|
# -----------------------------------------------------------------------------
|
26
26
|
|
27
|
-
from ccxt.base.errors import BaseError,
|
27
|
+
from ccxt.base.errors import BaseError, BadSymbol, BadRequest, BadResponse, ExchangeError, ExchangeNotAvailable, RequestTimeout, NotSupported, NullResponse, InvalidAddress, RateLimitExceeded, OperationFailed
|
28
28
|
from ccxt.base.types import OrderType, OrderSide, OrderRequest, CancellationRequest
|
29
29
|
|
30
30
|
# -----------------------------------------------------------------------------
|
@@ -881,14 +881,15 @@ class Exchange(BaseExchange):
|
|
881
881
|
try:
|
882
882
|
return await self.fetch(request['url'], request['method'], request['headers'], request['body'])
|
883
883
|
except Exception as e:
|
884
|
-
if isinstance(e,
|
884
|
+
if isinstance(e, OperationFailed):
|
885
885
|
if i < retries:
|
886
886
|
if self.verbose:
|
887
887
|
self.log('Request failed with the error: ' + str(e) + ', retrying ' + (i + str(1)) + ' of ' + str(retries) + '...')
|
888
888
|
if (retryDelay is not None) and (retryDelay != 0):
|
889
889
|
await self.sleep(retryDelay)
|
890
|
-
|
891
|
-
|
890
|
+
else:
|
891
|
+
raise e
|
892
|
+
else:
|
892
893
|
raise e
|
893
894
|
return None # self line is never reached, but exists for c# value return requirement
|
894
895
|
|
ccxt/async_support/binance.py
CHANGED
@@ -504,6 +504,7 @@ class binance(Exchange, ImplicitAPI):
|
|
504
504
|
'portfolio/margin-asset-leverage': 5, # Weight(IP): 50 => cost = 0.1 * 50 = 5
|
505
505
|
'portfolio/balance': 2,
|
506
506
|
'portfolio/negative-balance-exchange-record': 2,
|
507
|
+
'portfolio/pmloan-history': 5,
|
507
508
|
# staking
|
508
509
|
'staking/productList': 0.1,
|
509
510
|
'staking/position': 0.1,
|
@@ -6164,11 +6165,11 @@ class binance(Exchange, ImplicitAPI):
|
|
6164
6165
|
"""
|
6165
6166
|
await self.load_markets()
|
6166
6167
|
market = self.market(symbol)
|
6168
|
+
# don't handle/omit params here, omitting happens inside createOrderRequest
|
6167
6169
|
marketType = self.safe_string(params, 'type', market['type'])
|
6168
|
-
marginMode =
|
6169
|
-
|
6170
|
-
isPortfolioMargin =
|
6171
|
-
isPortfolioMargin, params = self.handle_option_and_params_2(params, 'createOrder', 'papi', 'portfolioMargin', False)
|
6170
|
+
marginMode = self.safe_string(params, 'marginMode')
|
6171
|
+
porfolioOptionsValue = self.safe_bool_2(self.options, 'papi', 'portfolioMargin', False)
|
6172
|
+
isPortfolioMargin = self.safe_bool_2(params, 'papi', 'portfolioMargin', porfolioOptionsValue)
|
6172
6173
|
triggerPrice = self.safe_string_2(params, 'triggerPrice', 'stopPrice')
|
6173
6174
|
stopLossPrice = self.safe_string(params, 'stopLossPrice')
|
6174
6175
|
takeProfitPrice = self.safe_string(params, 'takeProfitPrice')
|
@@ -6180,8 +6181,9 @@ class binance(Exchange, ImplicitAPI):
|
|
6180
6181
|
sor = self.safe_bool_2(params, 'sor', 'SOR', False)
|
6181
6182
|
test = self.safe_bool(params, 'test', False)
|
6182
6183
|
params = self.omit(params, ['sor', 'SOR', 'test'])
|
6183
|
-
if isPortfolioMargin:
|
6184
|
-
|
6184
|
+
# if isPortfolioMargin:
|
6185
|
+
# params['portfolioMargin'] = isPortfolioMargin
|
6186
|
+
# }
|
6185
6187
|
request = self.create_order_request(symbol, type, side, amount, price, params)
|
6186
6188
|
response = None
|
6187
6189
|
if market['option']:
|
ccxt/async_support/bitget.py
CHANGED
@@ -2339,16 +2339,16 @@ class bitget(Exchange, ImplicitAPI):
|
|
2339
2339
|
paginate, params = self.handle_option_and_params(params, 'fetchDeposits', 'paginate')
|
2340
2340
|
if paginate:
|
2341
2341
|
return await self.fetch_paginated_call_cursor('fetchDeposits', None, since, limit, params, 'idLessThan', 'idLessThan', None, 100)
|
2342
|
-
if code is None:
|
2343
|
-
raise ArgumentsRequired(self.id + ' fetchDeposits() requires a `code` argument')
|
2344
|
-
currency = self.currency(code)
|
2345
2342
|
if since is None:
|
2346
2343
|
since = self.milliseconds() - 7776000000 # 90 days
|
2347
2344
|
request: dict = {
|
2348
|
-
'coin': currency['id'],
|
2349
2345
|
'startTime': since,
|
2350
2346
|
'endTime': self.milliseconds(),
|
2351
2347
|
}
|
2348
|
+
currency = None
|
2349
|
+
if code is not None:
|
2350
|
+
currency = self.currency(code)
|
2351
|
+
request['coin'] = currency['id']
|
2352
2352
|
if limit is not None:
|
2353
2353
|
request['limit'] = limit
|
2354
2354
|
request, params = self.handle_until_option('endTime', request, params)
|
@@ -2377,7 +2377,7 @@ class bitget(Exchange, ImplicitAPI):
|
|
2377
2377
|
# }
|
2378
2378
|
#
|
2379
2379
|
rawTransactions = self.safe_list(response, 'data', [])
|
2380
|
-
return self.parse_transactions(rawTransactions,
|
2380
|
+
return self.parse_transactions(rawTransactions, None, since, limit)
|
2381
2381
|
|
2382
2382
|
async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
|
2383
2383
|
"""
|
@@ -4670,7 +4670,8 @@ class bitget(Exchange, ImplicitAPI):
|
|
4670
4670
|
elif isTakeProfitOrder or isStopLossOrder:
|
4671
4671
|
request['marginCoin'] = market['settleId']
|
4672
4672
|
request['size'] = self.amount_to_precision(symbol, amount)
|
4673
|
-
|
4673
|
+
if price is not None:
|
4674
|
+
request['executePrice'] = self.price_to_precision(symbol, price)
|
4674
4675
|
if isStopLossOrder:
|
4675
4676
|
request['triggerPrice'] = self.price_to_precision(symbol, stopLossPrice)
|
4676
4677
|
elif isTakeProfitOrder:
|
@@ -5451,10 +5452,11 @@ class bitget(Exchange, ImplicitAPI):
|
|
5451
5452
|
:param int [since]: timestamp in ms of the earliest order
|
5452
5453
|
:param int [limit]: the max number of closed orders to return
|
5453
5454
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
5454
|
-
:param int [params.until]: the latest time in ms to fetch
|
5455
|
+
:param int [params.until]: the latest time in ms to fetch orders for
|
5456
|
+
:param str [params.planType]: *contract stop only* 'normal_plan': average trigger order, 'profit_loss': opened tp/sl orders, 'track_plan': trailing stop order, default is 'normal_plan'
|
5457
|
+
:param boolean [params.trigger]: set to True for fetching trigger orders
|
5455
5458
|
:param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
5456
5459
|
:param str [params.isPlan]: *swap only* 'plan' for stop orders and 'profit_loss' for tp/sl orders, default is 'plan'
|
5457
|
-
:param str [params.productType]: *contract only* 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
|
5458
5460
|
:param boolean [params.trailing]: set to True if you want to fetch trailing orders
|
5459
5461
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
5460
5462
|
"""
|
@@ -5477,10 +5479,11 @@ class bitget(Exchange, ImplicitAPI):
|
|
5477
5479
|
:param int [since]: timestamp in ms of the earliest order
|
5478
5480
|
:param int [limit]: the max number of canceled orders to return
|
5479
5481
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
5480
|
-
:param int [params.until]: the latest time in ms to fetch
|
5482
|
+
:param int [params.until]: the latest time in ms to fetch orders for
|
5483
|
+
:param str [params.planType]: *contract stop only* 'normal_plan': average trigger order, 'profit_loss': opened tp/sl orders, 'track_plan': trailing stop order, default is 'normal_plan'
|
5484
|
+
:param boolean [params.trigger]: set to True for fetching trigger orders
|
5481
5485
|
:param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
5482
5486
|
:param str [params.isPlan]: *swap only* 'plan' for stop orders and 'profit_loss' for tp/sl orders, default is 'plan'
|
5483
|
-
:param str [params.productType]: *contract only* 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
|
5484
5487
|
:param boolean [params.trailing]: set to True if you want to fetch trailing orders
|
5485
5488
|
:returns dict: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
5486
5489
|
"""
|
@@ -5503,6 +5506,12 @@ class bitget(Exchange, ImplicitAPI):
|
|
5503
5506
|
:param int [since]: the earliest time in ms to fetch orders for
|
5504
5507
|
:param int [limit]: the maximum number of order structures to retrieve
|
5505
5508
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
5509
|
+
:param int [params.until]: the latest time in ms to fetch orders for
|
5510
|
+
:param str [params.planType]: *contract stop only* 'normal_plan': average trigger order, 'profit_loss': opened tp/sl orders, 'track_plan': trailing stop order, default is 'normal_plan'
|
5511
|
+
:param boolean [params.trigger]: set to True for fetching trigger orders
|
5512
|
+
:param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
5513
|
+
:param str [params.isPlan]: *swap only* 'plan' for stop orders and 'profit_loss' for tp/sl orders, default is 'plan'
|
5514
|
+
:param boolean [params.trailing]: set to True if you want to fetch trailing orders
|
5506
5515
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
5507
5516
|
"""
|
5508
5517
|
await self.load_markets()
|
@@ -5531,7 +5540,7 @@ class bitget(Exchange, ImplicitAPI):
|
|
5531
5540
|
cursorReceived = 'endId'
|
5532
5541
|
return await self.fetch_paginated_call_cursor('fetchCanceledAndClosedOrders', symbol, since, limit, params, cursorReceived, 'idLessThan')
|
5533
5542
|
response = None
|
5534
|
-
trailing = self.
|
5543
|
+
trailing = self.safe_bool(params, 'trailing')
|
5535
5544
|
trigger = self.safe_bool_2(params, 'stop', 'trigger')
|
5536
5545
|
params = self.omit(params, ['stop', 'trigger', 'trailing'])
|
5537
5546
|
request, params = self.handle_until_option('endTime', request, params)
|
@@ -5571,11 +5580,12 @@ class bitget(Exchange, ImplicitAPI):
|
|
5571
5580
|
productType = None
|
5572
5581
|
productType, params = self.handle_product_type_and_params(market, params)
|
5573
5582
|
request['productType'] = productType
|
5583
|
+
planTypeDefined = self.safe_string(params, 'planType') is not None
|
5574
5584
|
if trailing:
|
5575
5585
|
planType = self.safe_string(params, 'planType', 'track_plan')
|
5576
5586
|
request['planType'] = planType
|
5577
5587
|
response = await self.privateMixGetV2MixOrderOrdersPlanHistory(self.extend(request, params))
|
5578
|
-
elif trigger:
|
5588
|
+
elif trigger or planTypeDefined:
|
5579
5589
|
planType = self.safe_string(params, 'planType', 'normal_plan')
|
5580
5590
|
request['planType'] = planType
|
5581
5591
|
response = await self.privateMixGetV2MixOrderOrdersPlanHistory(self.extend(request, params))
|
ccxt/async_support/bitrue.py
CHANGED
@@ -1386,6 +1386,7 @@ class bitrue(Exchange, ImplicitAPI):
|
|
1386
1386
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
1387
1387
|
:param int [limit]: the maximum amount of candles to fetch
|
1388
1388
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1389
|
+
:param int [params.until]: the latest time in ms to fetch transfers for
|
1389
1390
|
:returns int[][]: A list of candles ordered, open, high, low, close, volume
|
1390
1391
|
"""
|
1391
1392
|
await self.load_markets()
|
@@ -1416,8 +1417,10 @@ class bitrue(Exchange, ImplicitAPI):
|
|
1416
1417
|
}
|
1417
1418
|
if limit is not None:
|
1418
1419
|
request['limit'] = limit
|
1419
|
-
|
1420
|
-
|
1420
|
+
until = self.safe_integer(params, 'until')
|
1421
|
+
if until is not None:
|
1422
|
+
params = self.omit(params, 'until')
|
1423
|
+
request['fromIdx'] = until
|
1421
1424
|
response = await self.spotV1PublicGetMarketKline(self.extend(request, params))
|
1422
1425
|
data = self.safe_list(response, 'data', [])
|
1423
1426
|
else:
|
@@ -1631,7 +1634,7 @@ class bitrue(Exchange, ImplicitAPI):
|
|
1631
1634
|
tickers: dict = {}
|
1632
1635
|
for i in range(0, len(data)):
|
1633
1636
|
ticker = self.safe_dict(data, i, {})
|
1634
|
-
market = self.
|
1637
|
+
market = self.safe_market(self.safe_string(ticker, 'symbol'))
|
1635
1638
|
tickers[market['id']] = ticker
|
1636
1639
|
return self.parse_tickers(tickers, symbols)
|
1637
1640
|
|
ccxt/async_support/bybit.py
CHANGED
@@ -8826,7 +8826,7 @@ classic accounts only/ spot not supported* fetches information on an order made
|
|
8826
8826
|
feedback = self.id + ' private api uses /user/v3/private/query-api to check if you have a unified account. The API key of user id must own one of permissions: "Account Transfer", "Subaccount Transfer", "Withdrawal" ' + body
|
8827
8827
|
else:
|
8828
8828
|
feedback = self.id + ' ' + body
|
8829
|
-
if body.find('Withdraw address chain or destination tag are not equal'):
|
8829
|
+
if body.find('Withdraw address chain or destination tag are not equal') > -1:
|
8830
8830
|
feedback = feedback + '; You might also need to ensure the address is whitelisted'
|
8831
8831
|
self.throw_broadly_matched_exception(self.exceptions['broad'], body, feedback)
|
8832
8832
|
self.throw_exactly_matched_exception(self.exceptions['exact'], errorCode, feedback)
|