ccxt 4.4.35__py2.py3-none-any.whl → 4.4.36__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 CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.4.35'
25
+ __version__ = '4.4.36'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -135,6 +135,7 @@ from ccxt.coinsph import coinsph # noqa: F4
135
135
  from ccxt.coinspot import coinspot # noqa: F401
136
136
  from ccxt.cryptocom import cryptocom # noqa: F401
137
137
  from ccxt.currencycom import currencycom # noqa: F401
138
+ from ccxt.defx import defx # noqa: F401
138
139
  from ccxt.delta import delta # noqa: F401
139
140
  from ccxt.deribit import deribit # noqa: F401
140
141
  from ccxt.digifinex import digifinex # noqa: F401
@@ -247,6 +248,7 @@ exchanges = [
247
248
  'coinspot',
248
249
  'cryptocom',
249
250
  'currencycom',
251
+ 'defx',
250
252
  'delta',
251
253
  'deribit',
252
254
  'digifinex',
ccxt/abstract/bitopro.py CHANGED
@@ -20,6 +20,7 @@ class ImplicitAPI:
20
20
  private_get_wallet_withdraw_currency_id_id = privateGetWalletWithdrawCurrencyIdId = Entry('wallet/withdraw/{currency}/id/{id}', 'private', 'GET', {'cost': 1})
21
21
  private_get_wallet_deposithistory_currency = privateGetWalletDepositHistoryCurrency = Entry('wallet/depositHistory/{currency}', 'private', 'GET', {'cost': 1})
22
22
  private_get_wallet_withdrawhistory_currency = privateGetWalletWithdrawHistoryCurrency = Entry('wallet/withdrawHistory/{currency}', 'private', 'GET', {'cost': 1})
23
+ private_get_orders_open = privateGetOrdersOpen = Entry('orders/open', 'private', 'GET', {'cost': 1})
23
24
  private_post_orders_pair = privatePostOrdersPair = Entry('orders/{pair}', 'private', 'POST', {'cost': 0.5})
24
25
  private_post_orders_batch = privatePostOrdersBatch = Entry('orders/batch', 'private', 'POST', {'cost': 6.666666666666667})
25
26
  private_post_wallet_withdraw_currency = privatePostWalletWithdrawCurrency = Entry('wallet/withdraw/{currency}', 'private', 'POST', {'cost': 10})
ccxt/abstract/bybit.py CHANGED
@@ -51,6 +51,8 @@ class ImplicitAPI:
51
51
  public_get_v5_spot_cross_margin_trade_data = publicGetV5SpotCrossMarginTradeData = Entry('v5/spot-cross-margin-trade/data', 'public', 'GET', {'cost': 5})
52
52
  public_get_v5_spot_cross_margin_trade_pledge_token = publicGetV5SpotCrossMarginTradePledgeToken = Entry('v5/spot-cross-margin-trade/pledge-token', 'public', 'GET', {'cost': 5})
53
53
  public_get_v5_spot_cross_margin_trade_borrow_token = publicGetV5SpotCrossMarginTradeBorrowToken = Entry('v5/spot-cross-margin-trade/borrow-token', 'public', 'GET', {'cost': 5})
54
+ public_get_v5_crypto_loan_collateral_data = publicGetV5CryptoLoanCollateralData = Entry('v5/crypto-loan/collateral-data', 'public', 'GET', {'cost': 5})
55
+ public_get_v5_crypto_loan_loanable_data = publicGetV5CryptoLoanLoanableData = Entry('v5/crypto-loan/loanable-data', 'public', 'GET', {'cost': 5})
54
56
  public_get_v5_ins_loan_product_infos = publicGetV5InsLoanProductInfos = Entry('v5/ins-loan/product-infos', 'public', 'GET', {'cost': 5})
55
57
  public_get_v5_ins_loan_ensure_tokens_convert = publicGetV5InsLoanEnsureTokensConvert = Entry('v5/ins-loan/ensure-tokens-convert', 'public', 'GET', {'cost': 5})
56
58
  private_get_v5_market_instruments_info = privateGetV5MarketInstrumentsInfo = Entry('v5/market/instruments-info', 'private', 'GET', {'cost': 5})
@@ -162,6 +164,7 @@ class ImplicitAPI:
162
164
  private_get_v5_user_aff_customer_info = privateGetV5UserAffCustomerInfo = Entry('v5/user/aff-customer-info', 'private', 'GET', {'cost': 5})
163
165
  private_get_v5_user_del_submember = privateGetV5UserDelSubmember = Entry('v5/user/del-submember', 'private', 'GET', {'cost': 5})
164
166
  private_get_v5_user_submembers = privateGetV5UserSubmembers = Entry('v5/user/submembers', 'private', 'GET', {'cost': 5})
167
+ private_get_v5_affiliate_aff_user_list = privateGetV5AffiliateAffUserList = Entry('v5/affiliate/aff-user-list', 'private', 'GET', {'cost': 5})
165
168
  private_get_v5_spot_lever_token_order_record = privateGetV5SpotLeverTokenOrderRecord = Entry('v5/spot-lever-token/order-record', 'private', 'GET', {'cost': 1})
166
169
  private_get_v5_spot_margin_trade_interest_rate_history = privateGetV5SpotMarginTradeInterestRateHistory = Entry('v5/spot-margin-trade/interest-rate-history', 'private', 'GET', {'cost': 5})
167
170
  private_get_v5_spot_margin_trade_state = privateGetV5SpotMarginTradeState = Entry('v5/spot-margin-trade/state', 'private', 'GET', {'cost': 5})
@@ -169,6 +172,12 @@ class ImplicitAPI:
169
172
  private_get_v5_spot_cross_margin_trade_account = privateGetV5SpotCrossMarginTradeAccount = Entry('v5/spot-cross-margin-trade/account', 'private', 'GET', {'cost': 1})
170
173
  private_get_v5_spot_cross_margin_trade_orders = privateGetV5SpotCrossMarginTradeOrders = Entry('v5/spot-cross-margin-trade/orders', 'private', 'GET', {'cost': 1})
171
174
  private_get_v5_spot_cross_margin_trade_repay_history = privateGetV5SpotCrossMarginTradeRepayHistory = Entry('v5/spot-cross-margin-trade/repay-history', 'private', 'GET', {'cost': 1})
175
+ private_get_v5_crypto_loan_borrowable_collateralisable_number = privateGetV5CryptoLoanBorrowableCollateralisableNumber = Entry('v5/crypto-loan/borrowable-collateralisable-number', 'private', 'GET', {'cost': 5})
176
+ private_get_v5_crypto_loan_ongoing_orders = privateGetV5CryptoLoanOngoingOrders = Entry('v5/crypto-loan/ongoing-orders', 'private', 'GET', {'cost': 5})
177
+ private_get_v5_crypto_loan_repayment_history = privateGetV5CryptoLoanRepaymentHistory = Entry('v5/crypto-loan/repayment-history', 'private', 'GET', {'cost': 5})
178
+ private_get_v5_crypto_loan_borrow_history = privateGetV5CryptoLoanBorrowHistory = Entry('v5/crypto-loan/borrow-history', 'private', 'GET', {'cost': 5})
179
+ private_get_v5_crypto_loan_max_collateral_amount = privateGetV5CryptoLoanMaxCollateralAmount = Entry('v5/crypto-loan/max-collateral-amount', 'private', 'GET', {'cost': 5})
180
+ private_get_v5_crypto_loan_adjustment_history = privateGetV5CryptoLoanAdjustmentHistory = Entry('v5/crypto-loan/adjustment-history', 'private', 'GET', {'cost': 5})
172
181
  private_get_v5_ins_loan_product_infos = privateGetV5InsLoanProductInfos = Entry('v5/ins-loan/product-infos', 'private', 'GET', {'cost': 5})
173
182
  private_get_v5_ins_loan_ensure_tokens_convert = privateGetV5InsLoanEnsureTokensConvert = Entry('v5/ins-loan/ensure-tokens-convert', 'private', 'GET', {'cost': 5})
174
183
  private_get_v5_ins_loan_loan_order = privateGetV5InsLoanLoanOrder = Entry('v5/ins-loan/loan-order', 'private', 'GET', {'cost': 5})
@@ -283,6 +292,9 @@ class ImplicitAPI:
283
292
  private_post_v5_spot_cross_margin_trade_loan = privatePostV5SpotCrossMarginTradeLoan = Entry('v5/spot-cross-margin-trade/loan', 'private', 'POST', {'cost': 2.5})
284
293
  private_post_v5_spot_cross_margin_trade_repay = privatePostV5SpotCrossMarginTradeRepay = Entry('v5/spot-cross-margin-trade/repay', 'private', 'POST', {'cost': 2.5})
285
294
  private_post_v5_spot_cross_margin_trade_switch = privatePostV5SpotCrossMarginTradeSwitch = Entry('v5/spot-cross-margin-trade/switch', 'private', 'POST', {'cost': 2.5})
295
+ private_post_v5_crypto_loan_borrow = privatePostV5CryptoLoanBorrow = Entry('v5/crypto-loan/borrow', 'private', 'POST', {'cost': 5})
296
+ private_post_v5_crypto_loan_repay = privatePostV5CryptoLoanRepay = Entry('v5/crypto-loan/repay', 'private', 'POST', {'cost': 5})
297
+ private_post_v5_crypto_loan_adjust_ltv = privatePostV5CryptoLoanAdjustLtv = Entry('v5/crypto-loan/adjust-ltv', 'private', 'POST', {'cost': 5})
286
298
  private_post_v5_ins_loan_association_uid = privatePostV5InsLoanAssociationUid = Entry('v5/ins-loan/association-uid', 'private', 'POST', {'cost': 5})
287
299
  private_post_v5_lending_purchase = privatePostV5LendingPurchase = Entry('v5/lending/purchase', 'private', 'POST', {'cost': 5})
288
300
  private_post_v5_lending_redeem = privatePostV5LendingRedeem = Entry('v5/lending/redeem', 'private', 'POST', {'cost': 5})
@@ -290,3 +302,6 @@ class ImplicitAPI:
290
302
  private_post_v5_account_set_collateral_switch = privatePostV5AccountSetCollateralSwitch = Entry('v5/account/set-collateral-switch', 'private', 'POST', {'cost': 5})
291
303
  private_post_v5_account_set_collateral_switch_batch = privatePostV5AccountSetCollateralSwitchBatch = Entry('v5/account/set-collateral-switch-batch', 'private', 'POST', {'cost': 5})
292
304
  private_post_v5_account_demo_apply_money = privatePostV5AccountDemoApplyMoney = Entry('v5/account/demo-apply-money', 'private', 'POST', {'cost': 5})
305
+ private_post_v5_broker_award_info = privatePostV5BrokerAwardInfo = Entry('v5/broker/award/info', 'private', 'POST', {'cost': 5})
306
+ private_post_v5_broker_award_distribute_award = privatePostV5BrokerAwardDistributeAward = Entry('v5/broker/award/distribute-award', 'private', 'POST', {'cost': 5})
307
+ private_post_v5_broker_award_distribution_record = privatePostV5BrokerAwardDistributionRecord = Entry('v5/broker/award/distribution-record', 'private', 'POST', {'cost': 5})
ccxt/abstract/defx.py ADDED
@@ -0,0 +1,69 @@
1
+ from ccxt.base.types import Entry
2
+
3
+
4
+ class ImplicitAPI:
5
+ v1_public_get_healthcheck_ping = v1PublicGetHealthcheckPing = Entry('healthcheck/ping', ['v1', 'public'], 'GET', {'cost': 1})
6
+ v1_public_get_symbols_symbol_ohlc = v1PublicGetSymbolsSymbolOhlc = Entry('symbols/{symbol}/ohlc', ['v1', 'public'], 'GET', {'cost': 1})
7
+ v1_public_get_symbols_symbol_trades = v1PublicGetSymbolsSymbolTrades = Entry('symbols/{symbol}/trades', ['v1', 'public'], 'GET', {'cost': 1})
8
+ v1_public_get_symbols_symbol_prices = v1PublicGetSymbolsSymbolPrices = Entry('symbols/{symbol}/prices', ['v1', 'public'], 'GET', {'cost': 1})
9
+ v1_public_get_symbols_symbol_ticker_24hr = v1PublicGetSymbolsSymbolTicker24hr = Entry('symbols/{symbol}/ticker/24hr', ['v1', 'public'], 'GET', {'cost': 1})
10
+ v1_public_get_symbols_symbol_depth_level_slab = v1PublicGetSymbolsSymbolDepthLevelSlab = Entry('symbols/{symbol}/depth/{level}/{slab}', ['v1', 'public'], 'GET', {'cost': 1})
11
+ v1_public_get_ticker_24hragg = v1PublicGetTicker24HrAgg = Entry('ticker/24HrAgg', ['v1', 'public'], 'GET', {'cost': 1})
12
+ v1_public_get_c_markets = v1PublicGetCMarkets = Entry('c/markets', ['v1', 'public'], 'GET', {'cost': 1})
13
+ v1_public_get_c_markets_metadata = v1PublicGetCMarketsMetadata = Entry('c/markets/metadata', ['v1', 'public'], 'GET', {'cost': 1})
14
+ v1_public_get_analytics_market_stats_newusers = v1PublicGetAnalyticsMarketStatsNewUsers = Entry('analytics/market/stats/newUsers', ['v1', 'public'], 'GET', {'cost': 1})
15
+ v1_public_get_analytics_market_stats_tvl = v1PublicGetAnalyticsMarketStatsTvl = Entry('analytics/market/stats/tvl', ['v1', 'public'], 'GET', {'cost': 1})
16
+ v1_public_get_analytics_market_stats_volumebyinstrument = v1PublicGetAnalyticsMarketStatsVolumeByInstrument = Entry('analytics/market/stats/volumeByInstrument', ['v1', 'public'], 'GET', {'cost': 1})
17
+ v1_public_get_analytics_market_stats_liquidation = v1PublicGetAnalyticsMarketStatsLiquidation = Entry('analytics/market/stats/liquidation', ['v1', 'public'], 'GET', {'cost': 1})
18
+ v1_public_get_analytics_market_stats_totalvolume = v1PublicGetAnalyticsMarketStatsTotalVolume = Entry('analytics/market/stats/totalVolume', ['v1', 'public'], 'GET', {'cost': 1})
19
+ v1_public_get_analytics_market_stats_openinterest = v1PublicGetAnalyticsMarketStatsOpenInterest = Entry('analytics/market/stats/openInterest', ['v1', 'public'], 'GET', {'cost': 1})
20
+ v1_public_get_analytics_market_stats_totaltrades = v1PublicGetAnalyticsMarketStatsTotalTrades = Entry('analytics/market/stats/totalTrades', ['v1', 'public'], 'GET', {'cost': 1})
21
+ v1_public_get_analytics_market_stats_basis = v1PublicGetAnalyticsMarketStatsBasis = Entry('analytics/market/stats/basis', ['v1', 'public'], 'GET', {'cost': 1})
22
+ v1_public_get_analytics_market_stats_insurancefund = v1PublicGetAnalyticsMarketStatsInsuranceFund = Entry('analytics/market/stats/insuranceFund', ['v1', 'public'], 'GET', {'cost': 1})
23
+ v1_public_get_analytics_market_stats_longandshortratio = v1PublicGetAnalyticsMarketStatsLongAndShortRatio = Entry('analytics/market/stats/longAndShortRatio', ['v1', 'public'], 'GET', {'cost': 1})
24
+ v1_public_get_analytics_market_stats_fundingrate = v1PublicGetAnalyticsMarketStatsFundingRate = Entry('analytics/market/stats/fundingRate', ['v1', 'public'], 'GET', {'cost': 1})
25
+ v1_public_get_analytics_market_overview = v1PublicGetAnalyticsMarketOverview = Entry('analytics/market/overview', ['v1', 'public'], 'GET', {'cost': 1})
26
+ v1_public_get_explorer_search = v1PublicGetExplorerSearch = Entry('explorer/search', ['v1', 'public'], 'GET', {'cost': 1})
27
+ v1_public_get_explorer_transactions = v1PublicGetExplorerTransactions = Entry('explorer/transactions', ['v1', 'public'], 'GET', {'cost': 1})
28
+ v1_public_get_explorer_blocks = v1PublicGetExplorerBlocks = Entry('explorer/blocks', ['v1', 'public'], 'GET', {'cost': 1})
29
+ v1_private_get_api_order_orderid = v1PrivateGetApiOrderOrderId = Entry('api/order/{orderId}', ['v1', 'private'], 'GET', {'cost': 1})
30
+ v1_private_get_api_orders = v1PrivateGetApiOrders = Entry('api/orders', ['v1', 'private'], 'GET', {'cost': 1})
31
+ v1_private_get_api_orders_oco_parentorderid = v1PrivateGetApiOrdersOcoParentOrderId = Entry('api/orders/oco/{parentOrderId}', ['v1', 'private'], 'GET', {'cost': 1})
32
+ v1_private_get_api_trades = v1PrivateGetApiTrades = Entry('api/trades', ['v1', 'private'], 'GET', {'cost': 1})
33
+ v1_private_get_api_position_active = v1PrivateGetApiPositionActive = Entry('api/position/active', ['v1', 'private'], 'GET', {'cost': 1})
34
+ v1_private_get_api_users_metadata_leverage = v1PrivateGetApiUsersMetadataLeverage = Entry('api/users/metadata/leverage', ['v1', 'private'], 'GET', {'cost': 1})
35
+ v1_private_get_api_users_metadata_feemultiplier = v1PrivateGetApiUsersMetadataFeeMultiplier = Entry('api/users/metadata/feeMultiplier', ['v1', 'private'], 'GET', {'cost': 1})
36
+ v1_private_get_api_users_metadata_slippage = v1PrivateGetApiUsersMetadataSlippage = Entry('api/users/metadata/slippage', ['v1', 'private'], 'GET', {'cost': 1})
37
+ v1_private_get_api_users_referral = v1PrivateGetApiUsersReferral = Entry('api/users/referral', ['v1', 'private'], 'GET', {'cost': 1})
38
+ v1_private_get_api_users_apikeys = v1PrivateGetApiUsersApikeys = Entry('api/users/apikeys', ['v1', 'private'], 'GET', {'cost': 1})
39
+ v1_private_get_connection_signature_message_evm = v1PrivateGetConnectionSignatureMessageEvm = Entry('connection-signature-message/evm', ['v1', 'private'], 'GET', {'cost': 1})
40
+ v1_private_get_api_users_profile_wallets = v1PrivateGetApiUsersProfileWallets = Entry('api/users/profile/wallets', ['v1', 'private'], 'GET', {'cost': 1})
41
+ v1_private_get_api_notifications = v1PrivateGetApiNotifications = Entry('api/notifications', ['v1', 'private'], 'GET', {'cost': 1})
42
+ v1_private_get_api_wallet_balance = v1PrivateGetApiWalletBalance = Entry('api/wallet/balance', ['v1', 'private'], 'GET', {'cost': 1})
43
+ v1_private_get_api_wallet_transactions = v1PrivateGetApiWalletTransactions = Entry('api/wallet/transactions', ['v1', 'private'], 'GET', {'cost': 1})
44
+ v1_private_get_api_analytics_user_overview = v1PrivateGetApiAnalyticsUserOverview = Entry('api/analytics/user/overview', ['v1', 'private'], 'GET', {'cost': 1})
45
+ v1_private_get_api_analytics_user_pnl = v1PrivateGetApiAnalyticsUserPnl = Entry('api/analytics/user/pnl', ['v1', 'private'], 'GET', {'cost': 1})
46
+ v1_private_get_api_analytics_points_overview = v1PrivateGetApiAnalyticsPointsOverview = Entry('api/analytics/points/overview', ['v1', 'private'], 'GET', {'cost': 1})
47
+ v1_private_get_api_analytics_points_history = v1PrivateGetApiAnalyticsPointsHistory = Entry('api/analytics/points/history', ['v1', 'private'], 'GET', {'cost': 1})
48
+ v1_private_post_api_order = v1PrivatePostApiOrder = Entry('api/order', ['v1', 'private'], 'POST', {'cost': 1})
49
+ v1_private_post_api_position_oco = v1PrivatePostApiPositionOco = Entry('api/position/oco', ['v1', 'private'], 'POST', {'cost': 1})
50
+ v1_private_post_api_users_socket_listenkeys = v1PrivatePostApiUsersSocketListenKeys = Entry('api/users/socket/listenKeys', ['v1', 'private'], 'POST', {'cost': 1})
51
+ v1_private_post_api_users_metadata_leverage = v1PrivatePostApiUsersMetadataLeverage = Entry('api/users/metadata/leverage', ['v1', 'private'], 'POST', {'cost': 1})
52
+ v1_private_post_api_users_metadata_feemultiplier = v1PrivatePostApiUsersMetadataFeeMultiplier = Entry('api/users/metadata/feeMultiplier', ['v1', 'private'], 'POST', {'cost': 1})
53
+ v1_private_post_api_users_metadata_slippage = v1PrivatePostApiUsersMetadataSlippage = Entry('api/users/metadata/slippage', ['v1', 'private'], 'POST', {'cost': 1})
54
+ v1_private_post_api_users_referral_recordreferralsignup = v1PrivatePostApiUsersReferralRecordReferralSignup = Entry('api/users/referral/recordReferralSignup', ['v1', 'private'], 'POST', {'cost': 1})
55
+ v1_private_post_api_users_apikeys = v1PrivatePostApiUsersApikeys = Entry('api/users/apikeys', ['v1', 'private'], 'POST', {'cost': 1})
56
+ v1_private_post_api_users_profile_wallets = v1PrivatePostApiUsersProfileWallets = Entry('api/users/profile/wallets', ['v1', 'private'], 'POST', {'cost': 1})
57
+ v1_private_post_api_transfers_withdrawal = v1PrivatePostApiTransfersWithdrawal = Entry('api/transfers/withdrawal', ['v1', 'private'], 'POST', {'cost': 1})
58
+ v1_private_post_api_transfers_bridge_withdrawal = v1PrivatePostApiTransfersBridgeWithdrawal = Entry('api/transfers/bridge/withdrawal', ['v1', 'private'], 'POST', {'cost': 1})
59
+ v1_private_put_api_position_updatepositionmargin = v1PrivatePutApiPositionUpdatePositionMargin = Entry('api/position/updatePositionMargin', ['v1', 'private'], 'PUT', {'cost': 1})
60
+ v1_private_put_api_users_socket_listenkeys_listenkey = v1PrivatePutApiUsersSocketListenKeysListenKey = Entry('api/users/socket/listenKeys/{listenKey}', ['v1', 'private'], 'PUT', {'cost': 1})
61
+ v1_private_put_api_users_apikeys_accesskey_status = v1PrivatePutApiUsersApikeysAccessKeyStatus = Entry('api/users/apikeys/{accessKey}/status', ['v1', 'private'], 'PUT', {'cost': 1})
62
+ v1_private_put_api_users_referral = v1PrivatePutApiUsersReferral = Entry('api/users/referral', ['v1', 'private'], 'PUT', {'cost': 1})
63
+ v1_private_patch_api_users_apikeys_accesskey = v1PrivatePatchApiUsersApikeysAccessKey = Entry('api/users/apikeys/{accessKey}', ['v1', 'private'], 'PATCH', {'cost': 1})
64
+ v1_private_delete_api_orders_allopen = v1PrivateDeleteApiOrdersAllOpen = Entry('api/orders/allOpen', ['v1', 'private'], 'DELETE', {'cost': 1})
65
+ v1_private_delete_api_order_orderid = v1PrivateDeleteApiOrderOrderId = Entry('api/order/{orderId}', ['v1', 'private'], 'DELETE', {'cost': 1})
66
+ v1_private_delete_api_position_positionid = v1PrivateDeleteApiPositionPositionId = Entry('api/position/{positionId}', ['v1', 'private'], 'DELETE', {'cost': 1})
67
+ v1_private_delete_api_position_all = v1PrivateDeleteApiPositionAll = Entry('api/position/all', ['v1', 'private'], 'DELETE', {'cost': 1})
68
+ v1_private_delete_api_users_socket_listenkeys_listenkey = v1PrivateDeleteApiUsersSocketListenKeysListenKey = Entry('api/users/socket/listenKeys/{listenKey}', ['v1', 'private'], 'DELETE', {'cost': 1})
69
+ v1_private_delete_api_users_apikeys_accesskey = v1PrivateDeleteApiUsersApikeysAccessKey = Entry('api/users/apikeys/{accessKey}', ['v1', 'private'], 'DELETE', {'cost': 1})
ccxt/abstract/deribit.py CHANGED
@@ -59,6 +59,7 @@ class ImplicitAPI:
59
59
  private_get_enable_api_key = privateGetEnableApiKey = Entry('enable_api_key', 'private', 'GET', {'cost': 1})
60
60
  private_get_get_access_log = privateGetGetAccessLog = Entry('get_access_log', 'private', 'GET', {'cost': 1})
61
61
  private_get_get_account_summary = privateGetGetAccountSummary = Entry('get_account_summary', 'private', 'GET', {'cost': 1})
62
+ private_get_get_account_summaries = privateGetGetAccountSummaries = Entry('get_account_summaries', 'private', 'GET', {'cost': 1})
62
63
  private_get_get_affiliate_program_info = privateGetGetAffiliateProgramInfo = Entry('get_affiliate_program_info', 'private', 'GET', {'cost': 1})
63
64
  private_get_get_email_language = privateGetGetEmailLanguage = Entry('get_email_language', 'private', 'GET', {'cost': 1})
64
65
  private_get_get_new_announcements = privateGetGetNewAnnouncements = Entry('get_new_announcements', 'private', 'GET', {'cost': 1})
ccxt/abstract/gate.py CHANGED
@@ -32,6 +32,7 @@ class ImplicitAPI:
32
32
  public_futures_get_settle_contract_stats = publicFuturesGetSettleContractStats = Entry('{settle}/contract_stats', ['public', 'futures'], 'GET', {'cost': 1})
33
33
  public_futures_get_settle_index_constituents_index = publicFuturesGetSettleIndexConstituentsIndex = Entry('{settle}/index_constituents/{index}', ['public', 'futures'], 'GET', {'cost': 1})
34
34
  public_futures_get_settle_liq_orders = publicFuturesGetSettleLiqOrders = Entry('{settle}/liq_orders', ['public', 'futures'], 'GET', {'cost': 1})
35
+ public_futures_get_settle_risk_limit_tiers = publicFuturesGetSettleRiskLimitTiers = Entry('{settle}/risk_limit_tiers', ['public', 'futures'], 'GET', {'cost': 1})
35
36
  public_delivery_get_settle_contracts = publicDeliveryGetSettleContracts = Entry('{settle}/contracts', ['public', 'delivery'], 'GET', {'cost': 1})
36
37
  public_delivery_get_settle_contracts_contract = publicDeliveryGetSettleContractsContract = Entry('{settle}/contracts/{contract}', ['public', 'delivery'], 'GET', {'cost': 1})
37
38
  public_delivery_get_settle_order_book = publicDeliveryGetSettleOrderBook = Entry('{settle}/order_book', ['public', 'delivery'], 'GET', {'cost': 1})
@@ -54,11 +55,13 @@ class ImplicitAPI:
54
55
  public_earn_get_uni_currencies = publicEarnGetUniCurrencies = Entry('uni/currencies', ['public', 'earn'], 'GET', {'cost': 1})
55
56
  public_earn_get_uni_currencies_currency = publicEarnGetUniCurrenciesCurrency = Entry('uni/currencies/{currency}', ['public', 'earn'], 'GET', {'cost': 1})
56
57
  private_withdrawals_post_withdrawals = privateWithdrawalsPostWithdrawals = Entry('withdrawals', ['private', 'withdrawals'], 'POST', {'cost': 20})
58
+ private_withdrawals_post_push = privateWithdrawalsPostPush = Entry('push', ['private', 'withdrawals'], 'POST', {'cost': 1})
57
59
  private_withdrawals_delete_withdrawals_withdrawal_id = privateWithdrawalsDeleteWithdrawalsWithdrawalId = Entry('withdrawals/{withdrawal_id}', ['private', 'withdrawals'], 'DELETE', {'cost': 1})
58
60
  private_wallet_get_deposit_address = privateWalletGetDepositAddress = Entry('deposit_address', ['private', 'wallet'], 'GET', {'cost': 1})
59
61
  private_wallet_get_withdrawals = privateWalletGetWithdrawals = Entry('withdrawals', ['private', 'wallet'], 'GET', {'cost': 1})
60
62
  private_wallet_get_deposits = privateWalletGetDeposits = Entry('deposits', ['private', 'wallet'], 'GET', {'cost': 1})
61
63
  private_wallet_get_sub_account_transfers = privateWalletGetSubAccountTransfers = Entry('sub_account_transfers', ['private', 'wallet'], 'GET', {'cost': 1})
64
+ private_wallet_get_order_status = privateWalletGetOrderStatus = Entry('order_status', ['private', 'wallet'], 'GET', {'cost': 1})
62
65
  private_wallet_get_withdraw_status = privateWalletGetWithdrawStatus = Entry('withdraw_status', ['private', 'wallet'], 'GET', {'cost': 1})
63
66
  private_wallet_get_sub_account_balances = privateWalletGetSubAccountBalances = Entry('sub_account_balances', ['private', 'wallet'], 'GET', {'cost': 2.5})
64
67
  private_wallet_get_sub_account_margin_balances = privateWalletGetSubAccountMarginBalances = Entry('sub_account_margin_balances', ['private', 'wallet'], 'GET', {'cost': 2.5})
@@ -69,6 +72,7 @@ class ImplicitAPI:
69
72
  private_wallet_get_total_balance = privateWalletGetTotalBalance = Entry('total_balance', ['private', 'wallet'], 'GET', {'cost': 2.5})
70
73
  private_wallet_get_small_balance = privateWalletGetSmallBalance = Entry('small_balance', ['private', 'wallet'], 'GET', {'cost': 1})
71
74
  private_wallet_get_small_balance_history = privateWalletGetSmallBalanceHistory = Entry('small_balance_history', ['private', 'wallet'], 'GET', {'cost': 1})
75
+ private_wallet_get_push = privateWalletGetPush = Entry('push', ['private', 'wallet'], 'GET', {'cost': 1})
72
76
  private_wallet_post_transfers = privateWalletPostTransfers = Entry('transfers', ['private', 'wallet'], 'POST', {'cost': 2.5})
73
77
  private_wallet_post_sub_account_transfers = privateWalletPostSubAccountTransfers = Entry('sub_account_transfers', ['private', 'wallet'], 'POST', {'cost': 2.5})
74
78
  private_wallet_post_sub_account_to_sub_account = privateWalletPostSubAccountToSubAccount = Entry('sub_account_to_sub_account', ['private', 'wallet'], 'POST', {'cost': 2.5})
@@ -95,9 +99,12 @@ class ImplicitAPI:
95
99
  private_unified_get_risk_units = privateUnifiedGetRiskUnits = Entry('risk_units', ['private', 'unified'], 'GET', {'cost': 1.3333333333333333})
96
100
  private_unified_get_unified_mode = privateUnifiedGetUnifiedMode = Entry('unified_mode', ['private', 'unified'], 'GET', {'cost': 1.3333333333333333})
97
101
  private_unified_get_loan_margin_tiers = privateUnifiedGetLoanMarginTiers = Entry('loan_margin_tiers', ['private', 'unified'], 'GET', {'cost': 1.3333333333333333})
102
+ private_unified_get_leverage_user_currency_config = privateUnifiedGetLeverageUserCurrencyConfig = Entry('leverage/user_currency_config', ['private', 'unified'], 'GET', {'cost': 1.3333333333333333})
103
+ private_unified_get_leverage_user_currency_setting = privateUnifiedGetLeverageUserCurrencySetting = Entry('leverage/user_currency_setting', ['private', 'unified'], 'GET', {'cost': 1.3333333333333333})
98
104
  private_unified_post_account_mode = privateUnifiedPostAccountMode = Entry('account_mode', ['private', 'unified'], 'POST', {'cost': 1.3333333333333333})
99
105
  private_unified_post_loans = privateUnifiedPostLoans = Entry('loans', ['private', 'unified'], 'POST', {'cost': 13.333333333333334})
100
106
  private_unified_post_portfolio_calculator = privateUnifiedPostPortfolioCalculator = Entry('portfolio_calculator', ['private', 'unified'], 'POST', {'cost': 1.3333333333333333})
107
+ private_unified_post_leverage_user_currency_setting = privateUnifiedPostLeverageUserCurrencySetting = Entry('leverage/user_currency_setting', ['private', 'unified'], 'POST', {'cost': 1.3333333333333333})
101
108
  private_unified_put_unified_mode = privateUnifiedPutUnifiedMode = Entry('unified_mode', ['private', 'unified'], 'PUT', {'cost': 1.3333333333333333})
102
109
  private_spot_get_fee = privateSpotGetFee = Entry('fee', ['private', 'spot'], 'GET', {'cost': 1})
103
110
  private_spot_get_batch_fee = privateSpotGetBatchFee = Entry('batch_fee', ['private', 'spot'], 'GET', {'cost': 1})
@@ -226,7 +233,11 @@ class ImplicitAPI:
226
233
  private_options_get_orders = privateOptionsGetOrders = Entry('orders', ['private', 'options'], 'GET', {'cost': 1.3333333333333333})
227
234
  private_options_get_orders_order_id = privateOptionsGetOrdersOrderId = Entry('orders/{order_id}', ['private', 'options'], 'GET', {'cost': 1.3333333333333333})
228
235
  private_options_get_my_trades = privateOptionsGetMyTrades = Entry('my_trades', ['private', 'options'], 'GET', {'cost': 1.3333333333333333})
236
+ private_options_get_mmp = privateOptionsGetMmp = Entry('mmp', ['private', 'options'], 'GET', {'cost': 1.3333333333333333})
229
237
  private_options_post_orders = privateOptionsPostOrders = Entry('orders', ['private', 'options'], 'POST', {'cost': 1.3333333333333333})
238
+ private_options_post_countdown_cancel_all = privateOptionsPostCountdownCancelAll = Entry('countdown_cancel_all', ['private', 'options'], 'POST', {'cost': 1.3333333333333333})
239
+ private_options_post_mmp = privateOptionsPostMmp = Entry('mmp', ['private', 'options'], 'POST', {'cost': 1.3333333333333333})
240
+ private_options_post_mmp_reset = privateOptionsPostMmpReset = Entry('mmp/reset', ['private', 'options'], 'POST', {'cost': 1.3333333333333333})
230
241
  private_options_delete_orders = privateOptionsDeleteOrders = Entry('orders', ['private', 'options'], 'DELETE', {'cost': 1.3333333333333333})
231
242
  private_options_delete_orders_order_id = privateOptionsDeleteOrdersOrderId = Entry('orders/{order_id}', ['private', 'options'], 'DELETE', {'cost': 1.3333333333333333})
232
243
  private_earn_get_uni_currencies = privateEarnGetUniCurrencies = Entry('uni/currencies', ['private', 'earn'], 'GET', {'cost': 1.3333333333333333})
@@ -254,6 +265,7 @@ class ImplicitAPI:
254
265
  private_loan_get_multi_collateral_currencies = privateLoanGetMultiCollateralCurrencies = Entry('multi_collateral/currencies', ['private', 'loan'], 'GET', {'cost': 1.3333333333333333})
255
266
  private_loan_get_multi_collateral_ltv = privateLoanGetMultiCollateralLtv = Entry('multi_collateral/ltv', ['private', 'loan'], 'GET', {'cost': 1.3333333333333333})
256
267
  private_loan_get_multi_collateral_fixed_rate = privateLoanGetMultiCollateralFixedRate = Entry('multi_collateral/fixed_rate', ['private', 'loan'], 'GET', {'cost': 1.3333333333333333})
268
+ private_loan_get_multi_collateral_current_rate = privateLoanGetMultiCollateralCurrentRate = Entry('multi_collateral/current_rate', ['private', 'loan'], 'GET', {'cost': 1.3333333333333333})
257
269
  private_loan_post_collateral_orders = privateLoanPostCollateralOrders = Entry('collateral/orders', ['private', 'loan'], 'POST', {'cost': 1.3333333333333333})
258
270
  private_loan_post_collateral_repay = privateLoanPostCollateralRepay = Entry('collateral/repay', ['private', 'loan'], 'POST', {'cost': 1.3333333333333333})
259
271
  private_loan_post_collateral_collaterals = privateLoanPostCollateralCollaterals = Entry('collateral/collaterals', ['private', 'loan'], 'POST', {'cost': 1.3333333333333333})
@@ -261,8 +273,10 @@ class ImplicitAPI:
261
273
  private_loan_post_multi_collateral_repay = privateLoanPostMultiCollateralRepay = Entry('multi_collateral/repay', ['private', 'loan'], 'POST', {'cost': 1.3333333333333333})
262
274
  private_loan_post_multi_collateral_mortgage = privateLoanPostMultiCollateralMortgage = Entry('multi_collateral/mortgage', ['private', 'loan'], 'POST', {'cost': 1.3333333333333333})
263
275
  private_account_get_detail = privateAccountGetDetail = Entry('detail', ['private', 'account'], 'GET', {'cost': 1.3333333333333333})
276
+ private_account_get_rate_limit = privateAccountGetRateLimit = Entry('rate_limit', ['private', 'account'], 'GET', {'cost': 1.3333333333333333})
264
277
  private_account_get_stp_groups = privateAccountGetStpGroups = Entry('stp_groups', ['private', 'account'], 'GET', {'cost': 1.3333333333333333})
265
278
  private_account_get_stp_groups_stp_id_users = privateAccountGetStpGroupsStpIdUsers = Entry('stp_groups/{stp_id}/users', ['private', 'account'], 'GET', {'cost': 1.3333333333333333})
279
+ private_account_get_stp_groups_debit_fee = privateAccountGetStpGroupsDebitFee = Entry('stp_groups/debit_fee', ['private', 'account'], 'GET', {'cost': 1.3333333333333333})
266
280
  private_account_post_stp_groups = privateAccountPostStpGroups = Entry('stp_groups', ['private', 'account'], 'POST', {'cost': 1.3333333333333333})
267
281
  private_account_post_stp_groups_stp_id_users = privateAccountPostStpGroupsStpIdUsers = Entry('stp_groups/{stp_id}/users', ['private', 'account'], 'POST', {'cost': 1.3333333333333333})
268
282
  private_account_delete_stp_groups_stp_id_users = privateAccountDeleteStpGroupsStpIdUsers = Entry('stp_groups/{stp_id}/users', ['private', 'account'], 'DELETE', {'cost': 1.3333333333333333})
ccxt/abstract/gateio.py CHANGED
@@ -32,6 +32,7 @@ class ImplicitAPI:
32
32
  public_futures_get_settle_contract_stats = publicFuturesGetSettleContractStats = Entry('{settle}/contract_stats', ['public', 'futures'], 'GET', {'cost': 1})
33
33
  public_futures_get_settle_index_constituents_index = publicFuturesGetSettleIndexConstituentsIndex = Entry('{settle}/index_constituents/{index}', ['public', 'futures'], 'GET', {'cost': 1})
34
34
  public_futures_get_settle_liq_orders = publicFuturesGetSettleLiqOrders = Entry('{settle}/liq_orders', ['public', 'futures'], 'GET', {'cost': 1})
35
+ public_futures_get_settle_risk_limit_tiers = publicFuturesGetSettleRiskLimitTiers = Entry('{settle}/risk_limit_tiers', ['public', 'futures'], 'GET', {'cost': 1})
35
36
  public_delivery_get_settle_contracts = publicDeliveryGetSettleContracts = Entry('{settle}/contracts', ['public', 'delivery'], 'GET', {'cost': 1})
36
37
  public_delivery_get_settle_contracts_contract = publicDeliveryGetSettleContractsContract = Entry('{settle}/contracts/{contract}', ['public', 'delivery'], 'GET', {'cost': 1})
37
38
  public_delivery_get_settle_order_book = publicDeliveryGetSettleOrderBook = Entry('{settle}/order_book', ['public', 'delivery'], 'GET', {'cost': 1})
@@ -54,11 +55,13 @@ class ImplicitAPI:
54
55
  public_earn_get_uni_currencies = publicEarnGetUniCurrencies = Entry('uni/currencies', ['public', 'earn'], 'GET', {'cost': 1})
55
56
  public_earn_get_uni_currencies_currency = publicEarnGetUniCurrenciesCurrency = Entry('uni/currencies/{currency}', ['public', 'earn'], 'GET', {'cost': 1})
56
57
  private_withdrawals_post_withdrawals = privateWithdrawalsPostWithdrawals = Entry('withdrawals', ['private', 'withdrawals'], 'POST', {'cost': 20})
58
+ private_withdrawals_post_push = privateWithdrawalsPostPush = Entry('push', ['private', 'withdrawals'], 'POST', {'cost': 1})
57
59
  private_withdrawals_delete_withdrawals_withdrawal_id = privateWithdrawalsDeleteWithdrawalsWithdrawalId = Entry('withdrawals/{withdrawal_id}', ['private', 'withdrawals'], 'DELETE', {'cost': 1})
58
60
  private_wallet_get_deposit_address = privateWalletGetDepositAddress = Entry('deposit_address', ['private', 'wallet'], 'GET', {'cost': 1})
59
61
  private_wallet_get_withdrawals = privateWalletGetWithdrawals = Entry('withdrawals', ['private', 'wallet'], 'GET', {'cost': 1})
60
62
  private_wallet_get_deposits = privateWalletGetDeposits = Entry('deposits', ['private', 'wallet'], 'GET', {'cost': 1})
61
63
  private_wallet_get_sub_account_transfers = privateWalletGetSubAccountTransfers = Entry('sub_account_transfers', ['private', 'wallet'], 'GET', {'cost': 1})
64
+ private_wallet_get_order_status = privateWalletGetOrderStatus = Entry('order_status', ['private', 'wallet'], 'GET', {'cost': 1})
62
65
  private_wallet_get_withdraw_status = privateWalletGetWithdrawStatus = Entry('withdraw_status', ['private', 'wallet'], 'GET', {'cost': 1})
63
66
  private_wallet_get_sub_account_balances = privateWalletGetSubAccountBalances = Entry('sub_account_balances', ['private', 'wallet'], 'GET', {'cost': 2.5})
64
67
  private_wallet_get_sub_account_margin_balances = privateWalletGetSubAccountMarginBalances = Entry('sub_account_margin_balances', ['private', 'wallet'], 'GET', {'cost': 2.5})
@@ -69,6 +72,7 @@ class ImplicitAPI:
69
72
  private_wallet_get_total_balance = privateWalletGetTotalBalance = Entry('total_balance', ['private', 'wallet'], 'GET', {'cost': 2.5})
70
73
  private_wallet_get_small_balance = privateWalletGetSmallBalance = Entry('small_balance', ['private', 'wallet'], 'GET', {'cost': 1})
71
74
  private_wallet_get_small_balance_history = privateWalletGetSmallBalanceHistory = Entry('small_balance_history', ['private', 'wallet'], 'GET', {'cost': 1})
75
+ private_wallet_get_push = privateWalletGetPush = Entry('push', ['private', 'wallet'], 'GET', {'cost': 1})
72
76
  private_wallet_post_transfers = privateWalletPostTransfers = Entry('transfers', ['private', 'wallet'], 'POST', {'cost': 2.5})
73
77
  private_wallet_post_sub_account_transfers = privateWalletPostSubAccountTransfers = Entry('sub_account_transfers', ['private', 'wallet'], 'POST', {'cost': 2.5})
74
78
  private_wallet_post_sub_account_to_sub_account = privateWalletPostSubAccountToSubAccount = Entry('sub_account_to_sub_account', ['private', 'wallet'], 'POST', {'cost': 2.5})
@@ -95,9 +99,12 @@ class ImplicitAPI:
95
99
  private_unified_get_risk_units = privateUnifiedGetRiskUnits = Entry('risk_units', ['private', 'unified'], 'GET', {'cost': 1.3333333333333333})
96
100
  private_unified_get_unified_mode = privateUnifiedGetUnifiedMode = Entry('unified_mode', ['private', 'unified'], 'GET', {'cost': 1.3333333333333333})
97
101
  private_unified_get_loan_margin_tiers = privateUnifiedGetLoanMarginTiers = Entry('loan_margin_tiers', ['private', 'unified'], 'GET', {'cost': 1.3333333333333333})
102
+ private_unified_get_leverage_user_currency_config = privateUnifiedGetLeverageUserCurrencyConfig = Entry('leverage/user_currency_config', ['private', 'unified'], 'GET', {'cost': 1.3333333333333333})
103
+ private_unified_get_leverage_user_currency_setting = privateUnifiedGetLeverageUserCurrencySetting = Entry('leverage/user_currency_setting', ['private', 'unified'], 'GET', {'cost': 1.3333333333333333})
98
104
  private_unified_post_account_mode = privateUnifiedPostAccountMode = Entry('account_mode', ['private', 'unified'], 'POST', {'cost': 1.3333333333333333})
99
105
  private_unified_post_loans = privateUnifiedPostLoans = Entry('loans', ['private', 'unified'], 'POST', {'cost': 13.333333333333334})
100
106
  private_unified_post_portfolio_calculator = privateUnifiedPostPortfolioCalculator = Entry('portfolio_calculator', ['private', 'unified'], 'POST', {'cost': 1.3333333333333333})
107
+ private_unified_post_leverage_user_currency_setting = privateUnifiedPostLeverageUserCurrencySetting = Entry('leverage/user_currency_setting', ['private', 'unified'], 'POST', {'cost': 1.3333333333333333})
101
108
  private_unified_put_unified_mode = privateUnifiedPutUnifiedMode = Entry('unified_mode', ['private', 'unified'], 'PUT', {'cost': 1.3333333333333333})
102
109
  private_spot_get_fee = privateSpotGetFee = Entry('fee', ['private', 'spot'], 'GET', {'cost': 1})
103
110
  private_spot_get_batch_fee = privateSpotGetBatchFee = Entry('batch_fee', ['private', 'spot'], 'GET', {'cost': 1})
@@ -226,7 +233,11 @@ class ImplicitAPI:
226
233
  private_options_get_orders = privateOptionsGetOrders = Entry('orders', ['private', 'options'], 'GET', {'cost': 1.3333333333333333})
227
234
  private_options_get_orders_order_id = privateOptionsGetOrdersOrderId = Entry('orders/{order_id}', ['private', 'options'], 'GET', {'cost': 1.3333333333333333})
228
235
  private_options_get_my_trades = privateOptionsGetMyTrades = Entry('my_trades', ['private', 'options'], 'GET', {'cost': 1.3333333333333333})
236
+ private_options_get_mmp = privateOptionsGetMmp = Entry('mmp', ['private', 'options'], 'GET', {'cost': 1.3333333333333333})
229
237
  private_options_post_orders = privateOptionsPostOrders = Entry('orders', ['private', 'options'], 'POST', {'cost': 1.3333333333333333})
238
+ private_options_post_countdown_cancel_all = privateOptionsPostCountdownCancelAll = Entry('countdown_cancel_all', ['private', 'options'], 'POST', {'cost': 1.3333333333333333})
239
+ private_options_post_mmp = privateOptionsPostMmp = Entry('mmp', ['private', 'options'], 'POST', {'cost': 1.3333333333333333})
240
+ private_options_post_mmp_reset = privateOptionsPostMmpReset = Entry('mmp/reset', ['private', 'options'], 'POST', {'cost': 1.3333333333333333})
230
241
  private_options_delete_orders = privateOptionsDeleteOrders = Entry('orders', ['private', 'options'], 'DELETE', {'cost': 1.3333333333333333})
231
242
  private_options_delete_orders_order_id = privateOptionsDeleteOrdersOrderId = Entry('orders/{order_id}', ['private', 'options'], 'DELETE', {'cost': 1.3333333333333333})
232
243
  private_earn_get_uni_currencies = privateEarnGetUniCurrencies = Entry('uni/currencies', ['private', 'earn'], 'GET', {'cost': 1.3333333333333333})
@@ -254,6 +265,7 @@ class ImplicitAPI:
254
265
  private_loan_get_multi_collateral_currencies = privateLoanGetMultiCollateralCurrencies = Entry('multi_collateral/currencies', ['private', 'loan'], 'GET', {'cost': 1.3333333333333333})
255
266
  private_loan_get_multi_collateral_ltv = privateLoanGetMultiCollateralLtv = Entry('multi_collateral/ltv', ['private', 'loan'], 'GET', {'cost': 1.3333333333333333})
256
267
  private_loan_get_multi_collateral_fixed_rate = privateLoanGetMultiCollateralFixedRate = Entry('multi_collateral/fixed_rate', ['private', 'loan'], 'GET', {'cost': 1.3333333333333333})
268
+ private_loan_get_multi_collateral_current_rate = privateLoanGetMultiCollateralCurrentRate = Entry('multi_collateral/current_rate', ['private', 'loan'], 'GET', {'cost': 1.3333333333333333})
257
269
  private_loan_post_collateral_orders = privateLoanPostCollateralOrders = Entry('collateral/orders', ['private', 'loan'], 'POST', {'cost': 1.3333333333333333})
258
270
  private_loan_post_collateral_repay = privateLoanPostCollateralRepay = Entry('collateral/repay', ['private', 'loan'], 'POST', {'cost': 1.3333333333333333})
259
271
  private_loan_post_collateral_collaterals = privateLoanPostCollateralCollaterals = Entry('collateral/collaterals', ['private', 'loan'], 'POST', {'cost': 1.3333333333333333})
@@ -261,8 +273,10 @@ class ImplicitAPI:
261
273
  private_loan_post_multi_collateral_repay = privateLoanPostMultiCollateralRepay = Entry('multi_collateral/repay', ['private', 'loan'], 'POST', {'cost': 1.3333333333333333})
262
274
  private_loan_post_multi_collateral_mortgage = privateLoanPostMultiCollateralMortgage = Entry('multi_collateral/mortgage', ['private', 'loan'], 'POST', {'cost': 1.3333333333333333})
263
275
  private_account_get_detail = privateAccountGetDetail = Entry('detail', ['private', 'account'], 'GET', {'cost': 1.3333333333333333})
276
+ private_account_get_rate_limit = privateAccountGetRateLimit = Entry('rate_limit', ['private', 'account'], 'GET', {'cost': 1.3333333333333333})
264
277
  private_account_get_stp_groups = privateAccountGetStpGroups = Entry('stp_groups', ['private', 'account'], 'GET', {'cost': 1.3333333333333333})
265
278
  private_account_get_stp_groups_stp_id_users = privateAccountGetStpGroupsStpIdUsers = Entry('stp_groups/{stp_id}/users', ['private', 'account'], 'GET', {'cost': 1.3333333333333333})
279
+ private_account_get_stp_groups_debit_fee = privateAccountGetStpGroupsDebitFee = Entry('stp_groups/debit_fee', ['private', 'account'], 'GET', {'cost': 1.3333333333333333})
266
280
  private_account_post_stp_groups = privateAccountPostStpGroups = Entry('stp_groups', ['private', 'account'], 'POST', {'cost': 1.3333333333333333})
267
281
  private_account_post_stp_groups_stp_id_users = privateAccountPostStpGroupsStpIdUsers = Entry('stp_groups/{stp_id}/users', ['private', 'account'], 'POST', {'cost': 1.3333333333333333})
268
282
  private_account_delete_stp_groups_stp_id_users = privateAccountDeleteStpGroupsStpIdUsers = Entry('stp_groups/{stp_id}/users', ['private', 'account'], 'DELETE', {'cost': 1.3333333333333333})
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.35'
7
+ __version__ = '4.4.36'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -115,6 +115,7 @@ from ccxt.async_support.coinsph import coinsph
115
115
  from ccxt.async_support.coinspot import coinspot # noqa: F401
116
116
  from ccxt.async_support.cryptocom import cryptocom # noqa: F401
117
117
  from ccxt.async_support.currencycom import currencycom # noqa: F401
118
+ from ccxt.async_support.defx import defx # noqa: F401
118
119
  from ccxt.async_support.delta import delta # noqa: F401
119
120
  from ccxt.async_support.deribit import deribit # noqa: F401
120
121
  from ccxt.async_support.digifinex import digifinex # noqa: F401
@@ -227,6 +228,7 @@ exchanges = [
227
228
  'coinspot',
228
229
  'cryptocom',
229
230
  'currencycom',
231
+ 'defx',
230
232
  'delta',
231
233
  'deribit',
232
234
  'digifinex',
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.4.35'
5
+ __version__ = '4.4.36'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -16,7 +16,6 @@ from ccxt.base.errors import ArgumentsRequired
16
16
  from ccxt.base.errors import BadRequest
17
17
  from ccxt.base.errors import BadSymbol
18
18
  from ccxt.base.errors import InsufficientFunds
19
- from ccxt.base.errors import InvalidAddress
20
19
  from ccxt.base.errors import InvalidOrder
21
20
  from ccxt.base.errors import OrderNotFound
22
21
  from ccxt.base.errors import NotSupported
@@ -433,12 +432,10 @@ class bitfinex2(Exchange, ImplicitAPI):
433
432
  'temporarily_unavailable': ExchangeNotAvailable,
434
433
  },
435
434
  'broad': {
436
- 'address': InvalidAddress,
437
435
  'available balance is only': InsufficientFunds,
438
436
  'not enough exchange balance': InsufficientFunds,
439
437
  'Order not found': OrderNotFound,
440
438
  'symbol: invalid': BadSymbol,
441
- 'Invalid order': InvalidOrder,
442
439
  },
443
440
  },
