ccxt 4.4.39__py2.py3-none-any.whl → 4.4.41__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.
Files changed (137) hide show
  1. ccxt/__init__.py +1 -1
  2. ccxt/abstract/bitmart.py +2 -0
  3. ccxt/abstract/okx.py +5 -0
  4. ccxt/ascendex.py +9 -9
  5. ccxt/async_support/__init__.py +1 -1
  6. ccxt/async_support/ascendex.py +9 -9
  7. ccxt/async_support/base/exchange.py +10 -3
  8. ccxt/async_support/base/ws/aiohttp_client.py +2 -2
  9. ccxt/async_support/binance.py +37 -41
  10. ccxt/async_support/bingx.py +4 -3
  11. ccxt/async_support/bit2c.py +0 -1
  12. ccxt/async_support/bitbank.py +0 -1
  13. ccxt/async_support/bitbns.py +0 -1
  14. ccxt/async_support/bitfinex.py +16 -17
  15. ccxt/async_support/bitfinex1.py +0 -1
  16. ccxt/async_support/bitflyer.py +0 -1
  17. ccxt/async_support/bitget.py +2 -2
  18. ccxt/async_support/bithumb.py +0 -1
  19. ccxt/async_support/bitmart.py +246 -6
  20. ccxt/async_support/bitmex.py +5 -6
  21. ccxt/async_support/bitopro.py +4 -5
  22. ccxt/async_support/bitrue.py +5 -7
  23. ccxt/async_support/bitso.py +1 -2
  24. ccxt/async_support/bitstamp.py +1 -2
  25. ccxt/async_support/bitteam.py +1 -3
  26. ccxt/async_support/bitvavo.py +2 -4
  27. ccxt/async_support/blockchaincom.py +5 -5
  28. ccxt/async_support/blofin.py +10 -10
  29. ccxt/async_support/btcalpha.py +0 -1
  30. ccxt/async_support/btcbox.py +0 -1
  31. ccxt/async_support/btcmarkets.py +1 -3
  32. ccxt/async_support/bybit.py +10 -11
  33. ccxt/async_support/cex.py +1 -1
  34. ccxt/async_support/coinbase.py +77 -1
  35. ccxt/async_support/coinbaseexchange.py +1 -1
  36. ccxt/async_support/coinbaseinternational.py +62 -0
  37. ccxt/async_support/coincatch.py +1 -1
  38. ccxt/async_support/coinex.py +9 -9
  39. ccxt/async_support/coinlist.py +1 -1
  40. ccxt/async_support/coinmetro.py +1 -1
  41. ccxt/async_support/cryptocom.py +91 -2
  42. ccxt/async_support/currencycom.py +1 -1
  43. ccxt/async_support/defx.py +1 -2
  44. ccxt/async_support/delta.py +1 -1
  45. ccxt/async_support/digifinex.py +1 -1
  46. ccxt/async_support/exmo.py +62 -6
  47. ccxt/async_support/gate.py +2 -2
  48. ccxt/async_support/hashkey.py +3 -5
  49. ccxt/async_support/htx.py +2 -2
  50. ccxt/async_support/hyperliquid.py +61 -2
  51. ccxt/async_support/kraken.py +124 -26
  52. ccxt/async_support/kucoin.py +29 -25
  53. ccxt/async_support/luno.py +1 -1
  54. ccxt/async_support/mexc.py +137 -1
  55. ccxt/async_support/ndax.py +1 -1
  56. ccxt/async_support/okcoin.py +18 -18
  57. ccxt/async_support/okx.py +27 -22
  58. ccxt/async_support/phemex.py +12 -8
  59. ccxt/async_support/poloniex.py +1 -1
  60. ccxt/async_support/poloniexfutures.py +6 -6
  61. ccxt/async_support/vertex.py +11 -11
  62. ccxt/async_support/woo.py +33 -33
  63. ccxt/async_support/woofipro.py +24 -24
  64. ccxt/async_support/xt.py +29 -27
  65. ccxt/async_support/zonda.py +1 -1
  66. ccxt/base/exchange.py +31 -19
  67. ccxt/base/types.py +10 -0
  68. ccxt/binance.py +37 -41
  69. ccxt/bingx.py +4 -3
  70. ccxt/bit2c.py +0 -1
  71. ccxt/bitbank.py +0 -1
  72. ccxt/bitbns.py +0 -1
  73. ccxt/bitfinex.py +16 -17
  74. ccxt/bitfinex1.py +0 -1
  75. ccxt/bitflyer.py +0 -1
  76. ccxt/bitget.py +2 -2
  77. ccxt/bithumb.py +0 -1
  78. ccxt/bitmart.py +246 -6
  79. ccxt/bitmex.py +5 -6
  80. ccxt/bitopro.py +4 -5
  81. ccxt/bitrue.py +5 -7
  82. ccxt/bitso.py +1 -2
  83. ccxt/bitstamp.py +1 -2
  84. ccxt/bitteam.py +1 -3
  85. ccxt/bitvavo.py +2 -4
  86. ccxt/blockchaincom.py +5 -5
  87. ccxt/blofin.py +10 -10
  88. ccxt/btcalpha.py +0 -1
  89. ccxt/btcbox.py +0 -1
  90. ccxt/btcmarkets.py +1 -3
  91. ccxt/bybit.py +10 -11
  92. ccxt/cex.py +1 -1
  93. ccxt/coinbase.py +77 -1
  94. ccxt/coinbaseexchange.py +1 -1
  95. ccxt/coinbaseinternational.py +62 -0
  96. ccxt/coincatch.py +1 -1
  97. ccxt/coinex.py +9 -9
  98. ccxt/coinlist.py +1 -1
  99. ccxt/coinmetro.py +1 -1
  100. ccxt/cryptocom.py +91 -2
  101. ccxt/currencycom.py +1 -1
  102. ccxt/defx.py +1 -2
  103. ccxt/delta.py +1 -1
  104. ccxt/digifinex.py +1 -1
  105. ccxt/exmo.py +62 -6
  106. ccxt/gate.py +2 -2
  107. ccxt/hashkey.py +3 -5
  108. ccxt/htx.py +2 -2
  109. ccxt/hyperliquid.py +61 -2
  110. ccxt/kraken.py +124 -26
  111. ccxt/kucoin.py +29 -25
  112. ccxt/luno.py +1 -1
  113. ccxt/mexc.py +137 -1
  114. ccxt/ndax.py +1 -1
  115. ccxt/okcoin.py +18 -18
  116. ccxt/okx.py +27 -22
  117. ccxt/phemex.py +12 -8
  118. ccxt/poloniex.py +1 -1
  119. ccxt/poloniexfutures.py +6 -6
  120. ccxt/pro/__init__.py +1 -1
  121. ccxt/pro/bitget.py +1 -1
  122. ccxt/pro/bybit.py +12 -1
  123. ccxt/pro/coinex.py +2 -2
  124. ccxt/pro/gate.py +6 -6
  125. ccxt/pro/kucoin.py +3 -3
  126. ccxt/pro/okx.py +11 -11
  127. ccxt/pro/upbit.py +2 -2
  128. ccxt/vertex.py +11 -11
  129. ccxt/woo.py +33 -33
  130. ccxt/woofipro.py +24 -24
  131. ccxt/xt.py +29 -27
  132. ccxt/zonda.py +1 -1
  133. {ccxt-4.4.39.dist-info → ccxt-4.4.41.dist-info}/METADATA +4 -4
  134. {ccxt-4.4.39.dist-info → ccxt-4.4.41.dist-info}/RECORD +137 -137
  135. {ccxt-4.4.39.dist-info → ccxt-4.4.41.dist-info}/LICENSE.txt +0 -0
  136. {ccxt-4.4.39.dist-info → ccxt-4.4.41.dist-info}/WHEEL +0 -0
  137. {ccxt-4.4.39.dist-info → ccxt-4.4.41.dist-info}/top_level.txt +0 -0
