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/gate.py CHANGED
@@ -6,7 +6,7 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.gate import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Currencies, Currency, FundingHistory, Greeks, Int, Leverage, Leverages, MarginModification, Market, MarketInterface, Num, Option, OptionChain, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
9
+ from ccxt.base.types import Balances, Currencies, Currency, FundingHistory, Greeks, Int, Leverage, Leverages, MarginModification, Market, MarketInterface, Num, Option, OptionChain, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
@@ -156,8 +156,10 @@ class gate(Exchange, ImplicitAPI):
156
156
  'fetchOrder': True,
157
157
  'fetchOrderBook': True,
158
158
  'fetchPosition': True,
159
+ 'fetchPositionHistory': 'emulated',
159
160
  'fetchPositionMode': False,
160
161
  'fetchPositions': True,
162
+ 'fetchPositionsHistory': True,
161
163
  'fetchPremiumIndexOHLCV': False,
162
164
  'fetchSettlementHistory': True,
163
165
  'fetchTicker': True,
@@ -672,7 +674,6 @@ class gate(Exchange, ImplicitAPI):
672
674
  'option': 'options',
673
675
  'options': 'options',
674
676
  },
675
- 'defaultType': 'spot',
676
677
  'swap': {
677
678
  'fetchMarkets': {
678
679
  'settlementCurrencies': ['usdt', 'btc'],
@@ -3391,7 +3392,7 @@ class gate(Exchange, ImplicitAPI):
3391
3392
  response = self.privateWalletGetWithdrawals(self.extend(request, params))
3392
3393
  return self.parse_transactions(response, currency)
3393
3394
 
3394
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
3395
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
3395
3396
  """
3396
3397
  make a withdrawal
3397
3398
  :see: https://www.gate.io/docs/developers/apiv4/en/#withdraw
@@ -4946,37 +4947,61 @@ class gate(Exchange, ImplicitAPI):
4946
4947
  # "pending_orders": 0
4947
4948
  # }
4948
4949
  #
4950
+ # fetchPositionsHistory(swap and future)
4951
+ #
4952
+ # {
4953
+ # "contract": "SLERF_USDT", # Futures contract
4954
+ # "text": "web", # Text of close order
4955
+ # "long_price": "0.766306", # When 'side' is 'long,' it indicates the opening average price; when 'side' is 'short,' it indicates the closing average price.
4956
+ # "pnl": "-23.41702352", # PNL
4957
+ # "pnl_pnl": "-22.7187", # Position P/L
4958
+ # "pnl_fee": "-0.06527125", # Transaction Fees
4959
+ # "pnl_fund": "-0.63305227", # Funding Fees
4960
+ # "accum_size": "100",
4961
+ # "time": 1711279263, # Position close time
4962
+ # "short_price": "0.539119", # When 'side' is 'long,' it indicates the opening average price; when 'side' is 'short,' it indicates the closing average price
4963
+ # "side": "long", # Position side, long or short
4964
+ # "max_size": "100", # Max Trade Size
4965
+ # "first_open_time": 1711037985 # First Open Time
4966
+ # }
4967
+ #
4949
4968
  contract = self.safe_string(position, 'contract')
4950
4969
  market = self.safe_market(contract, market, '_', 'contract')
4951
- size = self.safe_string(position, 'size')
4952
- side = None
4953
- if Precise.string_gt(size, '0'):
4954
- side = 'long'
4955
- elif Precise.string_lt(size, '0'):
4956
- side = 'short'
4970
+ size = self.safe_string_2(position, 'size', 'accum_size')
4971
+ side = self.safe_string(position, 'side')
4972
+ if side is None:
4973
+ if Precise.string_gt(size, '0'):
4974
+ side = 'long'
4975
+ elif Precise.string_lt(size, '0'):
4976
+ side = 'short'
4957
4977
  maintenanceRate = self.safe_string(position, 'maintenance_rate')
4958
4978
  notional = self.safe_string(position, 'value')
4959
4979
  leverage = self.safe_string(position, 'leverage')
4960
4980
  marginMode = None
4961
- if leverage == '0':
4962
- marginMode = 'cross'
4963
- else:
4964
- marginMode = 'isolated'
4965
- unrealisedPnl = self.safe_string(position, 'unrealised_pnl')
4981
+ if leverage is not None:
4982
+ if leverage == '0':
4983
+ marginMode = 'cross'
4984
+ else:
4985
+ marginMode = 'isolated'
4966
4986
  # Initial Position Margin = ( Position Value / Leverage ) + Close Position Fee
4967
4987
  # *The default leverage under the full position is the highest leverage in the market.
4968
4988
  # *Trading fee is charged Fee Rate(0.075%).
4969
- takerFee = '0.00075'
4970
- feePaid = Precise.string_mul(takerFee, notional)
4971
- initialMarginString = Precise.string_add(Precise.string_div(notional, leverage), feePaid)
4972
- timestamp = self.safe_timestamp(position, 'open_time')
4989
+ feePaid = self.safe_string(position, 'pnl_fee')
4990
+ initialMarginString = None
4991
+ if feePaid is None:
4992
+ takerFee = '0.00075'
4993
+ feePaid = Precise.string_mul(takerFee, notional)
4994
+ initialMarginString = Precise.string_add(Precise.string_div(notional, leverage), feePaid)
4995
+ timestamp = self.safe_timestamp_2(position, 'open_time', 'first_open_time')
4996
+ if timestamp == 0:
4997
+ timestamp = None
4973
4998
  return self.safe_position({
4974
4999
  'info': position,
4975
5000
  'id': None,
4976
5001
  'symbol': self.safe_string(market, 'symbol'),
4977
5002
  'timestamp': timestamp,
4978
5003
  'datetime': self.iso8601(timestamp),
4979
- 'lastUpdateTimestamp': self.safe_timestamp(position, 'update_time'),
5004
+ 'lastUpdateTimestamp': self.safe_timestamp_2(position, 'update_time', 'time'),
4980
5005
  'initialMargin': self.parse_number(initialMarginString),
4981
5006
  'initialMarginPercentage': self.parse_number(Precise.string_div(initialMarginString, notional)),
4982
5007
  'maintenanceMargin': self.parse_number(Precise.string_mul(maintenanceRate, notional)),
@@ -4984,11 +5009,10 @@ class gate(Exchange, ImplicitAPI):
4984
5009
  'entryPrice': self.safe_number(position, 'entry_price'),
4985
5010
  'notional': self.parse_number(notional),
4986
5011
  'leverage': self.safe_number(position, 'leverage'),
4987
- 'unrealizedPnl': self.parse_number(unrealisedPnl),
4988
- 'realizedPnl': self.safe_number(position, 'realised_pnl'),
5012
+ 'unrealizedPnl': self.safe_number(position, 'unrealised_pnl'),
5013
+ 'realizedPnl': self.safe_number_2(position, 'realised_pnl', 'pnl'),
4989
5014
  'contracts': self.parse_number(Precise.string_abs(size)),
4990
5015
  'contractSize': self.safe_number(market, 'contractSize'),
4991
- # 'realisedPnl': position['realised_pnl'],
4992
5016
  'marginRatio': None,
4993
5017
  'liquidationPrice': self.safe_number(position, 'liq_price'),
4994
5018
  'markPrice': self.safe_number(position, 'mark_price'),
@@ -5697,7 +5721,7 @@ class gate(Exchange, ImplicitAPI):
5697
5721
  'datetime': None,
5698
5722
  }
5699
5723
 
5700
- def reduce_margin(self, symbol: str, amount, params={}) -> MarginModification:
5724
+ def reduce_margin(self, symbol: str, amount: float, params={}) -> MarginModification:
5701
5725
  """
5702
5726
  remove margin from a position
5703
5727
  :see: https://www.gate.io/docs/developers/apiv4/en/#update-position-margin
@@ -5709,7 +5733,7 @@ class gate(Exchange, ImplicitAPI):
5709
5733
  """
5710
5734
  return self.modify_margin_helper(symbol, -amount, params)
5711
5735
 
5712
- def add_margin(self, symbol: str, amount, params={}) -> MarginModification:
5736
+ def add_margin(self, symbol: str, amount: float, params={}) -> MarginModification:
5713
5737
  """
5714
5738
  add margin
5715
5739
  :see: https://www.gate.io/docs/developers/apiv4/en/#update-position-margin
@@ -6868,6 +6892,70 @@ class gate(Exchange, ImplicitAPI):
6868
6892
  'quoteVolume': None,
6869
6893
  }
6870
6894
 
6895
+ def fetch_positions_history(self, symbols: Strings = None, since: Int = None, limit: Int = None, params={}) -> List[Position]:
6896
+ """
6897
+ fetches historical positions
6898
+ :see: https://www.gate.io/docs/developers/apiv4/#list-position-close-history
6899
+ :see: https://www.gate.io/docs/developers/apiv4/#list-position-close-history-2
6900
+ :param str[] symbols: unified conract symbols, must all have the same settle currency and the same market type
6901
+ :param int [since]: the earliest time in ms to fetch positions for
6902
+ :param int [limit]: the maximum amount of records to fetch, default=1000
6903
+ :param dict params: extra parameters specific to the exchange api endpoint
6904
+ :param int [params.until]: the latest time in ms to fetch positions for
6905
+ *
6906
+ * EXCHANGE SPECIFIC PARAMETERS
6907
+ :param int offset: list offset, starting from 0
6908
+ :param str side: long or short
6909
+ :param str pnl: query profit or loss
6910
+ :returns dict[]: a list of `position structures <https://docs.ccxt.com/#/?id=position-structure>`
6911
+ """
6912
+ self.load_markets()
6913
+ market = None
6914
+ if symbols is not None:
6915
+ symbolsLength = len(symbols)
6916
+ if symbolsLength == 1:
6917
+ market = self.market(symbols[0])
6918
+ marketType = None
6919
+ marketType, params = self.handle_market_type_and_params('fetchPositionsHistory', market, params, 'swap')
6920
+ until = self.safe_integer(params, 'until')
6921
+ params = self.omit(params, 'until')
6922
+ request = {}
6923
+ request, params = self.prepare_request(market, marketType, params)
6924
+ if limit is not None:
6925
+ request['limit'] = limit
6926
+ if since is not None:
6927
+ request['from'] = self.parse_to_int(since / 1000)
6928
+ if until is not None:
6929
+ request['to'] = self.parse_to_int(until / 1000)
6930
+ response = None
6931
+ if marketType == 'swap':
6932
+ response = self.privateFuturesGetSettlePositionClose(self.extend(request, params))
6933
+ elif marketType == 'future':
6934
+ response = self.privateDeliveryGetSettlePositionClose(self.extend(request, params))
6935
+ else:
6936
+ raise NotSupported(self.id + ' fetchPositionsHistory() does not support markets of type ' + marketType)
6937
+ #
6938
+ # [
6939
+ # {
6940
+ # "contract": "SLERF_USDT",
6941
+ # "text": "web",
6942
+ # "long_price": "0.766306",
6943
+ # "pnl": "-23.41702352",
6944
+ # "pnl_pnl": "-22.7187",
6945
+ # "pnl_fee": "-0.06527125",
6946
+ # "pnl_fund": "-0.63305227",
6947
+ # "accum_size": "100",
6948
+ # "time": 1711279263,
6949
+ # "short_price": "0.539119",
6950
+ # "side": "long",
6951
+ # "max_size": "100",
6952
+ # "first_open_time": 1711037985
6953
+ # },
6954
+ # ...
6955
+ # ]
6956
+ #
6957
+ return self.parse_positions(response, symbols, params)
6958
+
6871
6959
  def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
6872
6960
  if response is None:
6873
6961
  return None
ccxt/gemini.py CHANGED
@@ -1522,7 +1522,7 @@ class gemini(Exchange, ImplicitAPI):
1522
1522
  response = self.privatePostV1Mytrades(self.extend(request, params))
1523
1523
  return self.parse_trades(response, market, since, limit)
1524
1524
 
1525
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
1525
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
1526
1526
  """
1527
1527
  make a withdrawal
1528
1528
  :see: https://docs.gemini.com/rest-api/#withdraw-crypto-funds
ccxt/hitbtc.py CHANGED
@@ -2491,7 +2491,7 @@ class hitbtc(Exchange, ImplicitAPI):
2491
2491
  'info': response,
2492
2492
  }
2493
2493
 
2494
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
2494
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
2495
2495
  """
2496
2496
  make a withdrawal
2497
2497
  :see: https://api.hitbtc.com/#withdraw-crypto
@@ -3008,8 +3008,9 @@ class hitbtc(Exchange, ImplicitAPI):
3008
3008
  if market['swap']:
3009
3009
  if leverage is None:
3010
3010
  raise ArgumentsRequired(self.id + ' modifyMarginHelper() requires a leverage parameter for swap markets')
3011
- if amount != 0:
3012
- amount = self.amount_to_precision(symbol, amount)
3011
+ stringAmount = self.number_to_string(amount)
3012
+ if stringAmount != '0':
3013
+ amount = self.amount_to_precision(symbol, stringAmount)
3013
3014
  else:
3014
3015
  amount = '0'
3015
3016
  request = {
@@ -3091,7 +3092,7 @@ class hitbtc(Exchange, ImplicitAPI):
3091
3092
  'datetime': datetime,
3092
3093
  }
3093
3094
 
3094
- def reduce_margin(self, symbol: str, amount, params={}) -> MarginModification:
3095
+ def reduce_margin(self, symbol: str, amount: float, params={}) -> MarginModification:
3095
3096
  """
3096
3097
  remove margin from a position
3097
3098
  :see: https://api.hitbtc.com/#create-update-margin-account-2
@@ -3103,11 +3104,11 @@ class hitbtc(Exchange, ImplicitAPI):
3103
3104
  :param bool [params.margin]: True for reducing spot-margin
3104
3105
  :returns dict: a `margin structure <https://docs.ccxt.com/#/?id=reduce-margin-structure>`
3105
3106
  """
3106
- if amount != 0:
3107
+ if self.number_to_string(amount) != '0':
3107
3108
  raise BadRequest(self.id + ' reduceMargin() on hitbtc requires the amount to be 0 and that will remove the entire margin amount')
3108
3109
  return self.modify_margin_helper(symbol, amount, 'reduce', params)
3109
3110
 
3110
- def add_margin(self, symbol: str, amount, params={}) -> MarginModification:
3111
+ def add_margin(self, symbol: str, amount: float, params={}) -> MarginModification:
3111
3112
  """
3112
3113
  add margin
3113
3114
  :see: https://api.hitbtc.com/#create-update-margin-account-2
ccxt/hollaex.py CHANGED
@@ -1609,7 +1609,7 @@ class hollaex(Exchange, ImplicitAPI):
1609
1609
  'fee': fee,
1610
1610
  }
1611
1611
 
1612
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
1612
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
1613
1613
  """
1614
1614
  make a withdrawal
1615
1615
  :see: https://apidocs.hollaex.com/#withdrawal
ccxt/htx.py CHANGED
@@ -120,7 +120,9 @@ class htx(Exchange, ImplicitAPI):
120
120
  'fetchOrders': True,
121
121
  'fetchOrderTrades': True,
122
122
  'fetchPosition': True,
123
+ 'fetchPositionHistory': 'emulated',
123
124
  'fetchPositions': True,
125
+ 'fetchPositionsHistory': False,
124
126
  'fetchPositionsRisk': False,
125
127
  'fetchPremiumIndexOHLCV': True,
126
128
  'fetchSettlementHistory': True,
@@ -5975,7 +5977,7 @@ class htx(Exchange, ImplicitAPI):
5975
5977
  }
