ccxt 4.2.81__py2.py3-none-any.whl → 4.2.82__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/async_support/__init__.py +1 -1
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/bitrue.py +1 -1
- ccxt/async_support/delta.py +146 -1
- ccxt/async_support/deribit.py +1 -1
- ccxt/async_support/hyperliquid.py +4 -4
- ccxt/async_support/okx.py +136 -1
- ccxt/base/exchange.py +1 -1
- ccxt/bitrue.py +1 -1
- ccxt/delta.py +146 -1
- ccxt/deribit.py +1 -1
- ccxt/hyperliquid.py +4 -4
- ccxt/okx.py +136 -1
- ccxt/pro/__init__.py +1 -1
- {ccxt-4.2.81.dist-info → ccxt-4.2.82.dist-info}/METADATA +4 -4
- {ccxt-4.2.81.dist-info → ccxt-4.2.82.dist-info}/RECORD +19 -19
- {ccxt-4.2.81.dist-info → ccxt-4.2.82.dist-info}/WHEEL +0 -0
- {ccxt-4.2.81.dist-info → ccxt-4.2.82.dist-info}/top_level.txt +0 -0
ccxt/__init__.py
CHANGED
ccxt/async_support/__init__.py
CHANGED
ccxt/async_support/bitrue.py
CHANGED
@@ -422,7 +422,7 @@ class bitrue(Exchange, ImplicitAPI):
|
|
422
422
|
'-1022': AuthenticationError, # {"code":-1022,"msg":"Signature for self request is not valid."}
|
423
423
|
'-1100': BadRequest, # createOrder(symbol, 1, asdf) -> 'Illegal characters found in parameter 'price'
|
424
424
|
'-1101': BadRequest, # Too many parameters; expected %s and received %s.
|
425
|
-
'-1102': BadRequest, # Param %s or %s must be sent, but both were empty
|
425
|
+
'-1102': BadRequest, # Param %s or %s must be sent, but both were empty # {"code":-1102,"msg":"timestamp IllegalArgumentException.","data":null}
|
426
426
|
'-1103': BadRequest, # An unknown parameter was sent.
|
427
427
|
'-1104': BadRequest, # Not all sent parameters were read, read 8 parameters but was sent 9
|
428
428
|
'-1105': BadRequest, # Parameter %s was empty.
|
ccxt/async_support/delta.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.delta import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, Greeks, Int, Leverage, MarginMode, Market, MarketInterface, Num, Order, OrderBook, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade
|
9
|
+
from ccxt.base.types import Balances, Currency, Greeks, Int, Leverage, MarginMode, Market, MarketInterface, Num, Option, Order, OrderBook, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
12
|
from ccxt.base.errors import ArgumentsRequired
|
@@ -71,6 +71,8 @@ class delta(Exchange, ImplicitAPI):
|
|
71
71
|
'fetchOHLCV': True,
|
72
72
|
'fetchOpenInterest': True,
|
73
73
|
'fetchOpenOrders': True,
|
74
|
+
'fetchOption': True,
|
75
|
+
'fetchOptionChain': False,
|
74
76
|
'fetchOrderBook': True,
|
75
77
|
'fetchPosition': True,
|
76
78
|
'fetchPositionMode': False,
|
@@ -3192,6 +3194,149 @@ class delta(Exchange, ImplicitAPI):
|
|
3192
3194
|
'marginMode': self.safe_string(marginMode, 'margin_mode'),
|
3193
3195
|
}
|
3194
3196
|
|
3197
|
+
async def fetch_option(self, symbol: str, params={}) -> Option:
|
3198
|
+
"""
|
3199
|
+
fetches option data that is commonly found in an option chain
|
3200
|
+
:see: https://docs.delta.exchange/#get-ticker-for-a-product-by-symbol
|
3201
|
+
:param str symbol: unified market symbol
|
3202
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
3203
|
+
:returns dict: an `option chain structure <https://docs.ccxt.com/#/?id=option-chain-structure>`
|
3204
|
+
"""
|
3205
|
+
await self.load_markets()
|
3206
|
+
market = self.market(symbol)
|
3207
|
+
request = {
|
3208
|
+
'symbol': market['id'],
|
3209
|
+
}
|
3210
|
+
response = await self.publicGetTickersSymbol(self.extend(request, params))
|
3211
|
+
#
|
3212
|
+
# {
|
3213
|
+
# "result": {
|
3214
|
+
# "close": 6793.0,
|
3215
|
+
# "contract_type": "call_options",
|
3216
|
+
# "greeks": {
|
3217
|
+
# "delta": "0.94739174",
|
3218
|
+
# "gamma": "0.00002206",
|
3219
|
+
# "rho": "11.00890725",
|
3220
|
+
# "spot": "36839.58124652",
|
3221
|
+
# "theta": "-18.18365310",
|
3222
|
+
# "vega": "7.85209698"
|
3223
|
+
# },
|
3224
|
+
# "high": 7556.0,
|
3225
|
+
# "low": 6793.0,
|
3226
|
+
# "mark_price": "6955.70698909",
|
3227
|
+
# "mark_vol": "0.66916863",
|
3228
|
+
# "oi": "1.8980",
|
3229
|
+
# "oi_change_usd_6h": "110.4600",
|
3230
|
+
# "oi_contracts": "1898",
|
3231
|
+
# "oi_value": "1.8980",
|
3232
|
+
# "oi_value_symbol": "BTC",
|
3233
|
+
# "oi_value_usd": "69940.7319",
|
3234
|
+
# "open": 7.2e3,
|
3235
|
+
# "price_band": {
|
3236
|
+
# "lower_limit": "5533.89814767",
|
3237
|
+
# "upper_limit": "11691.37688371"
|
3238
|
+
# },
|
3239
|
+
# "product_id": 129508,
|
3240
|
+
# "quotes": {
|
3241
|
+
# "ask_iv": "0.90180438",
|
3242
|
+
# "ask_size": "1898",
|
3243
|
+
# "best_ask": "7210",
|
3244
|
+
# "best_bid": "6913",
|
3245
|
+
# "bid_iv": "0.60881706",
|
3246
|
+
# "bid_size": "3163",
|
3247
|
+
# "impact_mid_price": null,
|
3248
|
+
# "mark_iv": "0.66973549"
|
3249
|
+
# },
|
3250
|
+
# "size": 5,
|
3251
|
+
# "spot_price": "36839.58153868",
|
3252
|
+
# "strike_price": "30000",
|
3253
|
+
# "symbol": "C-BTC-30000-241123",
|
3254
|
+
# "timestamp": 1699584998504530,
|
3255
|
+
# "turnover": 184.41206804,
|
3256
|
+
# "turnover_symbol": "USDT",
|
3257
|
+
# "turnover_usd": 184.41206804,
|
3258
|
+
# "volume": 0.005
|
3259
|
+
# },
|
3260
|
+
# "success": True
|
3261
|
+
# }
|
3262
|
+
#
|
3263
|
+
result = self.safe_dict(response, 'result', {})
|
3264
|
+
return self.parse_option(result, None, market)
|
3265
|
+
|
3266
|
+
def parse_option(self, chain, currency: Currency = None, market: Market = None):
|
3267
|
+
#
|
3268
|
+
# {
|
3269
|
+
# "close": 6793.0,
|
3270
|
+
# "contract_type": "call_options",
|
3271
|
+
# "greeks": {
|
3272
|
+
# "delta": "0.94739174",
|
3273
|
+
# "gamma": "0.00002206",
|
3274
|
+
# "rho": "11.00890725",
|
3275
|
+
# "spot": "36839.58124652",
|
3276
|
+
# "theta": "-18.18365310",
|
3277
|
+
# "vega": "7.85209698"
|
3278
|
+
# },
|
3279
|
+
# "high": 7556.0,
|
3280
|
+
# "low": 6793.0,
|
3281
|
+
# "mark_price": "6955.70698909",
|
3282
|
+
# "mark_vol": "0.66916863",
|
3283
|
+
# "oi": "1.8980",
|
3284
|
+
# "oi_change_usd_6h": "110.4600",
|
3285
|
+
# "oi_contracts": "1898",
|
3286
|
+
# "oi_value": "1.8980",
|
3287
|
+
# "oi_value_symbol": "BTC",
|
3288
|
+
# "oi_value_usd": "69940.7319",
|
3289
|
+
# "open": 7.2e3,
|
3290
|
+
# "price_band": {
|
3291
|
+
# "lower_limit": "5533.89814767",
|
3292
|
+
# "upper_limit": "11691.37688371"
|
3293
|
+
# },
|
3294
|
+
# "product_id": 129508,
|
3295
|
+
# "quotes": {
|
3296
|
+
# "ask_iv": "0.90180438",
|
3297
|
+
# "ask_size": "1898",
|
3298
|
+
# "best_ask": "7210",
|
3299
|
+
# "best_bid": "6913",
|
3300
|
+
# "bid_iv": "0.60881706",
|
3301
|
+
# "bid_size": "3163",
|
3302
|
+
# "impact_mid_price": null,
|
3303
|
+
# "mark_iv": "0.66973549"
|
3304
|
+
# },
|
3305
|
+
# "size": 5,
|
3306
|
+
# "spot_price": "36839.58153868",
|
3307
|
+
# "strike_price": "30000",
|
3308
|
+
# "symbol": "C-BTC-30000-241123",
|
3309
|
+
# "timestamp": 1699584998504530,
|
3310
|
+
# "turnover": 184.41206804,
|
3311
|
+
# "turnover_symbol": "USDT",
|
3312
|
+
# "turnover_usd": 184.41206804,
|
3313
|
+
# "volume": 0.005
|
3314
|
+
# }
|
3315
|
+
#
|
3316
|
+
marketId = self.safe_string(chain, 'symbol')
|
3317
|
+
market = self.safe_market(marketId, market)
|
3318
|
+
quotes = self.safe_dict(chain, 'quotes', {})
|
3319
|
+
timestamp = self.safe_integer_product(chain, 'timestamp', 0.001)
|
3320
|
+
return {
|
3321
|
+
'info': chain,
|
3322
|
+
'currency': None,
|
3323
|
+
'symbol': market['symbol'],
|
3324
|
+
'timestamp': timestamp,
|
3325
|
+
'datetime': self.iso8601(timestamp),
|
3326
|
+
'impliedVolatility': self.safe_number(quotes, 'mark_iv'),
|
3327
|
+
'openInterest': self.safe_number(chain, 'oi'),
|
3328
|
+
'bidPrice': self.safe_number(quotes, 'best_bid'),
|
3329
|
+
'askPrice': self.safe_number(quotes, 'best_ask'),
|
3330
|
+
'midPrice': self.safe_number(quotes, 'impact_mid_price'),
|
3331
|
+
'markPrice': self.safe_number(chain, 'mark_price'),
|
3332
|
+
'lastPrice': None,
|
3333
|
+
'underlyingPrice': self.safe_number(chain, 'spot_price'),
|
3334
|
+
'change': None,
|
3335
|
+
'percentage': None,
|
3336
|
+
'baseVolume': self.safe_number(chain, 'volume'),
|
3337
|
+
'quoteVolume': None,
|
3338
|
+
}
|
3339
|
+
|
3195
3340
|
def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
|
3196
3341
|
requestPath = '/' + self.version + '/' + self.implode_params(path, params)
|
3197
3342
|
url = self.urls['api'][api] + requestPath
|
ccxt/async_support/deribit.py
CHANGED
@@ -3403,7 +3403,7 @@ class deribit(Exchange, ImplicitAPI):
|
|
3403
3403
|
timestamp = self.safe_integer(chain, 'timestamp')
|
3404
3404
|
return {
|
3405
3405
|
'info': chain,
|
3406
|
-
'currency': code
|
3406
|
+
'currency': code,
|
3407
3407
|
'symbol': market['symbol'],
|
3408
3408
|
'timestamp': timestamp,
|
3409
3409
|
'datetime': self.iso8601(timestamp),
|
@@ -50,7 +50,7 @@ class hyperliquid(Exchange, ImplicitAPI):
|
|
50
50
|
'createMarketSellOrderWithCost': False,
|
51
51
|
'createOrder': True,
|
52
52
|
'createOrders': True,
|
53
|
-
'createReduceOnlyOrder':
|
53
|
+
'createReduceOnlyOrder': True,
|
54
54
|
'editOrder': True,
|
55
55
|
'fetchAccounts': False,
|
56
56
|
'fetchBalance': True,
|
@@ -851,7 +851,7 @@ class hyperliquid(Exchange, ImplicitAPI):
|
|
851
851
|
orderType['limit'] = {
|
852
852
|
'tif': timeInForce,
|
853
853
|
}
|
854
|
-
orderParams = self.omit(orderParams, ['clientOrderId', 'slippage', 'triggerPrice', 'stopPrice', 'stopLossPrice', 'takeProfitPrice', 'timeInForce', 'client_id'])
|
854
|
+
orderParams = self.omit(orderParams, ['clientOrderId', 'slippage', 'triggerPrice', 'stopPrice', 'stopLossPrice', 'takeProfitPrice', 'timeInForce', 'client_id', 'reduceOnly', 'postOnly'])
|
855
855
|
orderObj = {
|
856
856
|
'a': self.parse_to_int(market['baseId']),
|
857
857
|
'b': isBuy,
|
@@ -1920,9 +1920,9 @@ class hyperliquid(Exchange, ImplicitAPI):
|
|
1920
1920
|
userAux, params = self.handle_option_and_params(params, methodName, 'user')
|
1921
1921
|
user = userAux
|
1922
1922
|
user, params = self.handle_option_and_params(params, methodName, 'address', userAux)
|
1923
|
-
if user is not None:
|
1923
|
+
if (user is not None) and (user != ''):
|
1924
1924
|
return [user, params]
|
1925
|
-
if self.walletAddress is not None:
|
1925
|
+
if (self.walletAddress is not None) and (self.walletAddress != ''):
|
1926
1926
|
return [self.walletAddress, params]
|
1927
1927
|
raise ArgumentsRequired(self.id + ' ' + methodName + '() requires a user parameter inside \'params\' or the wallet address set')
|
1928
1928
|
|
ccxt/async_support/okx.py
CHANGED
@@ -7,7 +7,7 @@ from ccxt.async_support.base.exchange import Exchange
|
|
7
7
|
from ccxt.abstract.okx import ImplicitAPI
|
8
8
|
import asyncio
|
9
9
|
import hashlib
|
10
|
-
from ccxt.base.types import Account, Balances, Currency, Greeks, Int, Leverage, Market, MarketInterface, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
10
|
+
from ccxt.base.types import Account, Balances, Currency, Greeks, Int, Leverage, Market, MarketInterface, Num, Option, OptionChain, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
11
11
|
from typing import List
|
12
12
|
from ccxt.base.errors import ExchangeError
|
13
13
|
from ccxt.base.errors import PermissionDenied
|
@@ -117,6 +117,8 @@ class okx(Exchange, ImplicitAPI):
|
|
117
117
|
'fetchOpenInterestHistory': True,
|
118
118
|
'fetchOpenOrder': None,
|
119
119
|
'fetchOpenOrders': True,
|
120
|
+
'fetchOption': True,
|
121
|
+
'fetchOptionChain': True,
|
120
122
|
'fetchOrder': True,
|
121
123
|
'fetchOrderBook': True,
|
122
124
|
'fetchOrderBooks': False,
|
@@ -6910,6 +6912,139 @@ class okx(Exchange, ImplicitAPI):
|
|
6910
6912
|
order = self.safe_value(data, 0)
|
6911
6913
|
return self.parse_order(order, market)
|
6912
6914
|
|
6915
|
+
async def fetch_option(self, symbol: str, params={}) -> Option:
|
6916
|
+
"""
|
6917
|
+
fetches option data that is commonly found in an option chain
|
6918
|
+
:see: https://www.okx.com/docs-v5/en/#order-book-trading-market-data-get-ticker
|
6919
|
+
:param str symbol: unified market symbol
|
6920
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
6921
|
+
:returns dict: an `option chain structure <https://docs.ccxt.com/#/?id=option-chain-structure>`
|
6922
|
+
"""
|
6923
|
+
await self.load_markets()
|
6924
|
+
market = self.market(symbol)
|
6925
|
+
request = {
|
6926
|
+
'instId': market['id'],
|
6927
|
+
}
|
6928
|
+
response = await self.publicGetMarketTicker(self.extend(request, params))
|
6929
|
+
#
|
6930
|
+
# {
|
6931
|
+
# "code": "0",
|
6932
|
+
# "msg": "",
|
6933
|
+
# "data": [
|
6934
|
+
# {
|
6935
|
+
# "instType": "OPTION",
|
6936
|
+
# "instId": "BTC-USD-241227-60000-P",
|
6937
|
+
# "last": "",
|
6938
|
+
# "lastSz": "0",
|
6939
|
+
# "askPx": "",
|
6940
|
+
# "askSz": "0",
|
6941
|
+
# "bidPx": "",
|
6942
|
+
# "bidSz": "0",
|
6943
|
+
# "open24h": "",
|
6944
|
+
# "high24h": "",
|
6945
|
+
# "low24h": "",
|
6946
|
+
# "volCcy24h": "0",
|
6947
|
+
# "vol24h": "0",
|
6948
|
+
# "ts": "1711176035035",
|
6949
|
+
# "sodUtc0": "",
|
6950
|
+
# "sodUtc8": ""
|
6951
|
+
# }
|
6952
|
+
# ]
|
6953
|
+
# }
|
6954
|
+
#
|
6955
|
+
result = self.safe_list(response, 'data', [])
|
6956
|
+
chain = self.safe_dict(result, 0, {})
|
6957
|
+
return self.parse_option(chain, None, market)
|
6958
|
+
|
6959
|
+
async def fetch_option_chain(self, code: str, params={}) -> OptionChain:
|
6960
|
+
"""
|
6961
|
+
fetches data for an underlying asset that is commonly found in an option chain
|
6962
|
+
:see: https://www.okx.com/docs-v5/en/#order-book-trading-market-data-get-tickers
|
6963
|
+
:param str currency: base currency to fetch an option chain for
|
6964
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
6965
|
+
:param str [params.uly]: the underlying asset, can be obtained from fetchUnderlyingAssets()
|
6966
|
+
:returns dict: a list of `option chain structures <https://docs.ccxt.com/#/?id=option-chain-structure>`
|
6967
|
+
"""
|
6968
|
+
await self.load_markets()
|
6969
|
+
currency = self.currency(code)
|
6970
|
+
request = {
|
6971
|
+
'uly': currency['code'] + '-USD',
|
6972
|
+
'instType': 'OPTION',
|
6973
|
+
}
|
6974
|
+
response = await self.publicGetMarketTickers(self.extend(request, params))
|
6975
|
+
#
|
6976
|
+
# {
|
6977
|
+
# "code": "0",
|
6978
|
+
# "msg": "",
|
6979
|
+
# "data": [
|
6980
|
+
# {
|
6981
|
+
# "instType": "OPTION",
|
6982
|
+
# "instId": "BTC-USD-240323-52000-C",
|
6983
|
+
# "last": "",
|
6984
|
+
# "lastSz": "0",
|
6985
|
+
# "askPx": "",
|
6986
|
+
# "askSz": "0",
|
6987
|
+
# "bidPx": "",
|
6988
|
+
# "bidSz": "0",
|
6989
|
+
# "open24h": "",
|
6990
|
+
# "high24h": "",
|
6991
|
+
# "low24h": "",
|
6992
|
+
# "volCcy24h": "0",
|
6993
|
+
# "vol24h": "0",
|
6994
|
+
# "ts": "1711176207008",
|
6995
|
+
# "sodUtc0": "",
|
6996
|
+
# "sodUtc8": ""
|
6997
|
+
# },
|
6998
|
+
# ]
|
6999
|
+
# }
|
7000
|
+
#
|
7001
|
+
result = self.safe_list(response, 'data', [])
|
7002
|
+
return self.parse_option_chain(result, None, 'instId')
|
7003
|
+
|
7004
|
+
def parse_option(self, chain, currency: Currency = None, market: Market = None):
|
7005
|
+
#
|
7006
|
+
# {
|
7007
|
+
# "instType": "OPTION",
|
7008
|
+
# "instId": "BTC-USD-241227-60000-P",
|
7009
|
+
# "last": "",
|
7010
|
+
# "lastSz": "0",
|
7011
|
+
# "askPx": "",
|
7012
|
+
# "askSz": "0",
|
7013
|
+
# "bidPx": "",
|
7014
|
+
# "bidSz": "0",
|
7015
|
+
# "open24h": "",
|
7016
|
+
# "high24h": "",
|
7017
|
+
# "low24h": "",
|
7018
|
+
# "volCcy24h": "0",
|
7019
|
+
# "vol24h": "0",
|
7020
|
+
# "ts": "1711176035035",
|
7021
|
+
# "sodUtc0": "",
|
7022
|
+
# "sodUtc8": ""
|
7023
|
+
# }
|
7024
|
+
#
|
7025
|
+
marketId = self.safe_string(chain, 'instId')
|
7026
|
+
market = self.safe_market(marketId, market)
|
7027
|
+
timestamp = self.safe_integer(chain, 'ts')
|
7028
|
+
return {
|
7029
|
+
'info': chain,
|
7030
|
+
'currency': None,
|
7031
|
+
'symbol': market['symbol'],
|
7032
|
+
'timestamp': timestamp,
|
7033
|
+
'datetime': self.iso8601(timestamp),
|
7034
|
+
'impliedVolatility': None,
|
7035
|
+
'openInterest': None,
|
7036
|
+
'bidPrice': self.safe_number(chain, 'bidPx'),
|
7037
|
+
'askPrice': self.safe_number(chain, 'askPx'),
|
7038
|
+
'midPrice': None,
|
7039
|
+
'markPrice': None,
|
7040
|
+
'lastPrice': self.safe_number(chain, 'last'),
|
7041
|
+
'underlyingPrice': None,
|
7042
|
+
'change': None,
|
7043
|
+
'percentage': None,
|
7044
|
+
'baseVolume': self.safe_number(chain, 'volCcy24h'),
|
7045
|
+
'quoteVolume': None,
|
7046
|
+
}
|
7047
|
+
|
6913
7048
|
def handle_errors(self, httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
6914
7049
|
if not response:
|
6915
7050
|
return None # fallback to default error handler
|
ccxt/base/exchange.py
CHANGED
ccxt/bitrue.py
CHANGED
@@ -421,7 +421,7 @@ class bitrue(Exchange, ImplicitAPI):
|
|
421
421
|
'-1022': AuthenticationError, # {"code":-1022,"msg":"Signature for self request is not valid."}
|
422
422
|
'-1100': BadRequest, # createOrder(symbol, 1, asdf) -> 'Illegal characters found in parameter 'price'
|
423
423
|
'-1101': BadRequest, # Too many parameters; expected %s and received %s.
|
424
|
-
'-1102': BadRequest, # Param %s or %s must be sent, but both were empty
|
424
|
+
'-1102': BadRequest, # Param %s or %s must be sent, but both were empty # {"code":-1102,"msg":"timestamp IllegalArgumentException.","data":null}
|
425
425
|
'-1103': BadRequest, # An unknown parameter was sent.
|
426
426
|
'-1104': BadRequest, # Not all sent parameters were read, read 8 parameters but was sent 9
|
427
427
|
'-1105': BadRequest, # Parameter %s was empty.
|
ccxt/delta.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.delta import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, Greeks, Int, Leverage, MarginMode, Market, MarketInterface, Num, Order, OrderBook, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade
|
9
|
+
from ccxt.base.types import Balances, Currency, Greeks, Int, Leverage, MarginMode, Market, MarketInterface, Num, Option, Order, OrderBook, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
12
|
from ccxt.base.errors import ArgumentsRequired
|
@@ -71,6 +71,8 @@ class delta(Exchange, ImplicitAPI):
|
|
71
71
|
'fetchOHLCV': True,
|
72
72
|
'fetchOpenInterest': True,
|
73
73
|
'fetchOpenOrders': True,
|
74
|
+
'fetchOption': True,
|
75
|
+
'fetchOptionChain': False,
|
74
76
|
'fetchOrderBook': True,
|
75
77
|
'fetchPosition': True,
|
76
78
|
'fetchPositionMode': False,
|
@@ -3192,6 +3194,149 @@ class delta(Exchange, ImplicitAPI):
|
|
3192
3194
|
'marginMode': self.safe_string(marginMode, 'margin_mode'),
|
3193
3195
|
}
|
3194
3196
|
|
3197
|
+
def fetch_option(self, symbol: str, params={}) -> Option:
|
3198
|
+
"""
|
3199
|
+
fetches option data that is commonly found in an option chain
|
3200
|
+
:see: https://docs.delta.exchange/#get-ticker-for-a-product-by-symbol
|
3201
|
+
:param str symbol: unified market symbol
|
3202
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
3203
|
+
:returns dict: an `option chain structure <https://docs.ccxt.com/#/?id=option-chain-structure>`
|
3204
|
+
"""
|
3205
|
+
self.load_markets()
|
3206
|
+
market = self.market(symbol)
|
3207
|
+
request = {
|
3208
|
+
'symbol': market['id'],
|
3209
|
+
}
|
3210
|
+
response = self.publicGetTickersSymbol(self.extend(request, params))
|
3211
|
+
#
|
3212
|
+
# {
|
3213
|
+
# "result": {
|
3214
|
+
# "close": 6793.0,
|
3215
|
+
# "contract_type": "call_options",
|
3216
|
+
# "greeks": {
|
3217
|
+
# "delta": "0.94739174",
|
3218
|
+
# "gamma": "0.00002206",
|
3219
|
+
# "rho": "11.00890725",
|
3220
|
+
# "spot": "36839.58124652",
|
3221
|
+
# "theta": "-18.18365310",
|
3222
|
+
# "vega": "7.85209698"
|
3223
|
+
# },
|
3224
|
+
# "high": 7556.0,
|
3225
|
+
# "low": 6793.0,
|
3226
|
+
# "mark_price": "6955.70698909",
|
3227
|
+
# "mark_vol": "0.66916863",
|
3228
|
+
# "oi": "1.8980",
|
3229
|
+
# "oi_change_usd_6h": "110.4600",
|
3230
|
+
# "oi_contracts": "1898",
|
3231
|
+
# "oi_value": "1.8980",
|
3232
|
+
# "oi_value_symbol": "BTC",
|
3233
|
+
# "oi_value_usd": "69940.7319",
|
3234
|
+
# "open": 7.2e3,
|
3235
|
+
# "price_band": {
|
3236
|
+
# "lower_limit": "5533.89814767",
|
3237
|
+
# "upper_limit": "11691.37688371"
|
3238
|
+
# },
|
3239
|
+
# "product_id": 129508,
|
3240
|
+
# "quotes": {
|
3241
|
+
# "ask_iv": "0.90180438",
|
3242
|
+
# "ask_size": "1898",
|
3243
|
+
# "best_ask": "7210",
|
3244
|
+
# "best_bid": "6913",
|
3245
|
+
# "bid_iv": "0.60881706",
|
3246
|
+
# "bid_size": "3163",
|
3247
|
+
# "impact_mid_price": null,
|
3248
|
+
# "mark_iv": "0.66973549"
|
3249
|
+
# },
|
3250
|
+
# "size": 5,
|
3251
|
+
# "spot_price": "36839.58153868",
|
3252
|
+
# "strike_price": "30000",
|
3253
|
+
# "symbol": "C-BTC-30000-241123",
|
3254
|
+
# "timestamp": 1699584998504530,
|
3255
|
+
# "turnover": 184.41206804,
|
3256
|
+
# "turnover_symbol": "USDT",
|
3257
|
+
# "turnover_usd": 184.41206804,
|
3258
|
+
# "volume": 0.005
|
3259
|
+
# },
|
3260
|
+
# "success": True
|
3261
|
+
# }
|
3262
|
+
#
|
3263
|
+
result = self.safe_dict(response, 'result', {})
|
3264
|
+
return self.parse_option(result, None, market)
|
3265
|
+
|
3266
|
+
def parse_option(self, chain, currency: Currency = None, market: Market = None):
|
3267
|
+
#
|
3268
|
+
# {
|
3269
|
+
# "close": 6793.0,
|
3270
|
+
# "contract_type": "call_options",
|
3271
|
+
# "greeks": {
|
3272
|
+
# "delta": "0.94739174",
|
3273
|
+
# "gamma": "0.00002206",
|
3274
|
+
# "rho": "11.00890725",
|
3275
|
+
# "spot": "36839.58124652",
|
3276
|
+
# "theta": "-18.18365310",
|
3277
|
+
# "vega": "7.85209698"
|
3278
|
+
# },
|
3279
|
+
# "high": 7556.0,
|
3280
|
+
# "low": 6793.0,
|
3281
|
+
# "mark_price": "6955.70698909",
|
3282
|
+
# "mark_vol": "0.66916863",
|
3283
|
+
# "oi": "1.8980",
|
3284
|
+
# "oi_change_usd_6h": "110.4600",
|
3285
|
+
# "oi_contracts": "1898",
|
3286
|
+
# "oi_value": "1.8980",
|
3287
|
+
# "oi_value_symbol": "BTC",
|
3288
|
+
# "oi_value_usd": "69940.7319",
|
3289
|
+
# "open": 7.2e3,
|
3290
|
+
# "price_band": {
|
3291
|
+
# "lower_limit": "5533.89814767",
|
3292
|
+
# "upper_limit": "11691.37688371"
|
3293
|
+
# },
|
3294
|
+
# "product_id": 129508,
|
3295
|
+
# "quotes": {
|
3296
|
+
# "ask_iv": "0.90180438",
|
3297
|
+
# "ask_size": "1898",
|
3298
|
+
# "best_ask": "7210",
|
3299
|
+
# "best_bid": "6913",
|
3300
|
+
# "bid_iv": "0.60881706",
|
3301
|
+
# "bid_size": "3163",
|
3302
|
+
# "impact_mid_price": null,
|
3303
|
+
# "mark_iv": "0.66973549"
|
3304
|
+
# },
|
3305
|
+
# "size": 5,
|
3306
|
+
# "spot_price": "36839.58153868",
|
3307
|
+
# "strike_price": "30000",
|
3308
|
+
# "symbol": "C-BTC-30000-241123",
|
3309
|
+
# "timestamp": 1699584998504530,
|
3310
|
+
# "turnover": 184.41206804,
|
3311
|
+
# "turnover_symbol": "USDT",
|
3312
|
+
# "turnover_usd": 184.41206804,
|
3313
|
+
# "volume": 0.005
|
3314
|
+
# }
|
3315
|
+
#
|
3316
|
+
marketId = self.safe_string(chain, 'symbol')
|
3317
|
+
market = self.safe_market(marketId, market)
|
3318
|
+
quotes = self.safe_dict(chain, 'quotes', {})
|
3319
|
+
timestamp = self.safe_integer_product(chain, 'timestamp', 0.001)
|
3320
|
+
return {
|
3321
|
+
'info': chain,
|
3322
|
+
'currency': None,
|
3323
|
+
'symbol': market['symbol'],
|
3324
|
+
'timestamp': timestamp,
|
3325
|
+
'datetime': self.iso8601(timestamp),
|
3326
|
+
'impliedVolatility': self.safe_number(quotes, 'mark_iv'),
|
3327
|
+
'openInterest': self.safe_number(chain, 'oi'),
|
3328
|
+
'bidPrice': self.safe_number(quotes, 'best_bid'),
|
3329
|
+
'askPrice': self.safe_number(quotes, 'best_ask'),
|
3330
|
+
'midPrice': self.safe_number(quotes, 'impact_mid_price'),
|
3331
|
+
'markPrice': self.safe_number(chain, 'mark_price'),
|
3332
|
+
'lastPrice': None,
|
3333
|
+
'underlyingPrice': self.safe_number(chain, 'spot_price'),
|
3334
|
+
'change': None,
|
3335
|
+
'percentage': None,
|
3336
|
+
'baseVolume': self.safe_number(chain, 'volume'),
|
3337
|
+
'quoteVolume': None,
|
3338
|
+
}
|
3339
|
+
|
3195
3340
|
def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
|
3196
3341
|
requestPath = '/' + self.version + '/' + self.implode_params(path, params)
|
3197
3342
|
url = self.urls['api'][api] + requestPath
|
ccxt/deribit.py
CHANGED
@@ -3403,7 +3403,7 @@ class deribit(Exchange, ImplicitAPI):
|
|
3403
3403
|
timestamp = self.safe_integer(chain, 'timestamp')
|
3404
3404
|
return {
|
3405
3405
|
'info': chain,
|
3406
|
-
'currency': code
|
3406
|
+
'currency': code,
|
3407
3407
|
'symbol': market['symbol'],
|
3408
3408
|
'timestamp': timestamp,
|
3409
3409
|
'datetime': self.iso8601(timestamp),
|
ccxt/hyperliquid.py
CHANGED
@@ -50,7 +50,7 @@ class hyperliquid(Exchange, ImplicitAPI):
|
|
50
50
|
'createMarketSellOrderWithCost': False,
|
51
51
|
'createOrder': True,
|
52
52
|
'createOrders': True,
|
53
|
-
'createReduceOnlyOrder':
|
53
|
+
'createReduceOnlyOrder': True,
|
54
54
|
'editOrder': True,
|
55
55
|
'fetchAccounts': False,
|
56
56
|
'fetchBalance': True,
|
@@ -851,7 +851,7 @@ class hyperliquid(Exchange, ImplicitAPI):
|
|
851
851
|
orderType['limit'] = {
|
852
852
|
'tif': timeInForce,
|
853
853
|
}
|
854
|
-
orderParams = self.omit(orderParams, ['clientOrderId', 'slippage', 'triggerPrice', 'stopPrice', 'stopLossPrice', 'takeProfitPrice', 'timeInForce', 'client_id'])
|
854
|
+
orderParams = self.omit(orderParams, ['clientOrderId', 'slippage', 'triggerPrice', 'stopPrice', 'stopLossPrice', 'takeProfitPrice', 'timeInForce', 'client_id', 'reduceOnly', 'postOnly'])
|
855
855
|
orderObj = {
|
856
856
|
'a': self.parse_to_int(market['baseId']),
|
857
857
|
'b': isBuy,
|
@@ -1920,9 +1920,9 @@ class hyperliquid(Exchange, ImplicitAPI):
|
|
1920
1920
|
userAux, params = self.handle_option_and_params(params, methodName, 'user')
|
1921
1921
|
user = userAux
|
1922
1922
|
user, params = self.handle_option_and_params(params, methodName, 'address', userAux)
|
1923
|
-
if user is not None:
|
1923
|
+
if (user is not None) and (user != ''):
|
1924
1924
|
return [user, params]
|
1925
|
-
if self.walletAddress is not None:
|
1925
|
+
if (self.walletAddress is not None) and (self.walletAddress != ''):
|
1926
1926
|
return [self.walletAddress, params]
|
1927
1927
|
raise ArgumentsRequired(self.id + ' ' + methodName + '() requires a user parameter inside \'params\' or the wallet address set')
|
1928
1928
|
|
ccxt/okx.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.okx import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Account, Balances, Currency, Greeks, Int, Leverage, Market, MarketInterface, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
9
|
+
from ccxt.base.types import Account, Balances, Currency, Greeks, Int, Leverage, Market, MarketInterface, Num, Option, OptionChain, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
12
|
from ccxt.base.errors import PermissionDenied
|
@@ -116,6 +116,8 @@ class okx(Exchange, ImplicitAPI):
|
|
116
116
|
'fetchOpenInterestHistory': True,
|
117
117
|
'fetchOpenOrder': None,
|
118
118
|
'fetchOpenOrders': True,
|
119
|
+
'fetchOption': True,
|
120
|
+
'fetchOptionChain': True,
|
119
121
|
'fetchOrder': True,
|
120
122
|
'fetchOrderBook': True,
|
121
123
|
'fetchOrderBooks': False,
|
@@ -6909,6 +6911,139 @@ class okx(Exchange, ImplicitAPI):
|
|
6909
6911
|
order = self.safe_value(data, 0)
|
6910
6912
|
return self.parse_order(order, market)
|
6911
6913
|
|
6914
|
+
def fetch_option(self, symbol: str, params={}) -> Option:
|
6915
|
+
"""
|
6916
|
+
fetches option data that is commonly found in an option chain
|
6917
|
+
:see: https://www.okx.com/docs-v5/en/#order-book-trading-market-data-get-ticker
|
6918
|
+
:param str symbol: unified market symbol
|
6919
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
6920
|
+
:returns dict: an `option chain structure <https://docs.ccxt.com/#/?id=option-chain-structure>`
|
6921
|
+
"""
|
6922
|
+
self.load_markets()
|
6923
|
+
market = self.market(symbol)
|
6924
|
+
request = {
|
6925
|
+
'instId': market['id'],
|
6926
|
+
}
|
6927
|
+
response = self.publicGetMarketTicker(self.extend(request, params))
|
6928
|
+
#
|
6929
|
+
# {
|
6930
|
+
# "code": "0",
|
6931
|
+
# "msg": "",
|
6932
|
+
# "data": [
|
6933
|
+
# {
|
6934
|
+
# "instType": "OPTION",
|
6935
|
+
# "instId": "BTC-USD-241227-60000-P",
|
6936
|
+
# "last": "",
|
6937
|
+
# "lastSz": "0",
|
6938
|
+
# "askPx": "",
|
6939
|
+
# "askSz": "0",
|
6940
|
+
# "bidPx": "",
|
6941
|
+
# "bidSz": "0",
|
6942
|
+
# "open24h": "",
|
6943
|
+
# "high24h": "",
|
6944
|
+
# "low24h": "",
|
6945
|
+
# "volCcy24h": "0",
|
6946
|
+
# "vol24h": "0",
|
6947
|
+
# "ts": "1711176035035",
|
6948
|
+
# "sodUtc0": "",
|
6949
|
+
# "sodUtc8": ""
|
6950
|
+
# }
|
6951
|
+
# ]
|
6952
|
+
# }
|
6953
|
+
#
|
6954
|
+
result = self.safe_list(response, 'data', [])
|
6955
|
+
chain = self.safe_dict(result, 0, {})
|
6956
|
+
return self.parse_option(chain, None, market)
|
6957
|
+
|
6958
|
+
def fetch_option_chain(self, code: str, params={}) -> OptionChain:
|
6959
|
+
"""
|
6960
|
+
fetches data for an underlying asset that is commonly found in an option chain
|
6961
|
+
:see: https://www.okx.com/docs-v5/en/#order-book-trading-market-data-get-tickers
|
6962
|
+
:param str currency: base currency to fetch an option chain for
|
6963
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
6964
|
+
:param str [params.uly]: the underlying asset, can be obtained from fetchUnderlyingAssets()
|
6965
|
+
:returns dict: a list of `option chain structures <https://docs.ccxt.com/#/?id=option-chain-structure>`
|
6966
|
+
"""
|
6967
|
+
self.load_markets()
|
6968
|
+
currency = self.currency(code)
|
6969
|
+
request = {
|
6970
|
+
'uly': currency['code'] + '-USD',
|
6971
|
+
'instType': 'OPTION',
|
6972
|
+
}
|
6973
|
+
response = self.publicGetMarketTickers(self.extend(request, params))
|
6974
|
+
#
|
6975
|
+
# {
|
6976
|
+
# "code": "0",
|
6977
|
+
# "msg": "",
|
6978
|
+
# "data": [
|
6979
|
+
# {
|
6980
|
+
# "instType": "OPTION",
|
6981
|
+
# "instId": "BTC-USD-240323-52000-C",
|
6982
|
+
# "last": "",
|
6983
|
+
# "lastSz": "0",
|
6984
|
+
# "askPx": "",
|
6985
|
+
# "askSz": "0",
|
6986
|
+
# "bidPx": "",
|
6987
|
+
# "bidSz": "0",
|
6988
|
+
# "open24h": "",
|
6989
|
+
# "high24h": "",
|
6990
|
+
# "low24h": "",
|
6991
|
+
# "volCcy24h": "0",
|
6992
|
+
# "vol24h": "0",
|
6993
|
+
# "ts": "1711176207008",
|
6994
|
+
# "sodUtc0": "",
|
6995
|
+
# "sodUtc8": ""
|
6996
|
+
# },
|
6997
|
+
# ]
|
6998
|
+
# }
|
6999
|
+
#
|
7000
|
+
result = self.safe_list(response, 'data', [])
|
7001
|
+
return self.parse_option_chain(result, None, 'instId')
|
7002
|
+
|
7003
|
+
def parse_option(self, chain, currency: Currency = None, market: Market = None):
|
7004
|
+
#
|
7005
|
+
# {
|
7006
|
+
# "instType": "OPTION",
|
7007
|
+
# "instId": "BTC-USD-241227-60000-P",
|
7008
|
+
# "last": "",
|
7009
|
+
# "lastSz": "0",
|
7010
|
+
# "askPx": "",
|
7011
|
+
# "askSz": "0",
|
7012
|
+
# "bidPx": "",
|
7013
|
+
# "bidSz": "0",
|
7014
|
+
# "open24h": "",
|
7015
|
+
# "high24h": "",
|
7016
|
+
# "low24h": "",
|
7017
|
+
# "volCcy24h": "0",
|
7018
|
+
# "vol24h": "0",
|
7019
|
+
# "ts": "1711176035035",
|
7020
|
+
# "sodUtc0": "",
|
7021
|
+
# "sodUtc8": ""
|
7022
|
+
# }
|
7023
|
+
#
|
7024
|
+
marketId = self.safe_string(chain, 'instId')
|
7025
|
+
market = self.safe_market(marketId, market)
|
7026
|
+
timestamp = self.safe_integer(chain, 'ts')
|
7027
|
+
return {
|
7028
|
+
'info': chain,
|
7029
|
+
'currency': None,
|
7030
|
+
'symbol': market['symbol'],
|
7031
|
+
'timestamp': timestamp,
|
7032
|
+
'datetime': self.iso8601(timestamp),
|
7033
|
+
'impliedVolatility': None,
|
7034
|
+
'openInterest': None,
|
7035
|
+
'bidPrice': self.safe_number(chain, 'bidPx'),
|
7036
|
+
'askPrice': self.safe_number(chain, 'askPx'),
|
7037
|
+
'midPrice': None,
|
7038
|
+
'markPrice': None,
|
7039
|
+
'lastPrice': self.safe_number(chain, 'last'),
|
7040
|
+
'underlyingPrice': None,
|
7041
|
+
'change': None,
|
7042
|
+
'percentage': None,
|
7043
|
+
'baseVolume': self.safe_number(chain, 'volCcy24h'),
|
7044
|
+
'quoteVolume': None,
|
7045
|
+
}
|
7046
|
+
|
6912
7047
|
def handle_errors(self, httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
6913
7048
|
if not response:
|
6914
7049
|
return None # fallback to default error handler
|
ccxt/pro/__init__.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.2.
|
3
|
+
Version: 4.2.82
|
4
4
|
Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges
|
5
5
|
Home-page: https://ccxt.com
|
6
6
|
Author: Igor Kroitor
|
@@ -262,13 +262,13 @@ console.log(version, Object.keys(exchanges));
|
|
262
262
|
|
263
263
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
264
264
|
|
265
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.
|
266
|
-
* unpkg: https://unpkg.com/ccxt@4.2.
|
265
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.82/dist/ccxt.browser.js
|
266
|
+
* unpkg: https://unpkg.com/ccxt@4.2.82/dist/ccxt.browser.js
|
267
267
|
|
268
268
|
CDNs are not updated in real-time and may have delays. Defaulting to the most recent version without specifying the version number is not recommended. Please, keep in mind that we are not responsible for the correct operation of those CDN servers.
|
269
269
|
|
270
270
|
```HTML
|
271
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.
|
271
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.82/dist/ccxt.browser.js"></script>
|
272
272
|
```
|
273
273
|
|
274
274
|
Creates a global `ccxt` object:
|
@@ -1,4 +1,4 @@
|
|
1
|
-
ccxt/__init__.py,sha256=
|
1
|
+
ccxt/__init__.py,sha256=AaH0NOSi-95K3k3M8lUwKpNw_0CE-teOK2wICcOuK4M,15656
|
2
2
|
ccxt/ace.py,sha256=nK9SbduDWoKzecwoSK9VYwReNMscvJ_JWo5IZvFbcQo,41409
|
3
3
|
ccxt/alpaca.py,sha256=dCp9cDDKAqaaOroIPfv3sMBsMcUM7TsSKNSYZ3LLTQg,46892
|
4
4
|
ccxt/ascendex.py,sha256=Ma2iM3L3kyXf6d_iqushKWfN1BtunXcrDe-_BENaw5U,150809
|
@@ -23,7 +23,7 @@ ccxt/bitmart.py,sha256=vmtmyFhepEnk7Qse_lJHz2IUCrjZTHHuxt0FsDQU9s0,198947
|
|
23
23
|
ccxt/bitmex.py,sha256=JQGOMKArh1AFbns8uvPgxrCdlvtFCB8hXSeKEwQ9vB0,125311
|
24
24
|
ccxt/bitopro.py,sha256=HOLhSS50ITBr0UIWeON3KCt6i2QZ0M-zDhNj8B7MMHU,68081
|
25
25
|
ccxt/bitpanda.py,sha256=aiwPkx9lKbVzt4ggoYdq_mIbMGtg5ZtGl2yRHO5xyz8,471
|
26
|
-
ccxt/bitrue.py,sha256=
|
26
|
+
ccxt/bitrue.py,sha256=mxfU7bm1covUbkjLs2wgI4KT_Aqv-5T2QRuE7suoHW4,135898
|
27
27
|
ccxt/bitso.py,sha256=J_pd9byYxQAAKEpFVQYFbswMUeWKvvfj-7Y6UjOZk_0,70690
|
28
28
|
ccxt/bitstamp.py,sha256=69oVQdm3vR9KjJAcxntQ24u4HFrWIHphEjOWLovJmdQ,91526
|
29
29
|
ccxt/bitteam.py,sha256=7p-66IqLY-SVNAD_SWVx2DKfQrqsusB-mcumpT2qK0c,101797
|
@@ -50,8 +50,8 @@ ccxt/coinsph.py,sha256=JHgkCYzNGRRc_s398dxbz_60QqeRx_7_-Xb3Anqkq3o,90258
|
|
50
50
|
ccxt/coinspot.py,sha256=8aCFFIp8jB5NDVQLwbZdS5BxW4ML3TqTFaLqQKikkl0,23465
|
51
51
|
ccxt/cryptocom.py,sha256=cEqvh5Z19n1f-bAhfIdcB8-aFf2cepPpgcB5sgLMHnc,128088
|
52
52
|
ccxt/currencycom.py,sha256=sk1-z8ZYEpastKUoi-iGuK_Z8HNhrafU-2QmKFZyQGk,86679
|
53
|
-
ccxt/delta.py,sha256=
|
54
|
-
ccxt/deribit.py,sha256=
|
53
|
+
ccxt/delta.py,sha256=qAm-RBzG6vVhD8Cf3vKT80NlOb-JmwPbg3yLiXDLwPQ,150455
|
54
|
+
ccxt/deribit.py,sha256=CXwvLJ208USYgTKQzfnJBXkhK5vVuvsNb1CFzNG4iDg,160072
|
55
55
|
ccxt/digifinex.py,sha256=v5Kk702BABJj-ilooFZBSWYPW_IYLXnF1dy-ODzbQGs,169358
|
56
56
|
ccxt/exmo.py,sha256=ln3Sd9brSMAIxtAqMOyD-Rq5h4TPeYAMAlNpXTAijvE,114222
|
57
57
|
ccxt/flowbtc.py,sha256=YPvm6tbsHJJUQBspFcHuVPQfVmiWzwnVvfzRqBdQX6U,1169
|
@@ -65,7 +65,7 @@ ccxt/hollaex.py,sha256=biaF8aAMAqQQU2MHySgfipZHYvyq5Qhjd7JlSyETtPI,75830
|
|
65
65
|
ccxt/htx.py,sha256=K6qHgIxPBqfEKTzE-U6_ZLKu6Rmi8NHU5xjbjTyvPHQ,418804
|
66
66
|
ccxt/huobi.py,sha256=4vaG7IRN7fyjaJ_ac6S-njlHOfSEN5de7aq0noznxYw,438
|
67
67
|
ccxt/huobijp.py,sha256=0AcNDNAnWf-t9yFIE2FTVHm0xaBoBzX4gGO5dSJaElk,87907
|
68
|
-
ccxt/hyperliquid.py,sha256=
|
68
|
+
ccxt/hyperliquid.py,sha256=iTCiFgz8VVqtoL3FpYAjdJP9Ae2lAVnd1MJXRaPg33A,83106
|
69
69
|
ccxt/idex.py,sha256=gpkfFnVxZUnYGaT--peh4IF1iB-HkoxknA6rJMq_3kk,72706
|
70
70
|
ccxt/independentreserve.py,sha256=m8UP6mnYrl48623Y_tC6F0lZRx2rwTFmb-JZplnfzvA,31982
|
71
71
|
ccxt/indodax.py,sha256=Su32yUkKr3OZlRYK3NcITfMipvErSjvSBgzO2Ljobdw,51765
|
@@ -84,7 +84,7 @@ ccxt/ndax.py,sha256=iHuUDxE3FBgfhwaDhCQ1X7QMQjXDl91YF2MFDxUz9dk,108327
|
|
84
84
|
ccxt/novadax.py,sha256=bxCFcrWsntHJKmuODno4FzGVP_85joYW5Y9QEKsfFvM,64098
|
85
85
|
ccxt/oceanex.py,sha256=G_7y2JVDAIKa8fMebx55Qq4EIYkmhWY3SoGy_pmgSd4,37811
|
86
86
|
ccxt/okcoin.py,sha256=wmV93bnhpzJEOrOVpP92VCBZ_OulWrqJj7423pa_CHY,151013
|
87
|
-
ccxt/okx.py,sha256=
|
87
|
+
ccxt/okx.py,sha256=wR5WF1KSlMEOUaOw9GU8xxY8WBNcW-PJuTPBt6gPgcY,342942
|
88
88
|
ccxt/onetrading.py,sha256=WQfDptspbWO-GXenGyJaJ8OWUWymlvKKyCXHYmCVhZ4,87891
|
89
89
|
ccxt/p2b.py,sha256=l9zO6BqQdu_he6-TJl9zAO3HQJp_q3c6sr-eMO8Awm0,54065
|
90
90
|
ccxt/paymium.py,sha256=2mBwmyT93k-dXBEKEix48G8PsA2IEN_5yScEM985Z10,24203
|
@@ -207,7 +207,7 @@ ccxt/abstract/woo.py,sha256=E-QXVJKVI4EOW72NX6wv99px9EyitWtd9KWvXUc9Tyo,10216
|
|
207
207
|
ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
|
208
208
|
ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
|
209
209
|
ccxt/abstract/zonda.py,sha256=aSfewvRojzmuymX6QbOnDR8v9VFqWTULMHX9Y7kKD1M,5820
|
210
|
-
ccxt/async_support/__init__.py,sha256=
|
210
|
+
ccxt/async_support/__init__.py,sha256=bS68QDLi5TCHiMreqViqhZIxLCfPSRDnyTVkNQFbL1Q,15409
|
211
211
|
ccxt/async_support/ace.py,sha256=MGP2VoA2plRgcW8ZBBXAAUg0NSOXlWtwbzYr00DFMaI,41633
|
212
212
|
ccxt/async_support/alpaca.py,sha256=-vgtpCEqQWs-k7tA0PObflNKa7pM1HqQYYOMnCS9r24,47104
|
213
213
|
ccxt/async_support/ascendex.py,sha256=K_mqPMdT9Q1oS8CRtoVYjlN4rbp86glU4sPQGFi4W6U,151597
|
@@ -232,7 +232,7 @@ ccxt/async_support/bitmart.py,sha256=0_5IdMW8FyJV86h5XcJi70-ByLnI_oJL71MOznxCwcA
|
|
232
232
|
ccxt/async_support/bitmex.py,sha256=NzN7OQdaHOm2pO6omyJfTzQQwjjJ9MCa1YWWp1n5Bqo,125871
|
233
233
|
ccxt/async_support/bitopro.py,sha256=rITEIfcRAsTq7myJ7Nm-4hY26q6dyvtHXP56cZ2MD7M,68485
|
234
234
|
ccxt/async_support/bitpanda.py,sha256=2k3URBWrpnh2xHa7JiYenI7_4MW5UeOPGzetlmRkR4U,485
|
235
|
-
ccxt/async_support/bitrue.py,sha256=
|
235
|
+
ccxt/async_support/bitrue.py,sha256=jsC1neKiNCjYKuYEv1WlYJM0lDe_qfQ6U2-EzEtMXPw,136556
|
236
236
|
ccxt/async_support/bitso.py,sha256=MdGEPa3N4Wuqx1_BZm9MWjyRi4CzDSGyoW41h1fLDqs,71076
|
237
237
|
ccxt/async_support/bitstamp.py,sha256=IDGAsbqo9CTL-hw9W5aBU91njk9F3XuJ5RpRCckLGC0,92026
|
238
238
|
ccxt/async_support/bitteam.py,sha256=Qiwoy3vH_ijxyGB5r4ssicm-nwzg3Yzbh_lgwIKeRSI,102129
|
@@ -259,8 +259,8 @@ ccxt/async_support/coinsph.py,sha256=jy6-3kWA0-KS8744QKa62ySyx8_4szOLsxo_F_ahXNA
|
|
259
259
|
ccxt/async_support/coinspot.py,sha256=E0cj4OPK9nV43UzMIs88Y_bXtEzW49oeFP50Mj7wyrY,23617
|
260
260
|
ccxt/async_support/cryptocom.py,sha256=kgC23ELiN77g0f1n3nuMEqhFYeOpz9K8RgHUZkXG8LI,128642
|
261
261
|
ccxt/async_support/currencycom.py,sha256=DtKDSNV96umQDTf0Mixlls6Gq0LIifZFpCpu9EHPBUg,87101
|
262
|
-
ccxt/async_support/delta.py,sha256=
|
263
|
-
ccxt/async_support/deribit.py,sha256=
|
262
|
+
ccxt/async_support/delta.py,sha256=Loc4ZB82SOfEyTEMN9SQMryKPYv00icQrWlIeo-PS_U,151063
|
263
|
+
ccxt/async_support/deribit.py,sha256=c1PAq3gvGzspnS9aOvL3QWn4HIi3OBH-wV0E1X6Kx6A,160836
|
264
264
|
ccxt/async_support/digifinex.py,sha256=1NWewU2Uzm3ILr2kSlPvpfo0xIcQYE-sOx7YTlqhxL0,170328
|
265
265
|
ccxt/async_support/exmo.py,sha256=fOIqQBiFW6U9hoct1K-vTZZ2vVi37SPcQ3Z5_WJxk6Q,114854
|
266
266
|
ccxt/async_support/flowbtc.py,sha256=bCnvtcNnPxxaxqVjI1GGXKhIpz_1r4GIFWqqPokvCR0,1183
|
@@ -274,7 +274,7 @@ ccxt/async_support/hollaex.py,sha256=LZ41Smk-7_s9XCOhTc0n4oG03ZeInCw-N_vEwLcETfA
|
|
274
274
|
ccxt/async_support/htx.py,sha256=r5QKMwj6jJj9c1qs4fME3Jk22Uu7ZSd0UbxRLfaV6Vw,421142
|
275
275
|
ccxt/async_support/huobi.py,sha256=fup0j6wQ1khAtfbb1H4CSyJAOzhxuoHMmrM6sgTuhr8,452
|
276
276
|
ccxt/async_support/huobijp.py,sha256=HkXnX91fcHVQAfSknYmfgasEhVkwS0tcbMHCjXFD0e4,88407
|
277
|
-
ccxt/async_support/hyperliquid.py,sha256=
|
277
|
+
ccxt/async_support/hyperliquid.py,sha256=whZDHXz1vB37PtxxKzIf2OLCPizdzUVexpMph8Z8lDQ,83528
|
278
278
|
ccxt/async_support/idex.py,sha256=4CNRYJX12rpfoqlHE2Nvm2ZL56P7F2cWdZ6KHiA1zlQ,73182
|
279
279
|
ccxt/async_support/independentreserve.py,sha256=fEkWmaw4LZx3n0MtqHLJpgmWosfL3FiKd3dN5_ZzxTI,32242
|
280
280
|
ccxt/async_support/indodax.py,sha256=_eQVgwmPSfIvpPOW-1P_inVvOWK1g4rTXVPuqHr_YUE,52073
|
@@ -293,7 +293,7 @@ ccxt/async_support/ndax.py,sha256=9hzPCmwrYVJqtUe6oFrGz9dYe8oRyp1F_7O4QunmYZQ,10
|
|
293
293
|
ccxt/async_support/novadax.py,sha256=bYUoEjRpvRCzFH25NNircGl36qB8eN2cwxc5qMtxJMs,64466
|
294
294
|
ccxt/async_support/oceanex.py,sha256=LsNS6IIUDJd_KnxmUT5Ub8RLwDQhFqkfyuDr8uV65A8,38131
|
295
295
|
ccxt/async_support/okcoin.py,sha256=z3t4nyfNxtyLY-l_hCqy0oLIsuxIqIBQKOLNjfnhA5I,151537
|
296
|
-
ccxt/async_support/okx.py,sha256=
|
296
|
+
ccxt/async_support/okx.py,sha256=Wp6E39j2O5t0i8VabE7x3pAGVyt8r3UvMyfhZjbf6YE,344343
|
297
297
|
ccxt/async_support/onetrading.py,sha256=zi0oFJLn0y4O0nxls-A1hLLokJ3C9Wnvarm3iCxPKhg,88343
|
298
298
|
ccxt/async_support/p2b.py,sha256=F8BN8aVQGRTAfQMqAMdO9kpbHG8XB1ki8PbHkpMYtL8,54307
|
299
299
|
ccxt/async_support/paymium.py,sha256=3P1J9OcDOqQKG5fUs6Xte9Xu8NB5lWu-OD-AHHGZbkM,24391
|
@@ -313,7 +313,7 @@ ccxt/async_support/yobit.py,sha256=ZyQx9X9CE7cn5d3XB0sdieQyrgNLlFDe6LoVP8ckmzg,5
|
|
313
313
|
ccxt/async_support/zaif.py,sha256=bbY7Sjnc8LsOcqwhipxx2AVOWBz-N7jjiftmksTOtTM,28119
|
314
314
|
ccxt/async_support/zonda.py,sha256=5msJR5KAMz4MiUBJ_4QvQ8uRQWAYj5uf9AdsDyyRgtE,80766
|
315
315
|
ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
|
316
|
-
ccxt/async_support/base/exchange.py,sha256=
|
316
|
+
ccxt/async_support/base/exchange.py,sha256=LwwM4m4pM0pl02fPkg_cLt5Aj2hMsVOKj0c0nNWExcw,91714
|
317
317
|
ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
|
318
318
|
ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
|
319
319
|
ccxt/async_support/base/ws/aiohttp_client.py,sha256=Ed1765emEde2Hj8Ys6f5EjS54ZI1wQ0qIhd04eB7yhU,5751
|
@@ -327,10 +327,10 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=Pxrq22nCODckJ6G1OXkYEmUunIu
|
|
327
327
|
ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
|
328
328
|
ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
|
329
329
|
ccxt/base/errors.py,sha256=JBn3zTrtru7tLgyEi6MzKAUwiZe0fltQLYoJcsdP-AA,4099
|
330
|
-
ccxt/base/exchange.py,sha256=
|
330
|
+
ccxt/base/exchange.py,sha256=cfEHPpwS6O6NgjL0FJ937_kkQiMZl-hopU-D1_ORLeo,249730
|
331
331
|
ccxt/base/precise.py,sha256=_xfu54sV0vWNnOfGTKRFykeuWP8mn4K1m9lk1tcllX4,8565
|
332
332
|
ccxt/base/types.py,sha256=6J3Dzo0NBbn-5tCRQpfeRkLDzH1loScrDjP7xRDz6gI,6842
|
333
|
-
ccxt/pro/__init__.py,sha256=
|
333
|
+
ccxt/pro/__init__.py,sha256=MGgJexFKquU1W4nCjX_uW8XcSVo-4JFWi_6hKCuAudE,6897
|
334
334
|
ccxt/pro/alpaca.py,sha256=7ePyWli0949ti5UheIn553xmnFpedrNc2W5CKauSZio,27167
|
335
335
|
ccxt/pro/ascendex.py,sha256=0RlrxSqh4-lW99T-Y8AxrU612Cpy03u2loVMeRUPXlg,35432
|
336
336
|
ccxt/pro/bequant.py,sha256=5zbsP8BHQTUZ8ZNL6uaACxDbUClgkOV4SYfXT_LfQVg,1351
|
@@ -528,7 +528,7 @@ ccxt/test/base/test_ticker.py,sha256=cMTIMb1oySNORUCmqI5ZzMswlEyCF6gJMah3vfvo8wQ
|
|
528
528
|
ccxt/test/base/test_trade.py,sha256=PMtmB8V38dpaP-eb8h488xYMlR6D69yCOhsA1RuWrUA,2336
|
529
529
|
ccxt/test/base/test_trading_fee.py,sha256=2aDCNJtqBkTC_AieO0l1HYGq5hz5qkWlkWb9Nv_fcwk,1066
|
530
530
|
ccxt/test/base/test_transaction.py,sha256=BTbB4UHHXkrvYgwbrhh867nVRlevmIkIrz1W_odlQJI,1434
|
531
|
-
ccxt-4.2.
|
532
|
-
ccxt-4.2.
|
533
|
-
ccxt-4.2.
|
534
|
-
ccxt-4.2.
|
531
|
+
ccxt-4.2.82.dist-info/METADATA,sha256=I5Rs8IyVg6jwb417bOQ_YjeZe5VHoXuaQnTDkMg01p0,110489
|
532
|
+
ccxt-4.2.82.dist-info/WHEEL,sha256=P2T-6epvtXQ2cBOE_U1K4_noqlJFN3tj15djMgEu4NM,110
|
533
|
+
ccxt-4.2.82.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
|
534
|
+
ccxt-4.2.82.dist-info/RECORD,,
|
File without changes
|
File without changes
|