ccxt/base/exchange.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.39'
7
+ __version__ = '4.4.41'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -1940,6 +1940,7 @@ class Exchange(object):
1940
1940
  'fetchOHLCV': None,
1941
1941
  'fetchOHLCVWs': None,
1942
1942
  'fetchOpenInterest': None,
1943
+ 'fetchOpenInterests': None,
1943
1944
  'fetchOpenInterestHistory': None,
1944
1945
  'fetchOpenOrder': None,
1945
1946
  'fetchOpenOrders': None,
@@ -2300,26 +2301,23 @@ class Exchange(object):
2300
2301
  wssProxy = None
2301
2302
  wsSocksProxy = None
2302
2303
  # ws proxy
2303
- if self.value_is_defined(self.wsProxy):
2304
+ isWsProxyDefined = self.value_is_defined(self.wsProxy)
2305
+ is_ws_proxy_defined = self.value_is_defined(self.ws_proxy)
2306
+ if isWsProxyDefined or is_ws_proxy_defined:
2304
2307
  usedProxies.append('wsProxy')
2305
- wsProxy = self.wsProxy
2306
- if self.value_is_defined(self.ws_proxy):
2307
- usedProxies.append('ws_proxy')
2308
- wsProxy = self.ws_proxy
2308
+ wsProxy = self.wsProxy if (isWsProxyDefined) else self.ws_proxy
2309
2309
  # wss proxy
2310
- if self.value_is_defined(self.wssProxy):
2310
+ isWssProxyDefined = self.value_is_defined(self.wssProxy)
2311
+ is_wss_proxy_defined = self.value_is_defined(self.wss_proxy)
2312
+ if isWssProxyDefined or is_wss_proxy_defined:
2311
2313
  usedProxies.append('wssProxy')
2312
- wssProxy = self.wssProxy
2313
- if self.value_is_defined(self.wss_proxy):
2314
- usedProxies.append('wss_proxy')
2315
- wssProxy = self.wss_proxy
2314
+ wssProxy = self.wssProxy if (isWssProxyDefined) else self.wss_proxy
2316
2315
  # ws socks proxy
2317
- if self.value_is_defined(self.wsSocksProxy):
2316
+ isWsSocksProxyDefined = self.value_is_defined(self.wsSocksProxy)
2317
+ is_ws_socks_proxy_defined = self.value_is_defined(self.ws_socks_proxy)
2318
+ if isWsSocksProxyDefined or is_ws_socks_proxy_defined:
2318
2319
  usedProxies.append('wsSocksProxy')
2319
- wsSocksProxy = self.wsSocksProxy
2320
- if self.value_is_defined(self.ws_socks_proxy):
2321
- usedProxies.append('ws_socks_proxy')
2322
- wsSocksProxy = self.ws_socks_proxy
2320
+ wsSocksProxy = self.wsSocksProxy if (isWsSocksProxyDefined) else self.ws_socks_proxy
2323
2321
  # check
2324
2322
  length = len(usedProxies)
2325
2323
  if length > 1:
@@ -2694,6 +2692,9 @@ class Exchange(object):
2694
2692
  def fetch_open_interest(self, symbol: str, params={}):
2695
2693
  raise NotSupported(self.id + ' fetchOpenInterest() is not supported yet')
2696
2694
 
2695
+ def fetch_open_interests(self, symbols: Strings = None, params={}):
2696
+ raise NotSupported(self.id + ' fetchOpenInterests() is not supported yet')
2697
+
2697
2698
  def sign_in(self, params={}):
2698
2699
  raise NotSupported(self.id + ' signIn() is not supported yet')
2699
2700
 
@@ -5642,6 +5643,13 @@ class Exchange(object):
5642
5643
  result[parsed['symbol']] = parsed
5643
5644
  return result
5644
5645
 
5646
+ def parse_open_interests(self, response, market: Market = None):
5647
+ result = {}
5648
+ for i in range(0, len(response)):
5649
+ parsed = self.parse_open_interest(response[i], market)
5650
+ result[parsed['symbol']] = parsed
5651
+ return result
5652
+
5645
5653
  def parse_long_short_ratio(self, info: dict, market: Market = None):
5646
5654
  raise NotSupported(self.id + ' parseLongShortRatio() is not supported yet')
5647
5655
 
@@ -5736,7 +5744,7 @@ class Exchange(object):
5736
5744
  def parse_open_interest(self, interest, market: Market = None):
