ccxt 4.3.6__py2.py3-none-any.whl → 4.3.7__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 (178) hide show
  1. ccxt/__init__.py +1 -1
  2. ccxt/abstract/coinbase.py +5 -0
  3. ccxt/ace.py +5 -0
  4. ccxt/alpaca.py +6 -0
  5. ccxt/ascendex.py +2 -2
  6. ccxt/async_support/__init__.py +1 -1
  7. ccxt/async_support/ace.py +5 -0
  8. ccxt/async_support/alpaca.py +6 -0
  9. ccxt/async_support/ascendex.py +2 -2
  10. ccxt/async_support/base/exchange.py +27 -1
  11. ccxt/async_support/bigone.py +1 -1
  12. ccxt/async_support/binance.py +5 -3
  13. ccxt/async_support/bingx.py +3 -1
  14. ccxt/async_support/bitbank.py +4 -1
  15. ccxt/async_support/bitfinex.py +1 -1
  16. ccxt/async_support/bitfinex2.py +1 -1
  17. ccxt/async_support/bitflyer.py +1 -1
  18. ccxt/async_support/bitget.py +70 -4
  19. ccxt/async_support/bithumb.py +5 -1
  20. ccxt/async_support/bitmart.py +1 -1
  21. ccxt/async_support/bitmex.py +3 -1
  22. ccxt/async_support/bitopro.py +6 -1
  23. ccxt/async_support/bitrue.py +1 -1
  24. ccxt/async_support/bitso.py +4 -1
  25. ccxt/async_support/bitstamp.py +4 -1
  26. ccxt/async_support/bitteam.py +4 -0
  27. ccxt/async_support/bitvavo.py +4 -1
  28. ccxt/async_support/bl3p.py +3 -0
  29. ccxt/async_support/blockchaincom.py +1 -1
  30. ccxt/async_support/btcalpha.py +3 -0
  31. ccxt/async_support/btcbox.py +3 -0
  32. ccxt/async_support/btcmarkets.py +4 -1
  33. ccxt/async_support/btcturk.py +3 -0
  34. ccxt/async_support/bybit.py +116 -14
  35. ccxt/async_support/cex.py +6 -0
  36. ccxt/async_support/coinbase.py +94 -18
  37. ccxt/async_support/coinbaseinternational.py +3 -1
  38. ccxt/async_support/coinbasepro.py +7 -1
  39. ccxt/async_support/coincheck.py +3 -0
  40. ccxt/async_support/coinex.py +151 -47
  41. ccxt/async_support/coinlist.py +5 -1
  42. ccxt/async_support/coinmate.py +4 -1
  43. ccxt/async_support/coinone.py +3 -0
  44. ccxt/async_support/coinsph.py +5 -1
  45. ccxt/async_support/coinspot.py +3 -0
  46. ccxt/async_support/cryptocom.py +3 -1
  47. ccxt/async_support/delta.py +2 -2
  48. ccxt/async_support/deribit.py +1 -1
  49. ccxt/async_support/digifinex.py +3 -3
  50. ccxt/async_support/exmo.py +8 -3
  51. ccxt/async_support/gate.py +112 -24
  52. ccxt/async_support/gemini.py +1 -1
  53. ccxt/async_support/hitbtc.py +7 -6
  54. ccxt/async_support/hollaex.py +1 -1
  55. ccxt/async_support/htx.py +3 -1
  56. ccxt/async_support/huobijp.py +1 -1
  57. ccxt/async_support/hyperliquid.py +2 -2
  58. ccxt/async_support/idex.py +4 -1
  59. ccxt/async_support/independentreserve.py +3 -0
  60. ccxt/async_support/indodax.py +4 -1
  61. ccxt/async_support/kraken.py +1 -1
  62. ccxt/async_support/kucoin.py +3 -1
  63. ccxt/async_support/kucoinfutures.py +3 -1
  64. ccxt/async_support/kuna.py +1 -1
  65. ccxt/async_support/latoken.py +6 -0
  66. ccxt/async_support/lbank.py +1 -1
  67. ccxt/async_support/luno.py +3 -0
  68. ccxt/async_support/lykke.py +6 -1
  69. ccxt/async_support/mercado.py +4 -1
  70. ccxt/async_support/mexc.py +110 -4
  71. ccxt/async_support/ndax.py +5 -1
  72. ccxt/async_support/novadax.py +5 -1
  73. ccxt/async_support/okcoin.py +1 -1
  74. ccxt/async_support/okx.py +80 -4
  75. ccxt/async_support/onetrading.py +4 -1
  76. ccxt/async_support/p2b.py +3 -0
  77. ccxt/async_support/phemex.py +1 -1
  78. ccxt/async_support/poloniex.py +1 -1
  79. ccxt/async_support/probit.py +4 -1
  80. ccxt/async_support/timex.py +3 -0
  81. ccxt/async_support/tokocrypto.py +1 -1
  82. ccxt/async_support/tradeogre.py +3 -0
  83. ccxt/async_support/upbit.py +1 -1
  84. ccxt/async_support/wavesexchange.py +4 -1
  85. ccxt/async_support/wazirx.py +3 -0
  86. ccxt/async_support/whitebit.py +1 -1
  87. ccxt/async_support/woo.py +3 -1
  88. ccxt/async_support/yobit.py +4 -1
  89. ccxt/async_support/zaif.py +1 -1
  90. ccxt/async_support/zonda.py +1 -1
  91. ccxt/base/exchange.py +27 -1
  92. ccxt/bigone.py +1 -1
  93. ccxt/binance.py +5 -3
  94. ccxt/bingx.py +3 -1
  95. ccxt/bitbank.py +4 -1
  96. ccxt/bitfinex.py +1 -1
  97. ccxt/bitfinex2.py +1 -1
  98. ccxt/bitflyer.py +1 -1
  99. ccxt/bitget.py +70 -4
  100. ccxt/bithumb.py +5 -1
  101. ccxt/bitmart.py +1 -1
  102. ccxt/bitmex.py +3 -1
  103. ccxt/bitopro.py +6 -1
  104. ccxt/bitrue.py +1 -1
  105. ccxt/bitso.py +4 -1
  106. ccxt/bitstamp.py +4 -1
  107. ccxt/bitteam.py +4 -0
  108. ccxt/bitvavo.py +4 -1
  109. ccxt/bl3p.py +3 -0
  110. ccxt/blockchaincom.py +1 -1
  111. ccxt/btcalpha.py +3 -0
  112. ccxt/btcbox.py +3 -0
  113. ccxt/btcmarkets.py +4 -1
  114. ccxt/btcturk.py +3 -0
  115. ccxt/bybit.py +116 -14
  116. ccxt/cex.py +6 -0
  117. ccxt/coinbase.py +94 -18
  118. ccxt/coinbaseinternational.py +3 -1
  119. ccxt/coinbasepro.py +7 -1
  120. ccxt/coincheck.py +3 -0
  121. ccxt/coinex.py +151 -47
  122. ccxt/coinlist.py +5 -1
  123. ccxt/coinmate.py +4 -1
  124. ccxt/coinone.py +3 -0
  125. ccxt/coinsph.py +5 -1
  126. ccxt/coinspot.py +3 -0
  127. ccxt/cryptocom.py +3 -1
  128. ccxt/delta.py +2 -2
  129. ccxt/deribit.py +1 -1
  130. ccxt/digifinex.py +3 -3
  131. ccxt/exmo.py +8 -3
  132. ccxt/gate.py +112 -24
  133. ccxt/gemini.py +1 -1
  134. ccxt/hitbtc.py +7 -6
  135. ccxt/hollaex.py +1 -1
  136. ccxt/htx.py +3 -1
  137. ccxt/huobijp.py +1 -1
  138. ccxt/hyperliquid.py +2 -2
  139. ccxt/idex.py +4 -1
  140. ccxt/independentreserve.py +3 -0
  141. ccxt/indodax.py +4 -1
  142. ccxt/kraken.py +1 -1
  143. ccxt/kucoin.py +3 -1
  144. ccxt/kucoinfutures.py +3 -1
  145. ccxt/kuna.py +1 -1
  146. ccxt/latoken.py +6 -0
  147. ccxt/lbank.py +1 -1
  148. ccxt/luno.py +3 -0
  149. ccxt/lykke.py +6 -1
  150. ccxt/mercado.py +4 -1
  151. ccxt/mexc.py +110 -4
  152. ccxt/ndax.py +5 -1
  153. ccxt/novadax.py +5 -1
  154. ccxt/okcoin.py +1 -1
  155. ccxt/okx.py +80 -4
  156. ccxt/onetrading.py +4 -1
  157. ccxt/p2b.py +3 -0
  158. ccxt/phemex.py +1 -1
  159. ccxt/poloniex.py +1 -1
  160. ccxt/pro/__init__.py +1 -1
  161. ccxt/pro/bybit.py +1 -1
  162. ccxt/pro/coinbase.py +28 -28
  163. ccxt/probit.py +4 -1
  164. ccxt/timex.py +3 -0
  165. ccxt/tokocrypto.py +1 -1
  166. ccxt/tradeogre.py +3 -0
  167. ccxt/upbit.py +1 -1
  168. ccxt/wavesexchange.py +4 -1
  169. ccxt/wazirx.py +3 -0
  170. ccxt/whitebit.py +1 -1
  171. ccxt/woo.py +3 -1
  172. ccxt/yobit.py +4 -1
  173. ccxt/zaif.py +1 -1
  174. ccxt/zonda.py +1 -1
  175. {ccxt-4.3.6.dist-info → ccxt-4.3.7.dist-info}/METADATA +4 -4
  176. {ccxt-4.3.6.dist-info → ccxt-4.3.7.dist-info}/RECORD +178 -178
  177. {ccxt-4.3.6.dist-info → ccxt-4.3.7.dist-info}/WHEEL +0 -0
  178. {ccxt-4.3.6.dist-info → ccxt-4.3.7.dist-info}/top_level.txt +0 -0
