ccxt 4.4.9__py2.py3-none-any.whl → 4.4.10__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/oceanex.py +5 -0
- ccxt/ascendex.py +5 -4
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/ascendex.py +5 -4
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/binance.py +8 -11
- ccxt/async_support/bingx.py +20 -21
- ccxt/async_support/bitfinex2.py +7 -16
- ccxt/async_support/bitget.py +8 -7
- ccxt/async_support/bitmart.py +4 -3
- ccxt/async_support/bitmex.py +7 -6
- ccxt/async_support/blofin.py +7 -16
- ccxt/async_support/bybit.py +18 -16
- ccxt/async_support/coinex.py +19 -5
- ccxt/async_support/delta.py +6 -5
- ccxt/async_support/deribit.py +4 -3
- ccxt/async_support/digifinex.py +18 -4
- ccxt/async_support/gate.py +32 -13
- ccxt/async_support/hashkey.py +6 -6
- ccxt/async_support/hitbtc.py +6 -5
- ccxt/async_support/htx.py +23 -6
- ccxt/async_support/hyperliquid.py +6 -1
- ccxt/async_support/krakenfutures.py +6 -5
- ccxt/async_support/kucoinfutures.py +13 -2
- ccxt/async_support/mexc.py +4 -3
- ccxt/async_support/oceanex.py +80 -4
- ccxt/async_support/okx.py +17 -3
- ccxt/async_support/oxfun.py +7 -7
- ccxt/async_support/phemex.py +4 -3
- ccxt/async_support/poloniexfutures.py +13 -2
- ccxt/async_support/vertex.py +6 -5
- ccxt/async_support/whitebit.py +14 -13
- ccxt/async_support/woo.py +42 -21
- ccxt/async_support/woofipro.py +19 -6
- ccxt/async_support/xt.py +5 -3
- ccxt/base/exchange.py +1 -1
- ccxt/base/types.py +1 -0
- ccxt/binance.py +8 -11
- ccxt/bingx.py +20 -21
- ccxt/bitfinex2.py +7 -16
- ccxt/bitget.py +8 -7
- ccxt/bitmart.py +4 -3
- ccxt/bitmex.py +7 -6
- ccxt/blofin.py +7 -16
- ccxt/bybit.py +18 -16
- ccxt/coinex.py +19 -5
- ccxt/delta.py +6 -5
- ccxt/deribit.py +4 -3
- ccxt/digifinex.py +18 -4
- ccxt/gate.py +32 -13
- ccxt/hashkey.py +6 -6
- ccxt/hitbtc.py +6 -5
- ccxt/htx.py +23 -6
- ccxt/hyperliquid.py +6 -1
- ccxt/krakenfutures.py +6 -5
- ccxt/kucoinfutures.py +13 -2
- ccxt/mexc.py +4 -3
- ccxt/oceanex.py +80 -4
- ccxt/okx.py +17 -3
- ccxt/oxfun.py +7 -7
- ccxt/phemex.py +4 -3
- ccxt/poloniexfutures.py +13 -2
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/deribit.py +39 -2
- ccxt/pro/gate.py +1 -1
- ccxt/vertex.py +6 -5
- ccxt/whitebit.py +14 -13
- ccxt/woo.py +42 -21
- ccxt/woofipro.py +19 -6
- ccxt/xt.py +5 -3
- ccxt-4.4.10.dist-info/METADATA +636 -0
- {ccxt-4.4.9.dist-info → ccxt-4.4.10.dist-info}/RECORD +76 -76
- ccxt-4.4.9.dist-info/METADATA +0 -636
- {ccxt-4.4.9.dist-info → ccxt-4.4.10.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.4.9.dist-info → ccxt-4.4.10.dist-info}/WHEEL +0 -0
- {ccxt-4.4.9.dist-info → ccxt-4.4.10.dist-info}/top_level.txt +0 -0
@@ -1927,6 +1927,7 @@ class hyperliquid(Exchange, ImplicitAPI):
|
|
1927
1927
|
# "crossed": True,
|
1928
1928
|
# "dir": "Close Long",
|
1929
1929
|
# "fee": "0.050062",
|
1930
|
+
# "feeToken": "USDC",
|
1930
1931
|
# "hash": "0x09d77c96791e98b5775a04092584ab010d009445119c71e4005c0d634ea322bc",
|
1931
1932
|
# "liquidationMarkPx": null,
|
1932
1933
|
# "oid": 3929354691,
|
@@ -1985,7 +1986,11 @@ class hyperliquid(Exchange, ImplicitAPI):
|
|
1985
1986
|
'price': price,
|
1986
1987
|
'amount': amount,
|
1987
1988
|
'cost': None,
|
1988
|
-
'fee': {
|
1989
|
+
'fee': {
|
1990
|
+
'cost': fee,
|
1991
|
+
'currency': self.safe_string(trade, 'feeToken'),
|
1992
|
+
'rate': None,
|
1993
|
+
},
|
1989
1994
|
}, market)
|
1990
1995
|
|
1991
1996
|
async def fetch_position(self, symbol: str, params={}):
|
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.krakenfutures import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, Int, Leverage, Leverages, LeverageTier, LeverageTiers, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TransferEntry
|
9
|
+
from ccxt.base.types import Balances, Currency, Int, Leverage, Leverages, LeverageTier, LeverageTiers, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TransferEntry
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
12
|
from ccxt.base.errors import AuthenticationError
|
@@ -2030,10 +2030,10 @@ class krakenfutures(Exchange, ImplicitAPI):
|
|
2030
2030
|
result[code] = account
|
2031
2031
|
return self.safe_balance(result)
|
2032
2032
|
|
2033
|
-
async def fetch_funding_rates(self, symbols: Strings = None, params={}):
|
2033
|
+
async def fetch_funding_rates(self, symbols: Strings = None, params={}) -> FundingRates:
|
2034
2034
|
"""
|
2035
|
+
fetch the current funding rates for multiple markets
|
2035
2036
|
:see: https://docs.futures.kraken.com/#http-api-trading-v3-api-market-data-get-tickers
|
2036
|
-
fetch the current funding rates
|
2037
2037
|
:param str[] symbols: unified market symbols
|
2038
2038
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
2039
2039
|
:returns Order[]: an array of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rate-structure>`
|
@@ -2041,7 +2041,7 @@ class krakenfutures(Exchange, ImplicitAPI):
|
|
2041
2041
|
await self.load_markets()
|
2042
2042
|
marketIds = self.market_ids(symbols)
|
2043
2043
|
response = await self.publicGetTickers(params)
|
2044
|
-
tickers = self.
|
2044
|
+
tickers = self.safe_list(response, 'tickers', [])
|
2045
2045
|
fundingRates = []
|
2046
2046
|
for i in range(0, len(tickers)):
|
2047
2047
|
entry = tickers[i]
|
@@ -2054,7 +2054,7 @@ class krakenfutures(Exchange, ImplicitAPI):
|
|
2054
2054
|
fundingRates.append(parsed)
|
2055
2055
|
return self.index_by(fundingRates, 'symbol')
|
2056
2056
|
|
2057
|
-
def parse_funding_rate(self, ticker, market: Market = None):
|
2057
|
+
def parse_funding_rate(self, ticker, market: Market = None) -> FundingRate:
|
2058
2058
|
#
|
2059
2059
|
# {"ask": 26.283,
|
2060
2060
|
# "askSize": 4.6,
|
@@ -2108,6 +2108,7 @@ class krakenfutures(Exchange, ImplicitAPI):
|
|
2108
2108
|
'previousFundingRate': None,
|
2109
2109
|
'previousFundingTimestamp': None,
|
2110
2110
|
'previousFundingDatetime': None,
|
2111
|
+
'interval': None,
|
2111
2112
|
}
|
2112
2113
|
|
2113
2114
|
async def fetch_funding_rate_history(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
from ccxt.async_support.kucoin import kucoin
|
7
7
|
from ccxt.abstract.kucoinfutures import ImplicitAPI
|
8
|
-
from ccxt.base.types import Balances, Currency, Int, Leverage, LeverageTier, MarginMode, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction, TransferEntry
|
8
|
+
from ccxt.base.types import Balances, Currency, Int, Leverage, LeverageTier, MarginMode, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, Trade, TradingFeeInterface, Transaction, TransferEntry
|
9
9
|
from typing import List
|
10
10
|
from ccxt.base.errors import AuthenticationError
|
11
11
|
from ccxt.base.errors import PermissionDenied
|
@@ -2046,7 +2046,7 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
2046
2046
|
'trades': None,
|
2047
2047
|
}, market)
|
2048
2048
|
|
2049
|
-
async def fetch_funding_rate(self, symbol: str, params={}):
|
2049
|
+
async def fetch_funding_rate(self, symbol: str, params={}) -> FundingRate:
|
2050
2050
|
"""
|
2051
2051
|
fetch the current funding rate
|
2052
2052
|
:see: https://www.kucoin.com/docs/rest/futures-trading/funding-fees/get-current-funding-rate
|
@@ -2093,8 +2093,19 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
2093
2093
|
'previousFundingRate': None,
|
2094
2094
|
'previousFundingTimestamp': None,
|
2095
2095
|
'previousFundingDatetime': None,
|
2096
|
+
'interval': self.parse_funding_interval(self.safe_string(data, 'granularity')),
|
2096
2097
|
}
|
2097
2098
|
|
2099
|
+
def parse_funding_interval(self, interval):
|
2100
|
+
intervals: dict = {
|
2101
|
+
'3600000': '1h',
|
2102
|
+
'14400000': '4h',
|
2103
|
+
'28800000': '8h',
|
2104
|
+
'57600000': '16h',
|
2105
|
+
'86400000': '24h',
|
2106
|
+
}
|
2107
|
+
return self.safe_string(intervals, interval, interval)
|
2108
|
+
|
2098
2109
|
def parse_balance(self, response) -> Balances:
|
2099
2110
|
result: dict = {
|
2100
2111
|
'info': response,
|
ccxt/async_support/mexc.py
CHANGED
@@ -7,7 +7,7 @@ from ccxt.async_support.base.exchange import Exchange
|
|
7
7
|
from ccxt.abstract.mexc import ImplicitAPI
|
8
8
|
import asyncio
|
9
9
|
import hashlib
|
10
|
-
from ccxt.base.types import Account, Balances, Currencies, Currency, IndexType, Int, Leverage, LeverageTier, LeverageTiers, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction, TransferEntry
|
10
|
+
from ccxt.base.types import Account, Balances, Currencies, Currency, IndexType, Int, Leverage, LeverageTier, LeverageTiers, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, FundingRate, Trade, TradingFees, Transaction, TransferEntry
|
11
11
|
from typing import List
|
12
12
|
from ccxt.base.errors import ExchangeError
|
13
13
|
from ccxt.base.errors import AuthenticationError
|
@@ -3905,7 +3905,7 @@ class mexc(Exchange, ImplicitAPI):
|
|
3905
3905
|
})
|
3906
3906
|
return result
|
3907
3907
|
|
3908
|
-
def parse_funding_rate(self, contract, market: Market = None):
|
3908
|
+
def parse_funding_rate(self, contract, market: Market = None) -> FundingRate:
|
3909
3909
|
#
|
3910
3910
|
# {
|
3911
3911
|
# "symbol": "BTC_USDT",
|
@@ -3941,9 +3941,10 @@ class mexc(Exchange, ImplicitAPI):
|
|
3941
3941
|
'previousFundingRate': None,
|
3942
3942
|
'previousFundingTimestamp': None,
|
3943
3943
|
'previousFundingDatetime': None,
|
3944
|
+
'interval': None,
|
3944
3945
|
}
|
3945
3946
|
|
3946
|
-
async def fetch_funding_rate(self, symbol: str, params={}):
|
3947
|
+
async def fetch_funding_rate(self, symbol: str, params={}) -> FundingRate:
|
3947
3948
|
"""
|
3948
3949
|
fetch the current funding rate
|
3949
3950
|
:see: https://mexcdevelop.github.io/apidocs/contract_v1_en/#get-contract-funding-rate
|
ccxt/async_support/oceanex.py
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.oceanex import ImplicitAPI
|
8
|
-
from ccxt.base.types import Balances, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees
|
8
|
+
from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees
|
9
9
|
from typing import List
|
10
10
|
from ccxt.base.errors import ExchangeError
|
11
11
|
from ccxt.base.errors import AuthenticationError
|
@@ -54,9 +54,9 @@ class oceanex(Exchange, ImplicitAPI):
|
|
54
54
|
'fetchClosedOrders': True,
|
55
55
|
'fetchCrossBorrowRate': False,
|
56
56
|
'fetchCrossBorrowRates': False,
|
57
|
-
'fetchDepositAddress':
|
58
|
-
'fetchDepositAddresses':
|
59
|
-
'fetchDepositAddressesByNetwork':
|
57
|
+
'fetchDepositAddress': 'emulated',
|
58
|
+
'fetchDepositAddresses': None,
|
59
|
+
'fetchDepositAddressesByNetwork': True,
|
60
60
|
'fetchIsolatedBorrowRate': False,
|
61
61
|
'fetchIsolatedBorrowRates': False,
|
62
62
|
'fetchMarkets': True,
|
@@ -117,6 +117,11 @@ class oceanex(Exchange, ImplicitAPI):
|
|
117
117
|
'order/delete',
|
118
118
|
'order/delete/multi',
|
119
119
|
'orders/clear',
|
120
|
+
'/withdraws/special/new',
|
121
|
+
'/deposit_address',
|
122
|
+
'/deposit_addresses',
|
123
|
+
'/deposit_history',
|
124
|
+
'/withdraw_history',
|
120
125
|
],
|
121
126
|
},
|
122
127
|
},
|
@@ -858,6 +863,77 @@ class oceanex(Exchange, ImplicitAPI):
|
|
858
863
|
data = self.safe_list(response, 'data')
|
859
864
|
return self.parse_orders(data)
|
860
865
|
|
866
|
+
async def fetch_deposit_addresses_by_network(self, code: str, params={}):
|
867
|
+
"""
|
868
|
+
fetch the deposit addresses for a currency associated with self account
|
869
|
+
:see: https://api.oceanex.pro/doc/v1/#deposit-addresses-post
|
870
|
+
:param str code: unified currency code
|
871
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
872
|
+
:returns dict: a dictionary `address structures <https://docs.ccxt.com/#/?id=address-structure>`, indexed by the network
|
873
|
+
"""
|
874
|
+
await self.load_markets()
|
875
|
+
currency = self.currency(code)
|
876
|
+
request: dict = {
|
877
|
+
'currency': currency['id'],
|
878
|
+
}
|
879
|
+
response = await self.privatePostDepositAddresses(self.extend(request, params))
|
880
|
+
#
|
881
|
+
# {
|
882
|
+
# code: '0',
|
883
|
+
# message: 'Operation successful',
|
884
|
+
# data: {
|
885
|
+
# data: {
|
886
|
+
# currency_id: 'usdt',
|
887
|
+
# display_name: 'USDT',
|
888
|
+
# num_of_resources: '3',
|
889
|
+
# resources: [
|
890
|
+
# {
|
891
|
+
# chain_name: 'TRC20',
|
892
|
+
# currency_id: 'usdt',
|
893
|
+
# address: 'TPcS7VgKMFmpRrWY82GbJzDeMnemWxEbpg',
|
894
|
+
# memo: '',
|
895
|
+
# deposit_status: 'enabled'
|
896
|
+
# },
|
897
|
+
# ...
|
898
|
+
# ]
|
899
|
+
# }
|
900
|
+
# }
|
901
|
+
# }
|
902
|
+
#
|
903
|
+
data = self.safe_dict(response, 'data', {})
|
904
|
+
data2 = self.safe_dict(data, 'data', {})
|
905
|
+
resources = self.safe_list(data2, 'resources', [])
|
906
|
+
result = {}
|
907
|
+
for i in range(0, len(resources)):
|
908
|
+
resource = resources[i]
|
909
|
+
enabled = self.safe_string(resource, 'deposit_status')
|
910
|
+
if enabled == 'enabled':
|
911
|
+
parsedAddress = self.parse_deposit_address(resource, currency)
|
912
|
+
result[parsedAddress['currency']] = parsedAddress
|
913
|
+
return result
|
914
|
+
|
915
|
+
def parse_deposit_address(self, depositAddress, currency: Currency = None):
|
916
|
+
#
|
917
|
+
# {
|
918
|
+
# chain_name: 'TRC20',
|
919
|
+
# currency_id: 'usdt',
|
920
|
+
# address: 'TPcS7VgKMFmpRrWY82GbJzDeMnemWxEbpg',
|
921
|
+
# memo: '',
|
922
|
+
# deposit_status: 'enabled'
|
923
|
+
# }
|
924
|
+
#
|
925
|
+
address = self.safe_string(depositAddress, 'address')
|
926
|
+
self.check_address(address)
|
927
|
+
currencyId = self.safe_string(depositAddress, 'currency_id')
|
928
|
+
networkId = self.safe_string(depositAddress, 'chain_name')
|
929
|
+
return {
|
930
|
+
'info': depositAddress,
|
931
|
+
'currency': self.safe_currency_code(currencyId, currency),
|
932
|
+
'address': address,
|
933
|
+
'tag': self.safe_string(depositAddress, 'memo'),
|
934
|
+
'network': self.network_id_to_code(networkId),
|
935
|
+
}
|
936
|
+
|
861
937
|
def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
|
862
938
|
url = self.urls['api']['rest'] + '/' + self.version + '/' + self.implode_params(path, params)
|
863
939
|
query = self.omit(params, self.extract_params(path))
|
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, Conversion, CrossBorrowRate, CrossBorrowRates, Currencies, Currency, Greeks, Int, LedgerEntry, Leverage, LeverageTier, MarginModification, Market, MarketInterface, Num, Option, OptionChain, Order, OrderBook, OrderRequest, CancellationRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction, TransferEntry
|
10
|
+
from ccxt.base.types import Account, Balances, Conversion, CrossBorrowRate, CrossBorrowRates, Currencies, Currency, Greeks, Int, LedgerEntry, Leverage, LeverageTier, MarginModification, Market, MarketInterface, Num, Option, OptionChain, Order, OrderBook, OrderRequest, CancellationRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, FundingRate, Trade, TradingFeeInterface, Transaction, TransferEntry
|
11
11
|
from typing import List
|
12
12
|
from typing import Any
|
13
13
|
from ccxt.base.errors import ExchangeError
|
@@ -5623,7 +5623,7 @@ class okx(Exchange, ImplicitAPI):
|
|
5623
5623
|
headers['OK-ACCESS-SIGN'] = signature
|
5624
5624
|
return {'url': url, 'method': method, 'body': body, 'headers': headers}
|
5625
5625
|
|
5626
|
-
def parse_funding_rate(self, contract, market: Market = None):
|
5626
|
+
def parse_funding_rate(self, contract, market: Market = None) -> FundingRate:
|
5627
5627
|
#
|
5628
5628
|
# {
|
5629
5629
|
# "fundingRate": "0.00027815",
|
@@ -5657,6 +5657,9 @@ class okx(Exchange, ImplicitAPI):
|
|
5657
5657
|
symbol = self.safe_symbol(marketId, market)
|
5658
5658
|
nextFundingRate = self.safe_number(contract, 'nextFundingRate')
|
5659
5659
|
fundingTime = self.safe_integer(contract, 'fundingTime')
|
5660
|
+
fundingTimeString = self.safe_string(contract, 'fundingTime')
|
5661
|
+
nextFundingTimeString = self.safe_string(contract, 'nextFundingRate')
|
5662
|
+
millisecondsInterval = Precise.string_sub(nextFundingTimeString, fundingTimeString)
|
5660
5663
|
# https://www.okx.com/support/hc/en-us/articles/360053909272-Ⅸ-Introduction-to-perpetual-swap-funding-fee
|
5661
5664
|
# > The current interest is 0.
|
5662
5665
|
return {
|
@@ -5677,9 +5680,20 @@ class okx(Exchange, ImplicitAPI):
|
|
5677
5680
|
'previousFundingRate': None,
|
5678
5681
|
'previousFundingTimestamp': None,
|
5679
5682
|
'previousFundingDatetime': None,
|
5683
|
+
'interval': self.parse_funding_interval(millisecondsInterval),
|
5680
5684
|
}
|
5681
5685
|
|
5682
|
-
|
5686
|
+
def parse_funding_interval(self, interval):
|
5687
|
+
intervals: dict = {
|
5688
|
+
'3600000': '1h',
|
5689
|
+
'14400000': '4h',
|
5690
|
+
'28800000': '8h',
|
5691
|
+
'57600000': '16h',
|
5692
|
+
'86400000': '24h',
|
5693
|
+
}
|
5694
|
+
return self.safe_string(intervals, interval, interval)
|
5695
|
+
|
5696
|
+
async def fetch_funding_rate(self, symbol: str, params={}) -> FundingRate:
|
5683
5697
|
"""
|
5684
5698
|
fetch the current funding rate
|
5685
5699
|
:see: https://www.okx.com/docs-v5/en/#public-data-rest-api-get-funding-rate
|
ccxt/async_support/oxfun.py
CHANGED
@@ -7,7 +7,7 @@ from ccxt.async_support.base.exchange import Exchange
|
|
7
7
|
from ccxt.abstract.oxfun import ImplicitAPI
|
8
8
|
import asyncio
|
9
9
|
import hashlib
|
10
|
-
from ccxt.base.types import Account, Balances, Bool, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
10
|
+
from ccxt.base.types import Account, Balances, Bool, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, Transaction, TransferEntry
|
11
11
|
from typing import List
|
12
12
|
from ccxt.base.errors import ExchangeError
|
13
13
|
from ccxt.base.errors import AuthenticationError
|
@@ -84,7 +84,7 @@ class oxfun(Exchange, ImplicitAPI):
|
|
84
84
|
'fetchDepositWithdrawFee': False,
|
85
85
|
'fetchDepositWithdrawFees': False,
|
86
86
|
'fetchFundingHistory': True,
|
87
|
-
'fetchFundingRate':
|
87
|
+
'fetchFundingRate': 'emulated',
|
88
88
|
'fetchFundingRateHistory': True,
|
89
89
|
'fetchFundingRates': True,
|
90
90
|
'fetchIndexOHLCV': False,
|
@@ -988,10 +988,10 @@ class oxfun(Exchange, ImplicitAPI):
|
|
988
988
|
timestamp = self.safe_integer(data, 'lastUpdatedAt')
|
989
989
|
return self.parse_order_book(data, market['symbol'], timestamp)
|
990
990
|
|
991
|
-
async def fetch_funding_rates(self, symbols: Strings = None, params={}):
|
991
|
+
async def fetch_funding_rates(self, symbols: Strings = None, params={}) -> FundingRates:
|
992
992
|
"""
|
993
|
+
fetch the current funding rates for multiple markets
|
993
994
|
:see: https://docs.ox.fun/?json#get-v3-funding-estimates
|
994
|
-
fetch the current funding rates
|
995
995
|
:param str[] symbols: unified market symbols
|
996
996
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
997
997
|
:returns Order[]: an array of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rate-structure>`
|
@@ -1021,14 +1021,13 @@ class oxfun(Exchange, ImplicitAPI):
|
|
1021
1021
|
result = self.parse_funding_rates(data)
|
1022
1022
|
return self.filter_by_array(result, 'symbol', symbols)
|
1023
1023
|
|
1024
|
-
def parse_funding_rate(self, fundingRate, market: Market = None):
|
1024
|
+
def parse_funding_rate(self, fundingRate, market: Market = None) -> FundingRate:
|
1025
1025
|
#
|
1026
1026
|
# {
|
1027
1027
|
# "marketCode": "OX-USD-SWAP-LIN",
|
1028
1028
|
# "fundingAt": "1715515200000",
|
1029
1029
|
# "estFundingRate": "0.000200000"
|
1030
|
-
# }
|
1031
|
-
#
|
1030
|
+
# }
|
1032
1031
|
#
|
1033
1032
|
symbol = self.safe_string(fundingRate, 'marketCode')
|
1034
1033
|
market = self.market(symbol)
|
@@ -1051,6 +1050,7 @@ class oxfun(Exchange, ImplicitAPI):
|
|
1051
1050
|
'previousFundingRate': None,
|
1052
1051
|
'previousFundingTimestamp': None,
|
1053
1052
|
'previousFundingDatetime': None,
|
1053
|
+
'interval': None,
|
1054
1054
|
}
|
1055
1055
|
|
1056
1056
|
async def fetch_funding_rate_history(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
ccxt/async_support/phemex.py
CHANGED
@@ -7,7 +7,7 @@ from ccxt.async_support.base.exchange import Exchange
|
|
7
7
|
from ccxt.abstract.phemex import ImplicitAPI
|
8
8
|
import hashlib
|
9
9
|
import numbers
|
10
|
-
from ccxt.base.types import Balances, Currencies, Currency, Int, LeverageTier, LeverageTiers, MarginModification, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
10
|
+
from ccxt.base.types import Balances, Currencies, Currency, Int, LeverageTier, LeverageTiers, MarginModification, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, Trade, Transaction, TransferEntry
|
11
11
|
from typing import List
|
12
12
|
from ccxt.base.errors import ExchangeError
|
13
13
|
from ccxt.base.errors import AuthenticationError
|
@@ -3741,7 +3741,7 @@ class phemex(Exchange, ImplicitAPI):
|
|
3741
3741
|
value = Precise.string_mul(value, tickPrecision)
|
3742
3742
|
return value
|
3743
3743
|
|
3744
|
-
async def fetch_funding_rate(self, symbol: str, params={}):
|
3744
|
+
async def fetch_funding_rate(self, symbol: str, params={}) -> FundingRate:
|
3745
3745
|
"""
|
3746
3746
|
fetch the current funding rate
|
3747
3747
|
:param str symbol: unified market symbol
|
@@ -3786,7 +3786,7 @@ class phemex(Exchange, ImplicitAPI):
|
|
3786
3786
|
result = self.safe_value(response, 'result', {})
|
3787
3787
|
return self.parse_funding_rate(result, market)
|
3788
3788
|
|
3789
|
-
def parse_funding_rate(self, contract, market: Market = None):
|
3789
|
+
def parse_funding_rate(self, contract, market: Market = None) -> FundingRate:
|
3790
3790
|
#
|
3791
3791
|
# {
|
3792
3792
|
# "askEp": 2332500,
|
@@ -3845,6 +3845,7 @@ class phemex(Exchange, ImplicitAPI):
|
|
3845
3845
|
'previousFundingRate': None,
|
3846
3846
|
'previousFundingTimestamp': None,
|
3847
3847
|
'previousFundingDatetime': None,
|
3848
|
+
'interval': None,
|
3848
3849
|
}
|
3849
3850
|
|
3850
3851
|
async def set_margin(self, symbol: str, amount: float, params={}) -> MarginModification:
|
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.poloniexfutures import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade
|
9
|
+
from ccxt.base.types import Balances, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, Trade
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import AuthenticationError
|
12
12
|
from ccxt.base.errors import AccountSuspended
|
@@ -1527,7 +1527,7 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
1527
1527
|
'trades': None,
|
1528
1528
|
}, market)
|
1529
1529
|
|
1530
|
-
async def fetch_funding_rate(self, symbol: str, params={}):
|
1530
|
+
async def fetch_funding_rate(self, symbol: str, params={}) -> FundingRate:
|
1531
1531
|
"""
|
1532
1532
|
fetch the current funding rate
|
1533
1533
|
:see: https://api-docs.poloniex.com/futures/api/futures-index#get-premium-index
|
@@ -1571,8 +1571,19 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
1571
1571
|
'previousFundingRate': self.safe_number(data, 'value'),
|
1572
1572
|
'previousFundingTimestamp': fundingTimestamp,
|
1573
1573
|
'previousFundingDatetime': self.iso8601(fundingTimestamp),
|
1574
|
+
'interval': self.parse_funding_interval(self.safe_string(data, 'interval')),
|
1574
1575
|
}
|
1575
1576
|
|
1577
|
+
def parse_funding_interval(self, interval):
|
1578
|
+
intervals: dict = {
|
1579
|
+
'3600000': '1h',
|
1580
|
+
'14400000': '4h',
|
1581
|
+
'28800000': '8h',
|
1582
|
+
'57600000': '16h',
|
1583
|
+
'86400000': '24h',
|
1584
|
+
}
|
1585
|
+
return self.safe_string(intervals, interval, interval)
|
1586
|
+
|
1576
1587
|
async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
1577
1588
|
"""
|
1578
1589
|
fetch all trades made by the user
|
ccxt/async_support/vertex.py
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.vertex import ImplicitAPI
|
8
|
-
from ccxt.base.types import Balances, Currencies, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees
|
8
|
+
from ccxt.base.types import Balances, Currencies, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TradingFees
|
9
9
|
from typing import List
|
10
10
|
from ccxt.base.errors import ExchangeError
|
11
11
|
from ccxt.base.errors import AuthenticationError
|
@@ -1154,7 +1154,7 @@ class vertex(Exchange, ImplicitAPI):
|
|
1154
1154
|
rows = self.safe_list(response, 'candlesticks', [])
|
1155
1155
|
return self.parse_ohlcvs(rows, market, timeframe, since, limit)
|
1156
1156
|
|
1157
|
-
def parse_funding_rate(self, ticker, market: Market = None):
|
1157
|
+
def parse_funding_rate(self, ticker, market: Market = None) -> FundingRate:
|
1158
1158
|
#
|
1159
1159
|
# {
|
1160
1160
|
# "product_id": 4,
|
@@ -1208,9 +1208,10 @@ class vertex(Exchange, ImplicitAPI):
|
|
1208
1208
|
'previousFundingRate': None,
|
1209
1209
|
'previousFundingTimestamp': None,
|
1210
1210
|
'previousFundingDatetime': None,
|
1211
|
+
'interval': None,
|
1211
1212
|
}
|
1212
1213
|
|
1213
|
-
async def fetch_funding_rate(self, symbol: str, params={}):
|
1214
|
+
async def fetch_funding_rate(self, symbol: str, params={}) -> FundingRate:
|
1214
1215
|
"""
|
1215
1216
|
fetch the current funding rate
|
1216
1217
|
:see: https://docs.vertexprotocol.com/developer-resources/api/archive-indexer/funding-rate
|
@@ -1235,13 +1236,13 @@ class vertex(Exchange, ImplicitAPI):
|
|
1235
1236
|
#
|
1236
1237
|
return self.parse_funding_rate(response, market)
|
1237
1238
|
|
1238
|
-
async def fetch_funding_rates(self, symbols: Strings = None, params={}):
|
1239
|
+
async def fetch_funding_rates(self, symbols: Strings = None, params={}) -> FundingRates:
|
1239
1240
|
"""
|
1240
1241
|
fetches funding rates for multiple markets
|
1241
1242
|
:see: https://docs.vertexprotocol.com/developer-resources/api/v2/contracts
|
1242
1243
|
:param str[] symbols: unified symbols of the markets to fetch the funding rates for, all market funding rates are returned if not assigned
|
1243
1244
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1244
|
-
:returns dict: an array of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rate-structure>`
|
1245
|
+
:returns dict[]: an array of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rate-structure>`
|
1245
1246
|
"""
|
1246
1247
|
await self.load_markets()
|
1247
1248
|
request = {}
|
ccxt/async_support/whitebit.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.whitebit import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Bool, Currencies, Currency, Int, Market, MarketType, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction, TransferEntry
|
9
|
+
from ccxt.base.types import Balances, Bool, Currencies, Currency, Int, Market, MarketType, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TradingFees, Transaction, TransferEntry
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
12
|
from ccxt.base.errors import AuthenticationError
|
@@ -2219,10 +2219,10 @@ class whitebit(Exchange, ImplicitAPI):
|
|
2219
2219
|
'info': info,
|
2220
2220
|
}
|
2221
2221
|
|
2222
|
-
async def fetch_funding_rate(self, symbol: str, params={}):
|
2222
|
+
async def fetch_funding_rate(self, symbol: str, params={}) -> FundingRate:
|
2223
2223
|
"""
|
2224
|
-
:see: https://docs.whitebit.com/public/http-v4/#available-futures-markets-list
|
2225
2224
|
fetch the current funding rate
|
2225
|
+
:see: https://docs.whitebit.com/public/http-v4/#available-futures-markets-list
|
2226
2226
|
:param str symbol: unified market symbol
|
2227
2227
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
2228
2228
|
:returns dict: a `funding rate structure <https://docs.ccxt.com/#/?id=funding-rate-structure>`
|
@@ -2232,13 +2232,13 @@ class whitebit(Exchange, ImplicitAPI):
|
|
2232
2232
|
response = await self.fetch_funding_rates([symbol], params)
|
2233
2233
|
return self.safe_value(response, symbol)
|
2234
2234
|
|
2235
|
-
async def fetch_funding_rates(self, symbols: Strings = None, params={}):
|
2235
|
+
async def fetch_funding_rates(self, symbols: Strings = None, params={}) -> FundingRates:
|
2236
2236
|
"""
|
2237
|
-
:see: https://docs.whitebit.com/public/http-v4/#available-futures-markets-list
|
2238
2237
|
fetch the funding rate for multiple markets
|
2238
|
+
:see: https://docs.whitebit.com/public/http-v4/#available-futures-markets-list
|
2239
2239
|
:param str[]|None symbols: list of unified market symbols
|
2240
2240
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
2241
|
-
:returns dict: a
|
2241
|
+
:returns dict[]: a list of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rates-structure>`, indexed by market symbols
|
2242
2242
|
"""
|
2243
2243
|
await self.load_markets()
|
2244
2244
|
symbols = self.market_symbols(symbols)
|
@@ -2287,11 +2287,11 @@ class whitebit(Exchange, ImplicitAPI):
|
|
2287
2287
|
# }
|
2288
2288
|
# ]
|
2289
2289
|
#
|
2290
|
-
data = self.
|
2290
|
+
data = self.safe_list(response, 'result', [])
|
2291
2291
|
result = self.parse_funding_rates(data)
|
2292
2292
|
return self.filter_by_array(result, 'symbol', symbols)
|
2293
2293
|
|
2294
|
-
def parse_funding_rate(self, contract, market: Market = None):
|
2294
|
+
def parse_funding_rate(self, contract, market: Market = None) -> FundingRate:
|
2295
2295
|
#
|
2296
2296
|
# {
|
2297
2297
|
# "ticker_id":"ADA_PERP",
|
@@ -2330,7 +2330,7 @@ class whitebit(Exchange, ImplicitAPI):
|
|
2330
2330
|
indexPrice = self.safe_number(contract, 'indexPrice')
|
2331
2331
|
interestRate = self.safe_number(contract, 'interestRate')
|
2332
2332
|
fundingRate = self.safe_number(contract, 'funding_rate')
|
2333
|
-
|
2333
|
+
fundingTime = self.safe_integer(contract, 'next_funding_rate_timestamp')
|
2334
2334
|
return {
|
2335
2335
|
'info': contract,
|
2336
2336
|
'symbol': symbol,
|
@@ -2340,14 +2340,15 @@ class whitebit(Exchange, ImplicitAPI):
|
|
2340
2340
|
'timestamp': None,
|
2341
2341
|
'datetime': None,
|
2342
2342
|
'fundingRate': fundingRate,
|
2343
|
-
'fundingTimestamp':
|
2344
|
-
'fundingDatetime': self.iso8601(
|
2343
|
+
'fundingTimestamp': fundingTime,
|
2344
|
+
'fundingDatetime': self.iso8601(fundingTime),
|
2345
2345
|
'nextFundingRate': None,
|
2346
|
-
'nextFundingTimestamp':
|
2347
|
-
'nextFundingDatetime':
|
2346
|
+
'nextFundingTimestamp': None,
|
2347
|
+
'nextFundingDatetime': None,
|
2348
2348
|
'previousFundingRate': None,
|
2349
2349
|
'previousFundingTimestamp': None,
|
2350
2350
|
'previousFundingDatetime': None,
|
2351
|
+
'interval': None,
|
2351
2352
|
}
|
2352
2353
|
|
2353
2354
|
async def fetch_deposits_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|