5737
5745
  raise NotSupported(self.id + ' parseOpenInterest() is not supported yet')
5738
5746
 
5739
- def parse_open_interests(self, response, market=None, since: Int = None, limit: Int = None):
5747
+ def parse_open_interests_history(self, response, market=None, since: Int = None, limit: Int = None):
5740
5748
  interests = []
5741
5749
  for i in range(0, len(response)):
5742
5750
  entry = response[i]
@@ -6032,7 +6040,7 @@ class Exchange(object):
6032
6040
  maxEntriesPerRequest = 1000 # default to 1000
6033
6041
  return [maxEntriesPerRequest, params]
6034
6042
 
6035
- def fetch_paginated_call_dynamic(self, method: str, symbol: Str = None, since: Int = None, limit: Int = None, params={}, maxEntriesPerRequest: Int = None):
6043
+ def fetch_paginated_call_dynamic(self, method: str, symbol: Str = None, since: Int = None, limit: Int = None, params={}, maxEntriesPerRequest: Int = None, removeRepeated=True):
6036
6044
  maxCalls = None
6037
6045
  maxCalls, params = self.handle_option_and_params(params, method, 'paginationCalls', 10)
6038
6046
  maxRetries = None
@@ -6040,6 +6048,8 @@ class Exchange(object):
6040
6048
  paginationDirection = None
6041
6049
  paginationDirection, params = self.handle_option_and_params(params, method, 'paginationDirection', 'backward')
6042
6050
  paginationTimestamp = None
6051
+ removeRepeatedOption = removeRepeated
6052
+ removeRepeatedOption, params = self.handle_option_and_params(params, method, 'removeRepeated', removeRepeated)
6043
6053
  calls = 0
6044
6054
  result = []
6045
6055
  errors = 0
@@ -6093,7 +6103,9 @@ class Exchange(object):
6093
6103
  errors += 1
6094
6104
  if errors > maxRetries:
6095
6105
  raise e
6096
- uniqueResults = self.remove_repeated_elements_from_array(result)
6106
+ uniqueResults = result
6107
+ if removeRepeatedOption:
6108
+ uniqueResults = self.remove_repeated_elements_from_array(result)
6097
6109
  key = 0 if (method == 'fetchOHLCV') else 'timestamp'
6098
6110
  return self.filter_by_since_limit(uniqueResults, since, limit, key)
6099
6111
 
ccxt/base/types.py CHANGED
@@ -496,6 +496,15 @@ class FundingRate(TypedDict):
496
496
  info: Dict[str, Any]
497
497
  interval: Str
498
498
 
499
+ class OpenInterest(TypedDict):
500
+ symbol: Str
501
+ openInterestAmount: Num
502
+ openInterestValue: Num
503
+ baseVolume: Num
504
+ quoteVolume: Num
505
+ timestamp: Int
506
+ datetime: Str
507
+ info: Dict[str, Any]
499
508
 
500
509
  class LeverageTier:
501
510
  tier: Num
@@ -556,6 +565,7 @@ class BorrowInterest:
556
565
 
557
566
 
558
567
  FundingRates = Dict[Str, FundingRate]
568
+ OpenInterests = Dict[Str, OpenInterest]
559
569
  LastPrices = Dict[Str, LastPrice]
560
570
  Currencies = Dict[Str, CurrencyInterface]
561
571
  TradingFees = Dict[Str, TradingFeeInterface]
ccxt/binance.py CHANGED
@@ -5062,8 +5062,8 @@ class binance(Exchange, ImplicitAPI):
5062
5062
  if postOnly:
5063
5063
  uppercaseType = 'LIMIT_MAKER'
5064
5064
  request['type'] = uppercaseType
5065
- stopPrice = self.safe_number_2(params, 'stopPrice', 'triggerPrice')
5066
- if stopPrice is not None:
5065
+ triggerPrice = self.safe_number_2(params, 'stopPrice', 'triggerPrice')
5066
+ if triggerPrice is not None:
5067
5067
  if uppercaseType == 'MARKET':
5068
5068
  uppercaseType = 'STOP_LOSS'
5069
5069
  elif uppercaseType == 'LIMIT':
@@ -5071,7 +5071,7 @@ class binance(Exchange, ImplicitAPI):
5071
5071
  validOrderTypes = self.safe_list(market['info'], 'orderTypes')
5072
5072
  if not self.in_array(uppercaseType, validOrderTypes):
5073
5073
  if initialUppercaseType != uppercaseType:
5074
- raise InvalidOrder(self.id + ' stopPrice parameter is not allowed for ' + symbol + ' ' + type + ' orders')
5074
+ raise InvalidOrder(self.id + ' triggerPrice parameter is not allowed for ' + symbol + ' ' + type + ' orders')
5075
5075
  else:
5076
5076
  raise InvalidOrder(self.id + ' ' + type + ' is not a valid order type for the ' + symbol + ' market')
5077
5077
  if clientOrderId is None:
@@ -5085,7 +5085,7 @@ class binance(Exchange, ImplicitAPI):
5085
5085
  request['newOrderRespType'] = self.safe_value(self.options['newOrderRespType'], type, 'RESULT') # 'ACK' for order id, 'RESULT' for full order or 'FULL' for order with fills
5086
5086
  timeInForceIsRequired = False
5087
5087
  priceIsRequired = False
5088
- stopPriceIsRequired = False
5088
+ triggerPriceIsRequired = False
5089
5089
  quantityIsRequired = False
5090
5090
  if uppercaseType == 'MARKET':
5091
5091
  quoteOrderQty = self.safe_bool(self.options, 'quoteOrderQty', True)
@@ -5108,11 +5108,11 @@ class binance(Exchange, ImplicitAPI):
5108
5108
  timeInForceIsRequired = True
5109
5109
  quantityIsRequired = True
5110
5110
  elif (uppercaseType == 'STOP_LOSS') or (uppercaseType == 'TAKE_PROFIT'):
5111
- stopPriceIsRequired = True
5111
+ triggerPriceIsRequired = True
5112
5112
  quantityIsRequired = True
5113
5113
  elif (uppercaseType == 'STOP_LOSS_LIMIT') or (uppercaseType == 'TAKE_PROFIT_LIMIT'):