ccxt/coinex.py CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.coinex import ImplicitAPI
8
- from ccxt.base.types import Balances, Currencies, Currency, Int, Leverage, Leverages, MarginModification, Market, Num, Order, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
8
+ from ccxt.base.types import Balances, Currencies, Currency, Int, Leverage, Leverages, MarginModification, Market, Num, Order, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
9
9
  from typing import List
10
10
  from ccxt.base.errors import ExchangeError
11
11
  from ccxt.base.errors import AuthenticationError
@@ -102,7 +102,9 @@ class coinex(Exchange, ImplicitAPI):
102
102
  'fetchOrder': True,
103
103
  'fetchOrderBook': True,
104
104
  'fetchPosition': True,
105
+ 'fetchPositionHistory': True,
105
106
  'fetchPositions': True,
107
+ 'fetchPositionsHistory': False,
106
108
  'fetchPositionsRisk': False,
107
109
  'fetchPremiumIndexOHLCV': False,
108
110
  'fetchTicker': True,
@@ -1415,31 +1417,31 @@ class coinex(Exchange, ImplicitAPI):
1415
1417
 
1416
1418
  def parse_ohlcv(self, ohlcv, market: Market = None) -> list:
1417
1419
  #
1418
- # [
1419
- # 1591484400,
1420
- # "0.02505349",
1421
- # "0.02506988",
1422
- # "0.02507000",
1423
- # "0.02505304",
1424
- # "343.19716223",
1425
- # "8.6021323866383196",
1426
- # "ETHBTC"
1427
- # ]
1420
+ # {
1421
+ # "close": "66999.95",
1422
+ # "created_at": 1713934620000,
1423
+ # "high": "66999.95",
1424
+ # "low": "66988.53",
1425
+ # "market": "BTCUSDT",
1426
+ # "open": "66988.53",
1427
+ # "value": "0.1572393", # base volume
1428
+ # "volume": "10533.2501364336" # quote volume
1429
+ # }
1428
1430
  #
