ccxt 4.3.18 → 4.3.20
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.
- package/README.md +7 -5
- package/dist/cjs/ccxt.js +6 -1
- package/dist/cjs/src/abstract/woofipro.js +9 -0
- package/dist/cjs/src/ascendex.js +3 -4
- package/dist/cjs/src/base/Exchange.js +45 -2
- package/dist/cjs/src/base/functions/crypto.js +10 -3
- package/dist/cjs/src/base/functions/encode.js +6 -3
- package/dist/cjs/src/base/functions/number.js +8 -5
- package/dist/cjs/src/base/functions/rsa.js +5 -5
- package/dist/cjs/src/bigone.js +1 -1
- package/dist/cjs/src/bitfinex.js +25 -1
- package/dist/cjs/src/bitfinex2.js +59 -51
- package/dist/cjs/src/bitget.js +4 -5
- package/dist/cjs/src/bitmart.js +3 -3
- package/dist/cjs/src/bitstamp.js +1 -3
- package/dist/cjs/src/bybit.js +39 -9
- package/dist/cjs/src/coinex.js +360 -560
- package/dist/cjs/src/coinlist.js +1 -2
- package/dist/cjs/src/deribit.js +1 -1
- package/dist/cjs/src/hollaex.js +3 -3
- package/dist/cjs/src/indodax.js +1 -1
- package/dist/cjs/src/latoken.js +1 -1
- package/dist/cjs/src/mexc.js +1 -1
- package/dist/cjs/src/novadax.js +0 -1
- package/dist/cjs/src/okx.js +17 -0
- package/dist/cjs/src/phemex.js +17 -6
- package/dist/cjs/src/poloniex.js +1 -2
- package/dist/cjs/src/pro/bitget.js +136 -192
- package/dist/cjs/src/pro/coinbaseinternational.js +9 -1
- package/dist/cjs/src/pro/htx.js +12 -7
- package/dist/cjs/src/pro/okx.js +85 -0
- package/dist/cjs/src/pro/woofipro.js +1263 -0
- package/dist/cjs/src/wavesexchange.js +2 -2
- package/dist/cjs/src/woo.js +17 -3
- package/dist/cjs/src/woofipro.js +2698 -0
- package/js/ccxt.d.ts +8 -2
- package/js/ccxt.js +6 -2
- package/js/src/abstract/bitget.d.ts +3 -0
- package/js/src/abstract/bybit.d.ts +1 -0
- package/js/src/abstract/okx.d.ts +1 -0
- package/js/src/abstract/woofipro.d.ts +122 -0
- package/js/src/abstract/woofipro.js +11 -0
- package/js/src/ace.d.ts +2 -2
- package/js/src/ascendex.d.ts +5 -15
- package/js/src/ascendex.js +3 -4
- package/js/src/base/Exchange.d.ts +26 -17
- package/js/src/base/Exchange.js +45 -2
- package/js/src/base/functions/crypto.d.ts +1 -1
- package/js/src/base/functions/crypto.js +10 -3
- package/js/src/base/functions/encode.d.ts +1 -1
- package/js/src/base/functions/encode.js +6 -3
- package/js/src/base/functions/number.d.ts +1 -1
- package/js/src/base/functions/number.js +8 -5
- package/js/src/base/functions/rsa.js +6 -6
- package/js/src/base/types.d.ts +4 -0
- package/js/src/bigone.d.ts +4 -14
- package/js/src/bigone.js +1 -1
- package/js/src/binance.d.ts +13 -71
- package/js/src/binancecoinm.d.ts +2 -22
- package/js/src/binanceusdm.d.ts +2 -22
- package/js/src/bingx.d.ts +4 -14
- package/js/src/bit2c.d.ts +2 -2
- package/js/src/bitbank.d.ts +2 -2
- package/js/src/bitbns.d.ts +2 -2
- package/js/src/bitfinex.d.ts +6 -16
- package/js/src/bitfinex.js +25 -1
- package/js/src/bitfinex2.d.ts +6 -16
- package/js/src/bitfinex2.js +59 -51
- package/js/src/bitflyer.d.ts +2 -2
- package/js/src/bitget.d.ts +7 -17
- package/js/src/bitget.js +4 -5
- package/js/src/bithumb.d.ts +3 -3
- package/js/src/bitmart.d.ts +5 -14
- package/js/src/bitmart.js +3 -3
- package/js/src/bitmex.d.ts +4 -4
- package/js/src/bitopro.d.ts +2 -2
- package/js/src/bitrue.d.ts +5 -5
- package/js/src/bitso.d.ts +2 -2
- package/js/src/bitstamp.d.ts +3 -3
- package/js/src/bitstamp.js +1 -3
- package/js/src/bitteam.d.ts +2 -2
- package/js/src/bitvavo.d.ts +5 -5
- package/js/src/bl3p.d.ts +2 -2
- package/js/src/blockchaincom.d.ts +2 -2
- package/js/src/blofin.d.ts +4 -14
- package/js/src/btcalpha.d.ts +2 -2
- package/js/src/btcbox.d.ts +2 -2
- package/js/src/btcmarkets.d.ts +2 -2
- package/js/src/btcturk.d.ts +2 -2
- package/js/src/bybit.d.ts +9 -56
- package/js/src/bybit.js +39 -9
- package/js/src/cex.d.ts +2 -2
- package/js/src/coinbase.d.ts +4 -4
- package/js/src/coinbasepro.d.ts +3 -3
- package/js/src/coincheck.d.ts +2 -2
- package/js/src/coinex.d.ts +7 -17
- package/js/src/coinex.js +360 -560
- package/js/src/coinlist.d.ts +5 -15
- package/js/src/coinlist.js +1 -2
- package/js/src/coinmate.d.ts +2 -2
- package/js/src/coinmetro.d.ts +3 -3
- package/js/src/coinone.d.ts +2 -2
- package/js/src/coinsph.d.ts +2 -2
- package/js/src/coinspot.d.ts +2 -2
- package/js/src/cryptocom.d.ts +2 -2
- package/js/src/currencycom.d.ts +3 -3
- package/js/src/delta.d.ts +5 -43
- package/js/src/deribit.d.ts +7 -55
- package/js/src/deribit.js +1 -1
- package/js/src/digifinex.d.ts +5 -15
- package/js/src/exmo.d.ts +2 -2
- package/js/src/gate.d.ts +6 -54
- package/js/src/gemini.d.ts +2 -2
- package/js/src/hitbtc.d.ts +4 -14
- package/js/src/hollaex.d.ts +3 -3
- package/js/src/hollaex.js +3 -3
- package/js/src/htx.d.ts +4 -14
- package/js/src/huobijp.d.ts +4 -4
- package/js/src/hyperliquid.d.ts +1 -1
- package/js/src/idex.d.ts +3 -3
- package/js/src/independentreserve.d.ts +2 -2
- package/js/src/indodax.d.ts +2 -2
- package/js/src/indodax.js +1 -1
- package/js/src/kraken.d.ts +4 -14
- package/js/src/krakenfutures.d.ts +4 -14
- package/js/src/kucoin.d.ts +5 -15
- package/js/src/kucoinfutures.d.ts +4 -14
- package/js/src/kuna.d.ts +2 -2
- package/js/src/latoken.d.ts +5 -15
- package/js/src/latoken.js +1 -1
- package/js/src/lbank.d.ts +2 -2
- package/js/src/luno.d.ts +2 -2
- package/js/src/lykke.d.ts +2 -2
- package/js/src/mercado.d.ts +2 -2
- package/js/src/mexc.d.ts +8 -28
- package/js/src/mexc.js +1 -1
- package/js/src/ndax.d.ts +2 -2
- package/js/src/novadax.d.ts +4 -15
- package/js/src/novadax.js +0 -1
- package/js/src/okcoin.d.ts +4 -14
- package/js/src/okx.d.ts +10 -68
- package/js/src/okx.js +17 -0
- package/js/src/onetrading.d.ts +2 -2
- package/js/src/paymium.d.ts +4 -14
- package/js/src/phemex.d.ts +5 -15
- package/js/src/phemex.js +17 -6
- package/js/src/poloniex.d.ts +3 -13
- package/js/src/poloniex.js +1 -2
- package/js/src/poloniexfutures.d.ts +2 -2
- package/js/src/pro/bitget.js +137 -193
- package/js/src/pro/coinbaseinternational.d.ts +3 -3
- package/js/src/pro/coinbaseinternational.js +9 -1
- package/js/src/pro/htx.js +12 -7
- package/js/src/pro/okx.d.ts +4 -1
- package/js/src/pro/okx.js +85 -0
- package/js/src/pro/woofipro.d.ts +47 -0
- package/js/src/pro/woofipro.js +1264 -0
- package/js/src/probit.d.ts +3 -3
- package/js/src/timex.d.ts +2 -2
- package/js/src/tokocrypto.d.ts +3 -3
- package/js/src/upbit.d.ts +2 -2
- package/js/src/wavesexchange.d.ts +3 -3
- package/js/src/wavesexchange.js +2 -2
- package/js/src/wazirx.d.ts +2 -2
- package/js/src/whitebit.d.ts +3 -13
- package/js/src/woo.d.ts +7 -17
- package/js/src/woo.js +17 -3
- package/js/src/woofipro.d.ts +131 -0
- package/js/src/woofipro.js +2699 -0
- package/js/src/yobit.d.ts +2 -2
- package/js/src/zaif.d.ts +2 -2
- package/js/src/zonda.d.ts +4 -14
- package/package.json +1 -1
|
@@ -172,7 +172,14 @@ class coinbaseinternational extends coinbaseinternational$1 {
|
|
|
172
172
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
173
173
|
* @returns {object} a dictionary of [funding rates structures]{@link https://docs.ccxt.com/#/?id=funding-rates-structure}, indexe by market symbols
|
|
174
174
|
*/
|
|
175
|
-
|
|
175
|
+
const fundingRate = await this.subscribeMultiple('RISK', symbols, params);
|
|
176
|
+
const symbol = this.safeString(fundingRate, 'symbol');
|
|
177
|
+
if (this.newUpdates) {
|
|
178
|
+
const result = {};
|
|
179
|
+
result[symbol] = fundingRate;
|
|
180
|
+
return result;
|
|
181
|
+
}
|
|
182
|
+
return this.filterByArray(this.fundingRates, 'symbol', symbols);
|
|
176
183
|
}
|
|
177
184
|
async watchTicker(symbol, params = {}) {
|
|
178
185
|
/**
|
|
@@ -588,6 +595,7 @@ class coinbaseinternational extends coinbaseinternational$1 {
|
|
|
588
595
|
//
|
|
589
596
|
const channel = this.safeString(message, 'channel');
|
|
590
597
|
const fundingRate = this.parseFundingRate(message);
|
|
598
|
+
this.fundingRates[fundingRate['symbol']] = fundingRate;
|
|
591
599
|
client.resolve(fundingRate, channel + '::' + fundingRate['symbol']);
|
|
592
600
|
}
|
|
593
601
|
handleErrorMessage(client, message) {
|
package/dist/cjs/src/pro/htx.js
CHANGED
|
@@ -1897,7 +1897,7 @@ class htx extends htx$1 {
|
|
|
1897
1897
|
// "data": { "user-id": "35930539" }
|
|
1898
1898
|
// }
|
|
1899
1899
|
//
|
|
1900
|
-
const promise = client.futures['
|
|
1900
|
+
const promise = client.futures['auth'];
|
|
1901
1901
|
promise.resolve(message);
|
|
1902
1902
|
}
|
|
1903
1903
|
handleErrorMessage(client, message) {
|
|
@@ -1925,6 +1925,12 @@ class htx extends htx$1 {
|
|
|
1925
1925
|
// 'err-msg': "Non - single account user is not available, please check through the cross and isolated account asset interface",
|
|
1926
1926
|
// "ts": 1698419490189
|
|
1927
1927
|
// }
|
|
1928
|
+
// {
|
|
1929
|
+
// "action":"req",
|
|
1930
|
+
// "code":2002,
|
|
1931
|
+
// "ch":"auth",
|
|
1932
|
+
// "message":"auth.fail"
|
|
1933
|
+
// }
|
|
1928
1934
|
//
|
|
1929
1935
|
const status = this.safeString(message, 'status');
|
|
1930
1936
|
if (status === 'error') {
|
|
@@ -1935,6 +1941,7 @@ class htx extends htx$1 {
|
|
|
1935
1941
|
const errorCode = this.safeString(message, 'err-code');
|
|
1936
1942
|
try {
|
|
1937
1943
|
this.throwExactlyMatchedException(this.exceptions['ws']['exact'], errorCode, this.json(message));
|
|
1944
|
+
throw new errors.ExchangeError(this.json(message));
|
|
1938
1945
|
}
|
|
1939
1946
|
catch (e) {
|
|
1940
1947
|
const messageHash = this.safeString(subscription, 'messageHash');
|
|
@@ -1947,11 +1954,12 @@ class htx extends htx$1 {
|
|
|
1947
1954
|
}
|
|
1948
1955
|
return false;
|
|
1949
1956
|
}
|
|
1950
|
-
const code = this.
|
|
1951
|
-
if (code !== undefined && ((code !== 200) && (code !== 0))) {
|
|
1957
|
+
const code = this.safeString2(message, 'code', 'err-code');
|
|
1958
|
+
if (code !== undefined && ((code !== '200') && (code !== '0'))) {
|
|
1952
1959
|
const feedback = this.id + ' ' + this.json(message);
|
|
1953
1960
|
try {
|
|
1954
1961
|
this.throwExactlyMatchedException(this.exceptions['ws']['exact'], code, feedback);
|
|
1962
|
+
throw new errors.ExchangeError(feedback);
|
|
1955
1963
|
}
|
|
1956
1964
|
catch (e) {
|
|
1957
1965
|
if (e instanceof errors.AuthenticationError) {
|
|
@@ -2305,9 +2313,6 @@ class htx extends htx$1 {
|
|
|
2305
2313
|
'url': url,
|
|
2306
2314
|
'hostname': hostname,
|
|
2307
2315
|
};
|
|
2308
|
-
if (type === 'spot') {
|
|
2309
|
-
this.options['ws']['gunzip'] = false;
|
|
2310
|
-
}
|
|
2311
2316
|
await this.authenticate(authParams);
|
|
2312
2317
|
return await this.watch(url, messageHash, this.extend(request, params), channel, extendedSubsription);
|
|
2313
2318
|
}
|
|
@@ -2319,7 +2324,7 @@ class htx extends htx$1 {
|
|
|
2319
2324
|
throw new errors.ArgumentsRequired(this.id + ' authenticate requires a url, hostname and type argument');
|
|
2320
2325
|
}
|
|
2321
2326
|
this.checkRequiredCredentials();
|
|
2322
|
-
const messageHash = '
|
|
2327
|
+
const messageHash = 'auth';
|
|
2323
2328
|
const relativePath = url.replace('wss://' + hostname, '');
|
|
2324
2329
|
const client = this.client(url);
|
|
2325
2330
|
const future = client.future(messageHash);
|
package/dist/cjs/src/pro/okx.js
CHANGED
|
@@ -24,6 +24,8 @@ class okx extends okx$1 {
|
|
|
24
24
|
'watchOrders': true,
|
|
25
25
|
'watchMyTrades': true,
|
|
26
26
|
'watchPositions': true,
|
|
27
|
+
'watchFundingRate': true,
|
|
28
|
+
'watchFundingRates': true,
|
|
27
29
|
'createOrderWs': true,
|
|
28
30
|
'editOrderWs': true,
|
|
29
31
|
'cancelOrderWs': true,
|
|
@@ -245,6 +247,88 @@ class okx extends okx$1 {
|
|
|
245
247
|
client.resolve(stored, messageHash);
|
|
246
248
|
}
|
|
247
249
|
}
|
|
250
|
+
async watchFundingRate(symbol, params = {}) {
|
|
251
|
+
/**
|
|
252
|
+
* @method
|
|
253
|
+
* @name okx#watchFundingRate
|
|
254
|
+
* @description watch the current funding rate
|
|
255
|
+
* @see https://www.okx.com/docs-v5/en/#public-data-websocket-funding-rate-channel
|
|
256
|
+
* @param {string} symbol unified market symbol
|
|
257
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
258
|
+
* @returns {object} a [funding rate structure]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
|
|
259
|
+
*/
|
|
260
|
+
symbol = this.symbol(symbol);
|
|
261
|
+
const fr = await this.watchFundingRates([symbol], params);
|
|
262
|
+
return fr[symbol];
|
|
263
|
+
}
|
|
264
|
+
async watchFundingRates(symbols, params = {}) {
|
|
265
|
+
/**
|
|
266
|
+
* @method
|
|
267
|
+
* @name coinbaseinternational#watchFundingRates
|
|
268
|
+
* @description watch the funding rate for multiple markets
|
|
269
|
+
* @see https://www.okx.com/docs-v5/en/#public-data-websocket-funding-rate-channel
|
|
270
|
+
* @param {string[]} symbols list of unified market symbols
|
|
271
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
272
|
+
* @returns {object} a dictionary of [funding rates structures]{@link https://docs.ccxt.com/#/?id=funding-rates-structure}, indexe by market symbols
|
|
273
|
+
*/
|
|
274
|
+
await this.loadMarkets();
|
|
275
|
+
symbols = this.marketSymbols(symbols);
|
|
276
|
+
const channel = 'funding-rate';
|
|
277
|
+
const topics = [];
|
|
278
|
+
const messageHashes = [];
|
|
279
|
+
for (let i = 0; i < symbols.length; i++) {
|
|
280
|
+
const symbol = symbols[i];
|
|
281
|
+
messageHashes.push(channel + ':' + symbol);
|
|
282
|
+
const marketId = this.marketId(symbol);
|
|
283
|
+
const topic = {
|
|
284
|
+
'channel': channel,
|
|
285
|
+
'instId': marketId,
|
|
286
|
+
};
|
|
287
|
+
topics.push(topic);
|
|
288
|
+
}
|
|
289
|
+
const request = {
|
|
290
|
+
'op': 'subscribe',
|
|
291
|
+
'args': topics,
|
|
292
|
+
};
|
|
293
|
+
const url = this.getUrl(channel, 'public');
|
|
294
|
+
const fundingRate = await this.watchMultiple(url, messageHashes, request, messageHashes);
|
|
295
|
+
if (this.newUpdates) {
|
|
296
|
+
const symbol = this.safeString(fundingRate, 'symbol');
|
|
297
|
+
const result = {};
|
|
298
|
+
result[symbol] = fundingRate;
|
|
299
|
+
return result;
|
|
300
|
+
}
|
|
301
|
+
return this.filterByArray(this.fundingRates, 'symbol', symbols);
|
|
302
|
+
}
|
|
303
|
+
handleFundingRate(client, message) {
|
|
304
|
+
//
|
|
305
|
+
// "data":[
|
|
306
|
+
// {
|
|
307
|
+
// "fundingRate":"0.0001875391284828",
|
|
308
|
+
// "fundingTime":"1700726400000",
|
|
309
|
+
// "instId":"BTC-USD-SWAP",
|
|
310
|
+
// "instType":"SWAP",
|
|
311
|
+
// "method": "next_period",
|
|
312
|
+
// "maxFundingRate":"0.00375",
|
|
313
|
+
// "minFundingRate":"-0.00375",
|
|
314
|
+
// "nextFundingRate":"0.0002608059239328",
|
|
315
|
+
// "nextFundingTime":"1700755200000",
|
|
316
|
+
// "premium": "0.0001233824646391",
|
|
317
|
+
// "settFundingRate":"0.0001699799259033",
|
|
318
|
+
// "settState":"settled",
|
|
319
|
+
// "ts":"1700724675402"
|
|
320
|
+
// }
|
|
321
|
+
// ]
|
|
322
|
+
//
|
|
323
|
+
const data = this.safeList(message, 'data', []);
|
|
324
|
+
for (let i = 0; i < data.length; i++) {
|
|
325
|
+
const rawfr = data[i];
|
|
326
|
+
const fundingRate = this.parseFundingRate(rawfr);
|
|
327
|
+
const symbol = fundingRate['symbol'];
|
|
328
|
+
this.fundingRates[symbol] = fundingRate;
|
|
329
|
+
client.resolve(fundingRate, 'funding-rate' + ':' + fundingRate['symbol']);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
248
332
|
async watchTicker(symbol, params = {}) {
|
|
249
333
|
/**
|
|
250
334
|
* @method
|
|
@@ -1633,6 +1717,7 @@ class okx extends okx$1 {
|
|
|
1633
1717
|
'block-tickers': this.handleTicker,
|
|
1634
1718
|
'trades': this.handleTrades,
|
|
1635
1719
|
'account': this.handleBalance,
|
|
1720
|
+
'funding-rate': this.handleFundingRate,
|
|
1636
1721
|
// 'margin_account': this.handleBalance,
|
|
1637
1722
|
'orders': this.handleOrders,
|
|
1638
1723
|
'orders-algo': this.handleOrders,
|