5114
5114
  quantityIsRequired = True
5115
- stopPriceIsRequired = True
5115
+ triggerPriceIsRequired = True
5116
5116
  priceIsRequired = True
5117
5117
  timeInForceIsRequired = True
5118
5118
  elif uppercaseType == 'LIMIT_MAKER':
@@ -5126,11 +5126,11 @@ class binance(Exchange, ImplicitAPI):
5126
5126
  request['price'] = self.price_to_precision(symbol, price)
5127
5127
  if timeInForceIsRequired and (self.safe_string(params, 'timeInForce') is None):
5128
5128
  request['timeInForce'] = self.options['defaultTimeInForce'] # 'GTC' = Good To Cancel(default), 'IOC' = Immediate Or Cancel
5129
- if stopPriceIsRequired:
5130
- if stopPrice is None:
5131
- raise InvalidOrder(self.id + ' editOrder() requires a stopPrice extra param for a ' + type + ' order')
5129
+ if triggerPriceIsRequired:
5130
+ if triggerPrice is None:
5131
+ raise InvalidOrder(self.id + ' editOrder() requires a triggerPrice extra param for a ' + type + ' order')
5132
5132
  else:
5133
- request['stopPrice'] = self.price_to_precision(symbol, stopPrice)
5133
+ request['stopPrice'] = self.price_to_precision(symbol, triggerPrice)
5134
5134
  request['cancelReplaceMode'] = 'STOP_ON_FAILURE' # If the cancel request fails, the new order placement will not be attempted.
5135
5135
  cancelId = self.safe_string_2(params, 'cancelNewClientOrderId', 'cancelOrigClientOrderId')
5136
5136
  if cancelId is None:
@@ -5775,7 +5775,7 @@ class binance(Exchange, ImplicitAPI):
5775
5775
  if type == 'limit_maker':
5776
5776
  type = 'limit'
5777
5777
  stopPriceString = self.safe_string(order, 'stopPrice')
5778
- stopPrice = self.parse_number(self.omit_zero(stopPriceString))
5778
+ triggerPrice = self.parse_number(self.omit_zero(stopPriceString))
5779
5779
  feeCost = self.safe_number(order, 'fee')
5780
5780
  fee = None
5781
5781
  if feeCost is not None:
@@ -5799,7 +5799,7 @@ class binance(Exchange, ImplicitAPI):
5799
5799
  'reduceOnly': self.safe_bool(order, 'reduceOnly'),
5800
5800
  'side': side,
5801
5801
  'price': price,
5802
- 'triggerPrice': stopPrice,
5802
+ 'triggerPrice': triggerPrice,
5803
5803
  'amount': amount,
5804
5804
  'cost': cost,
5805
5805
  'average': average,
@@ -6009,14 +6009,10 @@ class binance(Exchange, ImplicitAPI):
6009
6009
  marginMode = None
6010
6010
  marginMode, params = self.handle_margin_mode_and_params('createOrder', params)
6011
6011
  reduceOnly = self.safe_bool(params, 'reduceOnly', False)
6012
- if (marketType == 'margin') or (marginMode is not None) or market['option']:
6013
- # for swap and future reduceOnly is a string that cant be sent with close position set to True or in hedge mode
6014
- params = self.omit(params, 'reduceOnly')
6015
- if market['option']:
6016
- request['reduceOnly'] = reduceOnly
6017
- else:
6018
- if reduceOnly:
6019
- request['sideEffectType'] = 'AUTO_REPAY'
6012
+ if reduceOnly:
6013
+ if marketType == 'margin' or (not market['contract'] and (marginMode is not None)):
6014
+ params = self.omit(params, 'reduceOnly')
6015
+ request['sideEffectType'] = 'AUTO_REPAY'
6020
6016
  triggerPrice = self.safe_string_2(params, 'triggerPrice', 'stopPrice')
6021
6017
  stopLossPrice = self.safe_string(params, 'stopLossPrice', triggerPrice) # fallback to stopLoss
6022
6018
  takeProfitPrice = self.safe_string(params, 'takeProfitPrice')
@@ -6075,7 +6071,7 @@ class binance(Exchange, ImplicitAPI):
6075
6071
  validOrderTypes = self.safe_list(market['info'], 'orderTypes')
6076
6072
  if not self.in_array(uppercaseType, validOrderTypes):
6077
6073
  if initialUppercaseType != uppercaseType:
6078
- raise InvalidOrder(self.id + ' stopPrice parameter is not allowed for ' + symbol + ' ' + type + ' orders')
6074
+ raise InvalidOrder(self.id + ' triggerPrice parameter is not allowed for ' + symbol + ' ' + type + ' orders')
6079
6075
  else:
6080
6076
  raise InvalidOrder(self.id + ' ' + type + ' is not a valid order type for the ' + symbol + ' market')
6081
6077
  clientOrderIdRequest = 'newClientStrategyId' if isPortfolioMarginConditional else 'newClientOrderId'
@@ -6114,7 +6110,7 @@ class binance(Exchange, ImplicitAPI):
6114
6110
  closePosition = self.safe_bool(params, 'closePosition', False)
6115
6111
  timeInForceIsRequired = False
6116
6112
  priceIsRequired = False
6117
- stopPriceIsRequired = False
6113
+ triggerPriceIsRequired = False
6118
6114
  quantityIsRequired = False
6119
6115
  #
6120
6116
  # spot/margin
@@ -6160,13 +6156,13 @@ class binance(Exchange, ImplicitAPI):
6160
6156
  timeInForceIsRequired = True
6161
6157
  quantityIsRequired = True
6162
6158
  elif (uppercaseType == 'STOP_LOSS') or (uppercaseType == 'TAKE_PROFIT'):
6163
- stopPriceIsRequired = True
6159
+ triggerPriceIsRequired = True
6164
6160
  quantityIsRequired = True
6165
6161
  if market['linear'] or market['inverse']:
6166
6162
  priceIsRequired = True
6167
6163
  elif (uppercaseType == 'STOP_LOSS_LIMIT') or (uppercaseType == 'TAKE_PROFIT_LIMIT'):
6168
6164
  quantityIsRequired = True
6169
- stopPriceIsRequired = True
6165
+ triggerPriceIsRequired = True
6170
6166
  priceIsRequired = True