1429
1431
  return [
1430
- self.safe_timestamp(ohlcv, 0),
1431
- self.safe_number(ohlcv, 1),
1432
- self.safe_number(ohlcv, 3),
1433
- self.safe_number(ohlcv, 4),
1434
- self.safe_number(ohlcv, 2),
1435
- self.safe_number(ohlcv, 5),
1432
+ self.safe_integer(ohlcv, 'created_at'),
1433
+ self.safe_number(ohlcv, 'open'),
1434
+ self.safe_number(ohlcv, 'high'),
1435
+ self.safe_number(ohlcv, 'low'),
1436
+ self.safe_number(ohlcv, 'close'),
1437
+ self.safe_number(ohlcv, 'value'),
1436
1438
  ]
1437
1439
 
1438
1440
  def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
1439
1441
  """
1440
1442
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1441
- :see: https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot001_market006_market_kline
1442
- :see: https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http012_market_kline
1443
+ :see: https://docs.coinex.com/api/v2/spot/market/http/list-market-kline
1444
+ :see: https://docs.coinex.com/api/v2/futures/market/http/list-market-kline
1443
1445
  :param str symbol: unified symbol of the market to fetch OHLCV data for
1444
1446
  :param str timeframe: the length of time each candle represents
1445
1447
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -1451,36 +1453,31 @@ class coinex(Exchange, ImplicitAPI):
1451
1453
  market = self.market(symbol)
1452
1454
  request = {
1453
1455
  'market': market['id'],
1454
- 'type': self.safe_string(self.timeframes, timeframe, timeframe),
1456
+ 'period': self.safe_string(self.timeframes, timeframe, timeframe),
1455
1457
  }
1456
1458
  if limit is not None:
1457
1459
  request['limit'] = limit
1458
1460
  response = None
1459
1461
  if market['swap']:
1460
- response = self.v1PerpetualPublicGetMarketKline(self.extend(request, params))
1462
+ response = self.v2PublicGetFuturesKline(self.extend(request, params))
1461
1463
  else:
1462
- response = self.v1PublicGetMarketKline(self.extend(request, params))
1463
- #
1464
- # Spot
1464
+ response = self.v2PublicGetSpotKline(self.extend(request, params))
1465
1465
  #
1466
- # {
1467
- # "code": 0,
1468
- # "data": [
1469
- # [1591484400, "0.02505349", "0.02506988", "0.02507000", "0.02505304", "343.19716223", "8.6021323866383196", "ETHBTC"],
1470
- # [1591484700, "0.02506990", "0.02508109", "0.02508109", "0.02506979", "91.59841581", "2.2972047780447000", "ETHBTC"],
1471
- # [1591485000, "0.02508106", "0.02507996", "0.02508106", "0.02507500", "65.15307697", "1.6340597822306000", "ETHBTC"],
1472
- # ],
1473
- # "message": "OK"
1474
- # }
1475
- #
1476
- # Swap
1466
+ # Spot and Swap
1477
1467
  #
1478
1468
  # {
1479
1469
  # "code": 0,
1480
1470
  # "data": [
1481
- # [1650569400, "41524.64", "41489.31", "41564.61", "41480.58", "29.7060", "1233907.099562"],
1482
- # [1650569700, "41489.31", "41438.29", "41489.31", "41391.87", "42.4115", "1756154.189061"],
1483
- # [1650570000, "41438.29", "41482.21", "41485.05", "41427.31", "22.2892", "924000.317861"]
1471
+ # {
1472
+ # "close": "66999.95",
1473
+ # "created_at": 1713934620000,
1474
+ # "high": "66999.95",
1475
+ # "low": "66988.53",
1476
+ # "market": "BTCUSDT",
1477
+ # "open": "66988.53",
1478
+ # "value": "0.1572393",
1479
+ # "volume": "10533.2501364336"
1480
+ # },
1484
1481
  # ],
1485
1482
  # "message": "OK"
1486
1483
  # }
@@ -3518,7 +3515,7 @@ class coinex(Exchange, ImplicitAPI):
3518
3515
  # "side": 2,
3519
3516
  # "stop_loss_price": "0.00000000000000000000",
3520
3517
  # "stop_loss_type": 0,
3521
- # "sys": 0,
3518
+ # "sy s": 0,
3522
3519
  # "take_profit_price": "0.00000000000000000000",
3523
3520
  # "take_profit_type": 0,
3524
3521
  # "taker_fee": "0.00000000000000000000",
@@ -3597,7 +3594,7 @@ class coinex(Exchange, ImplicitAPI):
3597
3594
  # "side": 2,
3598
3595
  # "stop_loss_price": "0.00000000000000000000",
3599
3596
  # "stop_loss_type": 0,
3600
- # "sys": 0,
3597
+ # "s ys": 0,
3601
3598
  # "take_profit_price": "0.00000000000000000000",
3602
3599
  # "take_profit_type": 0,
3603
3600
  # "taker_fee": "0.00000000000000000000",
@@ -3614,6 +3611,8 @@ class coinex(Exchange, ImplicitAPI):
3614
3611
  return self.parse_position(data[0], market)
3615
3612
 
3616
3613
  def parse_position(self, position, market: Market = None):
3614
+ #
3615
+ # fetchPosition
3617
3616
  #
3618
3617
  # {
3619
3618
  # "adl_sort": 3396,
@@ -3657,7 +3656,7 @@ class coinex(Exchange, ImplicitAPI):
3657
3656
  # "side": 2,
3658
3657
  # "stop_loss_price": "0.00000000000000000000",
3659
3658
  # "stop_loss_type": 0,
3660
- # "sys": 0,
3659
+ # "s ys": 0,
3661
3660
  # "take_profit_price": "0.00000000000000000000",
3662
3661
  # "take_profit_type": 0,
3663
3662
  # "taker_fee": "0.00000000000000000000",
@@ -3667,6 +3666,40 @@ class coinex(Exchange, ImplicitAPI):
3667
3666
  # "user_id": 3620173
3668
3667
  # }
3669
3668
  #
3669
+ #
3670
+ # fetchPositionHistory
3671
+ #
3672
+ # {
3673
+ # amount_max: '10',
3674
+ # amount_max_margin: '2.03466666666666666666',
3675
+ # bkr_price: '0',
3676
+ # create_time: '1711150526.2581',
3677
+ # deal_all: '12.591',
3678
+ # deal_asset_fee: '0',
3679
+ # fee_asset: '',
3680
+ # finish_type: '5',
3681
+ # first_price: '0.6104',
3682
+ # latest_price: '0.6487',
3683
+ # leverage: '3',
3684
+ # liq_amount: '0',
3685
+ # liq_price: '0',
3686
+ # liq_profit: '0',
3687
+ # mainten_margin: '0.01',
3688
+ # market: 'XRPUSDT',
3689
+ # market_type: '1',
3690
+ # open_price: '0.6104',
3691
+ # open_val_max: '6.104',
3692
+ # position_id: '297371462',
3693
+ # profit_real: '0.35702107169',
3694
+ # settle_price: '0.6104',
3695
+ # settle_val: '0',
3696
+ # side: '2',
3697
+ # s ys: "0",
3698
+ # type: '2',
3699
+ # update_time: '1711391446.133233',
3700
+ # user_id: '3685860'
3701
+ # }
3702
+ #
3670
3703
  marketId = self.safe_string(position, 'market')
3671
3704
  market = self.safe_market(marketId, market, None, 'swap')
3672
3705
  symbol = market['symbol']
@@ -3682,7 +3715,7 @@ class coinex(Exchange, ImplicitAPI):
3682
3715
  timestamp = self.safe_timestamp(position, 'update_time')
3683
3716
  maintenanceMargin = self.safe_string(position, 'mainten_margin_amount')
3684
3717
  maintenanceMarginPercentage = self.safe_string(position, 'mainten_margin')
3685
- collateral = self.safe_string(position, 'margin_amount')
3718
+ collateral = self.safe_string_2(position, 'margin_amount', 'amount_max_margin')
3686
3719
  leverage = self.safe_string(position, 'leverage')
3687
3720
  notional = self.safe_string(position, 'open_val')
3688
3721
  initialMargin = Precise.string_div(notional, leverage)
@@ -3892,7 +3925,7 @@ class coinex(Exchange, ImplicitAPI):
3892
3925
  # "side": 2,
3893
3926
  # "stop_loss_price": "0.00000000000000000000",
3894
3927
  # "stop_loss_type": 0,
3895
- # "sys": 0,
3928
+ # "s ys": 0,
3896
3929
  # "take_profit_price": "0.00000000000000000000",
3897
3930
  # "take_profit_type": 0,
3898
3931
  # "taker_fee": "0.00000000000000000000",
@@ -3957,7 +3990,7 @@ class coinex(Exchange, ImplicitAPI):
3957
3990
  # "side": 2,
3958
3991
  # "stop_loss_price": "0.00000000000000000000",
3959
3992
  # "stop_loss_type": 0,
3960
- # "sys": 0,
3993
+ # "sy s": 0,
3961
3994
  # "take_profit_price": "0.00000000000000000000",
3962
3995
  # "take_profit_type": 0,
3963
3996
  # "taker_fee": "0.00000000000000000000",
@@ -4001,7 +4034,7 @@ class coinex(Exchange, ImplicitAPI):
4001
4034
  'datetime': self.iso8601(timestamp),
4002
4035
  }
4003
4036
 
4004
- def add_margin(self, symbol: str, amount, params={}) -> MarginModification:
4037
+ def add_margin(self, symbol: str, amount: float, params={}) -> MarginModification:
4005
4038
  """