5976
5978
  return self.safe_string(statuses, status, status)
5977
5979
 
5978
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
5980
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
5979
5981
  """
5980
5982
  make a withdrawal
5981
5983
  :param str code: unified currency code
ccxt/huobijp.py CHANGED
@@ -1696,7 +1696,7 @@ class huobijp(Exchange, ImplicitAPI):
1696
1696
  }
1697
1697
  return self.safe_string(statuses, status, status)
1698
1698
 
1699
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
1699
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
1700
1700
  """
1701
1701
  make a withdrawal
1702
1702
  :param str code: unified currency code
ccxt/hyperliquid.py CHANGED
@@ -2126,7 +2126,7 @@ class hyperliquid(Exchange, ImplicitAPI):
2126
2126
  #
2127
2127
  return response
2128
2128
 
2129
- def add_margin(self, symbol: str, amount, params={}) -> MarginModification:
2129
+ def add_margin(self, symbol: str, amount: float, params={}) -> MarginModification:
2130
2130
  """
2131
2131
  add margin
2132
2132
  :see: https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/exchange-endpoint#update-isolated-margin
@@ -2137,7 +2137,7 @@ class hyperliquid(Exchange, ImplicitAPI):
2137
2137
  """
2138
2138
  return self.modify_margin_helper(symbol, amount, 'add', params)
