ccxt 4.2.20__py2.py3-none-any.whl → 4.2.22__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of ccxt might be problematic. Click here for more details.

Files changed (62) hide show
  1. ccxt/__init__.py +1 -1
  2. ccxt/abstract/binance.py +3 -0
  3. ccxt/abstract/binancecoinm.py +3 -0
  4. ccxt/abstract/binanceus.py +16 -12
  5. ccxt/abstract/binanceusdm.py +3 -0
  6. ccxt/abstract/gate.py +1 -0
  7. ccxt/abstract/gateio.py +1 -0
  8. ccxt/abstract/novadax.py +22 -18
  9. ccxt/abstract/phemex.py +1 -0
  10. ccxt/async_support/__init__.py +1 -1
  11. ccxt/async_support/base/exchange.py +16 -4
  12. ccxt/async_support/bigone.py +1 -0
  13. ccxt/async_support/binance.py +14 -3
  14. ccxt/async_support/bitget.py +11 -1
  15. ccxt/async_support/bitrue.py +1 -0
  16. ccxt/async_support/bitvavo.py +250 -152
  17. ccxt/async_support/blockchaincom.py +3 -1
  18. ccxt/async_support/bybit.py +49 -10
  19. ccxt/async_support/coinbasepro.py +1 -0
  20. ccxt/async_support/coinex.py +34 -12
  21. ccxt/async_support/deribit.py +145 -0
  22. ccxt/async_support/gate.py +30 -1
  23. ccxt/async_support/novadax.py +27 -23
  24. ccxt/async_support/okcoin.py +3 -0
  25. ccxt/async_support/phemex.py +7 -3
  26. ccxt/async_support/poloniex.py +1 -0
  27. ccxt/async_support/woo.py +1 -1
  28. ccxt/base/exchange.py +17 -5
  29. ccxt/bigone.py +1 -0
  30. ccxt/binance.py +14 -3
  31. ccxt/bitget.py +11 -1
  32. ccxt/bitrue.py +1 -0
  33. ccxt/bitvavo.py +250 -152
  34. ccxt/blockchaincom.py +3 -1
  35. ccxt/bybit.py +49 -10
  36. ccxt/coinbasepro.py +1 -0
  37. ccxt/coinex.py +34 -12
  38. ccxt/deribit.py +145 -0
  39. ccxt/gate.py +30 -1
  40. ccxt/novadax.py +27 -23
  41. ccxt/okcoin.py +3 -0
  42. ccxt/phemex.py +7 -3
  43. ccxt/poloniex.py +1 -0
  44. ccxt/pro/__init__.py +1 -1
  45. ccxt/pro/bequant.py +7 -1
  46. ccxt/pro/binance.py +7 -4
  47. ccxt/pro/binancecoinm.py +7 -1
  48. ccxt/pro/binanceus.py +7 -1
  49. ccxt/pro/bitcoincom.py +7 -1
  50. ccxt/pro/bitget.py +1 -1
  51. ccxt/pro/bitopro.py +7 -3
  52. ccxt/pro/bitrue.py +5 -1
  53. ccxt/pro/bitvavo.py +623 -19
  54. ccxt/pro/lbank.py +1 -1
  55. ccxt/pro/okx.py +10 -2
  56. ccxt/test/test_async.py +14 -1
  57. ccxt/test/test_sync.py +14 -1
  58. ccxt/woo.py +1 -1
  59. {ccxt-4.2.20.dist-info → ccxt-4.2.22.dist-info}/METADATA +4 -4
  60. {ccxt-4.2.20.dist-info → ccxt-4.2.22.dist-info}/RECORD +62 -62
  61. {ccxt-4.2.20.dist-info → ccxt-4.2.22.dist-info}/WHEEL +0 -0
  62. {ccxt-4.2.20.dist-info → ccxt-4.2.22.dist-info}/top_level.txt +0 -0
ccxt/__init__.py CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.2.20'
25
+ __version__ = '4.2.22'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
ccxt/abstract/binance.py CHANGED
@@ -94,6 +94,7 @@ class ImplicitAPI:
94
94
  sapi_get_convert_exchangeinfo = sapiGetConvertExchangeInfo = Entry('convert/exchangeInfo', 'sapi', 'GET', {'cost': 50})
95
95
  sapi_get_convert_assetinfo = sapiGetConvertAssetInfo = Entry('convert/assetInfo', 'sapi', 'GET', {'cost': 10})
96
96
  sapi_get_convert_orderstatus = sapiGetConvertOrderStatus = Entry('convert/orderStatus', 'sapi', 'GET', {'cost': 0.6667})
97
+ sapi_get_convert_limit_queryopenorders = sapiGetConvertLimitQueryOpenOrders = Entry('convert/limit/queryOpenOrders', 'sapi', 'GET', {'cost': 20.001})
97
98
  sapi_get_account_status = sapiGetAccountStatus = Entry('account/status', 'sapi', 'GET', {'cost': 0.1})
98
99
  sapi_get_account_apitradingstatus = sapiGetAccountApiTradingStatus = Entry('account/apiTradingStatus', 'sapi', 'GET', {'cost': 0.1})
99
100
  sapi_get_account_apirestrictions_iprestriction = sapiGetAccountApiRestrictionsIpRestriction = Entry('account/apiRestrictions/ipRestriction', 'sapi', 'GET', {'cost': 0.1})
@@ -339,6 +340,8 @@ class ImplicitAPI:
339
340
  sapi_post_loan_vip_repay = sapiPostLoanVipRepay = Entry('loan/vip/repay', 'sapi', 'POST', {'cost': 40.002})