444
441
  'commonCurrencies': {
@@ -782,7 +779,10 @@ class bitfinex2(Exchange, ImplicitAPI):
782
779
  name = self.safe_string(label, 1)
783
780
  pool = self.safe_value(indexed['pool'], id, [])
784
781
  rawType = self.safe_string(pool, 1)
785
- type = 'other' if (rawType is None) else 'crypto'
782
+ isCryptoCoin = (rawType is not None) or (id in indexed['explorer']) # "hacky" solution
783
+ type = None
784
+ if isCryptoCoin:
785
+ type = 'crypto'
786
786
  feeValues = self.safe_value(indexed['fees'], id, [])
787
787
  fees = self.safe_value(feeValues, 1, [])
788
788
  fee = self.safe_number(fees, 1)
@@ -1681,7 +1681,8 @@ class bitfinex2(Exchange, ImplicitAPI):
1681
1681
  raise ExchangeError(self.id + ' ' + response[6] + ': ' + errorText + '(#' + errorCode + ')')
1682
1682
  orders = self.safe_list(response, 4, [])
1683
1683
  order = self.safe_list(orders, 0)
1684
- return self.parse_order(self.extend({'result': order}), market)
1684
+ newOrder = {'result': order}
1685
+ return self.parse_order(newOrder, market)
1685
1686
 
1686
1687
  async def create_orders(self, orders: List[OrderRequest], params={}):
1687
1688
  """
@@ -1777,6 +1778,9 @@ class bitfinex2(Exchange, ImplicitAPI):
1777
1778
  await self.load_markets()
1778
1779
  cid = self.safe_value_2(params, 'cid', 'clientOrderId') # client order id
1779
1780
  request = None
1781
+ market = None
1782
+ if symbol is not None:
1783
+ market = self.market(symbol)
1780
1784
  if cid is not None:
1781
1785
  cidDate = self.safe_value(params, 'cidDate') # client order id date
1782
1786
  if cidDate is None:
@@ -1792,8 +1796,8 @@ class bitfinex2(Exchange, ImplicitAPI):
1792
1796
  }
1793
1797
  response = await self.privatePostAuthWOrderCancel(self.extend(request, params))
1794
1798
  order = self.safe_value(response, 4)
1795
- orderObject = {'result': order}
1796
- return self.parse_order(orderObject)
1799
+ newOrder = {'result': order}
1800
+ return self.parse_order(newOrder, market)
1797
1801
 
1798
1802
  async def cancel_orders(self, ids, symbol: Str = None, params={}):
1799
1803
  """
@@ -2294,6 +2298,8 @@ class bitfinex2(Exchange, ImplicitAPI):
2294
2298
  status = 'failed'
2295
2299
  tag = self.safe_string(data, 3)
2296
2300
  type = 'withdrawal'
2301
+ networkId = self.safe_string(data, 2)
2302
+ network = self.network_id_to_code(networkId.upper()) # withdraw returns in lowercase
2297
2303
  elif transactionLength == 22:
2298
2304
  id = self.safe_string(transaction, 0)
2299
2305
  currencyId = self.safe_string(transaction, 1)
@@ -2590,10 +2596,7 @@ class bitfinex2(Exchange, ImplicitAPI):
2590
2596
  text = self.safe_string(response, 7)
2591
2597
  if text != 'success':
2592
2598
  self.throw_broadly_matched_exception(self.exceptions['broad'], text, text)
2593
- transaction = self.parse_transaction(response, currency)
2594
- return self.extend(transaction, {
2595
- 'address': address,
2596
- })
2599
+ return self.parse_transaction(response, currency)
2597
2600
 
2598
2601
  async def fetch_positions(self, symbols: Strings = None, params={}):
2599
2602
  """
@@ -3502,7 +3505,8 @@ class bitfinex2(Exchange, ImplicitAPI):
3502
3505
  # ]
3503
3506
  #
3504
3507
  order = self.safe_list(response, 0)
3505
- return self.parse_order(order, market)
3508
+ newOrder = {'result': order}
3509
+ return self.parse_order(newOrder, market)
3506
3510
 
3507
3511
  async def edit_order(self, id: str, symbol: str, type: OrderType, side: OrderSide, amount: Num = None, price: Num = None, params={}):
3508
3512
  """
@@ -3617,4 +3621,5 @@ class bitfinex2(Exchange, ImplicitAPI):
3617
3621
  errorText = response[7]
3618
3622
  raise ExchangeError(self.id + ' ' + response[6] + ': ' + errorText + '(#' + errorCode + ')')
3619
3623
  order = self.safe_list(response, 4, [])
3620
- return self.parse_order(order, market)
3624
+ newOrder = {'result': order}
3625
+ return self.parse_order(newOrder, market)
@@ -286,6 +286,108 @@ class bitmex(Exchange, ImplicitAPI):
286
286
  'SOL': 'sol',
287
287
  'ADA': 'ada',
288
288
  },