2139
2139
 
2140
- def reduce_margin(self, symbol: str, amount, params={}) -> MarginModification:
2140
+ def reduce_margin(self, symbol: str, amount: float, params={}) -> MarginModification:
2141
2141
  """
2142
2142
  :see: https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/exchange-endpoint#update-isolated-margin
2143
2143
  remove margin from a position
ccxt/idex.py CHANGED
@@ -88,8 +88,11 @@ class idex(Exchange, ImplicitAPI):
88
88
  'fetchOrderBook': True,
89
89
  'fetchOrders': False,
90
90
  'fetchPosition': False,
91
+ 'fetchPositionHistory': False,
91
92
  'fetchPositionMode': False,
92
93
  'fetchPositions': False,
94
+ 'fetchPositionsForSymbol': False,
95
+ 'fetchPositionsHistory': False,
93
96
  'fetchPositionsRisk': False,
94
97
  'fetchPremiumIndexOHLCV': False,
95
98
  'fetchStatus': True,
@@ -1287,7 +1290,7 @@ class idex(Exchange, ImplicitAPI):
1287
1290
  response = self.privatePostOrders(request)
1288
1291
  return self.parse_order(response, market)
1289
1292
 
1290
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
1293
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
1291
1294
  """
1292
1295
  make a withdrawal
