ccxt 4.3.40__py2.py3-none-any.whl → 4.3.42__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ccxt/__init__.py +1 -1
- ccxt/abstract/binance.py +2 -0
- ccxt/abstract/binancecoinm.py +2 -0
- ccxt/abstract/binanceus.py +2 -0
- ccxt/abstract/binanceusdm.py +2 -0
- ccxt/abstract/okx.py +7 -0
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/binance.py +3 -0
- ccxt/async_support/bitfinex2.py +1 -1
- ccxt/async_support/bithumb.py +9 -1
- ccxt/async_support/bitmart.py +191 -100
- ccxt/async_support/bitstamp.py +38 -2
- ccxt/async_support/blockchaincom.py +11 -7
- ccxt/async_support/coinex.py +1 -1
- ccxt/async_support/coinlist.py +19 -1
- ccxt/async_support/coinmate.py +19 -3
- ccxt/async_support/coinone.py +1 -1
- ccxt/async_support/coinspot.py +11 -2
- ccxt/async_support/independentreserve.py +33 -1
- ccxt/async_support/indodax.py +43 -2
- ccxt/async_support/kraken.py +30 -3
- ccxt/async_support/krakenfutures.py +55 -1
- ccxt/async_support/kucoin.py +59 -2
- ccxt/async_support/okx.py +7 -0
- ccxt/async_support/upbit.py +13 -8
- ccxt/async_support/woo.py +6 -2
- ccxt/base/exchange.py +1 -1
- ccxt/binance.py +3 -0
- ccxt/bitfinex2.py +1 -1
- ccxt/bithumb.py +9 -1
- ccxt/bitmart.py +191 -100
- ccxt/bitstamp.py +38 -2
- ccxt/blockchaincom.py +11 -7
- ccxt/coinex.py +1 -1
- ccxt/coinlist.py +19 -1
- ccxt/coinmate.py +19 -3
- ccxt/coinone.py +1 -1
- ccxt/coinspot.py +11 -2
- ccxt/independentreserve.py +33 -1
- ccxt/indodax.py +43 -2
- ccxt/kraken.py +30 -3
- ccxt/krakenfutures.py +55 -1
- ccxt/kucoin.py +59 -2
- ccxt/okx.py +7 -0
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/alpaca.py +5 -5
- ccxt/pro/ascendex.py +3 -3
- ccxt/pro/bingx.py +258 -42
- ccxt/pro/bitget.py +11 -5
- ccxt/pro/bitrue.py +3 -4
- ccxt/pro/currencycom.py +6 -5
- ccxt/pro/exmo.py +5 -6
- ccxt/pro/gemini.py +4 -3
- ccxt/pro/independentreserve.py +7 -7
- ccxt/pro/lbank.py +4 -4
- ccxt/pro/mexc.py +1 -1
- ccxt/pro/phemex.py +5 -5
- ccxt/pro/probit.py +4 -4
- ccxt/pro/upbit.py +299 -4
- ccxt/pro/wazirx.py +12 -12
- ccxt/pro/woo.py +1 -1
- ccxt/upbit.py +13 -8
- ccxt/woo.py +6 -2
- {ccxt-4.3.40.dist-info → ccxt-4.3.42.dist-info}/METADATA +4 -4
- {ccxt-4.3.40.dist-info → ccxt-4.3.42.dist-info}/RECORD +68 -68
- {ccxt-4.3.40.dist-info → ccxt-4.3.42.dist-info}/WHEEL +0 -0
- {ccxt-4.3.40.dist-info → ccxt-4.3.42.dist-info}/top_level.txt +0 -0
ccxt/async_support/coinmate.py
CHANGED
@@ -895,6 +895,13 @@ class coinmate(Exchange, ImplicitAPI):
|
|
895
895
|
# "trailing": False,
|
896
896
|
# }
|
897
897
|
#
|
898
|
+
# cancelOrder
|
899
|
+
#
|
900
|
+
# {
|
901
|
+
# "success": True,
|
902
|
+
# "remainingAmount": 0.1
|
903
|
+
# }
|
904
|
+
#
|
898
905
|
id = self.safe_string(order, 'id')
|
899
906
|
timestamp = self.safe_integer(order, 'timestamp')
|
900
907
|
side = self.safe_string_lower(order, 'type')
|
@@ -1003,9 +1010,18 @@ class coinmate(Exchange, ImplicitAPI):
|
|
1003
1010
|
# {"error":false,"errorMessage":null,"data":{"success":true,"remainingAmount":0.01}}
|
1004
1011
|
request: dict = {'orderId': id}
|
1005
1012
|
response = await self.privatePostCancelOrderWithInfo(self.extend(request, params))
|
1006
|
-
|
1007
|
-
|
1008
|
-
|
1013
|
+
#
|
1014
|
+
# {
|
1015
|
+
# "error": False,
|
1016
|
+
# "errorMessage": null,
|
1017
|
+
# "data": {
|
1018
|
+
# "success": True,
|
1019
|
+
# "remainingAmount": 0.1
|
1020
|
+
# }
|
1021
|
+
# }
|
1022
|
+
#
|
1023
|
+
data = self.safe_dict(response, 'data')
|
1024
|
+
return self.parse_order(data)
|
1009
1025
|
|
1010
1026
|
def nonce(self):
|
1011
1027
|
return self.milliseconds()
|
ccxt/async_support/coinone.py
CHANGED
ccxt/async_support/coinspot.py
CHANGED
@@ -505,11 +505,20 @@ class coinspot(Exchange, ImplicitAPI):
|
|
505
505
|
if side != 'buy' and side != 'sell':
|
506
506
|
raise ArgumentsRequired(self.id + ' cancelOrder() requires a side parameter, "buy" or "sell"')
|
507
507
|
params = self.omit(params, 'side')
|
508
|
-
method = 'privatePostMy' + self.capitalize(side) + 'Cancel'
|
509
508
|
request: dict = {
|
510
509
|
'id': id,
|
511
510
|
}
|
512
|
-
|
511
|
+
response = None
|
512
|
+
if side == 'buy':
|
513
|
+
response = await self.privatePostMyBuyCancel(self.extend(request, params))
|
514
|
+
else:
|
515
|
+
response = await self.privatePostMySellCancel(self.extend(request, params))
|
516
|
+
#
|
517
|
+
# status - ok, error
|
518
|
+
#
|
519
|
+
return self.safe_order({
|
520
|
+
'info': response,
|
521
|
+
})
|
513
522
|
|
514
523
|
def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
|
515
524
|
url = self.urls['api'][api] + '/' + path
|
@@ -375,6 +375,21 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
375
375
|
# "FeePercent": 0.005,
|
376
376
|
# }
|
377
377
|
#
|
378
|
+
# cancelOrder
|
379
|
+
#
|
380
|
+
# {
|
381
|
+
# "AvgPrice": 455.48,
|
382
|
+
# "CreatedTimestampUtc": "2022-08-05T06:42:11.3032208Z",
|
383
|
+
# "OrderGuid": "719c495c-a39e-4884-93ac-280b37245037",
|
384
|
+
# "Price": 485.76,
|
385
|
+
# "PrimaryCurrencyCode": "Xbt",
|
386
|
+
# "ReservedAmount": 0.358,
|
387
|
+
# "SecondaryCurrencyCode": "Usd",
|
388
|
+
# "Status": "Cancelled",
|
389
|
+
# "Type": "LimitOffer",
|
390
|
+
# "VolumeFilled": 0,
|
391
|
+
# "VolumeOrdered": 0.358
|
392
|
+
# }
|
378
393
|
symbol = None
|
379
394
|
baseId = self.safe_string(order, 'PrimaryCurrencyCode')
|
380
395
|
quoteId = self.safe_string(order, 'SecondaryCurrencyCode')
|
@@ -666,6 +681,7 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
666
681
|
async def cancel_order(self, id: str, symbol: Str = None, params={}):
|
667
682
|
"""
|
668
683
|
cancels an open order
|
684
|
+
:see: https://www.independentreserve.com/features/api#CancelOrder
|
669
685
|
:param str id: order id
|
670
686
|
:param str symbol: unified symbol of the market the order was made in
|
671
687
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -675,7 +691,23 @@ class independentreserve(Exchange, ImplicitAPI):
|
|
675
691
|
request: dict = {
|
676
692
|
'orderGuid': id,
|
677
693
|
}
|
678
|
-
|
694
|
+
response = await self.privatePostCancelOrder(self.extend(request, params))
|
695
|
+
#
|
696
|
+
# {
|
697
|
+
# "AvgPrice": 455.48,
|
698
|
+
# "CreatedTimestampUtc": "2022-08-05T06:42:11.3032208Z",
|
699
|
+
# "OrderGuid": "719c495c-a39e-4884-93ac-280b37245037",
|
700
|
+
# "Price": 485.76,
|
701
|
+
# "PrimaryCurrencyCode": "Xbt",
|
702
|
+
# "ReservedAmount": 0.358,
|
703
|
+
# "SecondaryCurrencyCode": "Usd",
|
704
|
+
# "Status": "Cancelled",
|
705
|
+
# "Type": "LimitOffer",
|
706
|
+
# "VolumeFilled": 0,
|
707
|
+
# "VolumeOrdered": 0.358
|
708
|
+
# }
|
709
|
+
#
|
710
|
+
return self.parse_order(response)
|
679
711
|
|
680
712
|
async def fetch_deposit_address(self, code: str, params={}):
|
681
713
|
"""
|
ccxt/async_support/indodax.py
CHANGED
@@ -641,6 +641,24 @@ class indodax(Exchange, ImplicitAPI):
|
|
641
641
|
# "order_xrp": "30.45000000",
|
642
642
|
# "remain_xrp": "0.00000000"
|
643
643
|
# }
|
644
|
+
#
|
645
|
+
# cancelOrder
|
646
|
+
#
|
647
|
+
# {
|
648
|
+
# "order_id": 666883,
|
649
|
+
# "client_order_id": "clientx-sj82ks82j",
|
650
|
+
# "type": "sell",
|
651
|
+
# "pair": "btc_idr",
|
652
|
+
# "balance": {
|
653
|
+
# "idr": "33605800",
|
654
|
+
# "btc": "0.00000000",
|
655
|
+
# ...
|
656
|
+
# "frozen_idr": "0",
|
657
|
+
# "frozen_btc": "0.00000000",
|
658
|
+
# ...
|
659
|
+
# }
|
660
|
+
# }
|
661
|
+
#
|
644
662
|
side = None
|
645
663
|
if 'type' in order:
|
646
664
|
side = order['type']
|
@@ -650,6 +668,8 @@ class indodax(Exchange, ImplicitAPI):
|
|
650
668
|
price = self.safe_string(order, 'price')
|
651
669
|
amount = None
|
652
670
|
remaining = None
|
671
|
+
marketId = self.safe_string(order, 'pair')
|
672
|
+
market = self.safe_market(marketId, market)
|
653
673
|
if market is not None:
|
654
674
|
symbol = market['symbol']
|
655
675
|
quoteId = market['quoteId']
|
@@ -668,7 +688,7 @@ class indodax(Exchange, ImplicitAPI):
|
|
668
688
|
return self.safe_order({
|
669
689
|
'info': order,
|
670
690
|
'id': id,
|
671
|
-
'clientOrderId':
|
691
|
+
'clientOrderId': self.safe_string(order, 'client_order_id'),
|
672
692
|
'timestamp': timestamp,
|
673
693
|
'datetime': self.iso8601(timestamp),
|
674
694
|
'lastTradeTimestamp': None,
|
@@ -825,7 +845,28 @@ class indodax(Exchange, ImplicitAPI):
|
|
825
845
|
'pair': market['id'],
|
826
846
|
'type': side,
|
827
847
|
}
|
828
|
-
|
848
|
+
response = await self.privatePostCancelOrder(self.extend(request, params))
|
849
|
+
#
|
850
|
+
# {
|
851
|
+
# "success": 1,
|
852
|
+
# "return": {
|
853
|
+
# "order_id": 666883,
|
854
|
+
# "client_order_id": "clientx-sj82ks82j",
|
855
|
+
# "type": "sell",
|
856
|
+
# "pair": "btc_idr",
|
857
|
+
# "balance": {
|
858
|
+
# "idr": "33605800",
|
859
|
+
# "btc": "0.00000000",
|
860
|
+
# ...
|
861
|
+
# "frozen_idr": "0",
|
862
|
+
# "frozen_btc": "0.00000000",
|
863
|
+
# ...
|
864
|
+
# }
|
865
|
+
# }
|
866
|
+
# }
|
867
|
+
#
|
868
|
+
data = self.safe_dict(response, 'return')
|
869
|
+
return self.parse_order(data)
|
829
870
|
|
830
871
|
async def fetch_transaction_fee(self, code: str, params={}):
|
831
872
|
"""
|
ccxt/async_support/kraken.py
CHANGED
@@ -2008,12 +2008,22 @@ class kraken(Exchange, ImplicitAPI):
|
|
2008
2008
|
params = self.omit(params, ['userref', 'clientOrderId'])
|
2009
2009
|
try:
|
2010
2010
|
response = await self.privatePostCancelOrder(self.extend(request, params))
|
2011
|
+
#
|
2012
|
+
# {
|
2013
|
+
# error: [],
|
2014
|
+
# result: {
|
2015
|
+
# count: '1'
|
2016
|
+
# }
|
2017
|
+
# }
|
2018
|
+
#
|
2011
2019
|
except Exception as e:
|
2012
2020
|
if self.last_http_response:
|
2013
2021
|
if self.last_http_response.find('EOrder:Unknown order') >= 0:
|
2014
2022
|
raise OrderNotFound(self.id + ' cancelOrder() error ' + self.last_http_response)
|
2015
2023
|
raise e
|
2016
|
-
return
|
2024
|
+
return self.safe_order({
|
2025
|
+
'info': response,
|
2026
|
+
})
|
2017
2027
|
|
2018
2028
|
async def cancel_orders(self, ids, symbol: Str = None, params={}):
|
2019
2029
|
"""
|
@@ -2036,7 +2046,11 @@ class kraken(Exchange, ImplicitAPI):
|
|
2036
2046
|
# }
|
2037
2047
|
# }
|
2038
2048
|
#
|
2039
|
-
return
|
2049
|
+
return [
|
2050
|
+
self.safe_order({
|
2051
|
+
'info': response,
|
2052
|
+
}),
|
2053
|
+
]
|
2040
2054
|
|
2041
2055
|
async def cancel_all_orders(self, symbol: Str = None, params={}):
|
2042
2056
|
"""
|
@@ -2047,7 +2061,20 @@ class kraken(Exchange, ImplicitAPI):
|
|
2047
2061
|
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
2048
2062
|
"""
|
2049
2063
|
await self.load_markets()
|
2050
|
-
|
2064
|
+
response = await self.privatePostCancelAll(params)
|
2065
|
+
#
|
2066
|
+
# {
|
2067
|
+
# error: [],
|
2068
|
+
# result: {
|
2069
|
+
# count: '1'
|
2070
|
+
# }
|
2071
|
+
# }
|
2072
|
+
#
|
2073
|
+
return [
|
2074
|
+
self.safe_order({
|
2075
|
+
'info': response,
|
2076
|
+
}),
|
2077
|
+
]
|
2051
2078
|
|
2052
2079
|
async def cancel_all_orders_after(self, timeout: Int, params={}):
|
2053
2080
|
"""
|
@@ -1207,7 +1207,45 @@ class krakenfutures(Exchange, ImplicitAPI):
|
|
1207
1207
|
if symbol is not None:
|
1208
1208
|
request['symbol'] = self.market_id(symbol)
|
1209
1209
|
response = await self.privatePostCancelallorders(self.extend(request, params))
|
1210
|
-
|
1210
|
+
#
|
1211
|
+
# {
|
1212
|
+
# result: 'success',
|
1213
|
+
# cancelStatus: {
|
1214
|
+
# receivedTime: '2024-06-06T01:12:44.814Z',
|
1215
|
+
# cancelOnly: 'PF_XRPUSD',
|
1216
|
+
# status: 'cancelled',
|
1217
|
+
# cancelledOrders: [{order_id: '272fd0ac-45c0-4003-b84d-d39b9e86bd36'}],
|
1218
|
+
# orderEvents: [
|
1219
|
+
# {
|
1220
|
+
# uid: '272fd0ac-45c0-4003-b84d-d39b9e86bd36',
|
1221
|
+
# order: {
|
1222
|
+
# orderId: '272fd0ac-45c0-4003-b84d-d39b9e86bd36',
|
1223
|
+
# cliOrdId: null,
|
1224
|
+
# type: 'lmt',
|
1225
|
+
# symbol: 'PF_XRPUSD',
|
1226
|
+
# side: 'buy',
|
1227
|
+
# quantity: '10',
|
1228
|
+
# filled: '0',
|
1229
|
+
# limitPrice: '0.4',
|
1230
|
+
# reduceOnly: False,
|
1231
|
+
# timestamp: '2024-06-06T01:11:16.045Z',
|
1232
|
+
# lastUpdateTimestamp: '2024-06-06T01:11:16.045Z'
|
1233
|
+
# },
|
1234
|
+
# type: 'CANCEL'
|
1235
|
+
# }
|
1236
|
+
# ]
|
1237
|
+
# },
|
1238
|
+
# serverTime: '2024-06-06T01:12:44.814Z'
|
1239
|
+
# }
|
1240
|
+
#
|
1241
|
+
cancelStatus = self.safe_dict(response, 'cancelStatus')
|
1242
|
+
orderEvents = self.safe_list(cancelStatus, 'orderEvents', [])
|
1243
|
+
orders = []
|
1244
|
+
for i in range(0, len(orderEvents)):
|
1245
|
+
orderEvent = self.safe_dict(orderEvents, 0)
|
1246
|
+
order = self.safe_dict(orderEvent, 'order', {})
|
1247
|
+
orders.append(order)
|
1248
|
+
return self.parse_orders(orders)
|
1211
1249
|
|
1212
1250
|
async def cancel_all_orders_after(self, timeout: Int, params={}):
|
1213
1251
|
"""
|
@@ -1551,6 +1589,22 @@ class krakenfutures(Exchange, ImplicitAPI):
|
|
1551
1589
|
# ]
|
1552
1590
|
# }
|
1553
1591
|
#
|
1592
|
+
# cancelAllOrders
|
1593
|
+
#
|
1594
|
+
# {
|
1595
|
+
# "orderId": "85c40002-3f20-4e87-9302-262626c3531b",
|
1596
|
+
# "cliOrdId": null,
|
1597
|
+
# "type": "lmt",
|
1598
|
+
# "symbol": "pi_xbtusd",
|
1599
|
+
# "side": "buy",
|
1600
|
+
# "quantity": 1000,
|
1601
|
+
# "filled": 0,
|
1602
|
+
# "limitPrice": 10144,
|
1603
|
+
# "stopPrice": null,
|
1604
|
+
# "reduceOnly": False,
|
1605
|
+
# "timestamp": "2019-08-01T15:26:27.790Z"
|
1606
|
+
# }
|
1607
|
+
#
|
1554
1608
|
# FETCH OPEN ORDERS
|
1555
1609
|
#
|
1556
1610
|
# {
|
ccxt/async_support/kucoin.py
CHANGED
@@ -2238,19 +2238,76 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2238
2238
|
request['clientOid'] = clientOrderId
|
2239
2239
|
if stop:
|
2240
2240
|
response = await self.privateDeleteStopOrderCancelOrderByClientOid(self.extend(request, params))
|
2241
|
+
#
|
2242
|
+
# {
|
2243
|
+
# code: '200000',
|
2244
|
+
# data: {
|
2245
|
+
# cancelledOrderId: 'vs8lgpiuao41iaft003khbbk',
|
2246
|
+
# clientOid: '123456'
|
2247
|
+
# }
|
2248
|
+
# }
|
2249
|
+
#
|
2241
2250
|
elif hf:
|
2242
2251
|
response = await self.privateDeleteHfOrdersClientOrderClientOid(self.extend(request, params))
|
2252
|
+
#
|
2253
|
+
# {
|
2254
|
+
# "code": "200000",
|
2255
|
+
# "data": {
|
2256
|
+
# "clientOid": "6d539dc614db3"
|
2257
|
+
# }
|
2258
|
+
# }
|
2259
|
+
#
|
2243
2260
|
else:
|
2244
2261
|
response = await self.privateDeleteOrderClientOrderClientOid(self.extend(request, params))
|
2262
|
+
#
|
2263
|
+
# {
|
2264
|
+
# code: '200000',
|
2265
|
+
# data: {
|
2266
|
+
# cancelledOrderId: '665e580f6660500007aba341',
|
2267
|
+
# clientOid: '1234567',
|
2268
|
+
# cancelledOcoOrderIds: null
|
2269
|
+
# }
|
2270
|
+
# }
|
2271
|
+
#
|
2272
|
+
response = self.safe_dict(response, 'data')
|
2273
|
+
return self.parse_order(response)
|
2245
2274
|
else:
|
2246
2275
|
request['orderId'] = id
|
2247
2276
|
if stop:
|
2248
2277
|
response = await self.privateDeleteStopOrderOrderId(self.extend(request, params))
|
2278
|
+
#
|
2279
|
+
# {
|
2280
|
+
# code: '200000',
|
2281
|
+
# data: {cancelledOrderIds: ['vs8lgpiuaco91qk8003vebu9']}
|
2282
|
+
# }
|
2283
|
+
#
|
2249
2284
|
elif hf:
|
2250
2285
|
response = await self.privateDeleteHfOrdersOrderId(self.extend(request, params))
|
2286
|
+
#
|
2287
|
+
# {
|
2288
|
+
# "code": "200000",
|
2289
|
+
# "data": {
|
2290
|
+
# "orderId": "630625dbd9180300014c8d52"
|
2291
|
+
# }
|
2292
|
+
# }
|
2293
|
+
#
|
2294
|
+
response = self.safe_dict(response, 'data')
|
2295
|
+
return self.parse_order(response)
|
2251
2296
|
else:
|
2252
2297
|
response = await self.privateDeleteOrdersOrderId(self.extend(request, params))
|
2253
|
-
|
2298
|
+
#
|
2299
|
+
# {
|
2300
|
+
# code: '200000',
|
2301
|
+
# data: {cancelledOrderIds: ['665e4fbe28051a0007245c41']}
|
2302
|
+
# }
|
2303
|
+
#
|
2304
|
+
data = self.safe_dict(response, 'data')
|
2305
|
+
orderIds = self.safe_list(data, 'cancelledOrderIds', [])
|
2306
|
+
orderId = self.safe_string(orderIds, 0)
|
2307
|
+
return self.safe_order({
|
2308
|
+
'info': data,
|
2309
|
+
'id': orderId,
|
2310
|
+
})
|
2254
2311
|
|
2255
2312
|
async def cancel_all_orders(self, symbol: Str = None, params={}):
|
2256
2313
|
"""
|
@@ -2664,7 +2721,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2664
2721
|
stopPrice = self.safe_number(order, 'stopPrice')
|
2665
2722
|
return self.safe_order({
|
2666
2723
|
'info': order,
|
2667
|
-
'id': self.safe_string_n(order, ['id', 'orderId', 'newOrderId']),
|
2724
|
+
'id': self.safe_string_n(order, ['id', 'orderId', 'newOrderId', 'cancelledOrderId']),
|
2668
2725
|
'clientOrderId': self.safe_string(order, 'clientOid'),
|
2669
2726
|
'symbol': self.safe_symbol(marketId, market, '-'),
|
2670
2727
|
'type': self.safe_string(order, 'type'),
|
ccxt/async_support/okx.py
CHANGED
@@ -370,6 +370,9 @@ class okx(Exchange, ImplicitAPI):
|
|
370
370
|
'account/greeks': 2,
|
371
371
|
'account/position-tiers': 2,
|
372
372
|
'account/mmp-config': 4,
|
373
|
+
'account/fixed-loan/borrowing-limit': 4,
|
374
|
+
'account/fixed-loan/borrowing-quote': 5,
|
375
|
+
'account/fixed-loan/borrowing-orders-list': 5,
|
373
376
|
# subaccount
|
374
377
|
'users/subaccount/list': 10,
|
375
378
|
'account/subaccount/balances': 10 / 3,
|
@@ -495,6 +498,10 @@ class okx(Exchange, ImplicitAPI):
|
|
495
498
|
'account/set-account-level': 4,
|
496
499
|
'account/mmp-reset': 4,
|
497
500
|
'account/mmp-config': 100,
|
501
|
+
'account/fixed-loan/borrowing-order': 5,
|
502
|
+
'account/fixed-loan/amend-borrowing-order': 5,
|
503
|
+
'account/fixed-loan/manual-reborrow': 5,
|
504
|
+
'account/fixed-loan/repay-borrowing-order': 5,
|
498
505
|
# subaccount
|
499
506
|
'users/subaccount/modify-apikey': 10,
|
500
507
|
'asset/subaccount/transfer': 10,
|
ccxt/async_support/upbit.py
CHANGED
@@ -1782,23 +1782,28 @@ class upbit(Exchange, ImplicitAPI):
|
|
1782
1782
|
url += '?' + self.urlencode(query)
|
1783
1783
|
if api == 'private':
|
1784
1784
|
self.check_required_credentials()
|
1785
|
+
headers = {}
|
1785
1786
|
nonce = self.uuid()
|
1786
1787
|
request: dict = {
|
1787
1788
|
'access_key': self.apiKey,
|
1788
1789
|
'nonce': nonce,
|
1789
1790
|
}
|
1790
|
-
|
1791
|
-
|
1791
|
+
hasQuery = query
|
1792
|
+
auth = None
|
1793
|
+
if (method != 'GET') and (method != 'DELETE'):
|
1794
|
+
body = self.json(params)
|
1795
|
+
headers['Content-Type'] = 'application/json'
|
1796
|
+
if hasQuery:
|
1797
|
+
auth = self.urlencode(query)
|
1798
|
+
else:
|
1799
|
+
if hasQuery:
|
1800
|
+
auth = self.urlencode(self.keysort(query))
|
1801
|
+
if auth is not None:
|
1792
1802
|
hash = self.hash(self.encode(auth), 'sha512')
|
1793
1803
|
request['query_hash'] = hash
|
1794
1804
|
request['query_hash_alg'] = 'SHA512'
|
1795
1805
|
token = self.jwt(request, self.encode(self.secret), 'sha256')
|
1796
|
-
headers =
|
1797
|
-
'Authorization': 'Bearer ' + token,
|
1798
|
-
}
|
1799
|
-
if (method != 'GET') and (method != 'DELETE'):
|
1800
|
-
body = self.json(params)
|
1801
|
-
headers['Content-Type'] = 'application/json'
|
1806
|
+
headers['Authorization'] = 'Bearer ' + token
|
1802
1807
|
return {'url': url, 'method': method, 'body': body, 'headers': headers}
|
1803
1808
|
|
1804
1809
|
def handle_errors(self, httpCode: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
|
ccxt/async_support/woo.py
CHANGED
@@ -1212,7 +1212,9 @@ class woo(Exchange, ImplicitAPI):
|
|
1212
1212
|
# "status":"CANCEL_ALL_SENT"
|
1213
1213
|
# }
|
1214
1214
|
#
|
1215
|
-
return
|
1215
|
+
return [
|
1216
|
+
self.safe_order(response),
|
1217
|
+
]
|
1216
1218
|
|
1217
1219
|
async def cancel_all_orders_after(self, timeout: Int, params={}):
|
1218
1220
|
"""
|
@@ -1237,7 +1239,9 @@ class woo(Exchange, ImplicitAPI):
|
|
1237
1239
|
# "timestamp": 1711534302943
|
1238
1240
|
# }
|
1239
1241
|
#
|
1240
|
-
return
|
1242
|
+
return [
|
1243
|
+
self.safe_order(response),
|
1244
|
+
]
|
1241
1245
|
|
1242
1246
|
async def fetch_order(self, id: str, symbol: Str = None, params={}):
|
1243
1247
|
"""
|
ccxt/base/exchange.py
CHANGED
ccxt/binance.py
CHANGED
@@ -259,6 +259,9 @@ class binance(Exchange, ImplicitAPI):
|
|
259
259
|
# UID(sapi) request rate limit of 180 000 per minute
|
260
260
|
# 1 UID(sapi) => cost = 0.006667 =>(1000 / (50 * 0.006667)) * 60 = 180000
|
261
261
|
'get': {
|
262
|
+
# copy trading
|
263
|
+
'copyTrading/futures/userStatus': 2,
|
264
|
+
'copyTrading/futures/leadSymbol': 2,
|
262
265
|
'system/status': 0.1,
|
263
266
|
# these endpoints require self.apiKey
|
264
267
|
'accountSnapshot': 240, # Weight(IP): 2400 => cost = 0.1 * 2400 = 240
|
ccxt/bitfinex2.py
CHANGED
@@ -1655,7 +1655,7 @@ class bitfinex2(Exchange, ImplicitAPI):
|
|
1655
1655
|
raise ExchangeError(self.id + ' ' + response[6] + ': ' + errorText + '(#' + errorCode + ')')
|
1656
1656
|
orders = self.safe_list(response, 4, [])
|
1657
1657
|
order = self.safe_list(orders, 0)
|
1658
|
-
return self.parse_order(order, market)
|
1658
|
+
return self.parse_order(self.extend({'result': order}), market)
|
1659
1659
|
|
1660
1660
|
def create_orders(self, orders: List[OrderRequest], params={}):
|
1661
1661
|
"""
|
ccxt/bithumb.py
CHANGED
@@ -924,7 +924,15 @@ class bithumb(Exchange, ImplicitAPI):
|
|
924
924
|
'order_currency': market['base'],
|
925
925
|
'payment_currency': market['quote'],
|
926
926
|
}
|
927
|
-
|
927
|
+
response = self.privatePostTradeCancel(self.extend(request, params))
|
928
|
+
#
|
929
|
+
# {
|
930
|
+
# 'status': 'string',
|
931
|
+
# }
|
932
|
+
#
|
933
|
+
return self.safe_order({
|
934
|
+
'info': response,
|
935
|
+
})
|
928
936
|
|
929
937
|
def cancel_unified_order(self, order, params={}):
|
930
938
|
request: dict = {
|