6171
6167
  timeInForceIsRequired = True
6172
6168
  elif uppercaseType == 'LIMIT_MAKER':
@@ -6174,12 +6170,12 @@ class binance(Exchange, ImplicitAPI):
6174
6170
  quantityIsRequired = True
6175
6171
  elif uppercaseType == 'STOP':
6176
6172
  quantityIsRequired = True
6177
- stopPriceIsRequired = True
6173
+ triggerPriceIsRequired = True
6178
6174
  priceIsRequired = True
6179
6175
  elif (uppercaseType == 'STOP_MARKET') or (uppercaseType == 'TAKE_PROFIT_MARKET'):
6180
6176
  if not closePosition:
6181
6177
  quantityIsRequired = True
6182
- stopPriceIsRequired = True
6178
+ triggerPriceIsRequired = True
6183
6179
  elif uppercaseType == 'TRAILING_STOP_MARKET':
6184
6180
  if not closePosition:
6185
6181
  quantityIsRequired = True
@@ -6205,14 +6201,14 @@ class binance(Exchange, ImplicitAPI):
6205
6201
  request['price'] = self.price_to_precision(symbol, price)
6206
6202
  else:
6207
6203
  request['price'] = self.parse_to_numeric(price) # some options don't have the precision available
6208
- if stopPriceIsRequired:
6204
+ if triggerPriceIsRequired:
6209
6205
  if market['contract']:
6210
6206
  if stopPrice is None:
6211
- raise InvalidOrder(self.id + ' createOrder() requires a stopPrice extra param for a ' + type + ' order')
6207
+ raise InvalidOrder(self.id + ' createOrder() requires a triggerPrice extra param for a ' + type + ' order')
6212
6208
  else:
6213
6209
  # check for delta price
6214
6210
  if trailingDelta is None and stopPrice is None and trailingPercent is None:
6215
- raise InvalidOrder(self.id + ' createOrder() requires a stopPrice, trailingDelta or trailingPercent param for a ' + type + ' order')
6211
+ raise InvalidOrder(self.id + ' createOrder() requires a triggerPrice, trailingDelta or trailingPercent param for a ' + type + ' order')
6216
6212
  if stopPrice is not None:
6217
6213
  request['stopPrice'] = self.price_to_precision(symbol, stopPrice)
6218
6214
  if timeInForceIsRequired and (self.safe_string(params, 'timeInForce') is None) and (self.safe_string(request, 'timeInForce') is None):
@@ -6373,7 +6369,7 @@ class binance(Exchange, ImplicitAPI):
6373
6369
  :param int [params.until]: the latest time in ms to fetch orders for
6374
6370
  :param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
6375
6371
  :param boolean [params.portfolioMargin]: set to True if you would like to fetch orders in a portfolio margin account
6376
- :param boolean [params.stop]: set to True if you would like to fetch portfolio margin account stop or conditional orders
6372
+ :param boolean [params.trigger]: set to True if you would like to fetch portfolio margin account trigger or conditional orders
6377
6373
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
6378
6374
  """
6379
6375
  if symbol is None:
@@ -6630,7 +6626,7 @@ class binance(Exchange, ImplicitAPI):
6630
6626
  :param dict [params]: extra parameters specific to the exchange API endpoint
6631
6627
  :param str [params.marginMode]: 'cross' or 'isolated', for spot margin trading
6632
6628
  :param boolean [params.portfolioMargin]: set to True if you would like to fetch open orders in the portfolio margin account
6633
- :param boolean [params.stop]: set to True if you would like to fetch portfolio margin account conditional orders
6629
+ :param boolean [params.trigger]: set to True if you would like to fetch portfolio margin account conditional orders
6634
6630
  :param str [params.subType]: "linear" or "inverse"
6635
6631
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
6636
6632
  """
@@ -6916,7 +6912,7 @@ class binance(Exchange, ImplicitAPI):
6916
6912
  :param dict [params]: extra parameters specific to the exchange API endpoint
6917
6913
  :param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
6918
6914
  :param boolean [params.portfolioMargin]: set to True if you would like to fetch orders in a portfolio margin account
6919
- :param boolean [params.stop]: set to True if you would like to fetch portfolio margin account stop or conditional orders
6915
+ :param boolean [params.trigger]: set to True if you would like to fetch portfolio margin account trigger or conditional orders
6920
6916
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
6921
6917
  """
6922
6918
  if symbol is None:
@@ -6945,7 +6941,7 @@ class binance(Exchange, ImplicitAPI):
6945
6941
  :param dict [params]: extra parameters specific to the exchange API endpoint
6946
6942
  :param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
6947
6943
  :param boolean [params.portfolioMargin]: set to True if you would like to fetch orders in a portfolio margin account
6948
- :param boolean [params.stop]: set to True if you would like to fetch portfolio margin account stop or conditional orders
6944
+ :param boolean [params.trigger]: set to True if you would like to fetch portfolio margin account trigger or conditional orders
6949
6945
  :returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
6950
6946
  """
6951
6947
  if symbol is None:
@@ -6974,7 +6970,7 @@ class binance(Exchange, ImplicitAPI):
6974
6970
  :param dict [params]: extra parameters specific to the exchange API endpoint
6975
6971
  :param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
6976
6972
  :param boolean [params.portfolioMargin]: set to True if you would like to fetch orders in a portfolio margin account
6977
- :param boolean [params.stop]: set to True if you would like to fetch portfolio margin account stop or conditional orders
6973
+ :param boolean [params.trigger]: set to True if you would like to fetch portfolio margin account trigger or conditional orders
6978
6974
  :returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
6979
6975
  """
6980
6976
  if symbol is None:
@@ -7005,7 +7001,7 @@ class binance(Exchange, ImplicitAPI):
7005
7001
  :param str symbol: unified symbol of the market the order was made in
7006
7002
  :param dict [params]: extra parameters specific to the exchange API endpoint
7007
7003
  :param boolean [params.portfolioMargin]: set to True if you would like to cancel an order in a portfolio margin account
7008
- :param boolean [params.stop]: set to True if you would like to cancel a portfolio margin account conditional order
7004
+ :param boolean [params.trigger]: set to True if you would like to cancel a portfolio margin account conditional order
7009
7005
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
7010
7006
  """