1293
1296
  :see: https://api-docs-v3.idex.io/#withdraw-funds
@@ -64,8 +64,11 @@ class independentreserve(Exchange, ImplicitAPI):
64
64
  'fetchOrder': True,
65
65
  'fetchOrderBook': True,
66
66
  'fetchPosition': False,
67
+ 'fetchPositionHistory': False,
67
68
  'fetchPositionMode': False,
68
69
  'fetchPositions': False,
70
+ 'fetchPositionsForSymbol': False,
71
+ 'fetchPositionsHistory': False,
69
72
  'fetchPositionsRisk': False,
70
73
  'fetchPremiumIndexOHLCV': False,
71
74
  'fetchTicker': True,
ccxt/indodax.py CHANGED
@@ -78,8 +78,11 @@ class indodax(Exchange, ImplicitAPI):
78
78
  'fetchOrderBook': True,
79
79
  'fetchOrders': False,
80
80
  'fetchPosition': False,
81
+ 'fetchPositionHistory': False,
81
82
  'fetchPositionMode': False,
82
83
  'fetchPositions': False,
84
+ 'fetchPositionsForSymbol': False,
85
+ 'fetchPositionsHistory': False,
83
86
  'fetchPositionsRisk': False,
84
87
  'fetchPremiumIndexOHLCV': False,