340
341
  sapi_post_convert_getquote = sapiPostConvertGetQuote = Entry('convert/getQuote', 'sapi', 'POST', {'cost': 1.3334})
341
342
  sapi_post_convert_acceptquote = sapiPostConvertAcceptQuote = Entry('convert/acceptQuote', 'sapi', 'POST', {'cost': 3.3335})
343
+ sapi_post_convert_limit_placeorder = sapiPostConvertLimitPlaceOrder = Entry('convert/limit/placeOrder', 'sapi', 'POST', {'cost': 3.3335})
344
+ sapi_post_convert_limit_cancelorder = sapiPostConvertLimitCancelOrder = Entry('convert/limit/cancelOrder', 'sapi', 'POST', {'cost': 1.3334})
342
345
  sapi_post_portfolio_auto_collection = sapiPostPortfolioAutoCollection = Entry('portfolio/auto-collection', 'sapi', 'POST', {'cost': 150})
343
346
  sapi_post_portfolio_asset_collection = sapiPostPortfolioAssetCollection = Entry('portfolio/asset-collection', 'sapi', 'POST', {'cost': 6})
344
347
  sapi_post_portfolio_bnb_transfer = sapiPostPortfolioBnbTransfer = Entry('portfolio/bnb-transfer', 'sapi', 'POST', {'cost': 150})
@@ -94,6 +94,7 @@ class ImplicitAPI:
94
94
  sapi_get_convert_exchangeinfo = sapiGetConvertExchangeInfo = Entry('convert/exchangeInfo', 'sapi', 'GET', {'cost': 50})
95
95
  sapi_get_convert_assetinfo = sapiGetConvertAssetInfo = Entry('convert/assetInfo', 'sapi', 'GET', {'cost': 10})
96
96
  sapi_get_convert_orderstatus = sapiGetConvertOrderStatus = Entry('convert/orderStatus', 'sapi', 'GET', {'cost': 0.6667})
97
+ sapi_get_convert_limit_queryopenorders = sapiGetConvertLimitQueryOpenOrders = Entry('convert/limit/queryOpenOrders', 'sapi', 'GET', {'cost': 20.001})
97
98
  sapi_get_account_status = sapiGetAccountStatus = Entry('account/status', 'sapi', 'GET', {'cost': 0.1})
98
99
  sapi_get_account_apitradingstatus = sapiGetAccountApiTradingStatus = Entry('account/apiTradingStatus', 'sapi', 'GET', {'cost': 0.1})
99
100
  sapi_get_account_apirestrictions_iprestriction = sapiGetAccountApiRestrictionsIpRestriction = Entry('account/apiRestrictions/ipRestriction', 'sapi', 'GET', {'cost': 0.1})
@@ -339,6 +340,8 @@ class ImplicitAPI:
339
340
  sapi_post_loan_vip_repay = sapiPostLoanVipRepay = Entry('loan/vip/repay', 'sapi', 'POST', {'cost': 40.002})
340
341
  sapi_post_convert_getquote = sapiPostConvertGetQuote = Entry('convert/getQuote', 'sapi', 'POST', {'cost': 1.3334})
341
342
  sapi_post_convert_acceptquote = sapiPostConvertAcceptQuote = Entry('convert/acceptQuote', 'sapi', 'POST', {'cost': 3.3335})
343
+ sapi_post_convert_limit_placeorder = sapiPostConvertLimitPlaceOrder = Entry('convert/limit/placeOrder', 'sapi', 'POST', {'cost': 3.3335})
344
+ sapi_post_convert_limit_cancelorder = sapiPostConvertLimitCancelOrder = Entry('convert/limit/cancelOrder', 'sapi', 'POST', {'cost': 1.3334})
342
345
  sapi_post_portfolio_auto_collection = sapiPostPortfolioAutoCollection = Entry('portfolio/auto-collection', 'sapi', 'POST', {'cost': 150})
343
346
  sapi_post_portfolio_asset_collection = sapiPostPortfolioAssetCollection = Entry('portfolio/asset-collection', 'sapi', 'POST', {'cost': 6})
344
347
  sapi_post_portfolio_bnb_transfer = sapiPostPortfolioBnbTransfer = Entry('portfolio/bnb-transfer', 'sapi', 'POST', {'cost': 150})
@@ -94,6 +94,7 @@ class ImplicitAPI:
94
94
  sapi_get_convert_exchangeinfo = sapiGetConvertExchangeInfo = Entry('convert/exchangeInfo', 'sapi', 'GET', {'cost': 50})
95
95
  sapi_get_convert_assetinfo = sapiGetConvertAssetInfo = Entry('convert/assetInfo', 'sapi', 'GET', {'cost': 10})
96
96
  sapi_get_convert_orderstatus = sapiGetConvertOrderStatus = Entry('convert/orderStatus', 'sapi', 'GET', {'cost': 0.6667})
97
+ sapi_get_convert_limit_queryopenorders = sapiGetConvertLimitQueryOpenOrders = Entry('convert/limit/queryOpenOrders', 'sapi', 'GET', {'cost': 20.001})
97
98
  sapi_get_account_status = sapiGetAccountStatus = Entry('account/status', 'sapi', 'GET', {'cost': 0.1})
98
99
  sapi_get_account_apitradingstatus = sapiGetAccountApiTradingStatus = Entry('account/apiTradingStatus', 'sapi', 'GET', {'cost': 0.1})