289
+ 'features': {
290
+ 'default': {
291
+ 'sandbox': True,
292
+ 'createOrder': {
293
+ 'marginMode': True,
294
+ 'triggerPrice': True,
295
+ 'triggerPriceType': {
296
+ 'last': True,
297
+ 'mark': True,
298
+ },
299
+ 'triggerDirection': True,
300
+ 'stopLossPrice': False,
301
+ 'takeProfitPrice': False,
302
+ 'attachedStopLossTakeProfit': None,
303
+ 'timeInForce': {
304
+ 'IOC': True,
305
+ 'FOK': True,
306
+ 'PO': True,
307
+ 'GTD': False,
308
+ },
309
+ 'hedged': False,
310
+ 'trailing': True,
311
+ 'marketBuyRequiresPrice': False,
312
+ 'marketBuyByCost': False,
313
+ # exchange-supported features
314
+ # 'selfTradePrevention': True,
315
+ # 'twap': False,
316
+ # 'iceberg': False,
317
+ # 'oco': False,
318
+ },
319
+ 'createOrders': None,
320
+ 'fetchMyTrades': {
321
+ 'marginMode': False,
322
+ 'limit': 500,
323
+ 'daysBack': None,
324
+ 'untilDays': 1000000,
325
+ },
326
+ 'fetchOrder': {
327
+ 'marginMode': False,
328
+ 'trigger': False,
329
+ 'trailing': False,
330
+ },
331
+ 'fetchOpenOrders': {
332
+ 'marginMode': False,
333
+ 'limit': 500,
334
+ 'trigger': False,
335
+ 'trailing': False,
336
+ },
337
+ 'fetchOrders': {
338
+ 'marginMode': False,
339
+ 'limit': 500,
340
+ 'daysBack': None,
341
+ 'untilDays': 1000000,
342
+ 'trigger': False,
343
+ 'trailing': False,
344
+ },
345
+ 'fetchClosedOrders': {
346
+ 'marginMode': False,
347
+ 'limit': 500,
348
+ 'daysBackClosed': None,
349
+ 'daysBackCanceled': None,
350
+ 'untilDays': 1000000,
351
+ 'trigger': False,
352
+ 'trailing': False,
353
+ },
354
+ 'fetchOHLCV': {
355
+ 'limit': 10000,
356
+ },
357
+ },
358
+ 'spot': {
359
+ 'extends': 'default',
360
+ 'createOrder': {
361
+ 'triggerPriceType': {
362
+ 'index': False,
363
+ },
364
+ },
365
+ },
366
+ 'forDeriv': {
367
+ 'extends': 'default',
368
+ 'createOrder': {
369
+ 'triggerPriceType': {
370
+ 'index': True,
371
+ },
372
+ },
373
+ },
374
+ 'swap': {
375
+ 'linear': {
376
+ 'extends': 'forDeriv',
377
+ },
378
+ 'inverse': {
379
+ 'extends': 'forDeriv',
380
+ },
381
+ },
382
+ 'future': {
383
+ 'linear': {
384
+ 'extends': 'forDeriv',
385
+ },
386
+ 'inverse': {
387
+ 'extends': 'forDeriv',
388
+ },
389
+ },
390
+ },
289
391
  },
290
392
  'commonCurrencies': {
291
393
  'USDt': 'USDT',
@@ -991,7 +1093,7 @@ class bitmex(Exchange, ImplicitAPI):
991
1093
  if since is not None:
992
1094
  request['startTime'] = self.iso8601(since)
993
1095
  if limit is not None:
994
- request['count'] = limit
1096
+ request['count'] = min(500, limit)
995
1097
  until = self.safe_integer_2(params, 'until', 'endTime')
996
1098
  if until is not None:
997
1099
  params = self.omit(params, ['until'])