ccxt 4.4.26__py2.py3-none-any.whl → 4.4.28__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/alpaca.py +2 -0
- ccxt/abstract/binance.py +7 -0
- ccxt/abstract/binancecoinm.py +7 -0
- ccxt/abstract/binanceus.py +7 -0
- ccxt/abstract/binanceusdm.py +7 -0
- ccxt/abstract/hyperliquid.py +1 -1
- ccxt/ace.py +1 -1
- ccxt/alpaca.py +186 -6
- ccxt/ascendex.py +1 -1
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/ace.py +1 -1
- ccxt/async_support/alpaca.py +186 -6
- ccxt/async_support/ascendex.py +1 -1
- ccxt/async_support/base/exchange.py +19 -1
- ccxt/async_support/bequant.py +1 -1
- ccxt/async_support/bigone.py +1 -1
- ccxt/async_support/binance.py +8 -1
- ccxt/async_support/binancecoinm.py +1 -1
- ccxt/async_support/binanceus.py +1 -1
- ccxt/async_support/binanceusdm.py +1 -1
- ccxt/async_support/bingx.py +23 -28
- ccxt/async_support/bit2c.py +1 -1
- ccxt/async_support/bitbank.py +1 -1
- ccxt/async_support/bitbns.py +1 -1
- ccxt/async_support/bitfinex.py +1 -1
- ccxt/async_support/bitfinex2.py +1 -1
- ccxt/async_support/bitflyer.py +1 -1
- ccxt/async_support/bitget.py +1 -1
- ccxt/async_support/bithumb.py +1 -1
- ccxt/async_support/bitmart.py +1 -1
- ccxt/async_support/bitmex.py +1 -1
- ccxt/async_support/bitopro.py +1 -1
- ccxt/async_support/bitrue.py +1 -1
- ccxt/async_support/bitso.py +1 -1
- ccxt/async_support/bitstamp.py +1 -1
- ccxt/async_support/bitteam.py +1 -1
- ccxt/async_support/bitvavo.py +1 -1
- ccxt/async_support/bl3p.py +1 -1
- ccxt/async_support/blockchaincom.py +1 -1
- ccxt/async_support/blofin.py +1 -1
- ccxt/async_support/btcalpha.py +1 -1
- ccxt/async_support/btcbox.py +1 -1
- ccxt/async_support/btcmarkets.py +1 -1
- ccxt/async_support/btcturk.py +1 -1
- ccxt/async_support/bybit.py +4 -1
- ccxt/async_support/coinbase.py +89 -11
- ccxt/async_support/coinex.py +1 -1
- ccxt/async_support/gate.py +20 -16
- ccxt/async_support/hyperliquid.py +19 -1
- ccxt/async_support/kraken.py +43 -35
- ccxt/async_support/lbank.py +97 -2
- ccxt/async_support/wavesexchange.py +14 -2
- ccxt/base/exchange.py +19 -1
- ccxt/bequant.py +1 -1
- ccxt/bigone.py +1 -1
- ccxt/binance.py +8 -1
- ccxt/binancecoinm.py +1 -1
- ccxt/binanceus.py +1 -1
- ccxt/binanceusdm.py +1 -1
- ccxt/bingx.py +23 -28
- ccxt/bit2c.py +1 -1
- ccxt/bitbank.py +1 -1
- ccxt/bitbns.py +1 -1
- ccxt/bitfinex.py +1 -1
- ccxt/bitfinex2.py +1 -1
- ccxt/bitflyer.py +1 -1
- ccxt/bitget.py +1 -1
- ccxt/bithumb.py +1 -1
- ccxt/bitmart.py +1 -1
- ccxt/bitmex.py +1 -1
- ccxt/bitopro.py +1 -1
- ccxt/bitrue.py +1 -1
- ccxt/bitso.py +1 -1
- ccxt/bitstamp.py +1 -1
- ccxt/bitteam.py +1 -1
- ccxt/bitvavo.py +1 -1
- ccxt/bl3p.py +1 -1
- ccxt/blockchaincom.py +1 -1
- ccxt/blofin.py +1 -1
- ccxt/btcalpha.py +1 -1
- ccxt/btcbox.py +1 -1
- ccxt/btcmarkets.py +1 -1
- ccxt/btcturk.py +1 -1
- ccxt/bybit.py +4 -1
- ccxt/coinbase.py +89 -11
- ccxt/coinex.py +1 -1
- ccxt/gate.py +20 -16
- ccxt/hyperliquid.py +19 -1
- ccxt/kraken.py +43 -35
- ccxt/lbank.py +97 -2
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/binance.py +6 -7
- ccxt/pro/bybit.py +1 -1
- ccxt/pro/lbank.py +7 -4
- ccxt/pro/okx.py +1 -1
- ccxt/wavesexchange.py +14 -2
- ccxt-4.4.28.dist-info/METADATA +637 -0
- {ccxt-4.4.26.dist-info → ccxt-4.4.28.dist-info}/RECORD +102 -102
- ccxt-4.4.26.dist-info/METADATA +0 -636
- {ccxt-4.4.26.dist-info → ccxt-4.4.28.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.4.26.dist-info → ccxt-4.4.28.dist-info}/WHEEL +0 -0
- {ccxt-4.4.26.dist-info → ccxt-4.4.28.dist-info}/top_level.txt +0 -0
ccxt/__init__.py
CHANGED
ccxt/abstract/alpaca.py
CHANGED
@@ -21,10 +21,12 @@ class ImplicitAPI:
|
|
21
21
|
trader_private_get_v2_corporate_actions_announcements_id = traderPrivateGetV2CorporateActionsAnnouncementsId = Entry('v2/corporate_actions/announcements/{id}', ['trader', 'private'], 'GET', {})
|
22
22
|
trader_private_get_v2_corporate_actions_announcements = traderPrivateGetV2CorporateActionsAnnouncements = Entry('v2/corporate_actions/announcements', ['trader', 'private'], 'GET', {})
|
23
23
|
trader_private_get_v2_wallets = traderPrivateGetV2Wallets = Entry('v2/wallets', ['trader', 'private'], 'GET', {})
|
24
|
+
trader_private_get_v2_wallets_transfers = traderPrivateGetV2WalletsTransfers = Entry('v2/wallets/transfers', ['trader', 'private'], 'GET', {})
|
24
25
|
trader_private_post_v2_orders = traderPrivatePostV2Orders = Entry('v2/orders', ['trader', 'private'], 'POST', {})
|
25
26
|
trader_private_post_v2_watchlists = traderPrivatePostV2Watchlists = Entry('v2/watchlists', ['trader', 'private'], 'POST', {})
|
26
27
|
trader_private_post_v2_watchlists_watchlist_id = traderPrivatePostV2WatchlistsWatchlistId = Entry('v2/watchlists/{watchlist_id}', ['trader', 'private'], 'POST', {})
|
27
28
|
trader_private_post_v2_watchlists_by_name = traderPrivatePostV2WatchlistsByName = Entry('v2/watchlists:by_name', ['trader', 'private'], 'POST', {})
|
29
|
+
trader_private_post_v2_wallets_transfers = traderPrivatePostV2WalletsTransfers = Entry('v2/wallets/transfers', ['trader', 'private'], 'POST', {})
|
28
30
|
trader_private_put_v2_watchlists_watchlist_id = traderPrivatePutV2WatchlistsWatchlistId = Entry('v2/watchlists/{watchlist_id}', ['trader', 'private'], 'PUT', {})
|
29
31
|
trader_private_put_v2_watchlists_by_name = traderPrivatePutV2WatchlistsByName = Entry('v2/watchlists:by_name', ['trader', 'private'], 'PUT', {})
|
30
32
|
trader_private_patch_v2_orders_order_id = traderPrivatePatchV2OrdersOrderId = Entry('v2/orders/{order_id}', ['trader', 'private'], 'PATCH', {})
|
ccxt/abstract/binance.py
CHANGED
@@ -587,6 +587,9 @@ class ImplicitAPI:
|
|
587
587
|
eapiprivate_get_mmp = eapiPrivateGetMmp = Entry('mmp', 'eapiPrivate', 'GET', {'cost': 1})
|
588
588
|
eapiprivate_get_countdowncancelall = eapiPrivateGetCountdownCancelAll = Entry('countdownCancelAll', 'eapiPrivate', 'GET', {'cost': 1})
|
589
589
|
eapiprivate_get_order = eapiPrivateGetOrder = Entry('order', 'eapiPrivate', 'GET', {'cost': 1})
|
590
|
+
eapiprivate_get_block_order_orders = eapiPrivateGetBlockOrderOrders = Entry('block/order/orders', 'eapiPrivate', 'GET', {'cost': 5})
|
591
|
+
eapiprivate_get_block_order_execute = eapiPrivateGetBlockOrderExecute = Entry('block/order/execute', 'eapiPrivate', 'GET', {'cost': 5})
|
592
|
+
eapiprivate_get_block_user_trades = eapiPrivateGetBlockUserTrades = Entry('block/user-trades', 'eapiPrivate', 'GET', {'cost': 5})
|
590
593
|
eapiprivate_post_order = eapiPrivatePostOrder = Entry('order', 'eapiPrivate', 'POST', {'cost': 1})
|
591
594
|
eapiprivate_post_batchorders = eapiPrivatePostBatchOrders = Entry('batchOrders', 'eapiPrivate', 'POST', {'cost': 5})
|
592
595
|
eapiprivate_post_listenkey = eapiPrivatePostListenKey = Entry('listenKey', 'eapiPrivate', 'POST', {'cost': 1})
|
@@ -594,12 +597,16 @@ class ImplicitAPI:
|
|
594
597
|
eapiprivate_post_mmpreset = eapiPrivatePostMmpReset = Entry('mmpReset', 'eapiPrivate', 'POST', {'cost': 1})
|
595
598
|
eapiprivate_post_countdowncancelall = eapiPrivatePostCountdownCancelAll = Entry('countdownCancelAll', 'eapiPrivate', 'POST', {'cost': 1})
|
596
599
|
eapiprivate_post_countdowncancelallheartbeat = eapiPrivatePostCountdownCancelAllHeartBeat = Entry('countdownCancelAllHeartBeat', 'eapiPrivate', 'POST', {'cost': 10})
|
600
|
+
eapiprivate_post_block_order_create = eapiPrivatePostBlockOrderCreate = Entry('block/order/create', 'eapiPrivate', 'POST', {'cost': 5})
|
601
|
+
eapiprivate_post_block_order_execute = eapiPrivatePostBlockOrderExecute = Entry('block/order/execute', 'eapiPrivate', 'POST', {'cost': 5})
|
597
602
|
eapiprivate_put_listenkey = eapiPrivatePutListenKey = Entry('listenKey', 'eapiPrivate', 'PUT', {'cost': 1})
|
603
|
+
eapiprivate_put_block_order_create = eapiPrivatePutBlockOrderCreate = Entry('block/order/create', 'eapiPrivate', 'PUT', {'cost': 5})
|
598
604
|
eapiprivate_delete_order = eapiPrivateDeleteOrder = Entry('order', 'eapiPrivate', 'DELETE', {'cost': 1})
|
599
605
|
eapiprivate_delete_batchorders = eapiPrivateDeleteBatchOrders = Entry('batchOrders', 'eapiPrivate', 'DELETE', {'cost': 1})
|
600
606
|
eapiprivate_delete_allopenorders = eapiPrivateDeleteAllOpenOrders = Entry('allOpenOrders', 'eapiPrivate', 'DELETE', {'cost': 1})
|
601
607
|
eapiprivate_delete_allopenordersbyunderlying = eapiPrivateDeleteAllOpenOrdersByUnderlying = Entry('allOpenOrdersByUnderlying', 'eapiPrivate', 'DELETE', {'cost': 1})
|
602
608
|
eapiprivate_delete_listenkey = eapiPrivateDeleteListenKey = Entry('listenKey', 'eapiPrivate', 'DELETE', {'cost': 1})
|
609
|
+
eapiprivate_delete_block_order_create = eapiPrivateDeleteBlockOrderCreate = Entry('block/order/create', 'eapiPrivate', 'DELETE', {'cost': 5})
|
603
610
|
public_get_ping = publicGetPing = Entry('ping', 'public', 'GET', {'cost': 0.2})
|
604
611
|
public_get_time = publicGetTime = Entry('time', 'public', 'GET', {'cost': 0.2})
|
605
612
|
public_get_depth = publicGetDepth = Entry('depth', 'public', 'GET', {'cost': 1, 'byLimit': [[100, 1], [500, 5], [1000, 10], [5000, 50]]})
|
ccxt/abstract/binancecoinm.py
CHANGED
@@ -587,6 +587,9 @@ class ImplicitAPI:
|
|
587
587
|
eapiprivate_get_mmp = eapiPrivateGetMmp = Entry('mmp', 'eapiPrivate', 'GET', {'cost': 1})
|
588
588
|
eapiprivate_get_countdowncancelall = eapiPrivateGetCountdownCancelAll = Entry('countdownCancelAll', 'eapiPrivate', 'GET', {'cost': 1})
|
589
589
|
eapiprivate_get_order = eapiPrivateGetOrder = Entry('order', 'eapiPrivate', 'GET', {'cost': 1})
|
590
|
+
eapiprivate_get_block_order_orders = eapiPrivateGetBlockOrderOrders = Entry('block/order/orders', 'eapiPrivate', 'GET', {'cost': 5})
|
591
|
+
eapiprivate_get_block_order_execute = eapiPrivateGetBlockOrderExecute = Entry('block/order/execute', 'eapiPrivate', 'GET', {'cost': 5})
|
592
|
+
eapiprivate_get_block_user_trades = eapiPrivateGetBlockUserTrades = Entry('block/user-trades', 'eapiPrivate', 'GET', {'cost': 5})
|
590
593
|
eapiprivate_post_order = eapiPrivatePostOrder = Entry('order', 'eapiPrivate', 'POST', {'cost': 1})
|
591
594
|
eapiprivate_post_batchorders = eapiPrivatePostBatchOrders = Entry('batchOrders', 'eapiPrivate', 'POST', {'cost': 5})
|
592
595
|
eapiprivate_post_listenkey = eapiPrivatePostListenKey = Entry('listenKey', 'eapiPrivate', 'POST', {'cost': 1})
|
@@ -594,12 +597,16 @@ class ImplicitAPI:
|
|
594
597
|
eapiprivate_post_mmpreset = eapiPrivatePostMmpReset = Entry('mmpReset', 'eapiPrivate', 'POST', {'cost': 1})
|
595
598
|
eapiprivate_post_countdowncancelall = eapiPrivatePostCountdownCancelAll = Entry('countdownCancelAll', 'eapiPrivate', 'POST', {'cost': 1})
|
596
599
|
eapiprivate_post_countdowncancelallheartbeat = eapiPrivatePostCountdownCancelAllHeartBeat = Entry('countdownCancelAllHeartBeat', 'eapiPrivate', 'POST', {'cost': 10})
|
600
|
+
eapiprivate_post_block_order_create = eapiPrivatePostBlockOrderCreate = Entry('block/order/create', 'eapiPrivate', 'POST', {'cost': 5})
|
601
|
+
eapiprivate_post_block_order_execute = eapiPrivatePostBlockOrderExecute = Entry('block/order/execute', 'eapiPrivate', 'POST', {'cost': 5})
|
597
602
|
eapiprivate_put_listenkey = eapiPrivatePutListenKey = Entry('listenKey', 'eapiPrivate', 'PUT', {'cost': 1})
|
603
|
+
eapiprivate_put_block_order_create = eapiPrivatePutBlockOrderCreate = Entry('block/order/create', 'eapiPrivate', 'PUT', {'cost': 5})
|
598
604
|
eapiprivate_delete_order = eapiPrivateDeleteOrder = Entry('order', 'eapiPrivate', 'DELETE', {'cost': 1})
|
599
605
|
eapiprivate_delete_batchorders = eapiPrivateDeleteBatchOrders = Entry('batchOrders', 'eapiPrivate', 'DELETE', {'cost': 1})
|
600
606
|
eapiprivate_delete_allopenorders = eapiPrivateDeleteAllOpenOrders = Entry('allOpenOrders', 'eapiPrivate', 'DELETE', {'cost': 1})
|
601
607
|
eapiprivate_delete_allopenordersbyunderlying = eapiPrivateDeleteAllOpenOrdersByUnderlying = Entry('allOpenOrdersByUnderlying', 'eapiPrivate', 'DELETE', {'cost': 1})
|
602
608
|
eapiprivate_delete_listenkey = eapiPrivateDeleteListenKey = Entry('listenKey', 'eapiPrivate', 'DELETE', {'cost': 1})
|
609
|
+
eapiprivate_delete_block_order_create = eapiPrivateDeleteBlockOrderCreate = Entry('block/order/create', 'eapiPrivate', 'DELETE', {'cost': 5})
|
603
610
|
public_get_ping = publicGetPing = Entry('ping', 'public', 'GET', {'cost': 0.2})
|
604
611
|
public_get_time = publicGetTime = Entry('time', 'public', 'GET', {'cost': 0.2})
|
605
612
|
public_get_depth = publicGetDepth = Entry('depth', 'public', 'GET', {'cost': 1, 'byLimit': [[100, 1], [500, 5], [1000, 10], [5000, 50]]})
|
ccxt/abstract/binanceus.py
CHANGED
@@ -639,6 +639,9 @@ class ImplicitAPI:
|
|
639
639
|
eapiprivate_get_mmp = eapiPrivateGetMmp = Entry('mmp', 'eapiPrivate', 'GET', {'cost': 1})
|
640
640
|
eapiprivate_get_countdowncancelall = eapiPrivateGetCountdownCancelAll = Entry('countdownCancelAll', 'eapiPrivate', 'GET', {'cost': 1})
|
641
641
|
eapiprivate_get_order = eapiPrivateGetOrder = Entry('order', 'eapiPrivate', 'GET', {'cost': 1})
|
642
|
+
eapiprivate_get_block_order_orders = eapiPrivateGetBlockOrderOrders = Entry('block/order/orders', 'eapiPrivate', 'GET', {'cost': 5})
|
643
|
+
eapiprivate_get_block_order_execute = eapiPrivateGetBlockOrderExecute = Entry('block/order/execute', 'eapiPrivate', 'GET', {'cost': 5})
|
644
|
+
eapiprivate_get_block_user_trades = eapiPrivateGetBlockUserTrades = Entry('block/user-trades', 'eapiPrivate', 'GET', {'cost': 5})
|
642
645
|
eapiprivate_post_order = eapiPrivatePostOrder = Entry('order', 'eapiPrivate', 'POST', {'cost': 1})
|
643
646
|
eapiprivate_post_batchorders = eapiPrivatePostBatchOrders = Entry('batchOrders', 'eapiPrivate', 'POST', {'cost': 5})
|
644
647
|
eapiprivate_post_listenkey = eapiPrivatePostListenKey = Entry('listenKey', 'eapiPrivate', 'POST', {'cost': 1})
|
@@ -646,12 +649,16 @@ class ImplicitAPI:
|
|
646
649
|
eapiprivate_post_mmpreset = eapiPrivatePostMmpReset = Entry('mmpReset', 'eapiPrivate', 'POST', {'cost': 1})
|
647
650
|
eapiprivate_post_countdowncancelall = eapiPrivatePostCountdownCancelAll = Entry('countdownCancelAll', 'eapiPrivate', 'POST', {'cost': 1})
|
648
651
|
eapiprivate_post_countdowncancelallheartbeat = eapiPrivatePostCountdownCancelAllHeartBeat = Entry('countdownCancelAllHeartBeat', 'eapiPrivate', 'POST', {'cost': 10})
|
652
|
+
eapiprivate_post_block_order_create = eapiPrivatePostBlockOrderCreate = Entry('block/order/create', 'eapiPrivate', 'POST', {'cost': 5})
|
653
|
+
eapiprivate_post_block_order_execute = eapiPrivatePostBlockOrderExecute = Entry('block/order/execute', 'eapiPrivate', 'POST', {'cost': 5})
|
649
654
|
eapiprivate_put_listenkey = eapiPrivatePutListenKey = Entry('listenKey', 'eapiPrivate', 'PUT', {'cost': 1})
|
655
|
+
eapiprivate_put_block_order_create = eapiPrivatePutBlockOrderCreate = Entry('block/order/create', 'eapiPrivate', 'PUT', {'cost': 5})
|
650
656
|
eapiprivate_delete_order = eapiPrivateDeleteOrder = Entry('order', 'eapiPrivate', 'DELETE', {'cost': 1})
|
651
657
|
eapiprivate_delete_batchorders = eapiPrivateDeleteBatchOrders = Entry('batchOrders', 'eapiPrivate', 'DELETE', {'cost': 1})
|
652
658
|
eapiprivate_delete_allopenorders = eapiPrivateDeleteAllOpenOrders = Entry('allOpenOrders', 'eapiPrivate', 'DELETE', {'cost': 1})
|
653
659
|
eapiprivate_delete_allopenordersbyunderlying = eapiPrivateDeleteAllOpenOrdersByUnderlying = Entry('allOpenOrdersByUnderlying', 'eapiPrivate', 'DELETE', {'cost': 1})
|
654
660
|
eapiprivate_delete_listenkey = eapiPrivateDeleteListenKey = Entry('listenKey', 'eapiPrivate', 'DELETE', {'cost': 1})
|
661
|
+
eapiprivate_delete_block_order_create = eapiPrivateDeleteBlockOrderCreate = Entry('block/order/create', 'eapiPrivate', 'DELETE', {'cost': 5})
|
655
662
|
public_get_ping = publicGetPing = Entry('ping', 'public', 'GET', {'cost': 1})
|
656
663
|
public_get_time = publicGetTime = Entry('time', 'public', 'GET', {'cost': 1})
|
657
664
|
public_get_depth = publicGetDepth = Entry('depth', 'public', 'GET', {'cost': 1, 'byLimit': [[100, 1], [500, 5], [1000, 10], [5000, 50]]})
|
ccxt/abstract/binanceusdm.py
CHANGED
@@ -587,6 +587,9 @@ class ImplicitAPI:
|
|
587
587
|
eapiprivate_get_mmp = eapiPrivateGetMmp = Entry('mmp', 'eapiPrivate', 'GET', {'cost': 1})
|
588
588
|
eapiprivate_get_countdowncancelall = eapiPrivateGetCountdownCancelAll = Entry('countdownCancelAll', 'eapiPrivate', 'GET', {'cost': 1})
|
589
589
|
eapiprivate_get_order = eapiPrivateGetOrder = Entry('order', 'eapiPrivate', 'GET', {'cost': 1})
|
590
|
+
eapiprivate_get_block_order_orders = eapiPrivateGetBlockOrderOrders = Entry('block/order/orders', 'eapiPrivate', 'GET', {'cost': 5})
|
591
|
+
eapiprivate_get_block_order_execute = eapiPrivateGetBlockOrderExecute = Entry('block/order/execute', 'eapiPrivate', 'GET', {'cost': 5})
|
592
|
+
eapiprivate_get_block_user_trades = eapiPrivateGetBlockUserTrades = Entry('block/user-trades', 'eapiPrivate', 'GET', {'cost': 5})
|
590
593
|
eapiprivate_post_order = eapiPrivatePostOrder = Entry('order', 'eapiPrivate', 'POST', {'cost': 1})
|
591
594
|
eapiprivate_post_batchorders = eapiPrivatePostBatchOrders = Entry('batchOrders', 'eapiPrivate', 'POST', {'cost': 5})
|
592
595
|
eapiprivate_post_listenkey = eapiPrivatePostListenKey = Entry('listenKey', 'eapiPrivate', 'POST', {'cost': 1})
|
@@ -594,12 +597,16 @@ class ImplicitAPI:
|
|
594
597
|
eapiprivate_post_mmpreset = eapiPrivatePostMmpReset = Entry('mmpReset', 'eapiPrivate', 'POST', {'cost': 1})
|
595
598
|
eapiprivate_post_countdowncancelall = eapiPrivatePostCountdownCancelAll = Entry('countdownCancelAll', 'eapiPrivate', 'POST', {'cost': 1})
|
596
599
|
eapiprivate_post_countdowncancelallheartbeat = eapiPrivatePostCountdownCancelAllHeartBeat = Entry('countdownCancelAllHeartBeat', 'eapiPrivate', 'POST', {'cost': 10})
|
600
|
+
eapiprivate_post_block_order_create = eapiPrivatePostBlockOrderCreate = Entry('block/order/create', 'eapiPrivate', 'POST', {'cost': 5})
|
601
|
+
eapiprivate_post_block_order_execute = eapiPrivatePostBlockOrderExecute = Entry('block/order/execute', 'eapiPrivate', 'POST', {'cost': 5})
|
597
602
|
eapiprivate_put_listenkey = eapiPrivatePutListenKey = Entry('listenKey', 'eapiPrivate', 'PUT', {'cost': 1})
|
603
|
+
eapiprivate_put_block_order_create = eapiPrivatePutBlockOrderCreate = Entry('block/order/create', 'eapiPrivate', 'PUT', {'cost': 5})
|
598
604
|
eapiprivate_delete_order = eapiPrivateDeleteOrder = Entry('order', 'eapiPrivate', 'DELETE', {'cost': 1})
|
599
605
|
eapiprivate_delete_batchorders = eapiPrivateDeleteBatchOrders = Entry('batchOrders', 'eapiPrivate', 'DELETE', {'cost': 1})
|
600
606
|
eapiprivate_delete_allopenorders = eapiPrivateDeleteAllOpenOrders = Entry('allOpenOrders', 'eapiPrivate', 'DELETE', {'cost': 1})
|
601
607
|
eapiprivate_delete_allopenordersbyunderlying = eapiPrivateDeleteAllOpenOrdersByUnderlying = Entry('allOpenOrdersByUnderlying', 'eapiPrivate', 'DELETE', {'cost': 1})
|
602
608
|
eapiprivate_delete_listenkey = eapiPrivateDeleteListenKey = Entry('listenKey', 'eapiPrivate', 'DELETE', {'cost': 1})
|
609
|
+
eapiprivate_delete_block_order_create = eapiPrivateDeleteBlockOrderCreate = Entry('block/order/create', 'eapiPrivate', 'DELETE', {'cost': 5})
|
603
610
|
public_get_ping = publicGetPing = Entry('ping', 'public', 'GET', {'cost': 0.2})
|
604
611
|
public_get_time = publicGetTime = Entry('time', 'public', 'GET', {'cost': 0.2})
|
605
612
|
public_get_depth = publicGetDepth = Entry('depth', 'public', 'GET', {'cost': 1, 'byLimit': [[100, 1], [500, 5], [1000, 10], [5000, 50]]})
|
ccxt/abstract/hyperliquid.py
CHANGED
@@ -2,5 +2,5 @@ from ccxt.base.types import Entry
|
|
2
2
|
|
3
3
|
|
4
4
|
class ImplicitAPI:
|
5
|
-
public_post_info = publicPostInfo = Entry('info', 'public', 'POST', {'cost':
|
5
|
+
public_post_info = publicPostInfo = Entry('info', 'public', 'POST', {'cost': 20, 'byType': {'l2Book': 2, 'allMids': 2, 'clearinghouseState': 2, 'orderStatus': 2, 'spotClearinghouseState': 2, 'exchangeStatus': 2}})
|
6
6
|
private_post_exchange = privatePostExchange = Entry('exchange', 'private', 'POST', {'cost': 1})
|
ccxt/ace.py
CHANGED
@@ -108,7 +108,7 @@ class ace(Exchange, ImplicitAPI):
|
|
108
108
|
'1M': 31,
|
109
109
|
},
|
110
110
|
'urls': {
|
111
|
-
'logo': 'https://
|
111
|
+
'logo': 'https://github.com/user-attachments/assets/115f1e4a-0fd0-4b76-85d5-a49ebf64d1c8',
|
112
112
|
'api': {
|
113
113
|
'public': 'https://ace.io/polarisex',
|
114
114
|
'private': 'https://ace.io/polarisex/open',
|
ccxt/alpaca.py
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.alpaca import ImplicitAPI
|
8
|
-
from ccxt.base.types import Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade
|
8
|
+
from ccxt.base.types import Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
9
9
|
from typing import List
|
10
10
|
from ccxt.base.errors import ExchangeError
|
11
11
|
from ccxt.base.errors import PermissionDenied
|
@@ -17,6 +17,7 @@ from ccxt.base.errors import InvalidOrder
|
|
17
17
|
from ccxt.base.errors import NotSupported
|
18
18
|
from ccxt.base.errors import RateLimitExceeded
|
19
19
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
20
|
+
from ccxt.base.precise import Precise
|
20
21
|
|
21
22
|
|
22
23
|
class alpaca(Exchange, ImplicitAPI):
|
@@ -33,7 +34,7 @@ class alpaca(Exchange, ImplicitAPI):
|
|
33
34
|
'hostname': 'alpaca.markets',
|
34
35
|
'pro': True,
|
35
36
|
'urls': {
|
36
|
-
'logo': 'https://
|
37
|
+
'logo': 'https://github.com/user-attachments/assets/e9476df8-a450-4c3e-ab9a-1a7794219e1b',
|
37
38
|
'www': 'https://alpaca.markets',
|
38
39
|
'api': {
|
39
40
|
'broker': 'https://broker-api.{hostname}',
|
@@ -66,8 +67,8 @@ class alpaca(Exchange, ImplicitAPI):
|
|
66
67
|
'fetchCurrencies': False,
|
67
68
|
'fetchDepositAddress': True,
|
68
69
|
'fetchDepositAddressesByNetwork': False,
|
69
|
-
'fetchDeposits':
|
70
|
-
'fetchDepositsWithdrawals':
|
70
|
+
'fetchDeposits': True,
|
71
|
+
'fetchDepositsWithdrawals': True,
|
71
72
|
'fetchFundingHistory': False,
|
72
73
|
'fetchFundingRate': False,
|
73
74
|
'fetchFundingRateHistory': False,
|
@@ -99,12 +100,12 @@ class alpaca(Exchange, ImplicitAPI):
|
|
99
100
|
'fetchTransactionFees': False,
|
100
101
|
'fetchTransactions': False,
|
101
102
|
'fetchTransfers': False,
|
102
|
-
'fetchWithdrawals':
|
103
|
+
'fetchWithdrawals': True,
|
103
104
|
'sandbox': True,
|
104
105
|
'setLeverage': False,
|
105
106
|
'setMarginMode': False,
|
106
107
|
'transfer': False,
|
107
|
-
'withdraw':
|
108
|
+
'withdraw': True,
|
108
109
|
},
|
109
110
|
'api': {
|
110
111
|
'broker': {
|
@@ -131,12 +132,14 @@ class alpaca(Exchange, ImplicitAPI):
|
|
131
132
|
'v2/corporate_actions/announcements/{id}',
|
132
133
|
'v2/corporate_actions/announcements',
|
133
134
|
'v2/wallets',
|
135
|
+
'v2/wallets/transfers',
|
134
136
|
],
|
135
137
|
'post': [
|
136
138
|
'v2/orders',
|
137
139
|
'v2/watchlists',
|
138
140
|
'v2/watchlists/{watchlist_id}',
|
139
141
|
'v2/watchlists:by_name',
|
142
|
+
'v2/wallets/transfers',
|
140
143
|
],
|
141
144
|
'put': [
|
142
145
|
'v2/watchlists/{watchlist_id}',
|
@@ -1286,6 +1289,183 @@ class alpaca(Exchange, ImplicitAPI):
|
|
1286
1289
|
'tag': None,
|
1287
1290
|
}
|
1288
1291
|
|
1292
|
+
def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
|
1293
|
+
"""
|
1294
|
+
make a withdrawal
|
1295
|
+
:see: https://docs.alpaca.markets/reference/createcryptotransferforaccount
|
1296
|
+
:param str code: unified currency code
|
1297
|
+
:param float amount: the amount to withdraw
|
1298
|
+
:param str address: the address to withdraw to
|
1299
|
+
:param str tag: a memo for the transaction
|
1300
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1301
|
+
:returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
|
1302
|
+
"""
|
1303
|
+
tag, params = self.handle_withdraw_tag_and_params(tag, params)
|
1304
|
+
self.check_address(address)
|
1305
|
+
self.load_markets()
|
1306
|
+
currency = self.currency(code)
|
1307
|
+
if tag:
|
1308
|
+
address = address + ':' + tag
|
1309
|
+
request: dict = {
|
1310
|
+
'asset': currency['id'],
|
1311
|
+
'address': address,
|
1312
|
+
'amount': self.number_to_string(amount),
|
1313
|
+
}
|
1314
|
+
response = self.traderPrivatePostV2WalletsTransfers(self.extend(request, params))
|
1315
|
+
#
|
1316
|
+
# {
|
1317
|
+
# "id": "e27b70a6-5610-40d7-8468-a516a284b776",
|
1318
|
+
# "tx_hash": null,
|
1319
|
+
# "direction": "OUTGOING",
|
1320
|
+
# "amount": "20",
|
1321
|
+
# "usd_value": "19.99856",
|
1322
|
+
# "chain": "ETH",
|
1323
|
+
# "asset": "USDT",
|
1324
|
+
# "from_address": "0x123930E4dCA196E070d39B60c644C8Aae02f23",
|
1325
|
+
# "to_address": "0x1232c0925196e4dcf05945f67f690153190fbaab",
|
1326
|
+
# "status": "PROCESSING",
|
1327
|
+
# "created_at": "2024-11-07T02:39:01.775495Z",
|
1328
|
+
# "network_fee": "4",
|
1329
|
+
# "fees": "0.1"
|
1330
|
+
# }
|
1331
|
+
#
|
1332
|
+
return self.parse_transaction(response, currency)
|
1333
|
+
|
1334
|
+
def fetch_transactions_helper(self, type, code, since, limit, params):
|
1335
|
+
self.load_markets()
|
1336
|
+
currency = None
|
1337
|
+
if code is not None:
|
1338
|
+
currency = self.currency(code)
|
1339
|
+
response = self.traderPrivateGetV2WalletsTransfers(params)
|
1340
|
+
#
|
1341
|
+
# {
|
1342
|
+
# "id": "e27b70a6-5610-40d7-8468-a516a284b776",
|
1343
|
+
# "tx_hash": null,
|
1344
|
+
# "direction": "OUTGOING",
|
1345
|
+
# "amount": "20",
|
1346
|
+
# "usd_value": "19.99856",
|
1347
|
+
# "chain": "ETH",
|
1348
|
+
# "asset": "USDT",
|
1349
|
+
# "from_address": "0x123930E4dCA196E070d39B60c644C8Aae02f23",
|
1350
|
+
# "to_address": "0x1232c0925196e4dcf05945f67f690153190fbaab",
|
1351
|
+
# "status": "PROCESSING",
|
1352
|
+
# "created_at": "2024-11-07T02:39:01.775495Z",
|
1353
|
+
# "network_fee": "4",
|
1354
|
+
# "fees": "0.1"
|
1355
|
+
# }
|
1356
|
+
#
|
1357
|
+
results = []
|
1358
|
+
for i in range(0, len(response)):
|
1359
|
+
entry = response[i]
|
1360
|
+
direction = self.safe_string(entry, 'direction')
|
1361
|
+
if direction == type:
|
1362
|
+
results.append(entry)
|
1363
|
+
elif type == 'BOTH':
|
1364
|
+
results.append(entry)
|
1365
|
+
return self.parse_transactions(results, currency, since, limit, params)
|
1366
|
+
|
1367
|
+
def fetch_deposits_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
1368
|
+
"""
|
1369
|
+
fetch history of deposits and withdrawals
|
1370
|
+
:see: https://docs.alpaca.markets/reference/listcryptofundingtransfers
|
1371
|
+
:param str [code]: unified currency code for the currency of the deposit/withdrawals, default is None
|
1372
|
+
:param int [since]: timestamp in ms of the earliest deposit/withdrawal, default is None
|
1373
|
+
:param int [limit]: max number of deposit/withdrawals to return, default is None
|
1374
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1375
|
+
:returns dict: a list of `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
|
1376
|
+
"""
|
1377
|
+
return self.fetch_transactions_helper('BOTH', code, since, limit, params)
|
1378
|
+
|
1379
|
+
def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
1380
|
+
"""
|
1381
|
+
fetch all deposits made to an account
|
1382
|
+
:see: https://docs.alpaca.markets/reference/listcryptofundingtransfers
|
1383
|
+
:param str [code]: unified currency code
|
1384
|
+
:param int [since]: the earliest time in ms to fetch deposits for
|
1385
|
+
:param int [limit]: the maximum number of deposit structures to retrieve
|
1386
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1387
|
+
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
|
1388
|
+
"""
|
1389
|
+
return self.fetch_transactions_helper('INCOMING', code, since, limit, params)
|
1390
|
+
|
1391
|
+
def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
1392
|
+
"""
|
1393
|
+
fetch all withdrawals made from an account
|
1394
|
+
:see: https://docs.alpaca.markets/reference/listcryptofundingtransfers
|
1395
|
+
:param str [code]: unified currency code
|
1396
|
+
:param int [since]: the earliest time in ms to fetch withdrawals for
|
1397
|
+
:param int [limit]: the maximum number of withdrawal structures to retrieve
|
1398
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1399
|
+
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
|
1400
|
+
"""
|
1401
|
+
return self.fetch_transactions_helper('OUTGOING', code, since, limit, params)
|
1402
|
+
|
1403
|
+
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
1404
|
+
#
|
1405
|
+
# {
|
1406
|
+
# "id": "e27b70a6-5610-40d7-8468-a516a284b776",
|
1407
|
+
# "tx_hash": null,
|
1408
|
+
# "direction": "OUTGOING",
|
1409
|
+
# "amount": "20",
|
1410
|
+
# "usd_value": "19.99856",
|
1411
|
+
# "chain": "ETH",
|
1412
|
+
# "asset": "USDT",
|
1413
|
+
# "from_address": "0x123930E4dCA196E070d39B60c644C8Aae02f23",
|
1414
|
+
# "to_address": "0x1232c0925196e4dcf05945f67f690153190fbaab",
|
1415
|
+
# "status": "PROCESSING",
|
1416
|
+
# "created_at": "2024-11-07T02:39:01.775495Z",
|
1417
|
+
# "network_fee": "4",
|
1418
|
+
# "fees": "0.1"
|
1419
|
+
# }
|
1420
|
+
#
|
1421
|
+
datetime = self.safe_string(transaction, 'created_at')
|
1422
|
+
currencyId = self.safe_string(transaction, 'asset')
|
1423
|
+
code = self.safe_currency_code(currencyId, currency)
|
1424
|
+
fees = self.safe_string(transaction, 'fees')
|
1425
|
+
networkFee = self.safe_string(transaction, 'network_fee')
|
1426
|
+
totalFee = Precise.string_add(fees, networkFee)
|
1427
|
+
fee = {
|
1428
|
+
'cost': self.parse_number(totalFee),
|
1429
|
+
'currency': code,
|
1430
|
+
}
|
1431
|
+
return {
|
1432
|
+
'info': transaction,
|
1433
|
+
'id': self.safe_string(transaction, 'id'),
|
1434
|
+
'txid': self.safe_string(transaction, 'tx_hash'),
|
1435
|
+
'timestamp': self.parse8601(datetime),
|
1436
|
+
'datetime': datetime,
|
1437
|
+
'network': self.safe_string(transaction, 'chain'),
|
1438
|
+
'address': self.safe_string(transaction, 'to_address'),
|
1439
|
+
'addressTo': self.safe_string(transaction, 'to_address'),
|
1440
|
+
'addressFrom': self.safe_string(transaction, 'from_address'),
|
1441
|
+
'tag': None,
|
1442
|
+
'tagTo': None,
|
1443
|
+
'tagFrom': None,
|
1444
|
+
'type': self.parse_transaction_type(self.safe_string(transaction, 'direction')),
|
1445
|
+
'amount': self.safe_number(transaction, 'amount'),
|
1446
|
+
'currency': code,
|
1447
|
+
'status': self.parse_transaction_status(self.safe_string(transaction, 'status')),
|
1448
|
+
'updated': None,
|
1449
|
+
'fee': fee,
|
1450
|
+
'comment': None,
|
1451
|
+
'internal': None,
|
1452
|
+
}
|
1453
|
+
|
1454
|
+
def parse_transaction_status(self, status: Str):
|
1455
|
+
statuses: dict = {
|
1456
|
+
'PROCESSING': 'pending',
|
1457
|
+
'FAILED': 'failed',
|
1458
|
+
'COMPLETE': 'ok',
|
1459
|
+
}
|
1460
|
+
return self.safe_string(statuses, status, status)
|
1461
|
+
|
1462
|
+
def parse_transaction_type(self, type):
|
1463
|
+
types: dict = {
|
1464
|
+
'INCOMING': 'deposit',
|
1465
|
+
'OUTGOING': 'withdrawal',
|
1466
|
+
}
|
1467
|
+
return self.safe_string(types, type, type)
|
1468
|
+
|
1289
1469
|
def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
|
1290
1470
|
endpoint = '/' + self.implode_params(path, params)
|
1291
1471
|
url = self.implode_hostname(self.urls['api'][api[0]])
|
ccxt/ascendex.py
CHANGED
@@ -124,7 +124,7 @@ class ascendex(Exchange, ImplicitAPI):
|
|
124
124
|
},
|
125
125
|
'version': 'v2',
|
126
126
|
'urls': {
|
127
|
-
'logo': 'https://
|
127
|
+
'logo': 'https://github.com/user-attachments/assets/55bab6b9-d4ca-42a8-a0e6-fac81ae557f1',
|
128
128
|
'api': {
|
129
129
|
'rest': 'https://ascendex.com',
|
130
130
|
},
|
ccxt/async_support/__init__.py
CHANGED
ccxt/async_support/ace.py
CHANGED
@@ -108,7 +108,7 @@ class ace(Exchange, ImplicitAPI):
|
|
108
108
|
'1M': 31,
|
109
109
|
},
|
110
110
|
'urls': {
|
111
|
-
'logo': 'https://
|
111
|
+
'logo': 'https://github.com/user-attachments/assets/115f1e4a-0fd0-4b76-85d5-a49ebf64d1c8',
|
112
112
|
'api': {
|
113
113
|
'public': 'https://ace.io/polarisex',
|
114
114
|
'private': 'https://ace.io/polarisex/open',
|