99
100
  sapi_get_account_apirestrictions_iprestriction = sapiGetAccountApiRestrictionsIpRestriction = Entry('account/apiRestrictions/ipRestriction', 'sapi', 'GET', {'cost': 0.1})
@@ -339,6 +340,8 @@ class ImplicitAPI:
339
340
  sapi_post_loan_vip_repay = sapiPostLoanVipRepay = Entry('loan/vip/repay', 'sapi', 'POST', {'cost': 40.002})
340
341
  sapi_post_convert_getquote = sapiPostConvertGetQuote = Entry('convert/getQuote', 'sapi', 'POST', {'cost': 1.3334})
341
342
  sapi_post_convert_acceptquote = sapiPostConvertAcceptQuote = Entry('convert/acceptQuote', 'sapi', 'POST', {'cost': 3.3335})
343
+ sapi_post_convert_limit_placeorder = sapiPostConvertLimitPlaceOrder = Entry('convert/limit/placeOrder', 'sapi', 'POST', {'cost': 3.3335})
344
+ sapi_post_convert_limit_cancelorder = sapiPostConvertLimitCancelOrder = Entry('convert/limit/cancelOrder', 'sapi', 'POST', {'cost': 1.3334})
342
345
  sapi_post_portfolio_auto_collection = sapiPostPortfolioAutoCollection = Entry('portfolio/auto-collection', 'sapi', 'POST', {'cost': 150})
343
346
  sapi_post_portfolio_asset_collection = sapiPostPortfolioAssetCollection = Entry('portfolio/asset-collection', 'sapi', 'POST', {'cost': 6})
344
347
  sapi_post_portfolio_bnb_transfer = sapiPostPortfolioBnbTransfer = Entry('portfolio/bnb-transfer', 'sapi', 'POST', {'cost': 150})
@@ -562,21 +565,21 @@ class ImplicitAPI:
562
565
  eapiprivate_delete_allopenorders = eapiPrivateDeleteAllOpenOrders = Entry('allOpenOrders', 'eapiPrivate', 'DELETE', {'cost': 1})
563
566
  eapiprivate_delete_allopenordersbyunderlying = eapiPrivateDeleteAllOpenOrdersByUnderlying = Entry('allOpenOrdersByUnderlying', 'eapiPrivate', 'DELETE', {'cost': 1})
564
567
  eapiprivate_delete_listenkey = eapiPrivateDeleteListenKey = Entry('listenKey', 'eapiPrivate', 'DELETE', {'cost': 1})
565
- public_get_ping = publicGetPing = Entry('ping', 'public', 'GET', {'cost': 0.2})
566
- public_get_time = publicGetTime = Entry('time', 'public', 'GET', {'cost': 0.2})
568
+ public_get_ping = publicGetPing = Entry('ping', 'public', 'GET', {'cost': 1})
569
+ public_get_time = publicGetTime = Entry('time', 'public', 'GET', {'cost': 1})
567
570
  public_get_depth = publicGetDepth = Entry('depth', 'public', 'GET', {'cost': 1, 'byLimit': [[100, 1], [500, 5], [1000, 10], [5000, 50]]})
568
- public_get_trades = publicGetTrades = Entry('trades', 'public', 'GET', {'cost': 2})
569
- public_get_aggtrades = publicGetAggTrades = Entry('aggTrades', 'public', 'GET', {'cost': 0.4})
570
- public_get_historicaltrades = publicGetHistoricalTrades = Entry('historicalTrades', 'public', 'GET', {'cost': 2})
571
- public_get_klines = publicGetKlines = Entry('klines', 'public', 'GET', {'cost': 0.4})
571
+ public_get_trades = publicGetTrades = Entry('trades', 'public', 'GET', {'cost': 1})
572
+ public_get_aggtrades = publicGetAggTrades = Entry('aggTrades', 'public', 'GET', {'cost': 1})
573
+ public_get_historicaltrades = publicGetHistoricalTrades = Entry('historicalTrades', 'public', 'GET', {'cost': 5})
574
+ public_get_klines = publicGetKlines = Entry('klines', 'public', 'GET', {'cost': 1})
572
575
  public_get_uiklines = publicGetUiKlines = Entry('uiKlines', 'public', 'GET', {'cost': 0.4})
573
- public_get_ticker_24hr = publicGetTicker24hr = Entry('ticker/24hr', 'public', 'GET', {'cost': 0.4, 'noSymbol': 16})
574
- public_get_ticker = publicGetTicker = Entry('ticker', 'public', 'GET', {'cost': 0.4, 'noSymbol': 16})
576
+ public_get_ticker_24hr = publicGetTicker24hr = Entry('ticker/24hr', 'public', 'GET', {'cost': 1, 'noSymbol': 40})
577
+ public_get_ticker = publicGetTicker = Entry('ticker', 'public', 'GET', {'cost': 2, 'noSymbol': 100})
575
578
  public_get_ticker_tradingday = publicGetTickerTradingDay = Entry('ticker/tradingDay', 'public', 'GET', {'cost': 0.8})