4006
4039
  add margin
4007
4040
  :see: https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http032_adjust_position_margin
@@ -4012,7 +4045,7 @@ class coinex(Exchange, ImplicitAPI):
4012
4045
  """
4013
4046
  return self.modify_margin_helper(symbol, amount, 1, params)
4014
4047
 
4015
- def reduce_margin(self, symbol: str, amount, params={}) -> MarginModification:
4048
+ def reduce_margin(self, symbol: str, amount: float, params={}) -> MarginModification:
4016
4049
  """
4017
4050
  remove margin from a position
4018
4051
  :see: https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http032_adjust_position_margin
@@ -4264,7 +4297,7 @@ class coinex(Exchange, ImplicitAPI):
4264
4297
  result.append(self.parse_funding_rate(ticker, marketInner))
4265
4298
  return self.filter_by_array(result, 'symbol', symbols)
4266
4299
 
4267
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
4300
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
4268
4301
  """
4269
4302
  make a withdrawal
4270
4303
  :see: https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot002_account015_submit_withdraw
@@ -5251,6 +5284,77 @@ class coinex(Exchange, ImplicitAPI):
5251
5284
  'shortLeverage': leverageValue,
5252
5285
  }
5253
5286
 
5287
+ def fetch_position_history(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> Position:
5288
+ """
5289
+ fetches historical positions
5290
+ :see: https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http033-0_finished_position
5291
+ :param str symbol: unified contract symbol
5292
+ :param int [since]: not used by coinex fetchPositionHistory
5293
+ :param int [limit]: the maximum amount of records to fetch, default=1000
5294
+ :param dict params: extra parameters specific to the exchange api endpoint
5295
+ *
5296
+ * EXCHANGE SPECIFIC PARAMETERS
5297
+ :param int [params.side]: 0: all 1: sell, 2: buy
5298
+ :returns dict[]: a list of `position structures <https://docs.ccxt.com/#/?id=position-structure>`
5299
+ """
5300
+ self.load_markets()
5301
+ market = self.market(symbol)
5302
+ if limit is None:
5303
+ limit = 1000
5304
+ request = {
5305
+ 'market': market['id'],
5306
+ 'side': 0,
5307
+ 'limit': limit,
5308
+ }
5309
+ response = self.v1PerpetualPrivateGetPositionFinished(self.extend(request, params))
5310
+ #
5311
+ # {
5312
+ # code: '0',
5313
+ # data: {
5314
+ # limit: '1000',
5315
+ # offset: '0',
5316
+ # records: [
5317
+ # {
5318
+ # amount_max: '10',
5319
+ # amount_max_margin: '2.03466666666666666666',
5320
+ # bkr_price: '0',
5321
+ # create_time: '1711150526.2581',
5322
+ # deal_all: '12.591',
5323
+ # deal_asset_fee: '0',
5324
+ # fee_asset: '',
5325
+ # finish_type: '5',
5326
+ # first_price: '0.6104',
5327
+ # latest_price: '0.6487',
5328
+ # leverage: '3',
5329
+ # liq_amount: '0',
5330
+ # liq_price: '0',
5331
+ # liq_profit: '0',
5332
+ # mainten_margin: '0.01',
5333
+ # market: 'XRPUSDT',
5334
+ # market_type: '1',
5335
+ # open_price: '0.6104',
5336
+ # open_val_max: '6.104',
5337
+ # position_id: '297371462',
5338
+ # profit_real: '0.35702107169',
5339
+ # settle_price: '0.6104',
5340
+ # settle_val: '0',
5341
+ # side: '2',
5342
+ # sy s: '0',
5343
+ # type: '2',
5344
+ # update_time: '1711391446.133233',
5345
+ # user_id: '3685860'
5346
+ # },
5347
+ # ...
5348
+ # ]
5349
+ # },
5350
+ # message: 'OK'
5351
+ # }
5352
+ #
5353
+ data = self.safe_dict(response, 'data')
5354
+ records = self.safe_list(data, 'records')
5355
+ positions = self.parse_positions(records)
5356
+ return self.filter_by_symbol_since_limit(positions, symbol, since, limit)
5357
+
5254
5358
  def handle_margin_mode_and_params(self, methodName, params={}, defaultValue=None):
5255
5359
  """