7011
7007
  if symbol is None:
@@ -7085,7 +7081,7 @@ class binance(Exchange, ImplicitAPI):
7085
7081
  :param dict [params]: extra parameters specific to the exchange API endpoint
7086
7082
  :param str [params.marginMode]: 'cross' or 'isolated', for spot margin trading
7087
7083
  :param boolean [params.portfolioMargin]: set to True if you would like to cancel orders in a portfolio margin account
7088
- :param boolean [params.stop]: set to True if you would like to cancel portfolio margin account conditional orders
7084
+ :param boolean [params.trigger]: set to True if you would like to cancel portfolio margin account conditional orders
7089
7085
  :returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
7090
7086
  """
7091
7087
  if symbol is None:
@@ -10839,7 +10835,7 @@ class binance(Exchange, ImplicitAPI):
10839
10835
  :param str id: the identification number of the ledger entry
10840
10836
  :param str code: unified currency code
10841
10837
  :param dict [params]: extra parameters specific to the exchange API endpoint
10842
- :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger-structure>`
10838
+ :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger>`
10843
10839
  """
10844
10840
  self.load_markets()
10845
10841
  type = None
@@ -10885,13 +10881,13 @@ class binance(Exchange, ImplicitAPI):
10885
10881
  :param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
10886
10882
  :param boolean [params.portfolioMargin]: set to True if you would like to fetch the ledger for a portfolio margin account
10887
10883
  :param str [params.subType]: "linear" or "inverse"
10888
- :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger-structure>`
10884
+ :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger>`
10889
10885
  """
10890
10886
  self.load_markets()
10891
10887
  paginate = False
10892
10888
  paginate, params = self.handle_option_and_params(params, 'fetchLedger', 'paginate')
10893
10889
  if paginate:
10894
- return self.fetch_paginated_call_dynamic('fetchLedger', code, since, limit, params)
10890
+ return self.fetch_paginated_call_dynamic('fetchLedger', code, since, limit, params, None, False)
10895
10891
  type = None
10896
10892
  subType = None
10897
10893
  currency = None
@@ -11966,7 +11962,7 @@ class binance(Exchange, ImplicitAPI):
11966
11962
  # ...
11967
11963
  # ]
11968
11964
  #
11969
- return self.parse_open_interests(response, market, since, limit)
11965
+ return self.parse_open_interests_history(response, market, since, limit)
11970
11966
 
11971
11967
  def fetch_open_interest(self, symbol: str, params={}):
11972
11968
  """
@@ -12029,7 +12025,7 @@ class binance(Exchange, ImplicitAPI):
12029
12025
  #
12030
12026
  if market['option']:
12031
12027
  symbol = market['symbol']
12032
- result = self.parse_open_interests(response, market)
12028
+ result = self.parse_open_interests_history(response, market)
12033
12029
  for i in range(0, len(result)):
12034
12030
  item = result[i]
12035
12031
  if item['symbol'] == symbol:
ccxt/bingx.py CHANGED
@@ -63,6 +63,7 @@ class bingx(Exchange, ImplicitAPI):
63
63
  'createTrailingAmountOrder': True,
64
64
  'createTrailingPercentOrder': True,
65
65
  'createTriggerOrder': True,
66
+ 'editOrder': True,
66
67
  'fetchBalance': True,
67
68
  'fetchCanceledOrders': True,
68
69
  'fetchClosedOrders': True,
@@ -85,6 +86,7 @@ class bingx(Exchange, ImplicitAPI):
85
86
  'fetchMarkPrice': True,
86
87
  'fetchMarkPrices': True,
87
88
  'fetchMyLiquidations': True,
89
+ 'fetchMyTrades': True,
88
90
  'fetchOHLCV': True,
89
91
  'fetchOpenInterest': True,
90
92
  'fetchOpenOrders': True,
@@ -1036,7 +1038,7 @@ class bingx(Exchange, ImplicitAPI):
1036
1038
  }
1037
1039
  request['interval'] = self.safe_string(self.timeframes, timeframe, timeframe)
1038
1040
  if since is not None:
1039
- request['startTime'] = since
1041
+ request['startTime'] = max(since - 1, 0)
1040
1042
  if limit is not None:
1041
1043
  request['limit'] = limit
1042
1044
  until = self.safe_integer_2(params, 'until', 'endTime')
@@ -3439,7 +3441,6 @@ class bingx(Exchange, ImplicitAPI):
3439
3441
  'postOnly': None,
3440
3442
  'side': self.parse_order_side(side),
3441
3443
  'price': self.safe_string_2(order, 'price', 'p'),
3442
- 'stopPrice': triggerPrice,
3443
3444
  'triggerPrice': triggerPrice,
3444
3445
  'stopLossPrice': stopLossPrice,
3445
3446
  'takeProfitPrice': takeProfitPrice,
@@ -5872,7 +5873,7 @@ class bingx(Exchange, ImplicitAPI):
5872
5873
  :param float amount: how much of the currency you want to trade in units of the base currency
5873
5874
  :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
5874
5875
  :param dict [params]: extra parameters specific to the exchange API endpoint
5875
- :param str [params.stopPrice]: Trigger price used for TAKE_STOP_LIMIT, TAKE_STOP_MARKET, TRIGGER_LIMIT, TRIGGER_MARKET order types.
5876
+ :param str [params.triggerPrice]: Trigger price used for TAKE_STOP_LIMIT, TAKE_STOP_MARKET, TRIGGER_LIMIT, TRIGGER_MARKET order types.
5876
5877
  :param dict [params.takeProfit]: *takeProfit object in params* containing the triggerPrice at which the attached take profit order will be triggered
5877
5878
  :param float [params.takeProfit.triggerPrice]: take profit trigger price
5878
5879
  :param dict [params.stopLoss]: *stopLoss object in params* containing the triggerPrice at which the attached stop loss order will be triggered
ccxt/bit2c.py CHANGED
@@ -620,7 +620,6 @@ class bit2c(Exchange, ImplicitAPI):
620
620
  'postOnly': None,
621
621
  'side': side,
622
622
  'price': price,