576
- public_get_ticker_price = publicGetTickerPrice = Entry('ticker/price', 'public', 'GET', {'cost': 0.4, 'noSymbol': 0.8})
577
- public_get_ticker_bookticker = publicGetTickerBookTicker = Entry('ticker/bookTicker', 'public', 'GET', {'cost': 0.4, 'noSymbol': 0.8})
578
- public_get_exchangeinfo = publicGetExchangeInfo = Entry('exchangeInfo', 'public', 'GET', {'cost': 4})
579
- public_get_avgprice = publicGetAvgPrice = Entry('avgPrice', 'public', 'GET', {'cost': 0.4})
579
+ public_get_ticker_price = publicGetTickerPrice = Entry('ticker/price', 'public', 'GET', {'cost': 1, 'noSymbol': 2})
580
+ public_get_ticker_bookticker = publicGetTickerBookTicker = Entry('ticker/bookTicker', 'public', 'GET', {'cost': 1, 'noSymbol': 2})
581
+ public_get_exchangeinfo = publicGetExchangeInfo = Entry('exchangeInfo', 'public', 'GET', {'cost': 10})
582
+ public_get_avgprice = publicGetAvgPrice = Entry('avgPrice', 'public', 'GET', {'cost': 1})
580
583
  public_put_userdatastream = publicPutUserDataStream = Entry('userDataStream', 'public', 'PUT', {'cost': 0.4})
581
584
  public_post_userdatastream = publicPostUserDataStream = Entry('userDataStream', 'public', 'POST', {'cost': 0.4})
582
585
  public_delete_userdatastream = publicDeleteUserDataStream = Entry('userDataStream', 'public', 'DELETE', {'cost': 0.4})
@@ -592,6 +595,7 @@ class ImplicitAPI:
592
595
  private_get_mypreventedmatches = privateGetMyPreventedMatches = Entry('myPreventedMatches', 'private', 'GET', {'cost': 4})
593
596
  private_get_myallocations = privateGetMyAllocations = Entry('myAllocations', 'private', 'GET', {'cost': 4})
594
597
  private_get_account_commission = privateGetAccountCommission = Entry('account/commission', 'private', 'GET', {'cost': 4})
598
+ private_get_status = privateGetStatus = Entry('status', 'private', 'GET', {'cost': 1})
595
599
  private_post_order_oco = privatePostOrderOco = Entry('order/oco', 'private', 'POST', {'cost': 0.2})
596
600
  private_post_sor_order = privatePostSorOrder = Entry('sor/order', 'private', 'POST', {'cost': 0.2})
597
601
  private_post_sor_order_test = privatePostSorOrderTest = Entry('sor/order/test', 'private', 'POST', {'cost': 0.2})
@@ -94,6 +94,7 @@ class ImplicitAPI:
94
94
  sapi_get_convert_exchangeinfo = sapiGetConvertExchangeInfo = Entry('convert/exchangeInfo', 'sapi', 'GET', {'cost': 50})
95
95
  sapi_get_convert_assetinfo = sapiGetConvertAssetInfo = Entry('convert/assetInfo', 'sapi', 'GET', {'cost': 10})
96
96
  sapi_get_convert_orderstatus = sapiGetConvertOrderStatus = Entry('convert/orderStatus', 'sapi', 'GET', {'cost': 0.6667})
97
+ sapi_get_convert_limit_queryopenorders = sapiGetConvertLimitQueryOpenOrders = Entry('convert/limit/queryOpenOrders', 'sapi', 'GET', {'cost': 20.001})
97
98
  sapi_get_account_status = sapiGetAccountStatus = Entry('account/status', 'sapi', 'GET', {'cost': 0.1})
98
99
  sapi_get_account_apitradingstatus = sapiGetAccountApiTradingStatus = Entry('account/apiTradingStatus', 'sapi', 'GET', {'cost': 0.1})
99
100
  sapi_get_account_apirestrictions_iprestriction = sapiGetAccountApiRestrictionsIpRestriction = Entry('account/apiRestrictions/ipRestriction', 'sapi', 'GET', {'cost': 0.1})
@@ -339,6 +340,8 @@ class ImplicitAPI:
339
340
  sapi_post_loan_vip_repay = sapiPostLoanVipRepay = Entry('loan/vip/repay', 'sapi', 'POST', {'cost': 40.002})
340
341
  sapi_post_convert_getquote = sapiPostConvertGetQuote = Entry('convert/getQuote', 'sapi', 'POST', {'cost': 1.3334})
341
342
  sapi_post_convert_acceptquote = sapiPostConvertAcceptQuote = Entry('convert/acceptQuote', 'sapi', 'POST', {'cost': 3.3335})
343
+ sapi_post_convert_limit_placeorder = sapiPostConvertLimitPlaceOrder = Entry('convert/limit/placeOrder', 'sapi', 'POST', {'cost': 3.3335})
344
+ sapi_post_convert_limit_cancelorder = sapiPostConvertLimitCancelOrder = Entry('convert/limit/cancelOrder', 'sapi', 'POST', {'cost': 1.3334})
342
345
  sapi_post_portfolio_auto_collection = sapiPostPortfolioAutoCollection = Entry('portfolio/auto-collection', 'sapi', 'POST', {'cost': 150})
343
346
  sapi_post_portfolio_asset_collection = sapiPostPortfolioAssetCollection = Entry('portfolio/asset-collection', 'sapi', 'POST', {'cost': 6})
344
347
  sapi_post_portfolio_bnb_transfer = sapiPostPortfolioBnbTransfer = Entry('portfolio/bnb-transfer', 'sapi', 'POST', {'cost': 150})
ccxt/abstract/gate.py CHANGED
@@ -243,6 +243,7 @@ class ImplicitAPI:
243
243
  private_loan_get_multi_collateral_currency_quota = privateLoanGetMultiCollateralCurrencyQuota = Entry('multi_collateral/currency_quota', ['private', 'loan'], 'GET', {'cost': 1.3333333333333333})