85
88
  'fetchTicker': True,
@@ -951,7 +954,7 @@ class indodax(Exchange, ImplicitAPI):
951
954
  transactions = self.array_concat(withdraws, deposits)
952
955
  return self.parse_transactions(transactions, currency, since, limit)
953
956
 
954
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
957
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
955
958
  """
956
959
  make a withdrawal
957
960
  :see: https://github.com/btcid/indodax-official-api-docs/blob/master/Private-RestAPI.md#withdraw-coin-endpoints
ccxt/kraken.py CHANGED
@@ -2522,7 +2522,7 @@ class kraken(Exchange, ImplicitAPI):
2522
2522
  'info': depositAddress,
2523
2523
  }
2524
2524
 
2525
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
2525
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
2526
2526
  """
2527
2527
  make a withdrawal
2528
2528
  :see: https://docs.kraken.com/rest/#tag/Funding/operation/withdrawFunds
ccxt/kucoin.py CHANGED
@@ -107,7 +107,9 @@ class kucoin(Exchange, ImplicitAPI):
107
107
  'fetchOrderBooks': False,
108
108
  'fetchOrdersByStatus': True,
109
109
  'fetchOrderTrades': True,
110
+ 'fetchPositionHistory': False,
110
111
  'fetchPositionMode': False,