5256
5360
  * @ignore
ccxt/coinlist.py CHANGED
@@ -103,7 +103,11 @@ class coinlist(Exchange, ImplicitAPI):
103
103
  'fetchOrders': True,
104
104
  'fetchOrderTrades': True,
105
105
  'fetchPosition': False,
106
+ 'fetchPositionHistory': False,
107
+ 'fetchPositionMode': False,
106
108
  'fetchPositions': False,
109
+ 'fetchPositionsForSymbol': False,
110
+ 'fetchPositionsHistory': False,
107
111
  'fetchPositionsRisk': False,
108
112
  'fetchPremiumIndexOHLCV': False,
109
113
  'fetchStatus': False,
@@ -1865,7 +1869,7 @@ class coinlist(Exchange, ImplicitAPI):
1865
1869
  # coinlist returns both internal transfers and blockchain transactions
1866
1870
  return self.parse_transactions(response, currency, since, limit)
1867
1871
 
1868
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
1872
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
1869
1873
  """
1870
1874
  request a withdrawal from CoinList wallet.(Disabled by default. Contact CoinList to apply for an exception.)
1871
1875
  :see: https://trade-docs.coinlist.co/?javascript--nodejs#request-withdrawal-from-wallet
ccxt/coinmate.py CHANGED
@@ -65,8 +65,11 @@ class coinmate(Exchange, ImplicitAPI):
65
65
  'fetchOrderBook': True,
66
66
  'fetchOrders': True,
67
67
  'fetchPosition': False,
68
+ 'fetchPositionHistory': False,
68
69
  'fetchPositionMode': False,
69
70
  'fetchPositions': False,
71
+ 'fetchPositionsForSymbol': False,
72
+ 'fetchPositionsHistory': False,
70
73
  'fetchPositionsRisk': False,
71
74
  'fetchPremiumIndexOHLCV': False,
72
75
  'fetchTicker': True,
@@ -584,7 +587,7 @@ class coinmate(Exchange, ImplicitAPI):
584
587
  },
585
588
  }
586
589
 
587
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
590
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
588
591
  """