623
- 'stopPrice': None,
624
623
  'triggerPrice': None,
625
624
  'amount': amount,
626
625
  'filled': None,
ccxt/bitbank.py CHANGED
@@ -636,7 +636,6 @@ class bitbank(Exchange, ImplicitAPI):
636
636
  'postOnly': None,
637
637
  'side': side,
638
638
  'price': price,
639
- 'stopPrice': None,
640
639
  'triggerPrice': None,
641
640
  'cost': None,
642
641
  'average': average,
ccxt/bitbns.py CHANGED
@@ -552,7 +552,6 @@ class bitbns(Exchange, ImplicitAPI):
552
552
  'postOnly': None,
553
553
  'side': side,
554
554
  'price': self.safe_string(order, 'rate'),
555
- 'stopPrice': triggerPrice,
556
555
  'triggerPrice': triggerPrice,
557
556
  'amount': self.safe_string(order, 'btc'),
558
557
  'cost': None,
ccxt/bitfinex.py CHANGED
@@ -1483,10 +1483,10 @@ class bitfinex(Exchange, ImplicitAPI):
1483
1483
  if flags[i] == 'postOnly':
1484
1484
  postOnly = True
1485
1485
  price = self.safe_string(orderList, 16)
1486
- stopPrice = None
1486
+ triggerPrice = None
1487
1487
  if (orderType == 'EXCHANGE STOP') or (orderType == 'EXCHANGE STOP LIMIT'):
1488
1488
  price = None
1489
- stopPrice = self.safe_string(orderList, 16)
1489
+ triggerPrice = self.safe_string(orderList, 16)
1490
1490
  if orderType == 'EXCHANGE STOP LIMIT':
1491
1491
  price = self.safe_string(orderList, 19)
1492
1492
  status = None
@@ -1509,8 +1509,7 @@ class bitfinex(Exchange, ImplicitAPI):
1509
1509
  'postOnly': postOnly,
1510
1510
  'side': side,
1511
1511
  'price': price,
1512
- 'stopPrice': stopPrice,
1513
- 'triggerPrice': stopPrice,
1512
+ 'triggerPrice': triggerPrice,
1514
1513
  'amount': amount,
1515
1514
  'cost': None,
1516
1515
  'average': average,
@@ -1531,7 +1530,7 @@ class bitfinex(Exchange, ImplicitAPI):
1531
1530
  :param float amount: how much you want to trade in units of the base currency
1532
1531
  :param float [price]: the price of the order, in units of the quote currency, ignored in market orders
1533
1532
  :param dict [params]: extra parameters specific to the exchange API endpoint
1534
- :param float [params.stopPrice]: The price at which a trigger order is triggered at
1533
+ :param float [params.triggerPrice]: The price at which a trigger order is triggered at
1535
1534
  :param str [params.timeInForce]: "GTC", "IOC", "FOK", or "PO"
1536
1535
  :param bool [params.postOnly]:
1537
1536
  :param bool [params.reduceOnly]: Ensures that the executed order does not flip the opened position.
@@ -1549,7 +1548,7 @@ class bitfinex(Exchange, ImplicitAPI):
1549
1548
  'symbol': market['id'],
1550
1549
  'amount': amountString,
1551
1550
  }
1552
- stopPrice = self.safe_string_2(params, 'stopPrice', 'triggerPrice')
1551
+ triggerPrice = self.safe_string_2(params, 'stopPrice', 'triggerPrice')
1553
1552
  trailingAmount = self.safe_string(params, 'trailingAmount')
1554
1553
  timeInForce = self.safe_string(params, 'timeInForce')
1555
1554
  postOnlyParam = self.safe_bool(params, 'postOnly', False)
@@ -1559,9 +1558,9 @@ class bitfinex(Exchange, ImplicitAPI):
1559
1558
  if trailingAmount is not None:
1560
1559
  orderType = 'TRAILING STOP'
1561
1560
  request['price_trailing'] = trailingAmount
1562
- elif stopPrice is not None:
1561
+ elif triggerPrice is not None:
1563
1562
  # request['price'] is taken for stop orders
1564
- request['price'] = self.price_to_precision(symbol, stopPrice)
1563
+ request['price'] = self.price_to_precision(symbol, triggerPrice)
1565
1564
  if type == 'limit':
1566
1565
  orderType = 'STOP LIMIT'
1567
1566
  request['price_aux_limit'] = self.price_to_precision(symbol, price)
@@ -1574,7 +1573,7 @@ class bitfinex(Exchange, ImplicitAPI):
1574
1573
  raise InvalidOrder(self.id + ' createOrder() requires a price argument with IOC and FOK orders')
1575
1574
  if (ioc or fok) and (type == 'market'):
1576
1575
  raise InvalidOrder(self.id + ' createOrder() does not allow market IOC and FOK orders')
1577
- if (type != 'market') and (stopPrice is None):
1576
+ if (type != 'market') and (triggerPrice is None):
1578
1577
  request['price'] = self.price_to_precision(symbol, price)
1579
1578
  if ioc:
1580
1579
  orderType = 'IOC'
@@ -1611,7 +1610,7 @@ class bitfinex(Exchange, ImplicitAPI):
1611
1610
  :param float amount: the amount of currency to trade
1612
1611
  :param float [price]: price of the order
1613
1612
  :param dict [params]: extra parameters specific to the exchange API endpoint
1614
- :param float [params.stopPrice]: the price that triggers a trigger order
1613
+ :param float [params.triggerPrice]: the price that triggers a trigger order
1615
1614
  :param str [params.timeInForce]: "GTC", "IOC", "FOK", or "PO"
1616
1615
  :param boolean [params.postOnly]: set to True if you want to make a post only order
1617
1616
  :param boolean [params.reduceOnly]: indicates that the order is to reduce the size of a position
@@ -2849,7 +2848,7 @@ class bitfinex(Exchange, ImplicitAPI):
2849
2848
  :param dict [params]: extra parameters specific to the exchange API endpoint
2850
2849
  :param int [params.until]: timestamp in ms of the latest ledger entry
2851
2850
  :param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