244
244
  private_loan_get_multi_collateral_currencies = privateLoanGetMultiCollateralCurrencies = Entry('multi_collateral/currencies', ['private', 'loan'], 'GET', {'cost': 1.3333333333333333})
245
245
  private_loan_get_multi_collateral_ltv = privateLoanGetMultiCollateralLtv = Entry('multi_collateral/ltv', ['private', 'loan'], 'GET', {'cost': 1.3333333333333333})
246
+ private_loan_get_multi_collateral_fixed_rate = privateLoanGetMultiCollateralFixedRate = Entry('multi_collateral/fixed_rate', ['private', 'loan'], 'GET', {'cost': 1.3333333333333333})
246
247
  private_loan_post_collateral_orders = privateLoanPostCollateralOrders = Entry('collateral/orders', ['private', 'loan'], 'POST', {'cost': 1.3333333333333333})
247
248
  private_loan_post_collateral_repay = privateLoanPostCollateralRepay = Entry('collateral/repay', ['private', 'loan'], 'POST', {'cost': 1.3333333333333333})
248
249
  private_loan_post_collateral_collaterals = privateLoanPostCollateralCollaterals = Entry('collateral/collaterals', ['private', 'loan'], 'POST', {'cost': 1.3333333333333333})
ccxt/abstract/gateio.py CHANGED
@@ -243,6 +243,7 @@ class ImplicitAPI:
243
243
  private_loan_get_multi_collateral_currency_quota = privateLoanGetMultiCollateralCurrencyQuota = Entry('multi_collateral/currency_quota', ['private', 'loan'], 'GET', {'cost': 1.3333333333333333})
244
244
  private_loan_get_multi_collateral_currencies = privateLoanGetMultiCollateralCurrencies = Entry('multi_collateral/currencies', ['private', 'loan'], 'GET', {'cost': 1.3333333333333333})
245
245
  private_loan_get_multi_collateral_ltv = privateLoanGetMultiCollateralLtv = Entry('multi_collateral/ltv', ['private', 'loan'], 'GET', {'cost': 1.3333333333333333})
246
+ private_loan_get_multi_collateral_fixed_rate = privateLoanGetMultiCollateralFixedRate = Entry('multi_collateral/fixed_rate', ['private', 'loan'], 'GET', {'cost': 1.3333333333333333})
246
247
  private_loan_post_collateral_orders = privateLoanPostCollateralOrders = Entry('collateral/orders', ['private', 'loan'], 'POST', {'cost': 1.3333333333333333})
247
248
  private_loan_post_collateral_repay = privateLoanPostCollateralRepay = Entry('collateral/repay', ['private', 'loan'], 'POST', {'cost': 1.3333333333333333})
248
249
  private_loan_post_collateral_collaterals = privateLoanPostCollateralCollaterals = Entry('collateral/collaterals', ['private', 'loan'], 'POST', {'cost': 1.3333333333333333})
ccxt/abstract/novadax.py CHANGED
@@ -2,24 +2,28 @@ from ccxt.base.types import Entry
2
2
 
3
3
 
4
4
  class ImplicitAPI:
5
- public_get_common_symbol = publicGetCommonSymbol = Entry('common/symbol', 'public', 'GET', {'cost': 1.2})
6
- public_get_common_symbols = publicGetCommonSymbols = Entry('common/symbols', 'public', 'GET', {'cost': 1.2})
7
- public_get_common_timestamp = publicGetCommonTimestamp = Entry('common/timestamp', 'public', 'GET', {'cost': 1.2})
8
- public_get_market_tickers = publicGetMarketTickers = Entry('market/tickers', 'public', 'GET', {'cost': 1.2})
9
- public_get_market_ticker = publicGetMarketTicker = Entry('market/ticker', 'public', 'GET', {'cost': 1.2})
10
- public_get_market_depth = publicGetMarketDepth = Entry('market/depth', 'public', 'GET', {'cost': 1.2})
11
- public_get_market_trades = publicGetMarketTrades = Entry('market/trades', 'public', 'GET', {'cost': 1.2})
12
- public_get_market_kline_history = publicGetMarketKlineHistory = Entry('market/kline/history', 'public', 'GET', {'cost': 1.2})
13
- private_get_orders_get = privateGetOrdersGet = Entry('orders/get', 'private', 'GET', {'cost': 3})
14
- private_get_orders_list = privateGetOrdersList = Entry('orders/list', 'private', 'GET', {'cost': 3})
5
+ public_get_common_symbol = publicGetCommonSymbol = Entry('common/symbol', 'public', 'GET', {'cost': 1})
6
+ public_get_common_symbols = publicGetCommonSymbols = Entry('common/symbols', 'public', 'GET', {'cost': 1})
7
+ public_get_common_timestamp = publicGetCommonTimestamp = Entry('common/timestamp', 'public', 'GET', {'cost': 1})
8
+ public_get_market_tickers = publicGetMarketTickers = Entry('market/tickers', 'public', 'GET', {'cost': 5})
9
+ public_get_market_ticker = publicGetMarketTicker = Entry('market/ticker', 'public', 'GET', {'cost': 1})
10
+ public_get_market_depth = publicGetMarketDepth = Entry('market/depth', 'public', 'GET', {'cost': 1})
11
+ public_get_market_trades = publicGetMarketTrades = Entry('market/trades', 'public', 'GET', {'cost': 5})
12
+ public_get_market_kline_history = publicGetMarketKlineHistory = Entry('market/kline/history', 'public', 'GET', {'cost': 5})
13
+ private_get_orders_get = privateGetOrdersGet = Entry('orders/get', 'private', 'GET', {'cost': 1})
14
+ private_get_orders_list = privateGetOrdersList = Entry('orders/list', 'private', 'GET', {'cost': 10})
15
15
  private_get_orders_fill = privateGetOrdersFill = Entry('orders/fill', 'private', 'GET', {'cost': 3})