589
592
  make a withdrawal
590
593
  :see: https://coinmate.docs.apiary.io/#reference/bitcoin-withdrawal-and-deposit/withdraw-bitcoins/post
ccxt/coinone.py CHANGED
@@ -72,8 +72,11 @@ class coinone(Exchange, ImplicitAPI):
72
72
  'fetchOrder': True,
73
73
  'fetchOrderBook': True,
74
74
  'fetchPosition': False,
75
+ 'fetchPositionHistory': False,
75
76
  'fetchPositionMode': False,
76
77
  'fetchPositions': False,
78
+ 'fetchPositionsForSymbol': False,
79
+ 'fetchPositionsHistory': False,
77
80
  'fetchPositionsRisk': False,
78
81
  'fetchPremiumIndexOHLCV': False,
79
82
  'fetchTicker': True,
ccxt/coinsph.py CHANGED
@@ -108,7 +108,11 @@ class coinsph(Exchange, ImplicitAPI):
108
108
  'fetchOrders': False,
109
109
  'fetchOrderTrades': True,
110
110
  'fetchPosition': False,
111
+ 'fetchPositionHistory': False,
112
+ 'fetchPositionMode': False,
111
113
  'fetchPositions': False,
114
+ 'fetchPositionsForSymbol': False,
115
+ 'fetchPositionsHistory': False,
112
116
  'fetchPositionsRisk': False,