2852
- :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger-structure>`
2851
+ :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger>`
2853
2852
  """
2854
2853
  self.load_markets()
2855
2854
  paginate = False
@@ -3225,7 +3224,7 @@ class bitfinex(Exchange, ImplicitAPI):
3225
3224
  # ],
3226
3225
  # ]
3227
3226
  #
3228
- return self.parse_open_interests(response, market, since, limit)
3227
+ return self.parse_open_interests_history(response, market, since, limit)
3229
3228
 
3230
3229
  def parse_open_interest(self, interest, market: Market = None):
3231
3230
  #
@@ -3520,7 +3519,7 @@ class bitfinex(Exchange, ImplicitAPI):
3520
3519
  :param float amount: how much you want to trade in units of the base currency
3521
3520
  :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
3522
3521
  :param dict [params]: extra parameters specific to the exchange API endpoint
3523
- :param float [params.stopPrice]: the price that triggers a trigger order
3522
+ :param float [params.triggerPrice]: the price that triggers a trigger order
3524
3523
  :param boolean [params.postOnly]: set to True if you want to make a post only order
3525
3524
  :param boolean [params.reduceOnly]: indicates that the order is to reduce the size of a position
3526
3525
  :param int [params.flags]: additional order parameters: 4096(Post Only), 1024(Reduce Only), 16384(OCO), 64(Hidden), 512(Close), 524288(No Var Rates)
@@ -3538,7 +3537,7 @@ class bitfinex(Exchange, ImplicitAPI):
3538
3537
  amountString = self.amount_to_precision(symbol, amount)
3539
3538
  amountString = amountString if (side == 'buy') else Precise.string_neg(amountString)
3540
3539
  request['amount'] = amountString
3541
- stopPrice = self.safe_string_2(params, 'stopPrice', 'triggerPrice')
3540
+ triggerPrice = self.safe_string_2(params, 'stopPrice', 'triggerPrice')
3542
3541
  trailingAmount = self.safe_string(params, 'trailingAmount')
3543
3542
  timeInForce = self.safe_string(params, 'timeInForce')
3544
3543
  postOnlyParam = self.safe_bool(params, 'postOnly', False)
@@ -3546,13 +3545,13 @@ class bitfinex(Exchange, ImplicitAPI):
3546
3545
  clientOrderId = self.safe_integer_2(params, 'cid', 'clientOrderId')
3547
3546
  if trailingAmount is not None:
3548
3547
  request['price_trailing'] = trailingAmount
3549
- elif stopPrice is not None:
3548
+ elif triggerPrice is not None:
3550
3549
  # request['price'] is taken for stop orders
3551
- request['price'] = self.price_to_precision(symbol, stopPrice)
3550
+ request['price'] = self.price_to_precision(symbol, triggerPrice)
3552
3551
  if type == 'limit':
3553
3552
  request['price_aux_limit'] = self.price_to_precision(symbol, price)
3554
3553
  postOnly = (postOnlyParam or (timeInForce == 'PO'))
3555
- if (type != 'market') and (stopPrice is None):
3554
+ if (type != 'market') and (triggerPrice is None):
3556
3555
  request['price'] = self.price_to_precision(symbol, price)
3557
3556
  # flag values may be summed to combine flags
3558
3557
  flags = 0
ccxt/bitfinex1.py CHANGED
@@ -1247,7 +1247,6 @@ class bitfinex1(Exchange, ImplicitAPI):
1247
1247
  'postOnly': None,
1248
1248
  'side': side,
1249
1249
  'price': self.safe_string(order, 'price'),
1250
- 'stopPrice': None,
1251
1250
  'triggerPrice': None,
1252
1251
  'average': self.safe_string(order, 'avg_execution_price'),
1253
1252
  'amount': self.safe_string(order, 'original_amount'),
ccxt/bitflyer.py CHANGED
@@ -638,7 +638,6 @@ class bitflyer(Exchange, ImplicitAPI):
638
638
  'postOnly': None,
639
639
  'side': side,
640
640
  'price': price,
641
- 'stopPrice': None,
642
641
  'triggerPrice': None,
643
642
  'cost': None,
644
643
  'amount': amount,
ccxt/bitget.py CHANGED
@@ -1264,6 +1264,7 @@ class bitget(Exchange, ImplicitAPI):
1264
1264
  '41103': InvalidOrder, # {"code":"41103","msg":"param price scale error error","requestTime":1725635883561,"data":null}
1265
1265
  '41114': OnMaintenance, # {"code":"41114","msg":"The current trading pair is under maintenance, please refer to the official announcement for the opening time","requestTime":1679196062544,"data":null}
1266
1266
  '43011': InvalidOrder, # The parameter does not meet the specification executePrice <= 0
1267
+ '43001': OrderNotFound,
1267
1268
  '43012': InsufficientFunds, # {"code":"43012","msg":"Insufficient balance","requestTime":1711648951774,"data":null}
1268
1269
  '43025': InvalidOrder, # Plan order does not exist
1269
1270
  '43115': OnMaintenance, # {"code":"43115","msg":"The current trading pair is opening soon, please refer to the official announcement for the opening time","requestTime":1688907202434,"data":null}
@@ -4102,7 +4103,6 @@ class bitget(Exchange, ImplicitAPI):
4102
4103
  'timeInForce': timeInForce,
4103
4104
  'postOnly': postOnly,
4104
4105
  'reduceOnly': reduceOnly,
4105
- 'stopPrice': self.safe_number(order, 'triggerPrice'),
4106
4106
  'triggerPrice': self.safe_number(order, 'triggerPrice'),
4107
4107
  'takeProfitPrice': self.safe_number_2(order, 'presetStopSurplusPrice', 'stopSurplusTriggerPrice'),
4108
4108
  'stopLossPrice': self.safe_number_2(order, 'presetStopLossPrice', 'stopLossTriggerPrice'),
@@ -5712,7 +5712,7 @@ class bitget(Exchange, ImplicitAPI):
5712
5712
  :param str [params.symbol]: *contract only* unified market symbol
5713
5713
  :param str [params.productType]: *contract only* 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
5714
5714
  :param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
5715
- :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger-structure>`
5715
+ :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger>`
5716
5716
  """
5717
5717
  self.load_markets()
5718
5718
  symbol = self.safe_string(params, 'symbol')