16
- private_get_orders_fills = privateGetOrdersFills = Entry('orders/fills', 'private', 'GET', {'cost': 3})
17
- private_get_account_getbalance = privateGetAccountGetBalance = Entry('account/getBalance', 'private', 'GET', {'cost': 3})
18
- private_get_account_subs = privateGetAccountSubs = Entry('account/subs', 'private', 'GET', {'cost': 3})
19
- private_get_account_subs_balance = privateGetAccountSubsBalance = Entry('account/subs/balance', 'private', 'GET', {'cost': 3})
20
- private_get_account_subs_transfer_record = privateGetAccountSubsTransferRecord = Entry('account/subs/transfer/record', 'private', 'GET', {'cost': 3})
16
+ private_get_orders_fills = privateGetOrdersFills = Entry('orders/fills', 'private', 'GET', {'cost': 10})
17
+ private_get_account_getbalance = privateGetAccountGetBalance = Entry('account/getBalance', 'private', 'GET', {'cost': 1})
18
+ private_get_account_subs = privateGetAccountSubs = Entry('account/subs', 'private', 'GET', {'cost': 1})
19
+ private_get_account_subs_balance = privateGetAccountSubsBalance = Entry('account/subs/balance', 'private', 'GET', {'cost': 1})
20
+ private_get_account_subs_transfer_record = privateGetAccountSubsTransferRecord = Entry('account/subs/transfer/record', 'private', 'GET', {'cost': 10})
21
21
  private_get_wallet_query_deposit_withdraw = privateGetWalletQueryDepositWithdraw = Entry('wallet/query/deposit-withdraw', 'private', 'GET', {'cost': 3})
22
- private_post_orders_create = privatePostOrdersCreate = Entry('orders/create', 'private', 'POST', {'cost': 3})
23
- private_post_orders_cancel = privatePostOrdersCancel = Entry('orders/cancel', 'private', 'POST', {'cost': 3})
22
+ private_post_orders_create = privatePostOrdersCreate = Entry('orders/create', 'private', 'POST', {'cost': 5})
23
+ private_post_orders_batch_create = privatePostOrdersBatchCreate = Entry('orders/batch-create', 'private', 'POST', {'cost': 50})
24
+ private_post_orders_cancel = privatePostOrdersCancel = Entry('orders/cancel', 'private', 'POST', {'cost': 1})
25
+ private_post_orders_batch_cancel = privatePostOrdersBatchCancel = Entry('orders/batch-cancel', 'private', 'POST', {'cost': 10})
26
+ private_post_orders_cancel_by_symbol = privatePostOrdersCancelBySymbol = Entry('orders/cancel-by-symbol', 'private', 'POST', {'cost': 10})
27
+ private_post_account_subs_transfer = privatePostAccountSubsTransfer = Entry('account/subs/transfer', 'private', 'POST', {'cost': 5})
28
+ private_post_wallet_withdraw_coin = privatePostWalletWithdrawCoin = Entry('wallet/withdraw/coin', 'private', 'POST', {'cost': 3})
24
29
  private_post_account_withdraw_coin = privatePostAccountWithdrawCoin = Entry('account/withdraw/coin', 'private', 'POST', {'cost': 3})
25
- private_post_account_subs_transfer = privatePostAccountSubsTransfer = Entry('account/subs/transfer', 'private', 'POST', {'cost': 3})
ccxt/abstract/phemex.py CHANGED
@@ -49,6 +49,7 @@ class ImplicitAPI:
49
49
  private_get_api_data_g_futures_trades = privateGetApiDataGFuturesTrades = Entry('api-data/g-futures/trades', 'private', 'GET', {'cost': 5})
50
50
  private_get_api_data_futures_trading_fees = privateGetApiDataFuturesTradingFees = Entry('api-data/futures/trading-fees', 'private', 'GET', {'cost': 5})
51
51
  private_get_api_data_g_futures_trading_fees = privateGetApiDataGFuturesTradingFees = Entry('api-data/g-futures/trading-fees', 'private', 'GET', {'cost': 5})
52
+ private_get_api_data_futures_v2_tradeaccountdetail = privateGetApiDataFuturesV2TradeAccountDetail = Entry('api-data/futures/v2/tradeAccountDetail', 'private', 'GET', {'cost': 5})
52
53
  private_get_g_orders_activelist = privateGetGOrdersActiveList = Entry('g-orders/activeList', 'private', 'GET', {'cost': 1})
53
54
  private_get_orders_activelist = privateGetOrdersActiveList = Entry('orders/activeList', 'private', 'GET', {'cost': 1})
54
55
  private_get_exchange_order_list = privateGetExchangeOrderList = Entry('exchange/order/list', 'private', 'GET', {'cost': 5})
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.2.20'
7
+ __version__ = '4.2.22'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.2.20'
5
+ __version__ = '4.2.22'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -677,6 +677,12 @@ class Exchange(BaseExchange):
677
677
  message = '. If you want to build OHLCV candles from trade executions data, visit https://github.com/ccxt/ccxt/tree/master/examples/ and see "build-ohlcv-bars" file'
678
678
  raise NotSupported(self.id + ' fetchOHLCV() is not supported yet' + message)
679
679
 
