ccxt 4.2.67__py2.py3-none-any.whl → 4.2.68__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ccxt/__init__.py +1 -1
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/hyperliquid.py +4 -2
- ccxt/async_support/krakenfutures.py +124 -27
- ccxt/base/exchange.py +8 -2
- ccxt/hyperliquid.py +4 -2
- ccxt/krakenfutures.py +124 -27
- ccxt/pro/__init__.py +1 -1
- {ccxt-4.2.67.dist-info → ccxt-4.2.68.dist-info}/METADATA +4 -4
- {ccxt-4.2.67.dist-info → ccxt-4.2.68.dist-info}/RECORD +13 -13
- {ccxt-4.2.67.dist-info → ccxt-4.2.68.dist-info}/WHEEL +0 -0
- {ccxt-4.2.67.dist-info → ccxt-4.2.68.dist-info}/top_level.txt +0 -0
ccxt/__init__.py
CHANGED
ccxt/async_support/__init__.py
CHANGED
@@ -849,13 +849,15 @@ class hyperliquid(Exchange, ImplicitAPI):
|
|
849
849
|
if clientOrderId is not None:
|
850
850
|
orderObj['c'] = clientOrderId
|
851
851
|
orderReq.append(orderObj)
|
852
|
+
vaultAddress = self.safe_string(params, 'vaultAddress')
|
852
853
|
orderAction = {
|
853
854
|
'type': 'order',
|
854
855
|
'orders': orderReq,
|
855
856
|
'grouping': 'na',
|
856
|
-
'brokerCode': 1,
|
857
|
+
# 'brokerCode': 1, # cant
|
857
858
|
}
|
858
|
-
vaultAddress
|
859
|
+
if vaultAddress is None:
|
860
|
+
orderAction['brokerCode'] = 1
|
859
861
|
signature = self.sign_l1_action(orderAction, nonce, vaultAddress)
|
860
862
|
request = {
|
861
863
|
'action': orderAction,
|
@@ -263,6 +263,9 @@ class krakenfutures(Exchange, ImplicitAPI):
|
|
263
263
|
},
|
264
264
|
},
|
265
265
|
},
|
266
|
+
'fetchTrades': {
|
267
|
+
'method': 'historyGetMarketSymbolExecutions', # historyGetMarketSymbolExecutions, publicGetHistory
|
268
|
+
},
|
266
269
|
},
|
267
270
|
'timeframes': {
|
268
271
|
'1m': '1m',
|
@@ -685,6 +688,7 @@ class krakenfutures(Exchange, ImplicitAPI):
|
|
685
688
|
async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
686
689
|
"""
|
687
690
|
:see: https://docs.futures.kraken.com/#http-api-trading-v3-api-market-data-get-trade-history
|
691
|
+
:see: https://docs.futures.kraken.com/#http-api-history-market-history-get-public-execution-events
|
688
692
|
Fetch a history of filled trades that self account has made
|
689
693
|
:param str symbol: Unified CCXT market symbol
|
690
694
|
:param int [since]: Timestamp in ms of earliest trade. Not used by krakenfutures except in combination with params.until
|
@@ -692,6 +696,7 @@ class krakenfutures(Exchange, ImplicitAPI):
|
|
692
696
|
:param dict [params]: Exchange specific params
|
693
697
|
:param int [params.until]: Timestamp in ms of latest trade
|
694
698
|
:param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
699
|
+
:param str [params.method]: The method to use to fetch trades. Can be 'historyGetMarketSymbolExecutions' or 'publicGetHistory' default is 'historyGetMarketSymbolExecutions'
|
695
700
|
:returns: An array of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
|
696
701
|
"""
|
697
702
|
await self.load_markets()
|
@@ -703,34 +708,105 @@ class krakenfutures(Exchange, ImplicitAPI):
|
|
703
708
|
request = {
|
704
709
|
'symbol': market['id'],
|
705
710
|
}
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
711
|
+
method = None
|
712
|
+
method, params = self.handle_option_and_params(params, 'fetchTrades', 'method', 'historyGetMarketSymbolExecutions')
|
713
|
+
rawTrades = None
|
714
|
+
isFullHistoryEndpoint = (method == 'historyGetMarketSymbolExecutions')
|
715
|
+
if isFullHistoryEndpoint:
|
716
|
+
request, params = self.handle_until_option('before', request, params)
|
717
|
+
if since is not None:
|
718
|
+
request['since'] = since
|
719
|
+
request['sort'] = 'asc'
|
720
|
+
if limit is not None:
|
721
|
+
request['count'] = limit
|
722
|
+
response = await self.historyGetMarketSymbolExecutions(self.extend(request, params))
|
723
|
+
#
|
724
|
+
# {
|
725
|
+
# "elements": [
|
726
|
+
# {
|
727
|
+
# "uid": "a5105030-f054-44cc-98ab-30d5cae96bef",
|
728
|
+
# "timestamp": "1710150778607",
|
729
|
+
# "event": {
|
730
|
+
# "Execution": {
|
731
|
+
# "execution": {
|
732
|
+
# "uid": "2d485b71-cd28-4a1e-9364-371a127550d2",
|
733
|
+
# "makerOrder": {
|
734
|
+
# "uid": "0a25f66b-1109-49ec-93a3-d17bf9e9137e",
|
735
|
+
# "tradeable": "PF_XBTUSD",
|
736
|
+
# "direction": "Buy",
|
737
|
+
# "quantity": "0.26500",
|
738
|
+
# "timestamp": "1710150778570",
|
739
|
+
# "limitPrice": "71907",
|
740
|
+
# "orderType": "Post",
|
741
|
+
# "reduceOnly": False,
|
742
|
+
# "lastUpdateTimestamp": "1710150778570"
|
743
|
+
# },
|
744
|
+
# "takerOrder": {
|
745
|
+
# "uid": "04de3ee0-9125-4960-bf8f-f63b577b6790",
|
746
|
+
# "tradeable": "PF_XBTUSD",
|
747
|
+
# "direction": "Sell",
|
748
|
+
# "quantity": "0.0002",
|
749
|
+
# "timestamp": "1710150778607",
|
750
|
+
# "limitPrice": "71187.00",
|
751
|
+
# "orderType": "Market",
|
752
|
+
# "reduceOnly": False,
|
753
|
+
# "lastUpdateTimestamp": "1710150778607"
|
754
|
+
# },
|
755
|
+
# "timestamp": "1710150778607",
|
756
|
+
# "quantity": "0.0002",
|
757
|
+
# "price": "71907",
|
758
|
+
# "markPrice": "71903.32715463147",
|
759
|
+
# "limitFilled": False,
|
760
|
+
# "usdValue": "14.38"
|
761
|
+
# },
|
762
|
+
# "takerReducedQuantity": ""
|
763
|
+
# }
|
764
|
+
# }
|
765
|
+
# },
|
766
|
+
# ... followed by older items
|
767
|
+
# ],
|
768
|
+
# "len": "1000",
|
769
|
+
# "continuationToken": "QTexMDE0OTe33NTcyXy8xNDIzAjc1NjY5MwI="
|
770
|
+
# }
|
771
|
+
#
|
772
|
+
elements = self.safe_list(response, 'elements', [])
|
773
|
+
# we need to reverse the list to fix chronology
|
774
|
+
rawTrades = []
|
775
|
+
length = len(elements)
|
776
|
+
for i in range(0, length):
|
777
|
+
index = length - 1 - i
|
778
|
+
element = elements[index]
|
779
|
+
event = self.safe_dict(element, 'event', {})
|
780
|
+
executionContainer = self.safe_dict(event, 'Execution', {})
|
781
|
+
rawTrade = self.safe_dict(executionContainer, 'execution', {})
|
782
|
+
rawTrades.append(rawTrade)
|
783
|
+
else:
|
784
|
+
request, params = self.handle_until_option('lastTime', request, params)
|
785
|
+
response = await self.publicGetHistory(self.extend(request, params))
|
786
|
+
#
|
787
|
+
# {
|
788
|
+
# "result": "success",
|
789
|
+
# "history": [
|
790
|
+
# {
|
791
|
+
# "time": "2022-03-18T04:55:37.692Z",
|
792
|
+
# "trade_id": 100,
|
793
|
+
# "price": 0.7921,
|
794
|
+
# "size": 1068,
|
795
|
+
# "side": "sell",
|
796
|
+
# "type": "fill",
|
797
|
+
# "uid": "6c5da0b0-f1a8-483f-921f-466eb0388265"
|
798
|
+
# },
|
799
|
+
# ...
|
800
|
+
# ],
|
801
|
+
# "serverTime": "2022-03-18T06:39:18.056Z"
|
802
|
+
# }
|
803
|
+
#
|
804
|
+
rawTrades = self.safe_list(response, 'history', [])
|
805
|
+
return self.parse_trades(rawTrades, market, since, limit)
|
730
806
|
|
731
807
|
def parse_trade(self, trade, market: Market = None) -> Trade:
|
732
808
|
#
|
733
|
-
# fetchTrades(
|
809
|
+
# fetchTrades(recent trades)
|
734
810
|
#
|
735
811
|
# {
|
736
812
|
# "time": "2019-02-14T09:25:33.920Z",
|
@@ -738,10 +814,24 @@ class krakenfutures(Exchange, ImplicitAPI):
|
|
738
814
|
# "price": 3574,
|
739
815
|
# "size": 100,
|
740
816
|
# "side": "buy",
|
741
|
-
# "type": "fill"
|
817
|
+
# "type": "fill" # fill, liquidation, assignment, termination
|
742
818
|
# "uid": "11c3d82c-9e70-4fe9-8115-f643f1b162d4"
|
743
819
|
# }
|
744
820
|
#
|
821
|
+
# fetchTrades(executions history)
|
822
|
+
#
|
823
|
+
# {
|
824
|
+
# "timestamp": "1710152516830",
|
825
|
+
# "price": "71927.0",
|
826
|
+
# "quantity": "0.0695",
|
827
|
+
# "markPrice": "71936.38701675525",
|
828
|
+
# "limitFilled": True,
|
829
|
+
# "usdValue": "4998.93",
|
830
|
+
# "uid": "116ae634-253f-470b-bd20-fa9d429fb8b1",
|
831
|
+
# "makerOrder": {"uid": "17bfe4de-c01e-4938-926c-617d2a2d0597", "tradeable": "PF_XBTUSD", "direction": "Buy", "quantity": "0.0695", "timestamp": "1710152515836", "limitPrice": "71927.0", "orderType": "Post", "reduceOnly": False, "lastUpdateTimestamp": "1710152515836"},
|
832
|
+
# "takerOrder": {"uid": "d3e437b4-aa70-4108-b5cf-b1eecb9845b5", "tradeable": "PF_XBTUSD", "direction": "Sell", "quantity": "0.940100", "timestamp": "1710152516830", "limitPrice": "71915", "orderType": "IoC", "reduceOnly": False, "lastUpdateTimestamp": "1710152516830"}
|
833
|
+
# }
|
834
|
+
#
|
745
835
|
# fetchMyTrades(private)
|
746
836
|
#
|
747
837
|
# {
|
@@ -782,7 +872,7 @@ class krakenfutures(Exchange, ImplicitAPI):
|
|
782
872
|
#
|
783
873
|
timestamp = self.parse8601(self.safe_string_2(trade, 'time', 'fillTime'))
|
784
874
|
price = self.safe_string(trade, 'price')
|
785
|
-
amount = self.
|
875
|
+
amount = self.safe_string_n(trade, ['size', 'amount', 'quantity'], '0.0')
|
786
876
|
id = self.safe_string_2(trade, 'uid', 'fill_id')
|
787
877
|
if id is None:
|
788
878
|
id = self.safe_string(trade, 'executionId')
|
@@ -821,6 +911,13 @@ class krakenfutures(Exchange, ImplicitAPI):
|
|
821
911
|
takerOrMaker = 'taker'
|
822
912
|
elif fillType.find('maker') >= 0:
|
823
913
|
takerOrMaker = 'maker'
|
914
|
+
isHistoricalExecution = ('takerOrder' in trade)
|
915
|
+
if isHistoricalExecution:
|
916
|
+
timestamp = self.safe_integer(trade, 'timestamp')
|
917
|
+
taker = self.safe_dict(trade, 'takerOrder', {})
|
918
|
+
if taker is not None:
|
919
|
+
side = self.safe_string_lower(taker, 'direction')
|
920
|
+
takerOrMaker = 'taker'
|
824
921
|
return self.safe_trade({
|
825
922
|
'info': trade,
|
826
923
|
'id': id,
|
ccxt/base/exchange.py
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
# -----------------------------------------------------------------------------
|
6
6
|
|
7
|
-
__version__ = '4.2.
|
7
|
+
__version__ = '4.2.68'
|
8
8
|
|
9
9
|
# -----------------------------------------------------------------------------
|
10
10
|
|
@@ -3514,12 +3514,18 @@ class Exchange(object):
|
|
3514
3514
|
market = self.market(symbol)
|
3515
3515
|
return self.safe_string(market, 'symbol', symbol)
|
3516
3516
|
|
3517
|
-
def handle_param_string(self, params: object, paramName: str, defaultValue=None):
|
3517
|
+
def handle_param_string(self, params: object, paramName: str, defaultValue: Str = None):
|
3518
3518
|
value = self.safe_string(params, paramName, defaultValue)
|
3519
3519
|
if value is not None:
|
3520
3520
|
params = self.omit(params, paramName)
|
3521
3521
|
return [value, params]
|
3522
3522
|
|
3523
|
+
def handle_param_integer(self, params: object, paramName: str, defaultValue: Int = None):
|
3524
|
+
value = self.safe_integer(params, paramName, defaultValue)
|
3525
|
+
if value is not None:
|
3526
|
+
params = self.omit(params, paramName)
|
3527
|
+
return [value, params]
|
3528
|
+
|
3523
3529
|
def resolve_path(self, path, params):
|
3524
3530
|
return [
|
3525
3531
|
self.implode_params(path, params),
|
ccxt/hyperliquid.py
CHANGED
@@ -849,13 +849,15 @@ class hyperliquid(Exchange, ImplicitAPI):
|
|
849
849
|
if clientOrderId is not None:
|
850
850
|
orderObj['c'] = clientOrderId
|
851
851
|
orderReq.append(orderObj)
|
852
|
+
vaultAddress = self.safe_string(params, 'vaultAddress')
|
852
853
|
orderAction = {
|
853
854
|
'type': 'order',
|
854
855
|
'orders': orderReq,
|
855
856
|
'grouping': 'na',
|
856
|
-
'brokerCode': 1,
|
857
|
+
# 'brokerCode': 1, # cant
|
857
858
|
}
|
858
|
-
vaultAddress
|
859
|
+
if vaultAddress is None:
|
860
|
+
orderAction['brokerCode'] = 1
|
859
861
|
signature = self.sign_l1_action(orderAction, nonce, vaultAddress)
|
860
862
|
request = {
|
861
863
|
'action': orderAction,
|
ccxt/krakenfutures.py
CHANGED
@@ -263,6 +263,9 @@ class krakenfutures(Exchange, ImplicitAPI):
|
|
263
263
|
},
|
264
264
|
},
|
265
265
|
},
|
266
|
+
'fetchTrades': {
|
267
|
+
'method': 'historyGetMarketSymbolExecutions', # historyGetMarketSymbolExecutions, publicGetHistory
|
268
|
+
},
|
266
269
|
},
|
267
270
|
'timeframes': {
|
268
271
|
'1m': '1m',
|
@@ -685,6 +688,7 @@ class krakenfutures(Exchange, ImplicitAPI):
|
|
685
688
|
def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
686
689
|
"""
|
687
690
|
:see: https://docs.futures.kraken.com/#http-api-trading-v3-api-market-data-get-trade-history
|
691
|
+
:see: https://docs.futures.kraken.com/#http-api-history-market-history-get-public-execution-events
|
688
692
|
Fetch a history of filled trades that self account has made
|
689
693
|
:param str symbol: Unified CCXT market symbol
|
690
694
|
:param int [since]: Timestamp in ms of earliest trade. Not used by krakenfutures except in combination with params.until
|
@@ -692,6 +696,7 @@ class krakenfutures(Exchange, ImplicitAPI):
|
|
692
696
|
:param dict [params]: Exchange specific params
|
693
697
|
:param int [params.until]: Timestamp in ms of latest trade
|
694
698
|
:param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
699
|
+
:param str [params.method]: The method to use to fetch trades. Can be 'historyGetMarketSymbolExecutions' or 'publicGetHistory' default is 'historyGetMarketSymbolExecutions'
|
695
700
|
:returns: An array of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
|
696
701
|
"""
|
697
702
|
self.load_markets()
|
@@ -703,34 +708,105 @@ class krakenfutures(Exchange, ImplicitAPI):
|
|
703
708
|
request = {
|
704
709
|
'symbol': market['id'],
|
705
710
|
}
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
711
|
+
method = None
|
712
|
+
method, params = self.handle_option_and_params(params, 'fetchTrades', 'method', 'historyGetMarketSymbolExecutions')
|
713
|
+
rawTrades = None
|
714
|
+
isFullHistoryEndpoint = (method == 'historyGetMarketSymbolExecutions')
|
715
|
+
if isFullHistoryEndpoint:
|
716
|
+
request, params = self.handle_until_option('before', request, params)
|
717
|
+
if since is not None:
|
718
|
+
request['since'] = since
|
719
|
+
request['sort'] = 'asc'
|
720
|
+
if limit is not None:
|
721
|
+
request['count'] = limit
|
722
|
+
response = self.historyGetMarketSymbolExecutions(self.extend(request, params))
|
723
|
+
#
|
724
|
+
# {
|
725
|
+
# "elements": [
|
726
|
+
# {
|
727
|
+
# "uid": "a5105030-f054-44cc-98ab-30d5cae96bef",
|
728
|
+
# "timestamp": "1710150778607",
|
729
|
+
# "event": {
|
730
|
+
# "Execution": {
|
731
|
+
# "execution": {
|
732
|
+
# "uid": "2d485b71-cd28-4a1e-9364-371a127550d2",
|
733
|
+
# "makerOrder": {
|
734
|
+
# "uid": "0a25f66b-1109-49ec-93a3-d17bf9e9137e",
|
735
|
+
# "tradeable": "PF_XBTUSD",
|
736
|
+
# "direction": "Buy",
|
737
|
+
# "quantity": "0.26500",
|
738
|
+
# "timestamp": "1710150778570",
|
739
|
+
# "limitPrice": "71907",
|
740
|
+
# "orderType": "Post",
|
741
|
+
# "reduceOnly": False,
|
742
|
+
# "lastUpdateTimestamp": "1710150778570"
|
743
|
+
# },
|
744
|
+
# "takerOrder": {
|
745
|
+
# "uid": "04de3ee0-9125-4960-bf8f-f63b577b6790",
|
746
|
+
# "tradeable": "PF_XBTUSD",
|
747
|
+
# "direction": "Sell",
|
748
|
+
# "quantity": "0.0002",
|
749
|
+
# "timestamp": "1710150778607",
|
750
|
+
# "limitPrice": "71187.00",
|
751
|
+
# "orderType": "Market",
|
752
|
+
# "reduceOnly": False,
|
753
|
+
# "lastUpdateTimestamp": "1710150778607"
|
754
|
+
# },
|
755
|
+
# "timestamp": "1710150778607",
|
756
|
+
# "quantity": "0.0002",
|
757
|
+
# "price": "71907",
|
758
|
+
# "markPrice": "71903.32715463147",
|
759
|
+
# "limitFilled": False,
|
760
|
+
# "usdValue": "14.38"
|
761
|
+
# },
|
762
|
+
# "takerReducedQuantity": ""
|
763
|
+
# }
|
764
|
+
# }
|
765
|
+
# },
|
766
|
+
# ... followed by older items
|
767
|
+
# ],
|
768
|
+
# "len": "1000",
|
769
|
+
# "continuationToken": "QTexMDE0OTe33NTcyXy8xNDIzAjc1NjY5MwI="
|
770
|
+
# }
|
771
|
+
#
|
772
|
+
elements = self.safe_list(response, 'elements', [])
|
773
|
+
# we need to reverse the list to fix chronology
|
774
|
+
rawTrades = []
|
775
|
+
length = len(elements)
|
776
|
+
for i in range(0, length):
|
777
|
+
index = length - 1 - i
|
778
|
+
element = elements[index]
|
779
|
+
event = self.safe_dict(element, 'event', {})
|
780
|
+
executionContainer = self.safe_dict(event, 'Execution', {})
|
781
|
+
rawTrade = self.safe_dict(executionContainer, 'execution', {})
|
782
|
+
rawTrades.append(rawTrade)
|
783
|
+
else:
|
784
|
+
request, params = self.handle_until_option('lastTime', request, params)
|
785
|
+
response = self.publicGetHistory(self.extend(request, params))
|
786
|
+
#
|
787
|
+
# {
|
788
|
+
# "result": "success",
|
789
|
+
# "history": [
|
790
|
+
# {
|
791
|
+
# "time": "2022-03-18T04:55:37.692Z",
|
792
|
+
# "trade_id": 100,
|
793
|
+
# "price": 0.7921,
|
794
|
+
# "size": 1068,
|
795
|
+
# "side": "sell",
|
796
|
+
# "type": "fill",
|
797
|
+
# "uid": "6c5da0b0-f1a8-483f-921f-466eb0388265"
|
798
|
+
# },
|
799
|
+
# ...
|
800
|
+
# ],
|
801
|
+
# "serverTime": "2022-03-18T06:39:18.056Z"
|
802
|
+
# }
|
803
|
+
#
|
804
|
+
rawTrades = self.safe_list(response, 'history', [])
|
805
|
+
return self.parse_trades(rawTrades, market, since, limit)
|
730
806
|
|
731
807
|
def parse_trade(self, trade, market: Market = None) -> Trade:
|
732
808
|
#
|
733
|
-
# fetchTrades(
|
809
|
+
# fetchTrades(recent trades)
|
734
810
|
#
|
735
811
|
# {
|
736
812
|
# "time": "2019-02-14T09:25:33.920Z",
|
@@ -738,10 +814,24 @@ class krakenfutures(Exchange, ImplicitAPI):
|
|
738
814
|
# "price": 3574,
|
739
815
|
# "size": 100,
|
740
816
|
# "side": "buy",
|
741
|
-
# "type": "fill"
|
817
|
+
# "type": "fill" # fill, liquidation, assignment, termination
|
742
818
|
# "uid": "11c3d82c-9e70-4fe9-8115-f643f1b162d4"
|
743
819
|
# }
|
744
820
|
#
|
821
|
+
# fetchTrades(executions history)
|
822
|
+
#
|
823
|
+
# {
|
824
|
+
# "timestamp": "1710152516830",
|
825
|
+
# "price": "71927.0",
|
826
|
+
# "quantity": "0.0695",
|
827
|
+
# "markPrice": "71936.38701675525",
|
828
|
+
# "limitFilled": True,
|
829
|
+
# "usdValue": "4998.93",
|
830
|
+
# "uid": "116ae634-253f-470b-bd20-fa9d429fb8b1",
|
831
|
+
# "makerOrder": {"uid": "17bfe4de-c01e-4938-926c-617d2a2d0597", "tradeable": "PF_XBTUSD", "direction": "Buy", "quantity": "0.0695", "timestamp": "1710152515836", "limitPrice": "71927.0", "orderType": "Post", "reduceOnly": False, "lastUpdateTimestamp": "1710152515836"},
|
832
|
+
# "takerOrder": {"uid": "d3e437b4-aa70-4108-b5cf-b1eecb9845b5", "tradeable": "PF_XBTUSD", "direction": "Sell", "quantity": "0.940100", "timestamp": "1710152516830", "limitPrice": "71915", "orderType": "IoC", "reduceOnly": False, "lastUpdateTimestamp": "1710152516830"}
|
833
|
+
# }
|
834
|
+
#
|
745
835
|
# fetchMyTrades(private)
|
746
836
|
#
|
747
837
|
# {
|
@@ -782,7 +872,7 @@ class krakenfutures(Exchange, ImplicitAPI):
|
|
782
872
|
#
|
783
873
|
timestamp = self.parse8601(self.safe_string_2(trade, 'time', 'fillTime'))
|
784
874
|
price = self.safe_string(trade, 'price')
|
785
|
-
amount = self.
|
875
|
+
amount = self.safe_string_n(trade, ['size', 'amount', 'quantity'], '0.0')
|
786
876
|
id = self.safe_string_2(trade, 'uid', 'fill_id')
|
787
877
|
if id is None:
|
788
878
|
id = self.safe_string(trade, 'executionId')
|
@@ -821,6 +911,13 @@ class krakenfutures(Exchange, ImplicitAPI):
|
|
821
911
|
takerOrMaker = 'taker'
|
822
912
|
elif fillType.find('maker') >= 0:
|
823
913
|
takerOrMaker = 'maker'
|
914
|
+
isHistoricalExecution = ('takerOrder' in trade)
|
915
|
+
if isHistoricalExecution:
|
916
|
+
timestamp = self.safe_integer(trade, 'timestamp')
|
917
|
+
taker = self.safe_dict(trade, 'takerOrder', {})
|
918
|
+
if taker is not None:
|
919
|
+
side = self.safe_string_lower(taker, 'direction')
|
920
|
+
takerOrMaker = 'taker'
|
824
921
|
return self.safe_trade({
|
825
922
|
'info': trade,
|
826
923
|
'id': id,
|
ccxt/pro/__init__.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.2.
|
3
|
+
Version: 4.2.68
|
4
4
|
Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges
|
5
5
|
Home-page: https://ccxt.com
|
6
6
|
Author: Igor Kroitor
|
@@ -259,13 +259,13 @@ console.log(version, Object.keys(exchanges));
|
|
259
259
|
|
260
260
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
261
261
|
|
262
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.
|
263
|
-
* unpkg: https://unpkg.com/ccxt@4.2.
|
262
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.68/dist/ccxt.browser.js
|
263
|
+
* unpkg: https://unpkg.com/ccxt@4.2.68/dist/ccxt.browser.js
|
264
264
|
|
265
265
|
CDNs are not updated in real-time and may have delays. Defaulting to the most recent version without specifying the version number is not recommended. Please, keep in mind that we are not responsible for the correct operation of those CDN servers.
|
266
266
|
|
267
267
|
```HTML
|
268
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.
|
268
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.68/dist/ccxt.browser.js"></script>
|
269
269
|
```
|
270
270
|
|
271
271
|
Creates a global `ccxt` object:
|
@@ -1,4 +1,4 @@
|
|
1
|
-
ccxt/__init__.py,sha256
|
1
|
+
ccxt/__init__.py,sha256=CawUjzL4-ousENhUpIvPjP5EGA2Cx_yAGVG2v4qqgGg,15444
|
2
2
|
ccxt/ace.py,sha256=pIA1Ipres_-IcaIF1hiSewvx3gLNH_19ZPykd4OO5zc,41406
|
3
3
|
ccxt/alpaca.py,sha256=EN4OdS7Z3hU5FUgrtd-PP3E1b3jplP-cGViamkAWUaM,46889
|
4
4
|
ccxt/ascendex.py,sha256=uJvx7lkPbZmHDOcFw11vKqKWUkn9pbRz2OkfpvUMHKs,144175
|
@@ -64,12 +64,12 @@ ccxt/hollaex.py,sha256=7QViVaPjHuxAVqUkwKPZHJDrMQFHNHILrU4CK_fy5KE,75827
|
|
64
64
|
ccxt/htx.py,sha256=rlayFd5u3yi7AWLPNomsTAfnfRn0nTupQhNJVWH3JCI,417465
|
65
65
|
ccxt/huobi.py,sha256=4vaG7IRN7fyjaJ_ac6S-njlHOfSEN5de7aq0noznxYw,438
|
66
66
|
ccxt/huobijp.py,sha256=siZ9iHjR-TNFLiiVqBGN2dZ3jQvAZzQPr48WbaqdqiM,87878
|
67
|
-
ccxt/hyperliquid.py,sha256=
|
67
|
+
ccxt/hyperliquid.py,sha256=GIBKEj8L2JftXCZbE44baztdT6lTXnZV7bgvZ-bULoo,80312
|
68
68
|
ccxt/idex.py,sha256=iLgcPQW4BZrun0ccINYSq6xUacsJ24Kt6sX9BiCkAZ4,72703
|
69
69
|
ccxt/independentreserve.py,sha256=awlESBQdUPDpgnKWpHAo2pxC-wcNiBLI8f3Wn9V7OdI,31979
|
70
70
|
ccxt/indodax.py,sha256=2X0AboPTwvdxFWT9BwhkY90K1U1aaPA8L6UiHnO-AIY,51762
|
71
71
|
ccxt/kraken.py,sha256=JSoRerunwUGX7wdr-mHQigNkxNlZK0au-brEb3NmX5c,121866
|
72
|
-
ccxt/krakenfutures.py,sha256=
|
72
|
+
ccxt/krakenfutures.py,sha256=QabY6HWZ6W7qXvS-o21h4vbvfu2q-32tOX3CB82e-rg,115791
|
73
73
|
ccxt/kucoin.py,sha256=_oUrmBWaRkqbSxz94lFlsEJD_CjXwNCLnfUBJajMYvM,200934
|
74
74
|
ccxt/kucoinfutures.py,sha256=zZGAb5fLZeBeOGGx5dDxGvXWROgV1P8JLZvqKdT7m48,110519
|
75
75
|
ccxt/kuna.py,sha256=VKSqCZfv4gtz2vBGI3hElarbzACaGwywkpwnOhA5jLI,95951
|
@@ -203,7 +203,7 @@ ccxt/abstract/woo.py,sha256=E-QXVJKVI4EOW72NX6wv99px9EyitWtd9KWvXUc9Tyo,10216
|
|
203
203
|
ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
|
204
204
|
ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
|
205
205
|
ccxt/abstract/zonda.py,sha256=aSfewvRojzmuymX6QbOnDR8v9VFqWTULMHX9Y7kKD1M,5820
|
206
|
-
ccxt/async_support/__init__.py,sha256
|
206
|
+
ccxt/async_support/__init__.py,sha256=jATVXN85hoqBSdAZ7hzY_LerkMSnlpgPx006WUCOX78,15177
|
207
207
|
ccxt/async_support/ace.py,sha256=LjNrCLc5OA9CTZ-SCNkBBeSUa144U1ayh6lSw_6GVgI,41630
|
208
208
|
ccxt/async_support/alpaca.py,sha256=tGinjTamFx1lvVoHyB3crGlKF97gUPOtG9Dy8kPMqhQ,47101
|
209
209
|
ccxt/async_support/ascendex.py,sha256=KKPnXkJPf3fC8JvOEwtsW1On8jNHAJ59_n072dvxAO8,144915
|
@@ -269,12 +269,12 @@ ccxt/async_support/hollaex.py,sha256=g4lC-7l8jfWfQmx6Z7POc7iewBSLCh_Atj5DW2pyAm0
|
|
269
269
|
ccxt/async_support/htx.py,sha256=vAQacwFaBJOms5PeImOq9O75_DdhyhFARCsC9YfPArI,419803
|
270
270
|
ccxt/async_support/huobi.py,sha256=fup0j6wQ1khAtfbb1H4CSyJAOzhxuoHMmrM6sgTuhr8,452
|
271
271
|
ccxt/async_support/huobijp.py,sha256=y7CVKCg3tr7Gw-6ubDz0-OJpm2EogjPWxbJ2ziV5QTk,88378
|
272
|
-
ccxt/async_support/hyperliquid.py,sha256=
|
272
|
+
ccxt/async_support/hyperliquid.py,sha256=kOBvb3aMWO0ccPqYPBjIGJgagGo6DxudhbejM10HVKg,80734
|
273
273
|
ccxt/async_support/idex.py,sha256=5QR6eiE5NiJNyBPxFL46OnoA4y15-bxHUYVMtPwOr5k,73179
|
274
274
|
ccxt/async_support/independentreserve.py,sha256=QPlcKtYXK9SBakjN1A3OHJRAUauijfUM9f535IP7bc4,32239
|
275
275
|
ccxt/async_support/indodax.py,sha256=CKPRtmG8p69Do6TdxWCpccUWIlTr_edUe2DKakVj2Hs,52070
|
276
276
|
ccxt/async_support/kraken.py,sha256=5tAmqHvfixjGKD7hLkVTCF-P4RWHK3lWa4g6zpsIPnY,122450
|
277
|
-
ccxt/async_support/krakenfutures.py,sha256=
|
277
|
+
ccxt/async_support/krakenfutures.py,sha256=TDKy2QyNUN64y8cblOPiC8ohLFAwKyohPvdt9trEHCA,116261
|
278
278
|
ccxt/async_support/kucoin.py,sha256=T-fG7EriBHqRHfmOoImPEA2TGAfRH_PyHXfNi871RzU,201952
|
279
279
|
ccxt/async_support/kucoinfutures.py,sha256=93boneXD3FcCsGZG_xpiefQrLiGoXOOc3i0ikjHnJyU,111079
|
280
280
|
ccxt/async_support/kuna.py,sha256=Mlwx_DBFlu7LWuy7m875052ih7z4loCgIZfK5k81hnQ,96367
|
@@ -307,7 +307,7 @@ ccxt/async_support/yobit.py,sha256=JKwcd4_sPc7sFWTI5eICzbHcVMOxUrghlFTPmfWYgUQ,5
|
|
307
307
|
ccxt/async_support/zaif.py,sha256=A4lhLoQNHt8EWeCH067sQrSiziNZ9nJU_-ZyVE59Xgo,28116
|
308
308
|
ccxt/async_support/zonda.py,sha256=GqTR3gmRA9dcC2dCpSUVK-k19b_DiNGpIRfmmvfchiM,80763
|
309
309
|
ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
|
310
|
-
ccxt/async_support/base/exchange.py,sha256=
|
310
|
+
ccxt/async_support/base/exchange.py,sha256=7ebrsRehEmBevgaD0skYyHjTQns2TEuEvzTTnKQ1G4o,90820
|
311
311
|
ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
|
312
312
|
ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
|
313
313
|
ccxt/async_support/base/ws/aiohttp_client.py,sha256=Ed1765emEde2Hj8Ys6f5EjS54ZI1wQ0qIhd04eB7yhU,5751
|
@@ -321,10 +321,10 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=Pxrq22nCODckJ6G1OXkYEmUunIu
|
|
321
321
|
ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
|
322
322
|
ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
|
323
323
|
ccxt/base/errors.py,sha256=JBn3zTrtru7tLgyEi6MzKAUwiZe0fltQLYoJcsdP-AA,4099
|
324
|
-
ccxt/base/exchange.py,sha256=
|
324
|
+
ccxt/base/exchange.py,sha256=QjsPXTLTLC42wWRAj6CwHw4ekQ8gkc7G5QzVUP5soH0,246873
|
325
325
|
ccxt/base/precise.py,sha256=_xfu54sV0vWNnOfGTKRFykeuWP8mn4K1m9lk1tcllX4,8565
|
326
326
|
ccxt/base/types.py,sha256=Bc5lH1L29xvaQDl4uSx7_3w_gZTyhcUrBh-SSyKXzRI,6126
|
327
|
-
ccxt/pro/__init__.py,sha256=
|
327
|
+
ccxt/pro/__init__.py,sha256=lguDe-qhw2wcjN-g-URNYhlplGwyGcjzUx36-P00l-U,6675
|
328
328
|
ccxt/pro/alpaca.py,sha256=ABL5GvXMmcSC7LaYRtUqS3tgsLpCBf1IChgC5f2aA2E,27161
|
329
329
|
ccxt/pro/ascendex.py,sha256=Tjpk9KPF4YPKsdgq-Cabs3nx1Zkrnd7srdjqHYeghLs,35413
|
330
330
|
ccxt/pro/bequant.py,sha256=5zbsP8BHQTUZ8ZNL6uaACxDbUClgkOV4SYfXT_LfQVg,1351
|
@@ -520,7 +520,7 @@ ccxt/test/base/test_ticker.py,sha256=cmYHv5ZtbAq27y4LGDcGzaro-qkSNJWme5rLHOEdA4U
|
|
520
520
|
ccxt/test/base/test_trade.py,sha256=lhT9nxiSr0AEvKbdGXL9qJOkz1EiKEmA0TDfdCbubg8,2295
|
521
521
|
ccxt/test/base/test_trading_fee.py,sha256=2aDCNJtqBkTC_AieO0l1HYGq5hz5qkWlkWb9Nv_fcwk,1066
|
522
522
|
ccxt/test/base/test_transaction.py,sha256=BTbB4UHHXkrvYgwbrhh867nVRlevmIkIrz1W_odlQJI,1434
|
523
|
-
ccxt-4.2.
|
524
|
-
ccxt-4.2.
|
525
|
-
ccxt-4.2.
|
526
|
-
ccxt-4.2.
|
523
|
+
ccxt-4.2.68.dist-info/METADATA,sha256=Fz6qDl2hcKi8rjvmG4I_rzWUF5PPKyKOQNz8U4KStLg,107754
|
524
|
+
ccxt-4.2.68.dist-info/WHEEL,sha256=P2T-6epvtXQ2cBOE_U1K4_noqlJFN3tj15djMgEu4NM,110
|
525
|
+
ccxt-4.2.68.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
|
526
|
+
ccxt-4.2.68.dist-info/RECORD,,
|
File without changes
|
File without changes
|