113
117
  'fetchPremiumIndexOHLCV': False,
114
118
  'fetchStatus': True,
@@ -1497,7 +1501,7 @@ class coinsph(Exchange, ImplicitAPI):
1497
1501
  'tierBased': None,
1498
1502
  }
1499
1503
 
1500
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
1504
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
1501
1505
  """
1502
1506
  make a withdrawal to coins_ph account
1503
1507
  :see: https://coins-docs.github.io/rest-api/#withdrawuser_data
ccxt/coinspot.py CHANGED
@@ -60,8 +60,11 @@ class coinspot(Exchange, ImplicitAPI):
60
60
  'fetchOpenInterestHistory': False,
61
61
  'fetchOrderBook': True,
62
62
  'fetchPosition': False,
63
+ 'fetchPositionHistory': False,
63
64
  'fetchPositionMode': False,
64
65
  'fetchPositions': False,
66
+ 'fetchPositionsForSymbol': False,
67
+ 'fetchPositionsHistory': False,
65
68
  'fetchPositionsRisk': False,
66
69
  'fetchPremiumIndexOHLCV': False,
67
70
  'fetchTicker': True,
ccxt/cryptocom.py CHANGED
@@ -95,8 +95,10 @@ class cryptocom(Exchange, ImplicitAPI):
95
95
  'fetchOrderBook': True,
96
96
  'fetchOrders': True,
97
97
  'fetchPosition': True,
98
+ 'fetchPositionHistory': False,
98
99
  'fetchPositionMode': False,
99
100
  'fetchPositions': True,
101
+ 'fetchPositionsHistory': False,
100
102
  'fetchPremiumIndexOHLCV': False,
101
103
  'fetchSettlementHistory': True,
102
104
  'fetchStatus': False,
@@ -1516,7 +1518,7 @@ class cryptocom(Exchange, ImplicitAPI):
1516
1518
  address = addressString
1517
1519
  return [address, tag]
1518
1520
 
1519
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
1521
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
1520
1522
  """
1521
1523
  make a withdrawal
1522
1524
  :see: https://exchange-docs.crypto.com/exchange/v1/rest-ws/index.html#private-create-withdrawal
ccxt/delta.py CHANGED
@@ -2480,7 +2480,7 @@ class delta(Exchange, ImplicitAPI):
2480
2480
  'previousFundingDatetime': None,
2481
2481
  }
2482
2482
 
2483
- def add_margin(self, symbol: str, amount, params={}) -> MarginModification:
2483
+ def add_margin(self, symbol: str, amount: float, params={}) -> MarginModification:
2484
2484
  """
2485
2485
  add margin
2486
2486
  :see: https://docs.delta.exchange/#add-remove-position-margin
@@ -2491,7 +2491,7 @@ class delta(Exchange, ImplicitAPI):
2491
2491
  """
2492
2492
  return self.modify_margin_helper(symbol, amount, 'add', params)
2493
2493
 