112
+ 'fetchPositionsHistory': False,
111
113
  'fetchPremiumIndexOHLCV': False,
112
114
  'fetchStatus': True,
113
115
  'fetchTicker': True,
@@ -3003,7 +3005,7 @@ class kucoin(Exchange, ImplicitAPI):
3003
3005
  'tierBased': True,
3004
3006
  }
3005
3007
 
3006
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
3008
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
3007
3009
  """
3008
3010
  make a withdrawal
3009
3011
  :see: https://www.kucoin.com/docs/rest/funding/withdrawals/apply-withdraw
ccxt/kucoinfutures.py CHANGED
@@ -91,8 +91,10 @@ class kucoinfutures(kucoin, ImplicitAPI):
91
91
  'fetchOrder': True,
92
92
  'fetchOrderBook': True,
93
93
  'fetchPosition': True,
94
+ 'fetchPositionHistory': False,
94
95
  'fetchPositionMode': False,
95
96
  'fetchPositions': True,
97
+ 'fetchPositionsHistory': False,
96
98
  'fetchPremiumIndexOHLCV': False,
97
99
  'fetchStatus': True,
98
100
  'fetchTicker': True,
@@ -1425,7 +1427,7 @@ class kucoinfutures(kucoin, ImplicitAPI):
1425
1427
  #
1426
1428
  return self.safe_value(response, 'data')
1427
1429
 
1428
- def add_margin(self, symbol: str, amount, params={}) -> MarginModification:
1430
+ def add_margin(self, symbol: str, amount: float, params={}) -> MarginModification:
1429
1431
  """
1430
1432
  add margin
1431
1433
  :see: https://www.kucoin.com/docs/rest/futures-trading/positions/add-margin-manually
ccxt/kuna.py CHANGED
@@ -1340,7 +1340,7 @@ class kuna(Exchange, ImplicitAPI):
1340
1340
  data = self.safe_list(response, 'data')
1341
1341
  return self.parse_trades(data, market, since, limit)
1342
1342
 
