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.
- ccxt/__init__.py +1 -1
- ccxt/abstract/bitmart.py +2 -0
- ccxt/abstract/okx.py +5 -0
- ccxt/ascendex.py +9 -9
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/ascendex.py +9 -9
- ccxt/async_support/base/exchange.py +10 -3
- ccxt/async_support/base/ws/aiohttp_client.py +2 -2
- ccxt/async_support/binance.py +37 -41
- ccxt/async_support/bingx.py +4 -3
- ccxt/async_support/bit2c.py +0 -1
- ccxt/async_support/bitbank.py +0 -1
- ccxt/async_support/bitbns.py +0 -1
- ccxt/async_support/bitfinex.py +16 -17
- ccxt/async_support/bitfinex1.py +0 -1
- ccxt/async_support/bitflyer.py +0 -1
- ccxt/async_support/bitget.py +2 -2
- ccxt/async_support/bithumb.py +0 -1
- ccxt/async_support/bitmart.py +246 -6
- ccxt/async_support/bitmex.py +5 -6
- ccxt/async_support/bitopro.py +4 -5
- ccxt/async_support/bitrue.py +5 -7
- ccxt/async_support/bitso.py +1 -2
- ccxt/async_support/bitstamp.py +1 -2
- ccxt/async_support/bitteam.py +1 -3
- ccxt/async_support/bitvavo.py +2 -4
- ccxt/async_support/blockchaincom.py +5 -5
- ccxt/async_support/blofin.py +10 -10
- ccxt/async_support/btcalpha.py +0 -1
- ccxt/async_support/btcbox.py +0 -1
- ccxt/async_support/btcmarkets.py +1 -3
- ccxt/async_support/bybit.py +10 -11
- ccxt/async_support/cex.py +1 -1
- ccxt/async_support/coinbase.py +77 -1
- ccxt/async_support/coinbaseexchange.py +1 -1
- ccxt/async_support/coinbaseinternational.py +62 -0
- ccxt/async_support/coincatch.py +1 -1
- ccxt/async_support/coinex.py +9 -9
- ccxt/async_support/coinlist.py +1 -1
- ccxt/async_support/coinmetro.py +1 -1
- ccxt/async_support/cryptocom.py +91 -2
- ccxt/async_support/currencycom.py +1 -1
- ccxt/async_support/defx.py +1 -2
- ccxt/async_support/delta.py +1 -1
- ccxt/async_support/digifinex.py +1 -1
- ccxt/async_support/exmo.py +62 -6
- ccxt/async_support/gate.py +2 -2
- ccxt/async_support/hashkey.py +3 -5
- ccxt/async_support/htx.py +2 -2
- ccxt/async_support/hyperliquid.py +61 -2
- ccxt/async_support/kraken.py +124 -26
- ccxt/async_support/kucoin.py +29 -25
- ccxt/async_support/luno.py +1 -1
- ccxt/async_support/mexc.py +137 -1
- ccxt/async_support/ndax.py +1 -1
- ccxt/async_support/okcoin.py +18 -18
- ccxt/async_support/okx.py +27 -22
- ccxt/async_support/phemex.py +12 -8
- ccxt/async_support/poloniex.py +1 -1
- ccxt/async_support/poloniexfutures.py +6 -6
- ccxt/async_support/vertex.py +11 -11
- ccxt/async_support/woo.py +33 -33
- ccxt/async_support/woofipro.py +24 -24
- ccxt/async_support/xt.py +29 -27
- ccxt/async_support/zonda.py +1 -1
- ccxt/base/exchange.py +31 -19
- ccxt/base/types.py +10 -0
- ccxt/binance.py +37 -41
- ccxt/bingx.py +4 -3
- ccxt/bit2c.py +0 -1
- ccxt/bitbank.py +0 -1
- ccxt/bitbns.py +0 -1
- ccxt/bitfinex.py +16 -17
- ccxt/bitfinex1.py +0 -1
- ccxt/bitflyer.py +0 -1
- ccxt/bitget.py +2 -2
- ccxt/bithumb.py +0 -1
- ccxt/bitmart.py +246 -6
- ccxt/bitmex.py +5 -6
- ccxt/bitopro.py +4 -5
- ccxt/bitrue.py +5 -7
- ccxt/bitso.py +1 -2
- ccxt/bitstamp.py +1 -2
- ccxt/bitteam.py +1 -3
- ccxt/bitvavo.py +2 -4
- ccxt/blockchaincom.py +5 -5
- ccxt/blofin.py +10 -10
- ccxt/btcalpha.py +0 -1
- ccxt/btcbox.py +0 -1
- ccxt/btcmarkets.py +1 -3
- ccxt/bybit.py +10 -11
- ccxt/cex.py +1 -1
- ccxt/coinbase.py +77 -1
- ccxt/coinbaseexchange.py +1 -1
- ccxt/coinbaseinternational.py +62 -0
- ccxt/coincatch.py +1 -1
- ccxt/coinex.py +9 -9
- ccxt/coinlist.py +1 -1
- ccxt/coinmetro.py +1 -1
- ccxt/cryptocom.py +91 -2
- ccxt/currencycom.py +1 -1
- ccxt/defx.py +1 -2
- ccxt/delta.py +1 -1
- ccxt/digifinex.py +1 -1
- ccxt/exmo.py +62 -6
- ccxt/gate.py +2 -2
- ccxt/hashkey.py +3 -5
- ccxt/htx.py +2 -2
- ccxt/hyperliquid.py +61 -2
- ccxt/kraken.py +124 -26
- ccxt/kucoin.py +29 -25
- ccxt/luno.py +1 -1
- ccxt/mexc.py +137 -1
- ccxt/ndax.py +1 -1
- ccxt/okcoin.py +18 -18
- ccxt/okx.py +27 -22
- ccxt/phemex.py +12 -8
- ccxt/poloniex.py +1 -1
- ccxt/poloniexfutures.py +6 -6
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/bitget.py +1 -1
- ccxt/pro/bybit.py +12 -1
- ccxt/pro/coinex.py +2 -2
- ccxt/pro/gate.py +6 -6
- ccxt/pro/kucoin.py +3 -3
- ccxt/pro/okx.py +11 -11
- ccxt/pro/upbit.py +2 -2
- ccxt/vertex.py +11 -11
- ccxt/woo.py +33 -33
- ccxt/woofipro.py +24 -24
- ccxt/xt.py +29 -27
- ccxt/zonda.py +1 -1
- {ccxt-4.4.39.dist-info → ccxt-4.4.41.dist-info}/METADATA +4 -4
- {ccxt-4.4.39.dist-info → ccxt-4.4.41.dist-info}/RECORD +137 -137
- {ccxt-4.4.39.dist-info → ccxt-4.4.41.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.4.39.dist-info → ccxt-4.4.41.dist-info}/WHEEL +0 -0
- {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.
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
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 =
|
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
|
-
|
5066
|
-
if
|
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 + '
|
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
|
-
|
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
|
-
|
5111
|
+
triggerPriceIsRequired = True
|
5112
5112
|
quantityIsRequired = True
|
5113
5113
|
elif (uppercaseType == 'STOP_LOSS_LIMIT') or (uppercaseType == 'TAKE_PROFIT_LIMIT'):
|
5114
5114
|
quantityIsRequired = True
|
5115
|
-
|
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
|
5130
|
-
if
|
5131
|
-
raise InvalidOrder(self.id + ' editOrder() requires a
|
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,
|
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
|
-
|
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':
|
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
|
6013
|
-
|
6014
|
-
|
6015
|
-
|
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 + '
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
6204
|
+
if triggerPriceIsRequired:
|
6209
6205
|
if market['contract']:
|
6210
6206
|
if stopPrice is None:
|
6211
|
-
raise InvalidOrder(self.id + ' createOrder() requires a
|
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
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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
|
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
|
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.
|
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.
|
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.
|
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
ccxt/bitbank.py
CHANGED
ccxt/bitbns.py
CHANGED
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
|
-
|
1486
|
+
triggerPrice = None
|
1487
1487
|
if (orderType == 'EXCHANGE STOP') or (orderType == 'EXCHANGE STOP LIMIT'):
|
1488
1488
|
price = None
|
1489
|
-
|
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
|
-
'
|
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.
|
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
|
-
|
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
|
1561
|
+
elif triggerPrice is not None:
|
1563
1562
|
# request['price'] is taken for stop orders
|
1564
|
-
request['price'] = self.price_to_precision(symbol,
|
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 (
|
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.
|
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
|
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.
|
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.
|
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
|
-
|
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
|
3548
|
+
elif triggerPrice is not None:
|
3550
3549
|
# request['price'] is taken for stop orders
|
3551
|
-
request['price'] = self.price_to_precision(symbol,
|
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 (
|
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
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
|
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')
|