2494
- def reduce_margin(self, symbol: str, amount, params={}) -> MarginModification:
2494
+ def reduce_margin(self, symbol: str, amount: float, params={}) -> MarginModification:
2495
2495
  """
2496
2496
  remove margin from a position
2497
2497
  :see: https://docs.delta.exchange/#add-remove-position-margin
ccxt/deribit.py CHANGED
@@ -2749,7 +2749,7 @@ class deribit(Exchange, ImplicitAPI):
2749
2749
  }
2750
2750
  return self.safe_string(statuses, status, status)
2751
2751
 
2752
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
2752
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
2753
2753
  """
2754
2754
  make a withdrawal
2755
2755
  :see: https://docs.deribit.com/#private-withdraw
ccxt/digifinex.py CHANGED
@@ -2754,7 +2754,7 @@ class digifinex(Exchange, ImplicitAPI):
2754
2754
  #
2755
2755
  return self.parse_transfer(response, currency)
2756
2756
 
2757
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
2757
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
2758
2758
  """
2759
2759
  make a withdrawal
2760
2760
  :param str code: unified currency code
@@ -3734,7 +3734,7 @@ class digifinex(Exchange, ImplicitAPI):
3734
3734
  depositWithdrawFees[code] = self.assign_default_deposit_withdraw_fees(depositWithdrawFees[code], currency)
3735
3735
  return depositWithdrawFees
3736
3736
 
3737
- def add_margin(self, symbol: str, amount, params={}) -> MarginModification:
3737
+ def add_margin(self, symbol: str, amount: float, params={}) -> MarginModification:
3738
3738
  """
3739
3739
  add margin to a position
3740
3740
  :see: https://docs.digifinex.com/en-ww/swap/v2/rest.html#positionmargin
@@ -3748,7 +3748,7 @@ class digifinex(Exchange, ImplicitAPI):
3748
3748
  self.check_required_argument('addMargin', side, 'side', ['long', 'short'])
3749
3749
  return self.modify_margin_helper(symbol, amount, 1, params)
3750
3750
 
3751
- def reduce_margin(self, symbol: str, amount, params={}) -> MarginModification:
3751
+ def reduce_margin(self, symbol: str, amount: float, params={}) -> MarginModification:
3752
3752
  """
3753
3753
  remove margin from a position
3754
3754
  :see: https://docs.digifinex.com/en-ww/swap/v2/rest.html#positionmargin
ccxt/exmo.py CHANGED
@@ -74,7 +74,12 @@ class exmo(Exchange, ImplicitAPI):
74
74
  'fetchOrderBook': True,
75
75
  'fetchOrderBooks': True,
76
76
  'fetchOrderTrades': True,
77
+ 'fetchPosition': False,
78
+ 'fetchPositionHistory': False,
77
79
  'fetchPositionMode': False,
80
+ 'fetchPositions': False,
81
+ 'fetchPositionsHistory': False,
82
+ 'fetchPositionsRisk': False,
78
83
  'fetchPremiumIndexOHLCV': False,
79
84
  'fetchTicker': True,
80
85
  'fetchTickers': True,
@@ -282,7 +287,7 @@ class exmo(Exchange, ImplicitAPI):
282
287
  'datetime': None,
283
288
  }
284
289
 
285
- def reduce_margin(self, symbol: str, amount, params={}) -> MarginModification:
290
+ def reduce_margin(self, symbol: str, amount: float, params={}) -> MarginModification:
286
291
  """
287
292
  remove margin from a position
288
293
  :see: https://documenter.getpostman.com/view/10287440/SzYXWKPi#eebf9f25-0289-4946-9482-89872c738449
@@ -293,7 +298,7 @@ class exmo(Exchange, ImplicitAPI):
293
298
  """
294
299
  return self.modify_margin_helper(symbol, amount, 'reduce', params)
295
300
 
296
- def add_margin(self, symbol: str, amount, params={}) -> MarginModification:
301
+ def add_margin(self, symbol: str, amount: float, params={}) -> MarginModification:
297
302
  """
298
303
  add margin
299
304
  :see: https://documenter.getpostman.com/view/10287440/SzYXWKPi#143ef808-79ca-4e49-9e79-a60ea4d8c0e3
@@ -1980,7 +1985,7 @@ class exmo(Exchange, ImplicitAPI):
1980
1985
  return self.markets[symbols[0]]
1981
1986
  return None
1982
1987
 
1983
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
1988
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
1984
1989
  """
1985
1990
  make a withdrawal
1986
1991
  :see: https://documenter.getpostman.com/view/10287440/SzYXWKPi#3ab9c34d-ad58-4f87-9c57-2e2ea88a8325