1343
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
1343
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
1344
1344
  """
1345
1345
  make a withdrawal
1346
1346
  :see: https://docs.kuna.io/docs/create-a-withdraw
ccxt/latoken.py CHANGED
@@ -69,7 +69,13 @@ class latoken(Exchange, ImplicitAPI):
69
69
  'fetchOrder': True,
70
70
  'fetchOrderBook': True,
71
71
  'fetchOrders': True,
72
+ 'fetchPosition': False,
73
+ 'fetchPositionHistory': False,
72
74
  'fetchPositionMode': False,
75
+ 'fetchPositions': False,
76
+ 'fetchPositionsForSymbol': False,
77
+ 'fetchPositionsHistory': False,
78
+ 'fetchPositionsRisk': False,
73
79
  'fetchTicker': True,
74
80
  'fetchTickers': True,
75
81
  'fetchTime': True,
ccxt/lbank.py CHANGED
@@ -1908,7 +1908,7 @@ class lbank(Exchange, ImplicitAPI):
1908
1908
  'info': response,
1909
1909
  }
1910
1910
 
1911
- def withdraw(self, code: str, amount: float, address, tag=None, params={}) -> Transaction:
1911
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
1912
1912
  """
1913
1913
  make a withdrawal
1914
1914
  :see: https://www.lbank.com/en-US/docs/index.html#withdrawal
ccxt/luno.py CHANGED
@@ -64,8 +64,11 @@ class luno(Exchange, ImplicitAPI):
64
64
  'fetchOrderBook': True,
65
65
  'fetchOrders': True,
66
66
  'fetchPosition': False,
67
+ 'fetchPositionHistory': False,
67
68
  'fetchPositionMode': False,
68
69
  'fetchPositions': False,
70
+ 'fetchPositionsForSymbol': False,
71
+ 'fetchPositionsHistory': False,
69
72
  'fetchPositionsRisk': False,
70
73
  'fetchPremiumIndexOHLCV': False,
71
74
  'fetchTicker': True,
ccxt/lykke.py CHANGED
@@ -70,8 +70,13 @@ class lykke(Exchange, ImplicitAPI):
70
70
  'fetchOrderBook': True,
71
71
  'fetchOrders': False,
72
72
  'fetchOrderTrades': False,
73
+ 'fetchPosition': False,
74
+ 'fetchPositionHistory': False,
73
75
  'fetchPositionMode': False,
74
76
  'fetchPositions': False,
77
+ 'fetchPositionsForSymbol': False,
78
+ 'fetchPositionsHistory': False,
79
+ 'fetchPositionsRisk': False,
75
80
  'fetchPremiumIndexOHLCV': False,
76
81
  'fetchTicker': True,
77
82
  'fetchTickers': True,
@@ -1192,7 +1197,7 @@ class lykke(Exchange, ImplicitAPI):
1192
1197
  currency = self.currency(code)
1193
1198
  return self.parse_transactions(payload, currency, since, limit)
1194
1199
 
1195
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
1200
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
1196
1201
  """
1197
1202
  make a withdrawal
1198
1203
  :see: https://lykkecity.github.io/Trading-API/#withdrawal
ccxt/mercado.py CHANGED
@@ -67,8 +67,11 @@ class mercado(Exchange, ImplicitAPI):
67
67
  'fetchOrderBook': True,
68
68
  'fetchOrders': True,
69
69
  'fetchPosition': False,
70
+ 'fetchPositionHistory': False,
70
71
  'fetchPositionMode': False,
71
72
  'fetchPositions': False,
73
+ 'fetchPositionsForSymbol': False,
74
+ 'fetchPositionsHistory': False,
72
75
  'fetchPositionsRisk': False,
73
76
  'fetchPremiumIndexOHLCV': False,
74
77
  'fetchTicker': True,
@@ -594,7 +597,7 @@ class mercado(Exchange, ImplicitAPI):
594
597
  order = self.safe_dict(responseData, 'order')
595
598
  return self.parse_order(order, market)
596
599
 
597
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
600
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
598
601
  """
599
602
  make a withdrawal
600
603
  :param str code: unified currency code