680
+ async def fetch_ohlcv_ws(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}):
681
+ message = ''
682
+ if self.has['fetchTradesWs']:
683
+ message = '. If you want to build OHLCV candles from trade executions data, visit https://github.com/ccxt/ccxt/tree/master/examples/ and see "build-ohlcv-bars" file'
684
+ raise NotSupported(self.id + ' fetchOHLCVWs() is not supported yet. Try using fetchOHLCV instead.' + message)
685
+
680
686
  async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}):
681
687
  raise NotSupported(self.id + ' watchOHLCV() is not supported yet')
682
688
 
@@ -1207,9 +1213,6 @@ class Exchange(BaseExchange):
1207
1213
  async def watch_my_trades(self, symbol: str = None, since: Int = None, limit: Int = None, params={}):
1208
1214
  raise NotSupported(self.id + ' watchMyTrades() is not supported yet')
1209
1215
 
1210
- async def fetch_ohlcv_ws(self, symbol: str, timeframe: str = '1m', since: Int = None, limit: Int = None, params={}):
1211
- raise NotSupported(self.id + ' fetchOHLCVWs() is not supported yet')
1212
-
1213
1216
  async def fetch_greeks(self, symbol: str, params={}):
1214
1217
  raise NotSupported(self.id + ' fetchGreeks() is not supported yet')
1215
1218
 
@@ -1227,9 +1230,15 @@ class Exchange(BaseExchange):
1227
1230
  async def fetch_deposits(self, code: str = None, since: Int = None, limit: Int = None, params={}):
1228
1231
  raise NotSupported(self.id + ' fetchDeposits() is not supported yet')
1229
1232
 
1233
+ async def fetch_deposits_ws(self, code: str = None, since: Int = None, limit: Int = None, params={}):
1234
+ raise NotSupported(self.id + ' fetchDepositsWs() is not supported yet')
1235
+
1230
1236
  async def fetch_withdrawals(self, code: str = None, since: Int = None, limit: Int = None, params={}):
1231
1237
  raise NotSupported(self.id + ' fetchWithdrawals() is not supported yet')
1232
1238
 
1239
+ async def fetch_withdrawals_ws(self, code: str = None, since: Int = None, limit: Int = None, params={}):
1240
+ raise NotSupported(self.id + ' fetchWithdrawalsWs() is not supported yet')
1241
+
1233
1242
  async def fetch_open_interest(self, symbol: str, params={}):
1234
1243
  raise NotSupported(self.id + ' fetchOpenInterest() is not supported yet')
1235
1244
 
@@ -1331,6 +1340,9 @@ class Exchange(BaseExchange):
1331
1340
  async def fetch_trading_fees(self, params={}):
1332
1341
  raise NotSupported(self.id + ' fetchTradingFees() is not supported yet')
1333
1342
 
1343
+ async def fetch_trading_fees_ws(self, params={}):
1344
+ raise NotSupported(self.id + ' fetchTradingFeesWs() is not supported yet')
1345
+
1334
1346
  async def fetch_trading_fee(self, symbol: str, params={}):
1335
1347
  if not self.has['fetchTradingFees']:
1336
1348
  raise NotSupported(self.id + ' fetchTradingFee() is not supported yet')
@@ -53,6 +53,7 @@ class bigone(Exchange, ImplicitAPI):
53
53
  'fetchCurrencies': True,
54
54
  'fetchDepositAddress': True,
55
55
  'fetchDeposits': True,
56
+ 'fetchFundingRate': False,
56
57
  'fetchMarkets': True,
57
58
  'fetchMyTrades': True,
58
59
  'fetchOHLCV': True,
@@ -330,6 +330,7 @@ class binance(Exchange, ImplicitAPI):
330
330
  'convert/exchangeInfo': 50,
331
331
  'convert/assetInfo': 10,
332
332
  'convert/orderStatus': 0.6667,
333
+ 'convert/limit/queryOpenOrders': 20.001, # Weight(UID): 3000 => cost = 0.006667 * 3000 = 20.001
333
334
  'account/status': 0.1,
334
335
  'account/apiTradingStatus': 0.1,
335
336
  'account/apiRestrictions/ipRestriction': 0.1,
@@ -601,6 +602,8 @@ class binance(Exchange, ImplicitAPI):
601
602
  'loan/vip/repay': 40.002,
602
603
  'convert/getQuote': 1.3334, # Weight(UID): 200 => cost = 0.006667 * 200 = 1.3334
603
604
  'convert/acceptQuote': 3.3335, # Weight(UID): 500 => cost = 0.006667 * 500 = 3.3335
605
+ 'convert/limit/placeOrder': 3.3335, # Weight(UID): 500 => cost = 0.006667 * 500 = 3.3335
606
+ 'convert/limit/cancelOrder': 1.3334, # Weight(UID): 200 => cost = 0.006667 * 200 = 1.3334
604
607
  'portfolio/auto-collection': 150, # Weight(IP): 1500 => cost = 0.1 * 1500 = 150
605
608
  'portfolio/asset-collection': 6, # Weight(IP): 60 => cost = 0.1 * 60 = 6
606
609
  'portfolio/bnb-transfer': 150, # Weight(IP): 1500 => cost = 0.1 * 1500 = 150
@@ -7370,12 +7373,20 @@ class binance(Exchange, ImplicitAPI):
7370
7373
 
7371
7374
  async def fetch_positions(self, symbols: Strings = None, params={}):
