ccxt 4.4.40__py2.py3-none-any.whl → 4.4.42__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ccxt/__init__.py +1 -1
- ccxt/abstract/binance.py +3 -0
- ccxt/abstract/binancecoinm.py +3 -0
- ccxt/abstract/binanceus.py +3 -0
- ccxt/abstract/binanceusdm.py +3 -0
- ccxt/abstract/bitmart.py +2 -0
- ccxt/abstract/okx.py +5 -0
- ccxt/ace.py +1 -1
- ccxt/alpaca.py +0 -1
- ccxt/ascendex.py +0 -1
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/ace.py +1 -1
- ccxt/async_support/alpaca.py +0 -1
- ccxt/async_support/ascendex.py +0 -1
- ccxt/async_support/base/exchange.py +24 -17
- ccxt/async_support/bigone.py +0 -1
- ccxt/async_support/binance.py +27 -24
- ccxt/async_support/bingx.py +5 -1
- ccxt/async_support/bitfinex.py +123 -1
- ccxt/async_support/bitget.py +1 -0
- ccxt/async_support/bitmart.py +243 -2
- ccxt/async_support/blofin.py +16 -7
- ccxt/async_support/bybit.py +8 -8
- ccxt/async_support/cex.py +1 -1
- ccxt/async_support/coinbase.py +8 -9
- ccxt/async_support/coinbaseexchange.py +5 -6
- ccxt/async_support/coinbaseinternational.py +7 -8
- ccxt/async_support/coincatch.py +0 -1
- ccxt/async_support/coincheck.py +0 -1
- ccxt/async_support/coinex.py +91 -6
- ccxt/async_support/coinlist.py +3 -4
- ccxt/async_support/coinmate.py +1 -3
- ccxt/async_support/coinmetro.py +4 -5
- ccxt/async_support/coinone.py +0 -1
- ccxt/async_support/coinsph.py +7 -8
- ccxt/async_support/cryptocom.py +3 -0
- ccxt/async_support/currencycom.py +3 -4
- ccxt/async_support/defx.py +6 -7
- ccxt/async_support/deribit.py +1 -3
- ccxt/async_support/digifinex.py +0 -1
- ccxt/async_support/ellipx.py +0 -2
- ccxt/async_support/exmo.py +61 -6
- ccxt/async_support/gate.py +2 -3
- ccxt/async_support/gemini.py +4 -5
- ccxt/async_support/hashkey.py +79 -67
- ccxt/async_support/hitbtc.py +47 -5
- ccxt/async_support/hollaex.py +4 -6
- ccxt/async_support/htx.py +2 -4
- ccxt/async_support/huobijp.py +0 -1
- ccxt/async_support/hyperliquid.py +60 -1
- ccxt/async_support/idex.py +8 -8
- ccxt/async_support/independentreserve.py +0 -1
- ccxt/async_support/indodax.py +0 -1
- ccxt/async_support/kraken.py +186 -28
- ccxt/async_support/krakenfutures.py +75 -3
- ccxt/async_support/kucoin.py +6 -4
- ccxt/async_support/kucoinfutures.py +10 -9
- ccxt/async_support/kuna.py +1 -3
- ccxt/async_support/latoken.py +1 -3
- ccxt/async_support/lbank.py +0 -1
- ccxt/async_support/luno.py +0 -1
- ccxt/async_support/lykke.py +0 -1
- ccxt/async_support/mercado.py +0 -1
- ccxt/async_support/mexc.py +6 -7
- ccxt/async_support/ndax.py +1 -1
- ccxt/async_support/novadax.py +4 -6
- ccxt/async_support/oceanex.py +0 -1
- ccxt/async_support/okcoin.py +1 -3
- ccxt/async_support/okx.py +7 -4
- ccxt/async_support/onetrading.py +1 -3
- ccxt/async_support/p2b.py +1 -1
- ccxt/async_support/paradex.py +5 -7
- ccxt/async_support/phemex.py +8 -10
- ccxt/async_support/poloniex.py +1 -3
- ccxt/async_support/poloniexfutures.py +6 -6
- ccxt/async_support/probit.py +0 -1
- ccxt/async_support/timex.py +0 -1
- ccxt/async_support/tokocrypto.py +11 -14
- ccxt/async_support/tradeogre.py +1 -1
- ccxt/async_support/upbit.py +0 -1
- ccxt/async_support/wavesexchange.py +4 -5
- ccxt/async_support/whitebit.py +8 -9
- ccxt/async_support/woo.py +98 -12
- ccxt/async_support/woofipro.py +96 -15
- ccxt/async_support/xt.py +6 -3
- ccxt/async_support/yobit.py +0 -1
- ccxt/async_support/zaif.py +0 -1
- ccxt/async_support/zonda.py +1 -2
- ccxt/base/exchange.py +39 -20
- ccxt/base/types.py +10 -0
- ccxt/bigone.py +0 -1
- ccxt/binance.py +27 -24
- ccxt/bingx.py +5 -1
- ccxt/bitfinex.py +123 -1
- ccxt/bitget.py +1 -0
- ccxt/bitmart.py +243 -2
- ccxt/blofin.py +16 -7
- ccxt/bybit.py +8 -8
- ccxt/cex.py +1 -1
- ccxt/coinbase.py +8 -9
- ccxt/coinbaseexchange.py +5 -6
- ccxt/coinbaseinternational.py +7 -8
- ccxt/coincatch.py +0 -1
- ccxt/coincheck.py +0 -1
- ccxt/coinex.py +91 -6
- ccxt/coinlist.py +3 -4
- ccxt/coinmate.py +1 -3
- ccxt/coinmetro.py +4 -5
- ccxt/coinone.py +0 -1
- ccxt/coinsph.py +7 -8
- ccxt/cryptocom.py +3 -0
- ccxt/currencycom.py +3 -4
- ccxt/defx.py +6 -7
- ccxt/deribit.py +1 -3
- ccxt/digifinex.py +0 -1
- ccxt/ellipx.py +0 -2
- ccxt/exmo.py +61 -6
- ccxt/gate.py +2 -3
- ccxt/gemini.py +4 -5
- ccxt/hashkey.py +79 -67
- ccxt/hitbtc.py +47 -5
- ccxt/hollaex.py +4 -6
- ccxt/htx.py +2 -4
- ccxt/huobijp.py +0 -1
- ccxt/hyperliquid.py +60 -1
- ccxt/idex.py +8 -8
- ccxt/independentreserve.py +0 -1
- ccxt/indodax.py +0 -1
- ccxt/kraken.py +186 -28
- ccxt/krakenfutures.py +75 -3
- ccxt/kucoin.py +6 -4
- ccxt/kucoinfutures.py +10 -9
- ccxt/kuna.py +1 -3
- ccxt/latoken.py +1 -3
- ccxt/lbank.py +0 -1
- ccxt/luno.py +0 -1
- ccxt/lykke.py +0 -1
- ccxt/mercado.py +0 -1
- ccxt/mexc.py +6 -7
- ccxt/ndax.py +1 -1
- ccxt/novadax.py +4 -6
- ccxt/oceanex.py +0 -1
- ccxt/okcoin.py +1 -3
- ccxt/okx.py +7 -4
- ccxt/onetrading.py +1 -3
- ccxt/p2b.py +1 -1
- ccxt/paradex.py +5 -7
- ccxt/phemex.py +8 -10
- ccxt/poloniex.py +1 -3
- ccxt/poloniexfutures.py +6 -6
- ccxt/pro/__init__.py +1 -1
- ccxt/probit.py +0 -1
- ccxt/timex.py +0 -1
- ccxt/tokocrypto.py +11 -14
- ccxt/tradeogre.py +1 -1
- ccxt/upbit.py +0 -1
- ccxt/wavesexchange.py +4 -5
- ccxt/whitebit.py +8 -9
- ccxt/woo.py +98 -12
- ccxt/woofipro.py +96 -15
- ccxt/xt.py +6 -3
- ccxt/yobit.py +0 -1
- ccxt/zaif.py +0 -1
- ccxt/zonda.py +1 -2
- {ccxt-4.4.40.dist-info → ccxt-4.4.42.dist-info}/METADATA +5 -5
- {ccxt-4.4.40.dist-info → ccxt-4.4.42.dist-info}/RECORD +169 -173
- ccxt/bitbay.py +0 -17
- ccxt/bitfinex2.py +0 -3624
- ccxt/hitbtc3.py +0 -16
- ccxt/pro/bitfinex2.py +0 -1086
- {ccxt-4.4.40.dist-info → ccxt-4.4.42.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.4.40.dist-info → ccxt-4.4.42.dist-info}/WHEEL +0 -0
- {ccxt-4.4.40.dist-info → ccxt-4.4.42.dist-info}/top_level.txt +0 -0
ccxt/__init__.py
CHANGED
ccxt/abstract/binance.py
CHANGED
@@ -360,6 +360,8 @@ class ImplicitAPI:
|
|
360
360
|
sapi_post_portfolio_bnb_transfer = sapiPostPortfolioBnbTransfer = Entry('portfolio/bnb-transfer', 'sapi', 'POST', {'cost': 150})
|
361
361
|
sapi_post_portfolio_repay_futures_switch = sapiPostPortfolioRepayFuturesSwitch = Entry('portfolio/repay-futures-switch', 'sapi', 'POST', {'cost': 150})
|
362
362
|
sapi_post_portfolio_repay_futures_negative_balance = sapiPostPortfolioRepayFuturesNegativeBalance = Entry('portfolio/repay-futures-negative-balance', 'sapi', 'POST', {'cost': 150})
|
363
|
+
sapi_post_portfolio_mint = sapiPostPortfolioMint = Entry('portfolio/mint', 'sapi', 'POST', {'cost': 20})
|
364
|
+
sapi_post_portfolio_redeem = sapiPostPortfolioRedeem = Entry('portfolio/redeem', 'sapi', 'POST', {'cost': 20})
|
363
365
|
sapi_post_lending_auto_invest_plan_add = sapiPostLendingAutoInvestPlanAdd = Entry('lending/auto-invest/plan/add', 'sapi', 'POST', {'cost': 0.1})
|
364
366
|
sapi_post_lending_auto_invest_plan_edit = sapiPostLendingAutoInvestPlanEdit = Entry('lending/auto-invest/plan/edit', 'sapi', 'POST', {'cost': 0.1})
|
365
367
|
sapi_post_lending_auto_invest_plan_edit_status = sapiPostLendingAutoInvestPlanEditStatus = Entry('lending/auto-invest/plan/edit-status', 'sapi', 'POST', {'cost': 0.1})
|
@@ -599,6 +601,7 @@ class ImplicitAPI:
|
|
599
601
|
eapiprivate_get_block_order_orders = eapiPrivateGetBlockOrderOrders = Entry('block/order/orders', 'eapiPrivate', 'GET', {'cost': 5})
|
600
602
|
eapiprivate_get_block_order_execute = eapiPrivateGetBlockOrderExecute = Entry('block/order/execute', 'eapiPrivate', 'GET', {'cost': 5})
|
601
603
|
eapiprivate_get_block_user_trades = eapiPrivateGetBlockUserTrades = Entry('block/user-trades', 'eapiPrivate', 'GET', {'cost': 5})
|
604
|
+
eapiprivate_get_blocktrades = eapiPrivateGetBlockTrades = Entry('blockTrades', 'eapiPrivate', 'GET', {'cost': 5})
|
602
605
|
eapiprivate_post_order = eapiPrivatePostOrder = Entry('order', 'eapiPrivate', 'POST', {'cost': 1})
|
603
606
|
eapiprivate_post_batchorders = eapiPrivatePostBatchOrders = Entry('batchOrders', 'eapiPrivate', 'POST', {'cost': 5})
|
604
607
|
eapiprivate_post_listenkey = eapiPrivatePostListenKey = Entry('listenKey', 'eapiPrivate', 'POST', {'cost': 1})
|
ccxt/abstract/binancecoinm.py
CHANGED
@@ -360,6 +360,8 @@ class ImplicitAPI:
|
|
360
360
|
sapi_post_portfolio_bnb_transfer = sapiPostPortfolioBnbTransfer = Entry('portfolio/bnb-transfer', 'sapi', 'POST', {'cost': 150})
|
361
361
|
sapi_post_portfolio_repay_futures_switch = sapiPostPortfolioRepayFuturesSwitch = Entry('portfolio/repay-futures-switch', 'sapi', 'POST', {'cost': 150})
|
362
362
|
sapi_post_portfolio_repay_futures_negative_balance = sapiPostPortfolioRepayFuturesNegativeBalance = Entry('portfolio/repay-futures-negative-balance', 'sapi', 'POST', {'cost': 150})
|
363
|
+
sapi_post_portfolio_mint = sapiPostPortfolioMint = Entry('portfolio/mint', 'sapi', 'POST', {'cost': 20})
|
364
|
+
sapi_post_portfolio_redeem = sapiPostPortfolioRedeem = Entry('portfolio/redeem', 'sapi', 'POST', {'cost': 20})
|
363
365
|
sapi_post_lending_auto_invest_plan_add = sapiPostLendingAutoInvestPlanAdd = Entry('lending/auto-invest/plan/add', 'sapi', 'POST', {'cost': 0.1})
|
364
366
|
sapi_post_lending_auto_invest_plan_edit = sapiPostLendingAutoInvestPlanEdit = Entry('lending/auto-invest/plan/edit', 'sapi', 'POST', {'cost': 0.1})
|
365
367
|
sapi_post_lending_auto_invest_plan_edit_status = sapiPostLendingAutoInvestPlanEditStatus = Entry('lending/auto-invest/plan/edit-status', 'sapi', 'POST', {'cost': 0.1})
|
@@ -599,6 +601,7 @@ class ImplicitAPI:
|
|
599
601
|
eapiprivate_get_block_order_orders = eapiPrivateGetBlockOrderOrders = Entry('block/order/orders', 'eapiPrivate', 'GET', {'cost': 5})
|
600
602
|
eapiprivate_get_block_order_execute = eapiPrivateGetBlockOrderExecute = Entry('block/order/execute', 'eapiPrivate', 'GET', {'cost': 5})
|
601
603
|
eapiprivate_get_block_user_trades = eapiPrivateGetBlockUserTrades = Entry('block/user-trades', 'eapiPrivate', 'GET', {'cost': 5})
|
604
|
+
eapiprivate_get_blocktrades = eapiPrivateGetBlockTrades = Entry('blockTrades', 'eapiPrivate', 'GET', {'cost': 5})
|
602
605
|
eapiprivate_post_order = eapiPrivatePostOrder = Entry('order', 'eapiPrivate', 'POST', {'cost': 1})
|
603
606
|
eapiprivate_post_batchorders = eapiPrivatePostBatchOrders = Entry('batchOrders', 'eapiPrivate', 'POST', {'cost': 5})
|
604
607
|
eapiprivate_post_listenkey = eapiPrivatePostListenKey = Entry('listenKey', 'eapiPrivate', 'POST', {'cost': 1})
|
ccxt/abstract/binanceus.py
CHANGED
@@ -391,6 +391,8 @@ class ImplicitAPI:
|
|
391
391
|
sapi_post_portfolio_bnb_transfer = sapiPostPortfolioBnbTransfer = Entry('portfolio/bnb-transfer', 'sapi', 'POST', {'cost': 150})
|
392
392
|
sapi_post_portfolio_repay_futures_switch = sapiPostPortfolioRepayFuturesSwitch = Entry('portfolio/repay-futures-switch', 'sapi', 'POST', {'cost': 150})
|
393
393
|
sapi_post_portfolio_repay_futures_negative_balance = sapiPostPortfolioRepayFuturesNegativeBalance = Entry('portfolio/repay-futures-negative-balance', 'sapi', 'POST', {'cost': 150})
|
394
|
+
sapi_post_portfolio_mint = sapiPostPortfolioMint = Entry('portfolio/mint', 'sapi', 'POST', {'cost': 20})
|
395
|
+
sapi_post_portfolio_redeem = sapiPostPortfolioRedeem = Entry('portfolio/redeem', 'sapi', 'POST', {'cost': 20})
|
394
396
|
sapi_post_lending_auto_invest_plan_add = sapiPostLendingAutoInvestPlanAdd = Entry('lending/auto-invest/plan/add', 'sapi', 'POST', {'cost': 0.1})
|
395
397
|
sapi_post_lending_auto_invest_plan_edit = sapiPostLendingAutoInvestPlanEdit = Entry('lending/auto-invest/plan/edit', 'sapi', 'POST', {'cost': 0.1})
|
396
398
|
sapi_post_lending_auto_invest_plan_edit_status = sapiPostLendingAutoInvestPlanEditStatus = Entry('lending/auto-invest/plan/edit-status', 'sapi', 'POST', {'cost': 0.1})
|
@@ -651,6 +653,7 @@ class ImplicitAPI:
|
|
651
653
|
eapiprivate_get_block_order_orders = eapiPrivateGetBlockOrderOrders = Entry('block/order/orders', 'eapiPrivate', 'GET', {'cost': 5})
|
652
654
|
eapiprivate_get_block_order_execute = eapiPrivateGetBlockOrderExecute = Entry('block/order/execute', 'eapiPrivate', 'GET', {'cost': 5})
|
653
655
|
eapiprivate_get_block_user_trades = eapiPrivateGetBlockUserTrades = Entry('block/user-trades', 'eapiPrivate', 'GET', {'cost': 5})
|
656
|
+
eapiprivate_get_blocktrades = eapiPrivateGetBlockTrades = Entry('blockTrades', 'eapiPrivate', 'GET', {'cost': 5})
|
654
657
|
eapiprivate_post_order = eapiPrivatePostOrder = Entry('order', 'eapiPrivate', 'POST', {'cost': 1})
|
655
658
|
eapiprivate_post_batchorders = eapiPrivatePostBatchOrders = Entry('batchOrders', 'eapiPrivate', 'POST', {'cost': 5})
|
656
659
|
eapiprivate_post_listenkey = eapiPrivatePostListenKey = Entry('listenKey', 'eapiPrivate', 'POST', {'cost': 1})
|
ccxt/abstract/binanceusdm.py
CHANGED
@@ -360,6 +360,8 @@ class ImplicitAPI:
|
|
360
360
|
sapi_post_portfolio_bnb_transfer = sapiPostPortfolioBnbTransfer = Entry('portfolio/bnb-transfer', 'sapi', 'POST', {'cost': 150})
|
361
361
|
sapi_post_portfolio_repay_futures_switch = sapiPostPortfolioRepayFuturesSwitch = Entry('portfolio/repay-futures-switch', 'sapi', 'POST', {'cost': 150})
|
362
362
|
sapi_post_portfolio_repay_futures_negative_balance = sapiPostPortfolioRepayFuturesNegativeBalance = Entry('portfolio/repay-futures-negative-balance', 'sapi', 'POST', {'cost': 150})
|
363
|
+
sapi_post_portfolio_mint = sapiPostPortfolioMint = Entry('portfolio/mint', 'sapi', 'POST', {'cost': 20})
|
364
|
+
sapi_post_portfolio_redeem = sapiPostPortfolioRedeem = Entry('portfolio/redeem', 'sapi', 'POST', {'cost': 20})
|
363
365
|
sapi_post_lending_auto_invest_plan_add = sapiPostLendingAutoInvestPlanAdd = Entry('lending/auto-invest/plan/add', 'sapi', 'POST', {'cost': 0.1})
|
364
366
|
sapi_post_lending_auto_invest_plan_edit = sapiPostLendingAutoInvestPlanEdit = Entry('lending/auto-invest/plan/edit', 'sapi', 'POST', {'cost': 0.1})
|
365
367
|
sapi_post_lending_auto_invest_plan_edit_status = sapiPostLendingAutoInvestPlanEditStatus = Entry('lending/auto-invest/plan/edit-status', 'sapi', 'POST', {'cost': 0.1})
|
@@ -599,6 +601,7 @@ class ImplicitAPI:
|
|
599
601
|
eapiprivate_get_block_order_orders = eapiPrivateGetBlockOrderOrders = Entry('block/order/orders', 'eapiPrivate', 'GET', {'cost': 5})
|
600
602
|
eapiprivate_get_block_order_execute = eapiPrivateGetBlockOrderExecute = Entry('block/order/execute', 'eapiPrivate', 'GET', {'cost': 5})
|
601
603
|
eapiprivate_get_block_user_trades = eapiPrivateGetBlockUserTrades = Entry('block/user-trades', 'eapiPrivate', 'GET', {'cost': 5})
|
604
|
+
eapiprivate_get_blocktrades = eapiPrivateGetBlockTrades = Entry('blockTrades', 'eapiPrivate', 'GET', {'cost': 5})
|
602
605
|
eapiprivate_post_order = eapiPrivatePostOrder = Entry('order', 'eapiPrivate', 'POST', {'cost': 1})
|
603
606
|
eapiprivate_post_batchorders = eapiPrivatePostBatchOrders = Entry('batchOrders', 'eapiPrivate', 'POST', {'cost': 5})
|
604
607
|
eapiprivate_post_listenkey = eapiPrivatePostListenKey = Entry('listenKey', 'eapiPrivate', 'POST', {'cost': 1})
|
ccxt/abstract/bitmart.py
CHANGED
@@ -25,6 +25,7 @@ class ImplicitAPI:
|
|
25
25
|
public_get_contract_public_depth = publicGetContractPublicDepth = Entry('contract/public/depth', 'public', 'GET', {'cost': 5})
|
26
26
|
public_get_contract_public_open_interest = publicGetContractPublicOpenInterest = Entry('contract/public/open-interest', 'public', 'GET', {'cost': 30})
|
27
27
|
public_get_contract_public_funding_rate = publicGetContractPublicFundingRate = Entry('contract/public/funding-rate', 'public', 'GET', {'cost': 30})
|
28
|
+
public_get_contract_public_funding_rate_history = publicGetContractPublicFundingRateHistory = Entry('contract/public/funding-rate-history', 'public', 'GET', {'cost': 30})
|
28
29
|
public_get_contract_public_kline = publicGetContractPublicKline = Entry('contract/public/kline', 'public', 'GET', {'cost': 6})
|
29
30
|
public_get_account_v1_currencies = publicGetAccountV1Currencies = Entry('account/v1/currencies', 'public', 'GET', {'cost': 30})
|
30
31
|
private_get_account_sub_account_v1_transfer_list = privateGetAccountSubAccountV1TransferList = Entry('account/sub-account/v1/transfer-list', 'private', 'GET', {'cost': 7.5})
|
@@ -64,6 +65,7 @@ class ImplicitAPI:
|
|
64
65
|
private_get_contract_private_position_risk = privateGetContractPrivatePositionRisk = Entry('contract/private/position-risk', 'private', 'GET', {'cost': 10})
|
65
66
|
private_get_contract_private_affilate_rebate_list = privateGetContractPrivateAffilateRebateList = Entry('contract/private/affilate/rebate-list', 'private', 'GET', {'cost': 10})
|
66
67
|
private_get_contract_private_affilate_trade_list = privateGetContractPrivateAffilateTradeList = Entry('contract/private/affilate/trade-list', 'private', 'GET', {'cost': 10})
|
68
|
+
private_get_contract_private_transaction_history = privateGetContractPrivateTransactionHistory = Entry('contract/private/transaction-history', 'private', 'GET', {'cost': 10})
|
67
69
|
private_post_account_sub_account_main_v1_sub_to_main = privatePostAccountSubAccountMainV1SubToMain = Entry('account/sub-account/main/v1/sub-to-main', 'private', 'POST', {'cost': 30})
|
68
70
|
private_post_account_sub_account_sub_v1_sub_to_main = privatePostAccountSubAccountSubV1SubToMain = Entry('account/sub-account/sub/v1/sub-to-main', 'private', 'POST', {'cost': 30})
|
69
71
|
private_post_account_sub_account_main_v1_main_to_sub = privatePostAccountSubAccountMainV1MainToSub = Entry('account/sub-account/main/v1/main-to-sub', 'private', 'POST', {'cost': 30})
|
ccxt/abstract/okx.py
CHANGED
@@ -68,6 +68,7 @@ class ImplicitAPI:
|
|
68
68
|
public_get_tradingbot_public_rsi_back_testing = publicGetTradingBotPublicRsiBackTesting = Entry('tradingBot/public/rsi-back-testing', 'public', 'GET', {'cost': 1})
|
69
69
|
public_get_asset_exchange_list = publicGetAssetExchangeList = Entry('asset/exchange-list', 'public', 'GET', {'cost': 1.6666666666666667})
|
70
70
|
public_get_finance_staking_defi_eth_apy_history = publicGetFinanceStakingDefiEthApyHistory = Entry('finance/staking-defi/eth/apy-history', 'public', 'GET', {'cost': 1.6666666666666667})
|
71
|
+
public_get_finance_staking_defi_sol_apy_history = publicGetFinanceStakingDefiSolApyHistory = Entry('finance/staking-defi/sol/apy-history', 'public', 'GET', {'cost': 1.6666666666666667})
|
71
72
|
public_get_finance_savings_lending_rate_summary = publicGetFinanceSavingsLendingRateSummary = Entry('finance/savings/lending-rate-summary', 'public', 'GET', {'cost': 1.6666666666666667})
|
72
73
|
public_get_finance_savings_lending_rate_history = publicGetFinanceSavingsLendingRateHistory = Entry('finance/savings/lending-rate-history', 'public', 'GET', {'cost': 1.6666666666666667})
|
73
74
|
public_get_finance_fixed_loan_lending_offers = publicGetFinanceFixedLoanLendingOffers = Entry('finance/fixed-loan/lending-offers', 'public', 'GET', {'cost': 3.3333333333333335})
|
@@ -191,6 +192,8 @@ class ImplicitAPI:
|
|
191
192
|
private_get_finance_staking_defi_eth_balance = privateGetFinanceStakingDefiEthBalance = Entry('finance/staking-defi/eth/balance', 'private', 'GET', {'cost': 1.6666666666666667})
|
192
193
|
private_get_finance_staking_defi_eth_purchase_redeem_history = privateGetFinanceStakingDefiEthPurchaseRedeemHistory = Entry('finance/staking-defi/eth/purchase-redeem-history', 'private', 'GET', {'cost': 1.6666666666666667})
|
193
194
|
private_get_finance_staking_defi_eth_product_info = privateGetFinanceStakingDefiEthProductInfo = Entry('finance/staking-defi/eth/product-info', 'private', 'GET', {'cost': 3})
|
195
|
+
private_get_finance_staking_defi_sol_balance = privateGetFinanceStakingDefiSolBalance = Entry('finance/staking-defi/sol/balance', 'private', 'GET', {'cost': 1.6666666666666667})
|
196
|
+
private_get_finance_staking_defi_sol_purchase_redeem_history = privateGetFinanceStakingDefiSolPurchaseRedeemHistory = Entry('finance/staking-defi/sol/purchase-redeem-history', 'private', 'GET', {'cost': 1.6666666666666667})
|
194
197
|
private_get_copytrading_current_subpositions = privateGetCopytradingCurrentSubpositions = Entry('copytrading/current-subpositions', 'private', 'GET', {'cost': 1})
|
195
198
|
private_get_copytrading_subpositions_history = privateGetCopytradingSubpositionsHistory = Entry('copytrading/subpositions-history', 'private', 'GET', {'cost': 1})
|
196
199
|
private_get_copytrading_instruments = privateGetCopytradingInstruments = Entry('copytrading/instruments', 'private', 'GET', {'cost': 4})
|
@@ -311,6 +314,8 @@ class ImplicitAPI:
|
|
311
314
|
private_post_finance_staking_defi_cancel = privatePostFinanceStakingDefiCancel = Entry('finance/staking-defi/cancel', 'private', 'POST', {'cost': 3})
|
312
315
|
private_post_finance_staking_defi_eth_purchase = privatePostFinanceStakingDefiEthPurchase = Entry('finance/staking-defi/eth/purchase', 'private', 'POST', {'cost': 5})
|
313
316
|
private_post_finance_staking_defi_eth_redeem = privatePostFinanceStakingDefiEthRedeem = Entry('finance/staking-defi/eth/redeem', 'private', 'POST', {'cost': 5})
|
317
|
+
private_post_finance_staking_defi_sol_purchase = privatePostFinanceStakingDefiSolPurchase = Entry('finance/staking-defi/sol/purchase', 'private', 'POST', {'cost': 5})
|
318
|
+
private_post_finance_staking_defi_sol_redeem = privatePostFinanceStakingDefiSolRedeem = Entry('finance/staking-defi/sol/redeem', 'private', 'POST', {'cost': 5})
|
314
319
|
private_post_copytrading_algo_order = privatePostCopytradingAlgoOrder = Entry('copytrading/algo-order', 'private', 'POST', {'cost': 1})
|
315
320
|
private_post_copytrading_close_subposition = privatePostCopytradingCloseSubposition = Entry('copytrading/close-subposition', 'private', 'POST', {'cost': 1})
|
316
321
|
private_post_copytrading_set_instruments = privatePostCopytradingSetInstruments = Entry('copytrading/set-instruments', 'private', 'POST', {'cost': 4})
|
ccxt/ace.py
CHANGED
ccxt/alpaca.py
CHANGED
@@ -1189,7 +1189,6 @@ class alpaca(Exchange, ImplicitAPI):
|
|
1189
1189
|
'postOnly': None,
|
1190
1190
|
'side': self.safe_string(order, 'side'),
|
1191
1191
|
'price': self.safe_number(order, 'limit_price'),
|
1192
|
-
'stopPrice': self.safe_number(order, 'stop_price'),
|
1193
1192
|
'triggerPrice': self.safe_number(order, 'stop_price'),
|
1194
1193
|
'cost': None,
|
1195
1194
|
'average': self.safe_number(order, 'filled_avg_price'),
|
ccxt/ascendex.py
CHANGED
ccxt/async_support/__init__.py
CHANGED
ccxt/async_support/ace.py
CHANGED
ccxt/async_support/alpaca.py
CHANGED
@@ -1189,7 +1189,6 @@ class alpaca(Exchange, ImplicitAPI):
|
|
1189
1189
|
'postOnly': None,
|
1190
1190
|
'side': self.safe_string(order, 'side'),
|
1191
1191
|
'price': self.safe_number(order, 'limit_price'),
|
1192
|
-
'stopPrice': self.safe_number(order, 'stop_price'),
|
1193
1192
|
'triggerPrice': self.safe_number(order, 'stop_price'),
|
1194
1193
|
'cost': None,
|
1195
1194
|
'average': self.safe_number(order, 'filled_avg_price'),
|
ccxt/async_support/ascendex.py
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# -----------------------------------------------------------------------------
|
4
4
|
|
5
|
-
__version__ = '4.4.
|
5
|
+
__version__ = '4.4.42'
|
6
6
|
|
7
7
|
# -----------------------------------------------------------------------------
|
8
8
|
|
@@ -755,6 +755,9 @@ class Exchange(BaseExchange):
|
|
755
755
|
async def fetch_open_interest(self, symbol: str, params={}):
|
756
756
|
raise NotSupported(self.id + ' fetchOpenInterest() is not supported yet')
|
757
757
|
|
758
|
+
async def fetch_open_interests(self, symbols: Strings = None, params={}):
|
759
|
+
raise NotSupported(self.id + ' fetchOpenInterests() is not supported yet')
|
760
|
+
|
758
761
|
async def sign_in(self, params={}):
|
759
762
|
raise NotSupported(self.id + ' signIn() is not supported yet')
|
760
763
|
|
@@ -1650,44 +1653,44 @@ class Exchange(BaseExchange):
|
|
1650
1653
|
query = self.extend(params, {'reduceOnly': True})
|
1651
1654
|
return await self.create_order_ws(symbol, type, side, amount, price, query)
|
1652
1655
|
|
1653
|
-
async def create_stop_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None,
|
1656
|
+
async def create_stop_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, triggerPrice: Num = None, params={}):
|
1654
1657
|
if not self.has['createStopOrder']:
|
1655
1658
|
raise NotSupported(self.id + ' createStopOrder() is not supported yet')
|
1656
|
-
if
|
1659
|
+
if triggerPrice is None:
|
1657
1660
|
raise ArgumentsRequired(self.id + ' create_stop_order() requires a stopPrice argument')
|
1658
|
-
query = self.extend(params, {'stopPrice':
|
1661
|
+
query = self.extend(params, {'stopPrice': triggerPrice})
|
1659
1662
|
return await self.create_order(symbol, type, side, amount, price, query)
|
1660
1663
|
|
1661
|
-
async def create_stop_order_ws(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None,
|
1664
|
+
async def create_stop_order_ws(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, triggerPrice: Num = None, params={}):
|
1662
1665
|
if not self.has['createStopOrderWs']:
|
1663
1666
|
raise NotSupported(self.id + ' createStopOrderWs() is not supported yet')
|
1664
|
-
if
|
1667
|
+
if triggerPrice is None:
|
1665
1668
|
raise ArgumentsRequired(self.id + ' createStopOrderWs() requires a stopPrice argument')
|
1666
|
-
query = self.extend(params, {'stopPrice':
|
1669
|
+
query = self.extend(params, {'stopPrice': triggerPrice})
|
1667
1670
|
return await self.create_order_ws(symbol, type, side, amount, price, query)
|
1668
1671
|
|
1669
|
-
async def create_stop_limit_order(self, symbol: str, side: OrderSide, amount: float, price: float,
|
1672
|
+
async def create_stop_limit_order(self, symbol: str, side: OrderSide, amount: float, price: float, triggerPrice: float, params={}):
|
1670
1673
|
if not self.has['createStopLimitOrder']:
|
1671
1674
|
raise NotSupported(self.id + ' createStopLimitOrder() is not supported yet')
|
1672
|
-
query = self.extend(params, {'stopPrice':
|
1675
|
+
query = self.extend(params, {'stopPrice': triggerPrice})
|
1673
1676
|
return await self.create_order(symbol, 'limit', side, amount, price, query)
|
1674
1677
|
|
1675
|
-
async def create_stop_limit_order_ws(self, symbol: str, side: OrderSide, amount: float, price: float,
|
1678
|
+
async def create_stop_limit_order_ws(self, symbol: str, side: OrderSide, amount: float, price: float, triggerPrice: float, params={}):
|
1676
1679
|
if not self.has['createStopLimitOrderWs']:
|
1677
1680
|
raise NotSupported(self.id + ' createStopLimitOrderWs() is not supported yet')
|
1678
|
-
query = self.extend(params, {'stopPrice':
|
1681
|
+
query = self.extend(params, {'stopPrice': triggerPrice})
|
1679
1682
|
return await self.create_order_ws(symbol, 'limit', side, amount, price, query)
|
1680
1683
|
|
1681
|
-
async def create_stop_market_order(self, symbol: str, side: OrderSide, amount: float,
|
1684
|
+
async def create_stop_market_order(self, symbol: str, side: OrderSide, amount: float, triggerPrice: float, params={}):
|
1682
1685
|
if not self.has['createStopMarketOrder']:
|
1683
1686
|
raise NotSupported(self.id + ' createStopMarketOrder() is not supported yet')
|
1684
|
-
query = self.extend(params, {'stopPrice':
|
1687
|
+
query = self.extend(params, {'stopPrice': triggerPrice})
|
1685
1688
|
return await self.create_order(symbol, 'market', side, amount, None, query)
|
1686
1689
|
|
1687
|
-
async def create_stop_market_order_ws(self, symbol: str, side: OrderSide, amount: float,
|
1690
|
+
async def create_stop_market_order_ws(self, symbol: str, side: OrderSide, amount: float, triggerPrice: float, params={}):
|
1688
1691
|
if not self.has['createStopMarketOrderWs']:
|
1689
1692
|
raise NotSupported(self.id + ' createStopMarketOrderWs() is not supported yet')
|
1690
|
-
query = self.extend(params, {'stopPrice':
|
1693
|
+
query = self.extend(params, {'stopPrice': triggerPrice})
|
1691
1694
|
return await self.create_order_ws(symbol, 'market', side, amount, None, query)
|
1692
1695
|
|
1693
1696
|
async def fetch_last_prices(self, symbols: Strings = None, params={}):
|
@@ -1809,7 +1812,7 @@ class Exchange(BaseExchange):
|
|
1809
1812
|
else:
|
1810
1813
|
raise NotSupported(self.id + ' fetchTransactions() is not supported yet')
|
1811
1814
|
|
1812
|
-
async def fetch_paginated_call_dynamic(self, method: str, symbol: Str = None, since: Int = None, limit: Int = None, params={}, maxEntriesPerRequest: Int = None):
|
1815
|
+
async def fetch_paginated_call_dynamic(self, method: str, symbol: Str = None, since: Int = None, limit: Int = None, params={}, maxEntriesPerRequest: Int = None, removeRepeated=True):
|
1813
1816
|
maxCalls = None
|
1814
1817
|
maxCalls, params = self.handle_option_and_params(params, method, 'paginationCalls', 10)
|
1815
1818
|
maxRetries = None
|
@@ -1817,6 +1820,8 @@ class Exchange(BaseExchange):
|
|
1817
1820
|
paginationDirection = None
|
1818
1821
|
paginationDirection, params = self.handle_option_and_params(params, method, 'paginationDirection', 'backward')
|
1819
1822
|
paginationTimestamp = None
|
1823
|
+
removeRepeatedOption = removeRepeated
|
1824
|
+
removeRepeatedOption, params = self.handle_option_and_params(params, method, 'removeRepeated', removeRepeated)
|
1820
1825
|
calls = 0
|
1821
1826
|
result = []
|
1822
1827
|
errors = 0
|
@@ -1870,7 +1875,9 @@ class Exchange(BaseExchange):
|
|
1870
1875
|
errors += 1
|
1871
1876
|
if errors > maxRetries:
|
1872
1877
|
raise e
|
1873
|
-
uniqueResults =
|
1878
|
+
uniqueResults = result
|
1879
|
+
if removeRepeatedOption:
|
1880
|
+
uniqueResults = self.remove_repeated_elements_from_array(result)
|
1874
1881
|
key = 0 if (method == 'fetchOHLCV') else 'timestamp'
|
1875
1882
|
return self.filter_by_since_limit(uniqueResults, since, limit, key)
|
1876
1883
|
|
ccxt/async_support/bigone.py
CHANGED
ccxt/async_support/binance.py
CHANGED
@@ -658,6 +658,8 @@ class binance(Exchange, ImplicitAPI):
|
|
658
658
|
'portfolio/bnb-transfer': 150, # Weight(IP): 1500 => cost = 0.1 * 1500 = 150
|
659
659
|
'portfolio/repay-futures-switch': 150, # Weight(IP): 1500 => cost = 0.1 * 1500 = 150
|
660
660
|
'portfolio/repay-futures-negative-balance': 150, # Weight(IP): 1500 => cost = 0.1 * 1500 = 150
|
661
|
+
'portfolio/mint': 20,
|
662
|
+
'portfolio/redeem': 20,
|
661
663
|
'lending/auto-invest/plan/add': 0.1, # Weight(IP): 1 => cost = 0.1 * 1 = 0.1
|
662
664
|
'lending/auto-invest/plan/edit': 0.1, # Weight(IP): 1 => cost = 0.1 * 1 = 0.1
|
663
665
|
'lending/auto-invest/plan/edit-status': 0.1, # Weight(IP): 1 => cost = 0.1 * 1 = 0.1
|
@@ -986,6 +988,7 @@ class binance(Exchange, ImplicitAPI):
|
|
986
988
|
'block/order/orders': 5,
|
987
989
|
'block/order/execute': 5,
|
988
990
|
'block/user-trades': 5,
|
991
|
+
'blockTrades': 5,
|
989
992
|
},
|
990
993
|
'post': {
|
991
994
|
'order': 1,
|
@@ -5063,8 +5066,8 @@ class binance(Exchange, ImplicitAPI):
|
|
5063
5066
|
if postOnly:
|
5064
5067
|
uppercaseType = 'LIMIT_MAKER'
|
5065
5068
|
request['type'] = uppercaseType
|
5066
|
-
|
5067
|
-
if
|
5069
|
+
triggerPrice = self.safe_number_2(params, 'stopPrice', 'triggerPrice')
|
5070
|
+
if triggerPrice is not None:
|
5068
5071
|
if uppercaseType == 'MARKET':
|
5069
5072
|
uppercaseType = 'STOP_LOSS'
|
5070
5073
|
elif uppercaseType == 'LIMIT':
|
@@ -5072,7 +5075,7 @@ class binance(Exchange, ImplicitAPI):
|
|
5072
5075
|
validOrderTypes = self.safe_list(market['info'], 'orderTypes')
|
5073
5076
|
if not self.in_array(uppercaseType, validOrderTypes):
|
5074
5077
|
if initialUppercaseType != uppercaseType:
|
5075
|
-
raise InvalidOrder(self.id + '
|
5078
|
+
raise InvalidOrder(self.id + ' triggerPrice parameter is not allowed for ' + symbol + ' ' + type + ' orders')
|
5076
5079
|
else:
|
5077
5080
|
raise InvalidOrder(self.id + ' ' + type + ' is not a valid order type for the ' + symbol + ' market')
|
5078
5081
|
if clientOrderId is None:
|
@@ -5086,7 +5089,7 @@ class binance(Exchange, ImplicitAPI):
|
|
5086
5089
|
request['newOrderRespType'] = self.safe_value(self.options['newOrderRespType'], type, 'RESULT') # 'ACK' for order id, 'RESULT' for full order or 'FULL' for order with fills
|
5087
5090
|
timeInForceIsRequired = False
|
5088
5091
|
priceIsRequired = False
|
5089
|
-
|
5092
|
+
triggerPriceIsRequired = False
|
5090
5093
|
quantityIsRequired = False
|
5091
5094
|
if uppercaseType == 'MARKET':
|
5092
5095
|
quoteOrderQty = self.safe_bool(self.options, 'quoteOrderQty', True)
|
@@ -5109,11 +5112,11 @@ class binance(Exchange, ImplicitAPI):
|
|
5109
5112
|
timeInForceIsRequired = True
|
5110
5113
|
quantityIsRequired = True
|
5111
5114
|
elif (uppercaseType == 'STOP_LOSS') or (uppercaseType == 'TAKE_PROFIT'):
|
5112
|
-
|
5115
|
+
triggerPriceIsRequired = True
|
5113
5116
|
quantityIsRequired = True
|
5114
5117
|
elif (uppercaseType == 'STOP_LOSS_LIMIT') or (uppercaseType == 'TAKE_PROFIT_LIMIT'):
|
5115
5118
|
quantityIsRequired = True
|
5116
|
-
|
5119
|
+
triggerPriceIsRequired = True
|
5117
5120
|
priceIsRequired = True
|
5118
5121
|
timeInForceIsRequired = True
|
5119
5122
|
elif uppercaseType == 'LIMIT_MAKER':
|
@@ -5127,11 +5130,11 @@ class binance(Exchange, ImplicitAPI):
|
|
5127
5130
|
request['price'] = self.price_to_precision(symbol, price)
|
5128
5131
|
if timeInForceIsRequired and (self.safe_string(params, 'timeInForce') is None):
|
5129
5132
|
request['timeInForce'] = self.options['defaultTimeInForce'] # 'GTC' = Good To Cancel(default), 'IOC' = Immediate Or Cancel
|
5130
|
-
if
|
5131
|
-
if
|
5132
|
-
raise InvalidOrder(self.id + ' editOrder() requires a
|
5133
|
+
if triggerPriceIsRequired:
|
5134
|
+
if triggerPrice is None:
|
5135
|
+
raise InvalidOrder(self.id + ' editOrder() requires a triggerPrice extra param for a ' + type + ' order')
|
5133
5136
|
else:
|
5134
|
-
request['stopPrice'] = self.price_to_precision(symbol,
|
5137
|
+
request['stopPrice'] = self.price_to_precision(symbol, triggerPrice)
|
5135
5138
|
request['cancelReplaceMode'] = 'STOP_ON_FAILURE' # If the cancel request fails, the new order placement will not be attempted.
|
5136
5139
|
cancelId = self.safe_string_2(params, 'cancelNewClientOrderId', 'cancelOrigClientOrderId')
|
5137
5140
|
if cancelId is None:
|
@@ -5776,7 +5779,7 @@ class binance(Exchange, ImplicitAPI):
|
|
5776
5779
|
if type == 'limit_maker':
|
5777
5780
|
type = 'limit'
|
5778
5781
|
stopPriceString = self.safe_string(order, 'stopPrice')
|
5779
|
-
|
5782
|
+
triggerPrice = self.parse_number(self.omit_zero(stopPriceString))
|
5780
5783
|
feeCost = self.safe_number(order, 'fee')
|
5781
5784
|
fee = None
|
5782
5785
|
if feeCost is not None:
|
@@ -5800,7 +5803,7 @@ class binance(Exchange, ImplicitAPI):
|
|
5800
5803
|
'reduceOnly': self.safe_bool(order, 'reduceOnly'),
|
5801
5804
|
'side': side,
|
5802
5805
|
'price': price,
|
5803
|
-
'triggerPrice':
|
5806
|
+
'triggerPrice': triggerPrice,
|
5804
5807
|
'amount': amount,
|
5805
5808
|
'cost': cost,
|
5806
5809
|
'average': average,
|
@@ -6072,7 +6075,7 @@ class binance(Exchange, ImplicitAPI):
|
|
6072
6075
|
validOrderTypes = self.safe_list(market['info'], 'orderTypes')
|
6073
6076
|
if not self.in_array(uppercaseType, validOrderTypes):
|
6074
6077
|
if initialUppercaseType != uppercaseType:
|
6075
|
-
raise InvalidOrder(self.id + '
|
6078
|
+
raise InvalidOrder(self.id + ' triggerPrice parameter is not allowed for ' + symbol + ' ' + type + ' orders')
|
6076
6079
|
else:
|
6077
6080
|
raise InvalidOrder(self.id + ' ' + type + ' is not a valid order type for the ' + symbol + ' market')
|
6078
6081
|
clientOrderIdRequest = 'newClientStrategyId' if isPortfolioMarginConditional else 'newClientOrderId'
|
@@ -6111,7 +6114,7 @@ class binance(Exchange, ImplicitAPI):
|
|
6111
6114
|
closePosition = self.safe_bool(params, 'closePosition', False)
|
6112
6115
|
timeInForceIsRequired = False
|
6113
6116
|
priceIsRequired = False
|
6114
|
-
|
6117
|
+
triggerPriceIsRequired = False
|
6115
6118
|
quantityIsRequired = False
|
6116
6119
|
#
|
6117
6120
|
# spot/margin
|
@@ -6157,13 +6160,13 @@ class binance(Exchange, ImplicitAPI):
|
|
6157
6160
|
timeInForceIsRequired = True
|
6158
6161
|
quantityIsRequired = True
|
6159
6162
|
elif (uppercaseType == 'STOP_LOSS') or (uppercaseType == 'TAKE_PROFIT'):
|
6160
|
-
|
6163
|
+
triggerPriceIsRequired = True
|
6161
6164
|
quantityIsRequired = True
|
6162
6165
|
if market['linear'] or market['inverse']:
|
6163
6166
|
priceIsRequired = True
|
6164
6167
|
elif (uppercaseType == 'STOP_LOSS_LIMIT') or (uppercaseType == 'TAKE_PROFIT_LIMIT'):
|
6165
6168
|
quantityIsRequired = True
|
6166
|
-
|
6169
|
+
triggerPriceIsRequired = True
|
6167
6170
|
priceIsRequired = True
|
6168
6171
|
timeInForceIsRequired = True
|
6169
6172
|
elif uppercaseType == 'LIMIT_MAKER':
|
@@ -6171,12 +6174,12 @@ class binance(Exchange, ImplicitAPI):
|
|
6171
6174
|
quantityIsRequired = True
|
6172
6175
|
elif uppercaseType == 'STOP':
|
6173
6176
|
quantityIsRequired = True
|
6174
|
-
|
6177
|
+
triggerPriceIsRequired = True
|
6175
6178
|
priceIsRequired = True
|
6176
6179
|
elif (uppercaseType == 'STOP_MARKET') or (uppercaseType == 'TAKE_PROFIT_MARKET'):
|
6177
6180
|
if not closePosition:
|
6178
6181
|
quantityIsRequired = True
|
6179
|
-
|
6182
|
+
triggerPriceIsRequired = True
|
6180
6183
|
elif uppercaseType == 'TRAILING_STOP_MARKET':
|
6181
6184
|
if not closePosition:
|
6182
6185
|
quantityIsRequired = True
|
@@ -6202,14 +6205,14 @@ class binance(Exchange, ImplicitAPI):
|
|
6202
6205
|
request['price'] = self.price_to_precision(symbol, price)
|
6203
6206
|
else:
|
6204
6207
|
request['price'] = self.parse_to_numeric(price) # some options don't have the precision available
|
6205
|
-
if
|
6208
|
+
if triggerPriceIsRequired:
|
6206
6209
|
if market['contract']:
|
6207
6210
|
if stopPrice is None:
|
6208
|
-
raise InvalidOrder(self.id + ' createOrder() requires a
|
6211
|
+
raise InvalidOrder(self.id + ' createOrder() requires a triggerPrice extra param for a ' + type + ' order')
|
6209
6212
|
else:
|
6210
6213
|
# check for delta price
|
6211
6214
|
if trailingDelta is None and stopPrice is None and trailingPercent is None:
|
6212
|
-
raise InvalidOrder(self.id + ' createOrder() requires a
|
6215
|
+
raise InvalidOrder(self.id + ' createOrder() requires a triggerPrice, trailingDelta or trailingPercent param for a ' + type + ' order')
|
6213
6216
|
if stopPrice is not None:
|
6214
6217
|
request['stopPrice'] = self.price_to_precision(symbol, stopPrice)
|
6215
6218
|
if timeInForceIsRequired and (self.safe_string(params, 'timeInForce') is None) and (self.safe_string(request, 'timeInForce') is None):
|
@@ -10888,7 +10891,7 @@ class binance(Exchange, ImplicitAPI):
|
|
10888
10891
|
paginate = False
|
10889
10892
|
paginate, params = self.handle_option_and_params(params, 'fetchLedger', 'paginate')
|
10890
10893
|
if paginate:
|
10891
|
-
return await self.fetch_paginated_call_dynamic('fetchLedger', code, since, limit, params)
|
10894
|
+
return await self.fetch_paginated_call_dynamic('fetchLedger', code, since, limit, params, None, False)
|
10892
10895
|
type = None
|
10893
10896
|
subType = None
|
10894
10897
|
currency = None
|
@@ -11963,7 +11966,7 @@ class binance(Exchange, ImplicitAPI):
|
|
11963
11966
|
# ...
|
11964
11967
|
# ]
|
11965
11968
|
#
|
11966
|
-
return self.
|
11969
|
+
return self.parse_open_interests_history(response, market, since, limit)
|
11967
11970
|
|
11968
11971
|
async def fetch_open_interest(self, symbol: str, params={}):
|
11969
11972
|
"""
|
@@ -12026,7 +12029,7 @@ class binance(Exchange, ImplicitAPI):
|
|
12026
12029
|
#
|
12027
12030
|
if market['option']:
|
12028
12031
|
symbol = market['symbol']
|
12029
|
-
result = self.
|
12032
|
+
result = self.parse_open_interests_history(response, market)
|
12030
12033
|
for i in range(0, len(result)):
|
12031
12034
|
item = result[i]
|
12032
12035
|
if item['symbol'] == symbol:
|
ccxt/async_support/bingx.py
CHANGED
@@ -64,6 +64,7 @@ class bingx(Exchange, ImplicitAPI):
|
|
64
64
|
'createTrailingAmountOrder': True,
|
65
65
|
'createTrailingPercentOrder': True,
|
66
66
|
'createTriggerOrder': True,
|
67
|
+
'editOrder': True,
|
67
68
|
'fetchBalance': True,
|
68
69
|
'fetchCanceledOrders': True,
|
69
70
|
'fetchClosedOrders': True,
|
@@ -86,6 +87,7 @@ class bingx(Exchange, ImplicitAPI):
|
|
86
87
|
'fetchMarkPrice': True,
|
87
88
|
'fetchMarkPrices': True,
|
88
89
|
'fetchMyLiquidations': True,
|
90
|
+
'fetchMyTrades': True,
|
89
91
|
'fetchOHLCV': True,
|
90
92
|
'fetchOpenInterest': True,
|
91
93
|
'fetchOpenOrders': True,
|
@@ -1037,7 +1039,7 @@ class bingx(Exchange, ImplicitAPI):
|
|
1037
1039
|
}
|
1038
1040
|
request['interval'] = self.safe_string(self.timeframes, timeframe, timeframe)
|
1039
1041
|
if since is not None:
|
1040
|
-
request['startTime'] = since
|
1042
|
+
request['startTime'] = max(since - 1, 0)
|
1041
1043
|
if limit is not None:
|
1042
1044
|
request['limit'] = limit
|
1043
1045
|
until = self.safe_integer_2(params, 'until', 'endTime')
|
@@ -5343,6 +5345,8 @@ class bingx(Exchange, ImplicitAPI):
|
|
5343
5345
|
elif market['swap']:
|
5344
5346
|
request['endTs'] = now
|
5345
5347
|
if market['spot']:
|
5348
|
+
if limit is not None:
|
5349
|
+
request['limit'] = limit # default 500, maximum 1000
|
5346
5350
|
response = await self.spotV1PrivateGetTradeMyTrades(self.extend(request, params))
|
5347
5351
|
data = self.safe_dict(response, 'data', {})
|
5348
5352
|
fills = self.safe_list(data, 'fills', [])
|