ccxt 4.4.82__py2.py3-none-any.whl → 4.4.85__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 -5
- ccxt/abstract/blofin.py +8 -0
- ccxt/abstract/btcbox.py +1 -0
- ccxt/apex.py +2 -1
- ccxt/async_support/__init__.py +1 -5
- ccxt/async_support/apex.py +2 -1
- ccxt/async_support/base/exchange.py +26 -3
- ccxt/async_support/base/ws/cache.py +6 -1
- ccxt/async_support/bitget.py +1 -2
- ccxt/async_support/bitrue.py +14 -32
- ccxt/async_support/bitso.py +33 -0
- ccxt/async_support/bitstamp.py +33 -0
- ccxt/async_support/blofin.py +145 -14
- ccxt/async_support/btcbox.py +25 -5
- ccxt/async_support/bybit.py +16 -37
- ccxt/async_support/cex.py +2 -4
- ccxt/async_support/coinbase.py +56 -42
- ccxt/async_support/coinbaseexchange.py +141 -32
- ccxt/async_support/coincatch.py +14 -67
- ccxt/async_support/coinex.py +28 -29
- ccxt/async_support/coinlist.py +17 -16
- ccxt/async_support/coinmetro.py +20 -11
- ccxt/async_support/coinone.py +8 -10
- ccxt/async_support/coinsph.py +124 -2
- ccxt/async_support/cryptocom.py +109 -2
- ccxt/async_support/cryptomus.py +42 -80
- ccxt/async_support/delta.py +75 -36
- ccxt/async_support/derive.py +46 -10
- ccxt/async_support/ellipx.py +175 -77
- ccxt/async_support/gate.py +1 -1
- ccxt/async_support/gemini.py +3 -4
- ccxt/async_support/hitbtc.py +56 -65
- ccxt/async_support/hyperliquid.py +2 -2
- ccxt/async_support/kraken.py +27 -23
- ccxt/async_support/kucoinfutures.py +5 -0
- ccxt/async_support/lbank.py +1 -1
- ccxt/async_support/paradex.py +120 -4
- ccxt/base/exchange.py +21 -2
- ccxt/base/types.py +3 -0
- ccxt/bitget.py +1 -2
- ccxt/bitrue.py +14 -32
- ccxt/bitso.py +33 -0
- ccxt/bitstamp.py +33 -0
- ccxt/blofin.py +145 -14
- ccxt/btcbox.py +24 -5
- ccxt/bybit.py +16 -37
- ccxt/cex.py +2 -4
- ccxt/coinbase.py +56 -42
- ccxt/coinbaseexchange.py +141 -32
- ccxt/coincatch.py +14 -67
- ccxt/coinex.py +28 -29
- ccxt/coinlist.py +17 -16
- ccxt/coinmetro.py +20 -11
- ccxt/coinone.py +8 -10
- ccxt/coinsph.py +124 -2
- ccxt/cryptocom.py +109 -2
- ccxt/cryptomus.py +42 -80
- ccxt/delta.py +75 -36
- ccxt/derive.py +46 -10
- ccxt/ellipx.py +175 -77
- ccxt/gate.py +1 -1
- ccxt/gemini.py +3 -4
- ccxt/hitbtc.py +56 -65
- ccxt/hyperliquid.py +2 -2
- ccxt/kraken.py +27 -23
- ccxt/kucoinfutures.py +5 -0
- ccxt/lbank.py +1 -1
- ccxt/paradex.py +120 -4
- ccxt/pro/__init__.py +69 -3
- ccxt/pro/binance.py +31 -33
- ccxt/pro/bithumb.py +5 -3
- ccxt/pro/kraken.py +249 -79
- ccxt/pro/mexc.py +252 -7
- ccxt/pro/poloniex.py +6 -2
- {ccxt-4.4.82.dist-info → ccxt-4.4.85.dist-info}/METADATA +7 -9
- {ccxt-4.4.82.dist-info → ccxt-4.4.85.dist-info}/RECORD +79 -87
- ccxt/abstract/bl3p.py +0 -19
- ccxt/abstract/idex.py +0 -26
- ccxt/async_support/base/ws/fast_client.py +0 -97
- ccxt/async_support/bl3p.py +0 -543
- ccxt/async_support/idex.py +0 -1889
- ccxt/bl3p.py +0 -543
- ccxt/idex.py +0 -1889
- ccxt/pro/idex.py +0 -687
- {ccxt-4.4.82.dist-info → ccxt-4.4.85.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.4.82.dist-info → ccxt-4.4.85.dist-info}/WHEEL +0 -0
- {ccxt-4.4.82.dist-info → ccxt-4.4.85.dist-info}/top_level.txt +0 -0
ccxt/async_support/lbank.py
CHANGED
@@ -876,7 +876,7 @@ class lbank(Exchange, ImplicitAPI):
|
|
876
876
|
timestamp = self.milliseconds()
|
877
877
|
if market['swap']:
|
878
878
|
return self.parse_order_book(orderbook, market['symbol'], timestamp, 'bids', 'asks', 'price', 'volume')
|
879
|
-
return self.parse_order_book(orderbook, market['symbol'], timestamp)
|
879
|
+
return self.parse_order_book(orderbook, market['symbol'], timestamp, 'bids', 'asks', 1, 0)
|
880
880
|
|
881
881
|
def parse_trade(self, trade: dict, market: Market = None) -> Trade:
|
882
882
|
#
|
ccxt/async_support/paradex.py
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.paradex import ImplicitAPI
|
8
|
-
from ccxt.base.types import Any, Balances, Currency, Int, Leverage, MarginMode, Market, Num, Order, OrderBook, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, Transaction
|
8
|
+
from ccxt.base.types import Any, Balances, Currency, Greeks, Int, Leverage, MarginMode, Market, Num, Order, OrderBook, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, Transaction
|
9
9
|
from typing import List
|
10
10
|
from ccxt.base.errors import ExchangeError
|
11
11
|
from ccxt.base.errors import AuthenticationError
|
@@ -75,6 +75,7 @@ class paradex(Exchange, ImplicitAPI):
|
|
75
75
|
'fetchFundingRate': False,
|
76
76
|
'fetchFundingRateHistory': False,
|
77
77
|
'fetchFundingRates': False,
|
78
|
+
'fetchGreeks': True,
|
78
79
|
'fetchIndexOHLCV': False,
|
79
80
|
'fetchIsolatedBorrowRate': False,
|
80
81
|
'fetchIsolatedBorrowRates': False,
|
@@ -558,13 +559,14 @@ class paradex(Exchange, ImplicitAPI):
|
|
558
559
|
expiry = self.safe_integer(market, 'expiry_at')
|
559
560
|
optionType = self.safe_string(market, 'option_type')
|
560
561
|
strikePrice = self.safe_string(market, 'strike_price')
|
562
|
+
takerFee = self.parse_number('0.0003')
|
563
|
+
makerFee = self.parse_number('-0.00005')
|
561
564
|
if isOption:
|
562
565
|
optionTypeSuffix = 'C' if (optionType == 'CALL') else 'P'
|
563
566
|
symbol = symbol + '-' + strikePrice + '-' + optionTypeSuffix
|
567
|
+
makerFee = self.parse_number('0.0003')
|
564
568
|
else:
|
565
569
|
expiry = None
|
566
|
-
takerFee = self.parse_number('0.0003')
|
567
|
-
makerFee = self.parse_number('-0.00005')
|
568
570
|
return self.safe_market_structure({
|
569
571
|
'id': marketId,
|
570
572
|
'symbol': symbol,
|
@@ -1262,7 +1264,7 @@ class paradex(Exchange, ImplicitAPI):
|
|
1262
1264
|
'status': self.parse_order_status(status),
|
1263
1265
|
'symbol': symbol,
|
1264
1266
|
'type': self.parse_order_type(orderType),
|
1265
|
-
'timeInForce': self.parse_time_in_force(self.safe_string(order, '
|
1267
|
+
'timeInForce': self.parse_time_in_force(self.safe_string(order, 'instruction')),
|
1266
1268
|
'postOnly': None,
|
1267
1269
|
'reduceOnly': reduceOnly,
|
1268
1270
|
'side': side,
|
@@ -2284,6 +2286,120 @@ class paradex(Exchange, ImplicitAPI):
|
|
2284
2286
|
}
|
2285
2287
|
return await self.privatePostAccountMarginMarket(self.extend(request, params))
|
2286
2288
|
|
2289
|
+
async def fetch_greeks(self, symbol: str, params={}) -> Greeks:
|
2290
|
+
"""
|
2291
|
+
fetches an option contracts greeks, financial metrics used to measure the factors that affect the price of an options contract
|
2292
|
+
|
2293
|
+
https://docs.api.testnet.paradex.trade/#list-available-markets-summary
|
2294
|
+
|
2295
|
+
:param str symbol: unified symbol of the market to fetch greeks for
|
2296
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
2297
|
+
:returns dict: a `greeks structure <https://docs.ccxt.com/#/?id=greeks-structure>`
|
2298
|
+
"""
|
2299
|
+
await self.load_markets()
|
2300
|
+
market = self.market(symbol)
|
2301
|
+
request: dict = {
|
2302
|
+
'market': market['id'],
|
2303
|
+
}
|
2304
|
+
response = await self.publicGetMarketsSummary(self.extend(request, params))
|
2305
|
+
#
|
2306
|
+
# {
|
2307
|
+
# "results": [
|
2308
|
+
# {
|
2309
|
+
# "symbol": "BTC-USD-114000-P",
|
2310
|
+
# "mark_price": "10835.66892602",
|
2311
|
+
# "mark_iv": "0.71781855",
|
2312
|
+
# "delta": "-0.98726024",
|
2313
|
+
# "greeks": {
|
2314
|
+
# "delta": "-0.9872602390817709",
|
2315
|
+
# "gamma": "0.000004560958862297231",
|
2316
|
+
# "vega": "227.11344863639806",
|
2317
|
+
# "rho": "-302.0617972461581",
|
2318
|
+
# "vanna": "0.06609830491614832",
|
2319
|
+
# "volga": "925.9501532805552"
|
2320
|
+
# },
|
2321
|
+
# "last_traded_price": "10551.5",
|
2322
|
+
# "bid": "10794.9",
|
2323
|
+
# "bid_iv": "0.05",
|
2324
|
+
# "ask": "10887.3",
|
2325
|
+
# "ask_iv": "0.8783283",
|
2326
|
+
# "last_iv": "0.05",
|
2327
|
+
# "volume_24h": "0",
|
2328
|
+
# "total_volume": "195240.72672261014",
|
2329
|
+
# "created_at": 1747644009995,
|
2330
|
+
# "underlying_price": "103164.79162649",
|
2331
|
+
# "open_interest": "0",
|
2332
|
+
# "funding_rate": "0.000004464241170536191",
|
2333
|
+
# "price_change_rate_24h": "0.074915",
|
2334
|
+
# "future_funding_rate": "0.0001"
|
2335
|
+
# }
|
2336
|
+
# ]
|
2337
|
+
# }
|
2338
|
+
#
|
2339
|
+
data = self.safe_list(response, 'results', [])
|
2340
|
+
greeks = self.safe_dict(data, 0, {})
|
2341
|
+
return self.parse_greeks(greeks, market)
|
2342
|
+
|
2343
|
+
def parse_greeks(self, greeks: dict, market: Market = None) -> Greeks:
|
2344
|
+
#
|
2345
|
+
# {
|
2346
|
+
# "symbol": "BTC-USD-114000-P",
|
2347
|
+
# "mark_price": "10835.66892602",
|
2348
|
+
# "mark_iv": "0.71781855",
|
2349
|
+
# "delta": "-0.98726024",
|
2350
|
+
# "greeks": {
|
2351
|
+
# "delta": "-0.9872602390817709",
|
2352
|
+
# "gamma": "0.000004560958862297231",
|
2353
|
+
# "vega": "227.11344863639806",
|
2354
|
+
# "rho": "-302.0617972461581",
|
2355
|
+
# "vanna": "0.06609830491614832",
|
2356
|
+
# "volga": "925.9501532805552"
|
2357
|
+
# },
|
2358
|
+
# "last_traded_price": "10551.5",
|
2359
|
+
# "bid": "10794.9",
|
2360
|
+
# "bid_iv": "0.05",
|
2361
|
+
# "ask": "10887.3",
|
2362
|
+
# "ask_iv": "0.8783283",
|
2363
|
+
# "last_iv": "0.05",
|
2364
|
+
# "volume_24h": "0",
|
2365
|
+
# "total_volume": "195240.72672261014",
|
2366
|
+
# "created_at": 1747644009995,
|
2367
|
+
# "underlying_price": "103164.79162649",
|
2368
|
+
# "open_interest": "0",
|
2369
|
+
# "funding_rate": "0.000004464241170536191",
|
2370
|
+
# "price_change_rate_24h": "0.074915",
|
2371
|
+
# "future_funding_rate": "0.0001"
|
2372
|
+
# }
|
2373
|
+
#
|
2374
|
+
marketId = self.safe_string(greeks, 'symbol')
|
2375
|
+
market = self.safe_market(marketId, market, None, 'option')
|
2376
|
+
symbol = market['symbol']
|
2377
|
+
timestamp = self.safe_integer(greeks, 'created_at')
|
2378
|
+
greeksData = self.safe_dict(greeks, 'greeks', {})
|
2379
|
+
return {
|
2380
|
+
'symbol': symbol,
|
2381
|
+
'timestamp': timestamp,
|
2382
|
+
'datetime': self.iso8601(timestamp),
|
2383
|
+
'delta': self.safe_number(greeksData, 'delta'),
|
2384
|
+
'gamma': self.safe_number(greeksData, 'gamma'),
|
2385
|
+
'theta': None,
|
2386
|
+
'vega': self.safe_number(greeksData, 'vega'),
|
2387
|
+
'rho': self.safe_number(greeksData, 'rho'),
|
2388
|
+
'vanna': self.safe_number(greeksData, 'vanna'),
|
2389
|
+
'volga': self.safe_number(greeksData, 'volga'),
|
2390
|
+
'bidSize': None,
|
2391
|
+
'askSize': None,
|
2392
|
+
'bidImpliedVolatility': self.safe_number(greeks, 'bid_iv'),
|
2393
|
+
'askImpliedVolatility': self.safe_number(greeks, 'ask_iv'),
|
2394
|
+
'markImpliedVolatility': self.safe_number(greeks, 'mark_iv'),
|
2395
|
+
'bidPrice': self.safe_number(greeks, 'bid'),
|
2396
|
+
'askPrice': self.safe_number(greeks, 'ask'),
|
2397
|
+
'markPrice': self.safe_number(greeks, 'mark_price'),
|
2398
|
+
'lastPrice': self.safe_number(greeks, 'last_traded_price'),
|
2399
|
+
'underlyingPrice': self.safe_number(greeks, 'underlying_price'),
|
2400
|
+
'info': greeks,
|
2401
|
+
}
|
2402
|
+
|
2287
2403
|
def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
|
2288
2404
|
url = self.implode_hostname(self.urls['api'][self.version]) + '/' + self.implode_params(path, params)
|
2289
2405
|
query = self.omit(params, self.extract_params(path))
|
ccxt/base/exchange.py
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
# -----------------------------------------------------------------------------
|
6
6
|
|
7
|
-
__version__ = '4.4.
|
7
|
+
__version__ = '4.4.85'
|
8
8
|
|
9
9
|
# -----------------------------------------------------------------------------
|
10
10
|
|
@@ -1506,6 +1506,25 @@ class Exchange(object):
|
|
1506
1506
|
return len(parts[1]) if len(parts) > 1 else 0
|
1507
1507
|
|
1508
1508
|
def load_markets(self, reload=False, params={}):
|
1509
|
+
"""
|
1510
|
+
Loads and prepares the markets for trading.
|
1511
|
+
|
1512
|
+
Args:
|
1513
|
+
reload (bool): If True, the markets will be reloaded from the exchange.
|
1514
|
+
params (dict): Additional exchange-specific parameters for the request.
|
1515
|
+
|
1516
|
+
Returns:
|
1517
|
+
dict: A dictionary of markets.
|
1518
|
+
|
1519
|
+
Raises:
|
1520
|
+
Exception: If the markets cannot be loaded or prepared.
|
1521
|
+
|
1522
|
+
Notes:
|
1523
|
+
It ensures that the markets are only loaded once, even if called multiple times.
|
1524
|
+
If the markets are already loaded and `reload` is False or not provided, it returns the existing markets.
|
1525
|
+
If a reload is in progress, it waits for completion before returning.
|
1526
|
+
If an error occurs during loading or preparation, an exception is raised.
|
1527
|
+
"""
|
1509
1528
|
if not reload:
|
1510
1529
|
if self.markets:
|
1511
1530
|
if not self.markets_by_id:
|
@@ -3008,7 +3027,7 @@ class Exchange(object):
|
|
3008
3027
|
currency['networks'][key]['active'] = True
|
3009
3028
|
elif deposit is not None and withdraw is not None:
|
3010
3029
|
currency['networks'][key]['active'] = False
|
3011
|
-
active = self.safe_bool(
|
3030
|
+
active = self.safe_bool(currency['networks'][key], 'active') # dict might have been updated on above lines, so access directly instead of `network` variable
|
3012
3031
|
currencyActive = self.safe_bool(currency, 'active')
|
3013
3032
|
if currencyActive is None or active:
|
3014
3033
|
currency['active'] = active
|
ccxt/base/types.py
CHANGED
ccxt/bitget.py
CHANGED
@@ -2071,8 +2071,7 @@ class bitget(Exchange, ImplicitAPI):
|
|
2071
2071
|
chain = chains[j]
|
2072
2072
|
networkId = self.safe_string(chain, 'chain')
|
2073
2073
|
network = self.network_id_to_code(networkId, code)
|
2074
|
-
|
2075
|
-
network = network.upper()
|
2074
|
+
network = network.upper()
|
2076
2075
|
networks[network] = {
|
2077
2076
|
'info': chain,
|
2078
2077
|
'id': networkId,
|
ccxt/bitrue.py
CHANGED
@@ -782,66 +782,48 @@ class bitrue(Exchange, ImplicitAPI):
|
|
782
782
|
id = self.safe_string(currency, 'coin')
|
783
783
|
name = self.safe_string(currency, 'coinFulName')
|
784
784
|
code = self.safe_currency_code(id)
|
785
|
-
deposit = None
|
786
|
-
withdraw = None
|
787
|
-
minWithdrawString = None
|
788
|
-
maxWithdrawString = None
|
789
|
-
minWithdrawFeeString = None
|
790
785
|
networkDetails = self.safe_list(currency, 'chainDetail', [])
|
791
786
|
networks: dict = {}
|
792
787
|
for j in range(0, len(networkDetails)):
|
793
788
|
entry = networkDetails[j]
|
794
789
|
networkId = self.safe_string(entry, 'chain')
|
795
790
|
network = self.network_id_to_code(networkId, code)
|
796
|
-
enableDeposit = self.safe_bool(entry, 'enableDeposit')
|
797
|
-
deposit = enableDeposit if (enableDeposit) else deposit
|
798
|
-
enableWithdraw = self.safe_bool(entry, 'enableWithdraw')
|
799
|
-
withdraw = enableWithdraw if (enableWithdraw) else withdraw
|
800
|
-
networkWithdrawFeeString = self.safe_string(entry, 'withdrawFee')
|
801
|
-
if networkWithdrawFeeString is not None:
|
802
|
-
minWithdrawFeeString = networkWithdrawFeeString if (minWithdrawFeeString is None) else Precise.string_min(networkWithdrawFeeString, minWithdrawFeeString)
|
803
|
-
networkMinWithdrawString = self.safe_string(entry, 'minWithdraw')
|
804
|
-
if networkMinWithdrawString is not None:
|
805
|
-
minWithdrawString = networkMinWithdrawString if (minWithdrawString is None) else Precise.string_min(networkMinWithdrawString, minWithdrawString)
|
806
|
-
networkMaxWithdrawString = self.safe_string(entry, 'maxWithdraw')
|
807
|
-
if networkMaxWithdrawString is not None:
|
808
|
-
maxWithdrawString = networkMaxWithdrawString if (maxWithdrawString is None) else Precise.string_max(networkMaxWithdrawString, maxWithdrawString)
|
809
791
|
networks[network] = {
|
810
792
|
'info': entry,
|
811
793
|
'id': networkId,
|
812
794
|
'network': network,
|
813
|
-
'deposit': enableDeposit,
|
814
|
-
'withdraw': enableWithdraw,
|
815
|
-
'active':
|
816
|
-
'fee': self.
|
795
|
+
'deposit': self.safe_bool(entry, 'enableDeposit'),
|
796
|
+
'withdraw': self.safe_bool(entry, 'enableWithdraw'),
|
797
|
+
'active': None,
|
798
|
+
'fee': self.safe_number(entry, 'withdrawFee'),
|
817
799
|
'precision': None,
|
818
800
|
'limits': {
|
819
801
|
'withdraw': {
|
820
|
-
'min': self.
|
821
|
-
'max': self.
|
802
|
+
'min': self.safe_number(entry, 'minWithdraw'),
|
803
|
+
'max': self.safe_number(entry, 'maxWithdraw'),
|
822
804
|
},
|
823
805
|
},
|
824
806
|
}
|
825
|
-
result[code] = {
|
807
|
+
result[code] = self.safe_currency_structure({
|
826
808
|
'id': id,
|
827
809
|
'name': name,
|
828
810
|
'code': code,
|
829
811
|
'precision': None,
|
830
812
|
'info': currency,
|
831
|
-
'active':
|
832
|
-
'deposit':
|
833
|
-
'withdraw':
|
813
|
+
'active': None,
|
814
|
+
'deposit': None,
|
815
|
+
'withdraw': None,
|
834
816
|
'networks': networks,
|
835
|
-
'fee':
|
817
|
+
'fee': None,
|
836
818
|
'fees': None,
|
837
819
|
'type': 'crypto',
|
838
820
|
'limits': {
|
839
821
|
'withdraw': {
|
840
|
-
'min':
|
841
|
-
'max':
|
822
|
+
'min': None,
|
823
|
+
'max': None,
|
842
824
|
},
|
843
825
|
},
|
844
|
-
}
|
826
|
+
})
|
845
827
|
return result
|
846
828
|
|
847
829
|
def fetch_markets(self, params={}) -> List[Market]:
|
ccxt/bitso.py
CHANGED
@@ -36,6 +36,9 @@ class bitso(Exchange, ImplicitAPI):
|
|
36
36
|
'future': False,
|
37
37
|
'option': False,
|
38
38
|
'addMargin': False,
|
39
|
+
'borrowCrossMargin': False,
|
40
|
+
'borrowIsolatedMargin': False,
|
41
|
+
'borrowMargin': False,
|
39
42
|
'cancelAllOrders': True,
|
40
43
|
'cancelOrder': True,
|
41
44
|
'cancelOrders': True,
|
@@ -43,11 +46,17 @@ class bitso(Exchange, ImplicitAPI):
|
|
43
46
|
'closePosition': False,
|
44
47
|
'createDepositAddress': False,
|
45
48
|
'createOrder': True,
|
49
|
+
'createOrderWithTakeProfitAndStopLoss': False,
|
50
|
+
'createOrderWithTakeProfitAndStopLossWs': False,
|
46
51
|
'createReduceOnlyOrder': False,
|
47
52
|
'fetchAccounts': False,
|
48
53
|
'fetchBalance': True,
|
54
|
+
'fetchBorrowInterest': False,
|
55
|
+
'fetchBorrowRate': False,
|
49
56
|
'fetchBorrowRateHistories': False,
|
50
57
|
'fetchBorrowRateHistory': False,
|
58
|
+
'fetchBorrowRates': False,
|
59
|
+
'fetchBorrowRatesPerSymbol': False,
|
51
60
|
'fetchCrossBorrowRate': False,
|
52
61
|
'fetchCrossBorrowRates': False,
|
53
62
|
'fetchDeposit': True,
|
@@ -59,21 +68,40 @@ class bitso(Exchange, ImplicitAPI):
|
|
59
68
|
'fetchDepositWithdrawFee': 'emulated',
|
60
69
|
'fetchDepositWithdrawFees': True,
|
61
70
|
'fetchFundingHistory': False,
|
71
|
+
'fetchFundingInterval': False,
|
72
|
+
'fetchFundingIntervals': False,
|
62
73
|
'fetchFundingRate': False,
|
63
74
|
'fetchFundingRateHistory': False,
|
64
75
|
'fetchFundingRates': False,
|
76
|
+
'fetchGreeks': False,
|
65
77
|
'fetchIndexOHLCV': False,
|
66
78
|
'fetchIsolatedBorrowRate': False,
|
67
79
|
'fetchIsolatedBorrowRates': False,
|
80
|
+
'fetchIsolatedPositions': False,
|
68
81
|
'fetchLedger': True,
|
69
82
|
'fetchLeverage': False,
|
83
|
+
'fetchLeverages': False,
|
84
|
+
'fetchLeverageTiers': False,
|
85
|
+
'fetchLiquidations': False,
|
86
|
+
'fetchLongShortRatio': False,
|
87
|
+
'fetchLongShortRatioHistory': False,
|
88
|
+
'fetchMarginAdjustmentHistory': False,
|
70
89
|
'fetchMarginMode': False,
|
90
|
+
'fetchMarginModes': False,
|
91
|
+
'fetchMarketLeverageTiers': False,
|
71
92
|
'fetchMarkets': True,
|
72
93
|
'fetchMarkOHLCV': False,
|
94
|
+
'fetchMarkPrices': False,
|
95
|
+
'fetchMyLiquidations': False,
|
96
|
+
'fetchMySettlementHistory': False,
|
73
97
|
'fetchMyTrades': True,
|
74
98
|
'fetchOHLCV': True,
|
99
|
+
'fetchOpenInterest': False,
|
75
100
|
'fetchOpenInterestHistory': False,
|
101
|
+
'fetchOpenInterests': False,
|
76
102
|
'fetchOpenOrders': True,
|
103
|
+
'fetchOption': False,
|
104
|
+
'fetchOptionChain': False,
|
77
105
|
'fetchOrder': True,
|
78
106
|
'fetchOrderBook': True,
|
79
107
|
'fetchOrderTrades': True,
|
@@ -85,6 +113,7 @@ class bitso(Exchange, ImplicitAPI):
|
|
85
113
|
'fetchPositionsHistory': False,
|
86
114
|
'fetchPositionsRisk': False,
|
87
115
|
'fetchPremiumIndexOHLCV': False,
|
116
|
+
'fetchSettlementHistory': False,
|
88
117
|
'fetchTicker': True,
|
89
118
|
'fetchTickers': False,
|
90
119
|
'fetchTime': False,
|
@@ -96,8 +125,12 @@ class bitso(Exchange, ImplicitAPI):
|
|
96
125
|
'fetchTransactions': False,
|
97
126
|
'fetchTransfer': False,
|
98
127
|
'fetchTransfers': False,
|
128
|
+
'fetchVolatilityHistory': False,
|
99
129
|
'reduceMargin': False,
|
130
|
+
'repayCrossMargin': False,
|
131
|
+
'repayIsolatedMargin': False,
|
100
132
|
'setLeverage': False,
|
133
|
+
'setMargin': False,
|
101
134
|
'setMarginMode': False,
|
102
135
|
'setPositionMode': False,
|
103
136
|
'transfer': False,
|
ccxt/bitstamp.py
CHANGED
@@ -44,18 +44,27 @@ class bitstamp(Exchange, ImplicitAPI):
|
|
44
44
|
'future': False,
|
45
45
|
'option': False,
|
46
46
|
'addMargin': False,
|
47
|
+
'borrowCrossMargin': False,
|
48
|
+
'borrowIsolatedMargin': False,
|
49
|
+
'borrowMargin': False,
|
47
50
|
'cancelAllOrders': True,
|
48
51
|
'cancelOrder': True,
|
49
52
|
'closeAllPositions': False,
|
50
53
|
'closePosition': False,
|
51
54
|
'createOrder': True,
|
55
|
+
'createOrderWithTakeProfitAndStopLoss': False,
|
56
|
+
'createOrderWithTakeProfitAndStopLossWs': False,
|
52
57
|
'createReduceOnlyOrder': False,
|
53
58
|
'createStopLimitOrder': False,
|
54
59
|
'createStopMarketOrder': False,
|
55
60
|
'createStopOrder': False,
|
56
61
|
'fetchBalance': True,
|
62
|
+
'fetchBorrowInterest': False,
|
63
|
+
'fetchBorrowRate': False,
|
57
64
|
'fetchBorrowRateHistories': False,
|
58
65
|
'fetchBorrowRateHistory': False,
|
66
|
+
'fetchBorrowRates': False,
|
67
|
+
'fetchBorrowRatesPerSymbol': False,
|
59
68
|
'fetchCrossBorrowRate': False,
|
60
69
|
'fetchCrossBorrowRates': False,
|
61
70
|
'fetchCurrencies': True,
|
@@ -66,21 +75,40 @@ class bitstamp(Exchange, ImplicitAPI):
|
|
66
75
|
'fetchDepositWithdrawFee': 'emulated',
|
67
76
|
'fetchDepositWithdrawFees': True,
|
68
77
|
'fetchFundingHistory': False,
|
78
|
+
'fetchFundingInterval': False,
|
79
|
+
'fetchFundingIntervals': False,
|
69
80
|
'fetchFundingRate': False,
|
70
81
|
'fetchFundingRateHistory': False,
|
71
82
|
'fetchFundingRates': False,
|
83
|
+
'fetchGreeks': False,
|
72
84
|
'fetchIndexOHLCV': False,
|
73
85
|
'fetchIsolatedBorrowRate': False,
|
74
86
|
'fetchIsolatedBorrowRates': False,
|
87
|
+
'fetchIsolatedPositions': False,
|
75
88
|
'fetchLedger': True,
|
76
89
|
'fetchLeverage': False,
|
90
|
+
'fetchLeverages': False,
|
91
|
+
'fetchLeverageTiers': False,
|
92
|
+
'fetchLiquidations': False,
|
93
|
+
'fetchLongShortRatio': False,
|
94
|
+
'fetchLongShortRatioHistory': False,
|
95
|
+
'fetchMarginAdjustmentHistory': False,
|
77
96
|
'fetchMarginMode': False,
|
97
|
+
'fetchMarginModes': False,
|
98
|
+
'fetchMarketLeverageTiers': False,
|
78
99
|
'fetchMarkets': True,
|
79
100
|
'fetchMarkOHLCV': False,
|
101
|
+
'fetchMarkPrices': False,
|
102
|
+
'fetchMyLiquidations': False,
|
103
|
+
'fetchMySettlementHistory': False,
|
80
104
|
'fetchMyTrades': True,
|
81
105
|
'fetchOHLCV': True,
|
106
|
+
'fetchOpenInterest': False,
|
82
107
|
'fetchOpenInterestHistory': False,
|
108
|
+
'fetchOpenInterests': False,
|
83
109
|
'fetchOpenOrders': True,
|
110
|
+
'fetchOption': False,
|
111
|
+
'fetchOptionChain': False,
|
84
112
|
'fetchOrder': True,
|
85
113
|
'fetchOrderBook': True,
|
86
114
|
'fetchPosition': False,
|
@@ -91,6 +119,7 @@ class bitstamp(Exchange, ImplicitAPI):
|
|
91
119
|
'fetchPositionsHistory': False,
|
92
120
|
'fetchPositionsRisk': False,
|
93
121
|
'fetchPremiumIndexOHLCV': False,
|
122
|
+
'fetchSettlementHistory': False,
|
94
123
|
'fetchTicker': True,
|
95
124
|
'fetchTickers': True,
|
96
125
|
'fetchTrades': True,
|
@@ -98,9 +127,13 @@ class bitstamp(Exchange, ImplicitAPI):
|
|
98
127
|
'fetchTradingFees': True,
|
99
128
|
'fetchTransactionFees': True,
|
100
129
|
'fetchTransactions': 'emulated',
|
130
|
+
'fetchVolatilityHistory': False,
|
101
131
|
'fetchWithdrawals': True,
|
102
132
|
'reduceMargin': False,
|
133
|
+
'repayCrossMargin': False,
|
134
|
+
'repayIsolatedMargin': False,
|
103
135
|
'setLeverage': False,
|
136
|
+
'setMargin': False,
|
104
137
|
'setMarginMode': False,
|
105
138
|
'setPositionMode': False,
|
106
139
|
'transfer': True,
|