7372
7375
  """
7376
+ :see: https://binance-docs.github.io/apidocs/futures/en/#position-information-v2-user_data
7377
+ :see: https://binance-docs.github.io/apidocs/delivery/en/#position-information-user_data
7378
+ :see: https://binance-docs.github.io/apidocs/futures/en/#account-information-v2-user_data
7379
+ :see: https://binance-docs.github.io/apidocs/delivery/en/#account-information-user_data
7380
+ :see: https://binance-docs.github.io/apidocs/voptions/en/#option-position-information-user_data
7373
7381
  fetch all open positions
7374
- :param str[]|None symbols: list of unified market symbols
7382
+ :param str[] [symbols]: list of unified market symbols
7375
7383
  :param dict [params]: extra parameters specific to the exchange API endpoint
7384
+ :param str [method]: method name to call, "positionRisk", "account" or "option", default is "positionRisk"
7376
7385
  :returns dict[]: a list of `position structure <https://docs.ccxt.com/#/?id=position-structure>`
7377
7386
  """
7378
- defaultMethod = self.safe_string(self.options, 'fetchPositions', 'positionRisk')
7387
+ defaultValue = self.safe_string(self.options, 'fetchPositions', 'positionRisk')
7388
+ defaultMethod = None
7389
+ defaultMethod, params = self.handle_option_and_params(params, 'fetchPositions', 'method', defaultValue)
7379
7390
  if defaultMethod == 'positionRisk':
7380
7391
  return await self.fetch_positions_risk(symbols, params)
7381
7392
  elif defaultMethod == 'account':
@@ -7383,7 +7394,7 @@ class binance(Exchange, ImplicitAPI):
7383
7394
  elif defaultMethod == 'option':
7384
7395
  return await self.fetch_option_positions(symbols, params)
7385
7396
  else:
7386
- raise NotSupported(self.id + '.options["fetchPositions"] = "' + defaultMethod + '" is invalid, please choose between "account", "positionRisk" and "option"')
7397
+ raise NotSupported(self.id + '.options["fetchPositions"]/params["method"] = "' + defaultMethod + '" is invalid, please choose between "account", "positionRisk" and "option"')
7387
7398
 
7388
7399
  async def fetch_account_positions(self, symbols: Strings = None, params={}):
7389
7400
  """
@@ -59,15 +59,21 @@ class bitget(Exchange, ImplicitAPI):
59
59
  'cancelOrders': True,
60
60
  'closeAllPositions': True,
61
61
  'closePosition': True,
62
+ 'createDepositAddress': False,
62
63
  'createMarketBuyOrderWithCost': True,
63
64
  'createMarketOrderWithCost': False,
64
65
  'createMarketSellOrderWithCost': False,
65
66
  'createOrder': True,
66
67
  'createOrders': True,
67
68
  'createOrderWithTakeProfitAndStopLoss': True,
69
+ 'createPostOnlyOrder': True,
68
70
  'createReduceOnlyOrder': False,
71
+ 'createStopLimitOrder': True,
69
72
  'createStopLossOrder': True,
73
+ 'createStopMarketOrder': True,
74
+ 'createStopOrder': True,
70
75
  'createTakeProfitOrder': True,
76
+ 'createTrailingAmountOrder': False,
71
77
  'createTrailingPercentOrder': True,
72
78
  'createTriggerOrder': True,
73
79
  'editOrder': True,
@@ -85,6 +91,7 @@ class bitget(Exchange, ImplicitAPI):
85
91
  'fetchDepositAddress': True,
86
92
  'fetchDepositAddresses': False,
87
93
  'fetchDeposits': True,
94
+ 'fetchDepositsWithdrawals': False,
88
95
  'fetchDepositWithdrawFee': 'emulated',
89
96
  'fetchDepositWithdrawFees': True,
90
97
  'fetchFundingHistory': True,
@@ -98,7 +105,7 @@ class bitget(Exchange, ImplicitAPI):
98
105
  'fetchLeverage': True,
99
106
  'fetchLeverageTiers': False,
100
107
  'fetchLiquidations': False,
101
- 'fetchMarginMode': None,
108
+ 'fetchMarginMode': False,
102
109
  'fetchMarketLeverageTiers': True,
103
110
  'fetchMarkets': True,
104
111
  'fetchMarkOHLCV': True,
@@ -123,8 +130,10 @@ class bitget(Exchange, ImplicitAPI):
123
130
  'fetchTrades': True,
124
131
  'fetchTradingFee': True,
125
132
  'fetchTradingFees': True,
133
+ 'fetchTransactions': False,
126
134
  'fetchTransfer': False,
127
135
  'fetchTransfers': True,
136
+ 'fetchWithdrawAddresses': False,
128
137
  'fetchWithdrawal': False,
129
138
  'fetchWithdrawals': True,
130
139
  'reduceMargin': True,
@@ -133,6 +142,7 @@ class bitget(Exchange, ImplicitAPI):
133
142
  'setLeverage': True,
134
143
  'setMarginMode': True,
135
144
  'setPositionMode': True,
145
+ 'signIn': False,
136
146
  'transfer': True,
137
147
  'withdraw': True,
138
148
  },
@@ -73,6 +73,7 @@ class bitrue(Exchange, ImplicitAPI):
73
73
  'fetchDepositsWithdrawals': False,
74
74
  'fetchDepositWithdrawFee': 'emulated',
75
75
  'fetchDepositWithdrawFees': True,
76
+ 'fetchFundingRate': False,
76
77
  'fetchIsolatedBorrowRate': False,
77
78
  'fetchIsolatedBorrowRates': False,
78
79
  'fetchMarginMode': False,