ccxt 4.5.18 → 4.5.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 -6
- package/dist/ccxt.browser.min.js +40 -16
- package/dist/cjs/_virtual/index.cjs.js +1459 -9
- package/dist/cjs/ccxt.js +8 -2
- package/dist/cjs/src/abstract/dydx.js +11 -0
- package/dist/cjs/src/base/Exchange.js +164 -10
- package/dist/cjs/src/base/ws/Client.js +3 -1
- package/dist/cjs/src/binance.js +8 -1
- package/dist/cjs/src/bingx.js +20 -0
- package/dist/cjs/src/bitget.js +43 -41
- package/dist/cjs/src/bybit.js +21 -23
- package/dist/cjs/src/deribit.js +6 -0
- package/dist/cjs/src/dydx.js +2454 -0
- package/dist/cjs/src/gate.js +4 -4
- package/dist/cjs/src/hibachi.js +1 -1
- package/dist/cjs/src/hyperliquid.js +207 -9
- package/dist/cjs/src/kucoin.js +711 -109
- package/dist/cjs/src/mexc.js +2 -3
- package/dist/cjs/src/pro/binance.js +59 -144
- package/dist/cjs/src/pro/dydx.js +418 -0
- package/dist/cjs/src/pro/kraken.js +4 -3
- package/dist/cjs/src/pro/xt.js +218 -4
- package/dist/cjs/src/protobuf/mexc/compiled.cjs.js +1 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/base/v1beta1/coin.js +56 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/v1beta1/multisig.js +56 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/crypto/secp256k1/keys.js +48 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/tx/signing/v1beta1/signing.js +343 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/tx/v1beta1/tx.js +717 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/accountplus/tx.js +60 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/clob_pair.js +45 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order.js +380 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order_removals.js +72 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/tx.js +211 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/transfer.js +195 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/tx.js +49 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/subaccount.js +57 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/google/protobuf/any.js +56 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/helpers.js +79 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/long/index.cjs.js +9 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/onboarding.js +59 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/registry.js +39 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/pbkdf2.js +69 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/ripemd160.js +108 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/utils.js +50 -1
- package/dist/cjs/src/static_dependencies/scure-base/index.js +29 -0
- package/dist/cjs/src/static_dependencies/scure-bip32/index.js +278 -0
- package/dist/cjs/src/static_dependencies/scure-bip39/index.js +97 -0
- package/dist/cjs/src/static_dependencies/scure-bip39/wordlists/english.js +2060 -0
- package/dist/cjs/src/static_dependencies/zklink/zklink-sdk-web.js +2 -0
- package/dist/cjs/src/toobit.js +2 -1
- package/js/ccxt.d.ts +8 -2
- package/js/ccxt.js +6 -2
- package/js/src/abstract/binance.d.ts +7 -0
- package/js/src/abstract/binancecoinm.d.ts +7 -0
- package/js/src/abstract/binanceus.d.ts +7 -0
- package/js/src/abstract/binanceusdm.d.ts +7 -0
- package/js/src/abstract/bitget.d.ts +1 -0
- package/js/src/abstract/dydx.d.ts +61 -0
- package/js/src/abstract/dydx.js +11 -0
- package/js/src/abstract/kucoin.d.ts +1 -1
- package/js/src/abstract/kucoinfutures.d.ts +1 -1
- package/js/src/base/Exchange.d.ts +7 -0
- package/js/src/base/Exchange.js +163 -10
- package/js/src/base/ws/Client.js +3 -1
- package/js/src/binance.js +8 -1
- package/js/src/bingx.js +20 -0
- package/js/src/bitget.d.ts +3 -3
- package/js/src/bitget.js +43 -41
- package/js/src/bybit.d.ts +3 -3
- package/js/src/bybit.js +21 -23
- package/js/src/deribit.js +6 -0
- package/js/src/dydx.d.ts +364 -0
- package/js/src/dydx.js +2453 -0
- package/js/src/gate.d.ts +2 -2
- package/js/src/gate.js +4 -4
- package/js/src/hibachi.js +1 -1
- package/js/src/hyperliquid.d.ts +17 -0
- package/js/src/hyperliquid.js +207 -9
- package/js/src/kucoin.d.ts +48 -1
- package/js/src/kucoin.js +711 -109
- package/js/src/mexc.js +2 -3
- package/js/src/pro/binance.d.ts +2 -2
- package/js/src/pro/binance.js +59 -144
- package/js/src/pro/dydx.d.ts +81 -0
- package/js/src/pro/dydx.js +417 -0
- package/js/src/pro/kraken.js +4 -3
- package/js/src/pro/xt.d.ts +85 -2
- package/js/src/pro/xt.js +218 -4
- package/js/src/static_dependencies/dydx-v4-client/cosmos/base/v1beta1/coin.d.ts +90 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/base/v1beta1/coin.js +163 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/keys.d.ts +26 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/keys.js +51 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/v1beta1/multisig.d.ts +48 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/v1beta1/multisig.js +85 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/secp256k1/keys.d.ts +40 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/secp256k1/keys.js +77 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/tx/signing/v1beta1/signing.d.ts +162 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/tx/signing/v1beta1/signing.js +329 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/tx/v1beta1/tx.d.ts +460 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/tx/v1beta1/tx.js +698 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/accountplus/tx.d.ts +127 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/accountplus/tx.js +286 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/block_rate_limit_config.d.ts +66 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/block_rate_limit_config.js +109 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/clob_pair.d.ts +127 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/clob_pair.js +257 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/equity_tier_limit_config.d.ts +48 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/equity_tier_limit_config.js +93 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/finalize_block.d.ts +23 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/finalize_block.js +43 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/liquidations.d.ts +92 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/liquidations.js +164 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/liquidations_config.d.ts +124 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/liquidations_config.js +196 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/matches.d.ts +159 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/matches.js +324 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order.d.ts +546 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order.js +872 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order_removals.d.ts +84 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order_removals.js +181 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/tx.d.ts +397 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/tx.js +757 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/transfer.d.ts +120 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/transfer.js +246 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/tx.d.ts +79 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/tx.js +147 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/asset_position.d.ts +32 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/asset_position.js +59 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/perpetual_position.d.ts +34 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/perpetual_position.js +66 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/subaccount.d.ts +62 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/subaccount.js +111 -0
- package/js/src/static_dependencies/dydx-v4-client/google/protobuf/any.d.ts +207 -0
- package/js/src/static_dependencies/dydx-v4-client/google/protobuf/any.js +50 -0
- package/js/src/static_dependencies/dydx-v4-client/helpers.d.ts +82 -0
- package/js/src/static_dependencies/dydx-v4-client/helpers.js +172 -0
- package/js/src/static_dependencies/dydx-v4-client/long/index.cjs +1473 -0
- package/js/src/static_dependencies/dydx-v4-client/long/index.d.cts +2 -0
- package/js/src/static_dependencies/dydx-v4-client/onboarding.d.ts +35 -0
- package/js/src/static_dependencies/dydx-v4-client/onboarding.js +56 -0
- package/js/src/static_dependencies/dydx-v4-client/registry.d.ts +7 -0
- package/js/src/static_dependencies/dydx-v4-client/registry.js +36 -0
- package/js/src/static_dependencies/noble-hashes/utils.d.ts +1 -0
- package/js/src/static_dependencies/noble-hashes/utils.js +4 -0
- package/js/src/static_dependencies/scure-bip32/index.d.ts +49 -0
- package/js/src/static_dependencies/scure-bip32/index.js +295 -0
- package/js/src/static_dependencies/scure-bip39/index.d.ts +54 -0
- package/js/src/static_dependencies/scure-bip39/index.js +140 -0
- package/js/src/static_dependencies/scure-bip39/wordlists/english.d.ts +1 -0
- package/js/src/static_dependencies/scure-bip39/wordlists/english.js +2054 -0
- package/js/src/toobit.js +2 -1
- package/package.json +9 -3
package/js/src/mexc.js
CHANGED
|
@@ -3009,10 +3009,9 @@ export default class mexc extends Exchange {
|
|
|
3009
3009
|
}
|
|
3010
3010
|
[marketType, params] = this.handleMarketTypeAndParams('fetchOpenOrders', market, params);
|
|
3011
3011
|
if (marketType === 'spot') {
|
|
3012
|
-
if (symbol
|
|
3013
|
-
|
|
3012
|
+
if (symbol !== undefined) {
|
|
3013
|
+
request['symbol'] = market['id'];
|
|
3014
3014
|
}
|
|
3015
|
-
request['symbol'] = market['id'];
|
|
3016
3015
|
const [marginMode, query] = this.handleMarginModeAndParams('fetchOpenOrders', params);
|
|
3017
3016
|
let response = undefined;
|
|
3018
3017
|
if (marginMode !== undefined) {
|
package/js/src/pro/binance.d.ts
CHANGED
|
@@ -580,13 +580,13 @@ export default class binance extends binanceRest {
|
|
|
580
580
|
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
581
581
|
*/
|
|
582
582
|
watchBidsAsks(symbols?: Strings, params?: {}): Promise<Tickers>;
|
|
583
|
-
watchMultiTickerHelper(methodName: any, channelName: string, symbols?: Strings, params?: {}): Promise<any>;
|
|
583
|
+
watchMultiTickerHelper(methodName: any, channelName: string, symbols?: Strings, params?: {}, isUnsubscribe?: boolean): Promise<any>;
|
|
584
584
|
parseWsTicker(message: any, marketType: any): Ticker;
|
|
585
585
|
handleTickerWs(client: Client, message: any): void;
|
|
586
586
|
handleBidsAsks(client: Client, message: any): void;
|
|
587
587
|
handleTickers(client: Client, message: any): void;
|
|
588
|
+
handleMarkPrices(client: Client, message: any): void;
|
|
588
589
|
handleTickersAndBidsAsks(client: Client, message: any, methodType: any): void;
|
|
589
|
-
getMessageHash(channelName: string, symbol: Str, isBidAsk: boolean): string;
|
|
590
590
|
signParams(params?: {}): any;
|
|
591
591
|
/**
|
|
592
592
|
* @name binance#ensureUserDataStreamWsSubscribeSignature
|
package/js/src/pro/binance.js
CHANGED
|
@@ -1889,77 +1889,7 @@ export default class binance extends binanceRest {
|
|
|
1889
1889
|
if (channelName === 'bookTicker') {
|
|
1890
1890
|
throw new BadRequest(this.id + ' deprecation notice - to subscribe for bids-asks, use watch_bids_asks() method instead');
|
|
1891
1891
|
}
|
|
1892
|
-
await this.
|
|
1893
|
-
const methodName = 'watchTickers';
|
|
1894
|
-
symbols = this.marketSymbols(symbols, undefined, true, false, true);
|
|
1895
|
-
let firstMarket = undefined;
|
|
1896
|
-
let marketType = undefined;
|
|
1897
|
-
const symbolsDefined = (symbols !== undefined);
|
|
1898
|
-
if (symbolsDefined) {
|
|
1899
|
-
firstMarket = this.market(symbols[0]);
|
|
1900
|
-
}
|
|
1901
|
-
[marketType, params] = this.handleMarketTypeAndParams(methodName, firstMarket, params);
|
|
1902
|
-
let subType = undefined;
|
|
1903
|
-
[subType, params] = this.handleSubTypeAndParams(methodName, firstMarket, params);
|
|
1904
|
-
let rawMarketType = undefined;
|
|
1905
|
-
if (this.isLinear(marketType, subType)) {
|
|
1906
|
-
rawMarketType = 'future';
|
|
1907
|
-
}
|
|
1908
|
-
else if (this.isInverse(marketType, subType)) {
|
|
1909
|
-
rawMarketType = 'delivery';
|
|
1910
|
-
}
|
|
1911
|
-
else if (marketType === 'spot') {
|
|
1912
|
-
rawMarketType = marketType;
|
|
1913
|
-
}
|
|
1914
|
-
else {
|
|
1915
|
-
throw new NotSupported(this.id + ' ' + methodName + '() does not support options markets');
|
|
1916
|
-
}
|
|
1917
|
-
const isBidAsk = (channelName === 'bookTicker');
|
|
1918
|
-
const subscriptionArgs = [];
|
|
1919
|
-
const subMessageHashes = [];
|
|
1920
|
-
const messageHashes = [];
|
|
1921
|
-
if (symbolsDefined) {
|
|
1922
|
-
for (let i = 0; i < symbols.length; i++) {
|
|
1923
|
-
const symbol = symbols[i];
|
|
1924
|
-
const market = this.market(symbol);
|
|
1925
|
-
subscriptionArgs.push(market['lowercaseId'] + '@' + channelName);
|
|
1926
|
-
subMessageHashes.push(this.getMessageHash(channelName, market['symbol'], isBidAsk));
|
|
1927
|
-
messageHashes.push('unsubscribe:ticker:' + symbol);
|
|
1928
|
-
}
|
|
1929
|
-
}
|
|
1930
|
-
else {
|
|
1931
|
-
if (isBidAsk) {
|
|
1932
|
-
if (marketType === 'spot') {
|
|
1933
|
-
throw new ArgumentsRequired(this.id + ' ' + methodName + '() requires symbols for this channel for spot markets');
|
|
1934
|
-
}
|
|
1935
|
-
subscriptionArgs.push('!' + channelName);
|
|
1936
|
-
}
|
|
1937
|
-
else {
|
|
1938
|
-
subscriptionArgs.push('!' + channelName + '@arr');
|
|
1939
|
-
}
|
|
1940
|
-
subMessageHashes.push(this.getMessageHash(channelName, undefined, isBidAsk));
|
|
1941
|
-
messageHashes.push('unsubscribe:ticker');
|
|
1942
|
-
}
|
|
1943
|
-
let streamHash = channelName;
|
|
1944
|
-
if (symbolsDefined) {
|
|
1945
|
-
streamHash = channelName + '::' + symbols.join(',');
|
|
1946
|
-
}
|
|
1947
|
-
const url = this.urls['api']['ws'][rawMarketType] + '/' + this.stream(rawMarketType, streamHash);
|
|
1948
|
-
const requestId = this.requestId(url);
|
|
1949
|
-
const request = {
|
|
1950
|
-
'method': 'UNSUBSCRIBE',
|
|
1951
|
-
'params': subscriptionArgs,
|
|
1952
|
-
'id': requestId,
|
|
1953
|
-
};
|
|
1954
|
-
const subscription = {
|
|
1955
|
-
'unsubscribe': true,
|
|
1956
|
-
'id': requestId.toString(),
|
|
1957
|
-
'subMessageHashes': subMessageHashes,
|
|
1958
|
-
'messageHashes': messageHashes,
|
|
1959
|
-
'symbols': symbols,
|
|
1960
|
-
'topic': 'ticker',
|
|
1961
|
-
};
|
|
1962
|
-
return await this.watchMultiple(url, messageHashes, this.extend(request, params), messageHashes, subscription);
|
|
1892
|
+
return await this.watchMultiTickerHelper('unWatchTickers', channelName, symbols, params, true);
|
|
1963
1893
|
}
|
|
1964
1894
|
/**
|
|
1965
1895
|
* @method
|
|
@@ -1974,60 +1904,7 @@ export default class binance extends binanceRest {
|
|
|
1974
1904
|
let channelName = undefined;
|
|
1975
1905
|
[channelName, params] = this.handleOptionAndParams(params, 'watchMarkPrices', 'name', 'markPrice');
|
|
1976
1906
|
await this.loadMarkets();
|
|
1977
|
-
|
|
1978
|
-
const suffix = (use1sFreq) ? '@1s' : '';
|
|
1979
|
-
const methodName = 'watchMarkPrices';
|
|
1980
|
-
symbols = this.marketSymbols(symbols, undefined, true, false, true);
|
|
1981
|
-
let firstMarket = undefined;
|
|
1982
|
-
let marketType = undefined;
|
|
1983
|
-
const symbolsDefined = (symbols !== undefined);
|
|
1984
|
-
if (symbolsDefined) {
|
|
1985
|
-
firstMarket = this.market(symbols[0]);
|
|
1986
|
-
}
|
|
1987
|
-
[marketType, params] = this.handleMarketTypeAndParams(methodName, firstMarket, params);
|
|
1988
|
-
if (marketType !== 'swap' && marketType !== 'future') {
|
|
1989
|
-
throw new NotSupported(this.id + ' ' + methodName + '() only supports swap markets');
|
|
1990
|
-
}
|
|
1991
|
-
const rawMarketType = 'future';
|
|
1992
|
-
const subscriptionArgs = [];
|
|
1993
|
-
const subMessageHashes = [];
|
|
1994
|
-
const messageHashes = [];
|
|
1995
|
-
if (symbolsDefined) {
|
|
1996
|
-
for (let i = 0; i < symbols.length; i++) {
|
|
1997
|
-
const symbol = symbols[i];
|
|
1998
|
-
const market = this.market(symbol);
|
|
1999
|
-
const msgHash = this.getMessageHash(channelName, market['symbol'], false);
|
|
2000
|
-
subscriptionArgs.push(market['lowercaseId'] + '@' + channelName + suffix);
|
|
2001
|
-
subMessageHashes.push(msgHash);
|
|
2002
|
-
messageHashes.push('unsubscribe:' + msgHash);
|
|
2003
|
-
}
|
|
2004
|
-
}
|
|
2005
|
-
else {
|
|
2006
|
-
const msgHashNoSymbol = this.getMessageHash(channelName, undefined, false);
|
|
2007
|
-
subscriptionArgs.push('!' + channelName + '@arr');
|
|
2008
|
-
subMessageHashes.push(msgHashNoSymbol);
|
|
2009
|
-
messageHashes.push('unsubscribe:' + msgHashNoSymbol);
|
|
2010
|
-
}
|
|
2011
|
-
let streamHash = channelName;
|
|
2012
|
-
if (symbolsDefined) {
|
|
2013
|
-
streamHash = channelName + '::' + symbols.join(',');
|
|
2014
|
-
}
|
|
2015
|
-
const url = this.urls['api']['ws'][rawMarketType] + '/' + this.stream(rawMarketType, streamHash);
|
|
2016
|
-
const requestId = this.requestId(url);
|
|
2017
|
-
const request = {
|
|
2018
|
-
'method': 'UNSUBSCRIBE',
|
|
2019
|
-
'params': subscriptionArgs,
|
|
2020
|
-
'id': requestId,
|
|
2021
|
-
};
|
|
2022
|
-
const subscription = {
|
|
2023
|
-
'unsubscribe': true,
|
|
2024
|
-
'id': requestId.toString(),
|
|
2025
|
-
'subMessageHashes': subMessageHashes,
|
|
2026
|
-
'messageHashes': messageHashes,
|
|
2027
|
-
'symbols': symbols,
|
|
2028
|
-
'topic': 'ticker',
|
|
2029
|
-
};
|
|
2030
|
-
return await this.watchMultiple(url, messageHashes, this.extend(request, params), messageHashes, subscription);
|
|
1907
|
+
return await this.watchMultiTickerHelper('unWatchMarkPrices', channelName, symbols, params, true);
|
|
2031
1908
|
}
|
|
2032
1909
|
/**
|
|
2033
1910
|
* @method
|
|
@@ -2078,7 +1955,7 @@ export default class binance extends binanceRest {
|
|
|
2078
1955
|
}
|
|
2079
1956
|
return this.filterByArray(this.bidsasks, 'symbol', symbols);
|
|
2080
1957
|
}
|
|
2081
|
-
async watchMultiTickerHelper(methodName, channelName, symbols = undefined, params = {}) {
|
|
1958
|
+
async watchMultiTickerHelper(methodName, channelName, symbols = undefined, params = {}, isUnsubscribe = false) {
|
|
2082
1959
|
await this.loadMarkets();
|
|
2083
1960
|
symbols = this.marketSymbols(symbols, undefined, true, false, true);
|
|
2084
1961
|
const isBidAsk = (channelName === 'bookTicker');
|
|
@@ -2107,18 +1984,35 @@ export default class binance extends binanceRest {
|
|
|
2107
1984
|
else {
|
|
2108
1985
|
throw new NotSupported(this.id + ' ' + methodName + '() does not support options markets');
|
|
2109
1986
|
}
|
|
1987
|
+
if (isMarkPrice && !this.inArray(marketType, ['swap', 'future'])) {
|
|
1988
|
+
throw new NotSupported(this.id + ' ' + methodName + '() does not support ' + marketType + ' markets yet');
|
|
1989
|
+
}
|
|
2110
1990
|
const subscriptionArgs = [];
|
|
2111
1991
|
const messageHashes = [];
|
|
1992
|
+
const unsubscribeMessageHashes = [];
|
|
2112
1993
|
let suffix = '';
|
|
2113
1994
|
if (isMarkPrice) {
|
|
2114
1995
|
suffix = (use1sFreq) ? '@1s' : '';
|
|
2115
1996
|
}
|
|
1997
|
+
let unifiedPrefix = undefined;
|
|
1998
|
+
if (isBidAsk) {
|
|
1999
|
+
unifiedPrefix = 'bidask';
|
|
2000
|
+
}
|
|
2001
|
+
else if (isMarkPrice) {
|
|
2002
|
+
unifiedPrefix = 'markPrice';
|
|
2003
|
+
}
|
|
2004
|
+
else {
|
|
2005
|
+
unifiedPrefix = 'ticker';
|
|
2006
|
+
}
|
|
2116
2007
|
if (symbolsDefined) {
|
|
2117
2008
|
for (let i = 0; i < symbols.length; i++) {
|
|
2118
2009
|
const symbol = symbols[i];
|
|
2119
2010
|
const market = this.market(symbol);
|
|
2120
2011
|
subscriptionArgs.push(market['lowercaseId'] + '@' + channelName + suffix);
|
|
2121
|
-
messageHashes.push(
|
|
2012
|
+
messageHashes.push(unifiedPrefix + ':' + channelName + '@' + symbol);
|
|
2013
|
+
if (isUnsubscribe) {
|
|
2014
|
+
unsubscribeMessageHashes.push('unsubscribe::' + unifiedPrefix + ':' + channelName + '@' + symbol);
|
|
2015
|
+
}
|
|
2122
2016
|
}
|
|
2123
2017
|
}
|
|
2124
2018
|
else {
|
|
@@ -2134,7 +2028,8 @@ export default class binance extends binanceRest {
|
|
|
2134
2028
|
else {
|
|
2135
2029
|
subscriptionArgs.push('!' + channelName + '@arr');
|
|
2136
2030
|
}
|
|
2137
|
-
messageHashes.push(
|
|
2031
|
+
messageHashes.push(unifiedPrefix + 's:' + channelName);
|
|
2032
|
+
unsubscribeMessageHashes.push('unsubscribe::' + channelName);
|
|
2138
2033
|
}
|
|
2139
2034
|
let streamHash = channelName;
|
|
2140
2035
|
if (symbolsDefined) {
|
|
@@ -2143,14 +2038,29 @@ export default class binance extends binanceRest {
|
|
|
2143
2038
|
const url = this.urls['api']['ws'][rawMarketType] + '/' + this.stream(rawMarketType, streamHash);
|
|
2144
2039
|
const requestId = this.requestId(url);
|
|
2145
2040
|
const request = {
|
|
2146
|
-
'method': 'SUBSCRIBE',
|
|
2041
|
+
'method': isUnsubscribe ? 'UNSUBSCRIBE' : 'SUBSCRIBE',
|
|
2147
2042
|
'params': subscriptionArgs,
|
|
2148
2043
|
'id': requestId,
|
|
2149
2044
|
};
|
|
2150
|
-
|
|
2045
|
+
let hashes = messageHashes;
|
|
2046
|
+
let subscription = {
|
|
2151
2047
|
'id': requestId,
|
|
2152
2048
|
};
|
|
2153
|
-
|
|
2049
|
+
if (isUnsubscribe) {
|
|
2050
|
+
subscription = {
|
|
2051
|
+
'unsubscribe': true,
|
|
2052
|
+
'id': requestId.toString(),
|
|
2053
|
+
'subMessageHashes': messageHashes,
|
|
2054
|
+
'messageHashes': unsubscribeMessageHashes,
|
|
2055
|
+
'symbols': symbols,
|
|
2056
|
+
'topic': 'ticker',
|
|
2057
|
+
};
|
|
2058
|
+
hashes = unsubscribeMessageHashes;
|
|
2059
|
+
}
|
|
2060
|
+
const result = await this.watchMultiple(url, hashes, this.deepExtend(request, params), hashes, subscription);
|
|
2061
|
+
if (isUnsubscribe) {
|
|
2062
|
+
return result;
|
|
2063
|
+
}
|
|
2154
2064
|
// for efficiency, we have two type of returned structure here - if symbols array was provided, then individual
|
|
2155
2065
|
// ticker dict comes in, otherwise all-tickers dict comes in
|
|
2156
2066
|
if (!symbolsDefined) {
|
|
@@ -2361,10 +2271,24 @@ export default class binance extends binanceRest {
|
|
|
2361
2271
|
//
|
|
2362
2272
|
this.handleTickersAndBidsAsks(client, message, 'tickers');
|
|
2363
2273
|
}
|
|
2274
|
+
handleMarkPrices(client, message) {
|
|
2275
|
+
this.handleTickersAndBidsAsks(client, message, 'markPrices');
|
|
2276
|
+
}
|
|
2364
2277
|
handleTickersAndBidsAsks(client, message, methodType) {
|
|
2365
2278
|
const isSpot = this.isSpotUrl(client);
|
|
2366
2279
|
const marketType = (isSpot) ? 'spot' : 'contract';
|
|
2367
2280
|
const isBidAsk = (methodType === 'bidasks');
|
|
2281
|
+
const isMarkPrice = (methodType === 'markPrices');
|
|
2282
|
+
let unifiedPrefix = undefined;
|
|
2283
|
+
if (isBidAsk) {
|
|
2284
|
+
unifiedPrefix = 'bidask';
|
|
2285
|
+
}
|
|
2286
|
+
else if (isMarkPrice) {
|
|
2287
|
+
unifiedPrefix = 'markPrice';
|
|
2288
|
+
}
|
|
2289
|
+
else {
|
|
2290
|
+
unifiedPrefix = 'ticker';
|
|
2291
|
+
}
|
|
2368
2292
|
let channelName = undefined;
|
|
2369
2293
|
const resolvedMessageHashes = [];
|
|
2370
2294
|
let rawTickers = [];
|
|
@@ -2394,26 +2318,17 @@ export default class binance extends binanceRest {
|
|
|
2394
2318
|
else {
|
|
2395
2319
|
this.tickers[symbol] = parsedTicker;
|
|
2396
2320
|
}
|
|
2397
|
-
const messageHash =
|
|
2321
|
+
const messageHash = unifiedPrefix + ':' + channelName + '@' + symbol;
|
|
2398
2322
|
resolvedMessageHashes.push(messageHash);
|
|
2399
2323
|
client.resolve(parsedTicker, messageHash);
|
|
2400
2324
|
}
|
|
2401
2325
|
// resolve batch endpoint
|
|
2402
2326
|
const length = resolvedMessageHashes.length;
|
|
2403
2327
|
if (length > 0) {
|
|
2404
|
-
const batchMessageHash =
|
|
2328
|
+
const batchMessageHash = unifiedPrefix + 's:' + channelName;
|
|
2405
2329
|
client.resolve(newTickers, batchMessageHash);
|
|
2406
2330
|
}
|
|
2407
2331
|
}
|
|
2408
|
-
getMessageHash(channelName, symbol, isBidAsk) {
|
|
2409
|
-
const prefix = isBidAsk ? 'bidask' : 'ticker';
|
|
2410
|
-
if (symbol !== undefined) {
|
|
2411
|
-
return prefix + ':' + channelName + '@' + symbol;
|
|
2412
|
-
}
|
|
2413
|
-
else {
|
|
2414
|
-
return prefix + 's' + ':' + channelName;
|
|
2415
|
-
}
|
|
2416
|
-
}
|
|
2417
2332
|
signParams(params = {}) {
|
|
2418
2333
|
this.checkRequiredCredentials();
|
|
2419
2334
|
const defaultRecvWindow = this.safeInteger(this.options, 'recvWindow');
|
|
@@ -4562,8 +4477,8 @@ export default class binance extends binanceRest {
|
|
|
4562
4477
|
'1dTicker': this.handleTickers,
|
|
4563
4478
|
'24hrTicker': this.handleTickers,
|
|
4564
4479
|
'24hrMiniTicker': this.handleTickers,
|
|
4565
|
-
'markPriceUpdate': this.
|
|
4566
|
-
'markPriceUpdate@arr': this.
|
|
4480
|
+
'markPriceUpdate': this.handleMarkPrices,
|
|
4481
|
+
'markPriceUpdate@arr': this.handleMarkPrices,
|
|
4567
4482
|
'bookTicker': this.handleBidsAsks,
|
|
4568
4483
|
'outboundAccountPosition': this.handleBalance,
|
|
4569
4484
|
'balanceUpdate': this.handleBalance,
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import dydxRest from '../dydx.js';
|
|
2
|
+
import type { Int, Trade, OrderBook, OHLCV } from '../base/types.js';
|
|
3
|
+
import Client from '../base/ws/Client.js';
|
|
4
|
+
export default class dydx extends dydxRest {
|
|
5
|
+
describe(): any;
|
|
6
|
+
/**
|
|
7
|
+
* @method
|
|
8
|
+
* @name dydx#watchTrades
|
|
9
|
+
* @description get the list of most recent trades for a particular symbol
|
|
10
|
+
* @see https://docs.dydx.xyz/indexer-client/websockets#trades
|
|
11
|
+
* @param {string} symbol unified symbol of the market to fetch trades for
|
|
12
|
+
* @param {int} [since] timestamp in ms of the earliest trade to fetch
|
|
13
|
+
* @param {int} [limit] the maximum amount of trades to fetch
|
|
14
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
15
|
+
* @returns {object[]} a list of [trade structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#public-trades}
|
|
16
|
+
*/
|
|
17
|
+
watchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
|
|
18
|
+
/**
|
|
19
|
+
* @method
|
|
20
|
+
* @name dydx#unWatchTrades
|
|
21
|
+
* @description unsubscribes from the trades channel
|
|
22
|
+
* @see https://docs.dydx.xyz/indexer-client/websockets#trades
|
|
23
|
+
* @param {string} symbol unified symbol of the market to fetch trades for
|
|
24
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
25
|
+
* @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
|
|
26
|
+
*/
|
|
27
|
+
unWatchTrades(symbol: string, params?: {}): Promise<any>;
|
|
28
|
+
handleTrades(client: any, message: any): void;
|
|
29
|
+
parseWsTrade(trade: any, market?: any): Trade;
|
|
30
|
+
/**
|
|
31
|
+
* @method
|
|
32
|
+
* @name dydx#watchOrderBook
|
|
33
|
+
* @description watches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
|
|
34
|
+
* @see https://docs.dydx.xyz/indexer-client/websockets#orders
|
|
35
|
+
* @param {string} symbol unified symbol of the market to fetch the order book for
|
|
36
|
+
* @param {int} [limit] the maximum amount of order book entries to return
|
|
37
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
38
|
+
* @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
|
|
39
|
+
*/
|
|
40
|
+
watchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
|
|
41
|
+
/**
|
|
42
|
+
* @method
|
|
43
|
+
* @name dydx#unWatchOrderBook
|
|
44
|
+
* @description unWatches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
|
|
45
|
+
* @see https://docs.dydx.xyz/indexer-client/websockets#orders
|
|
46
|
+
* @param {string} symbol unified array of symbols
|
|
47
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
48
|
+
* @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
|
|
49
|
+
*/
|
|
50
|
+
unWatchOrderBook(symbol: string, params?: {}): Promise<any>;
|
|
51
|
+
handleOrderBook(client: Client, message: any): void;
|
|
52
|
+
handleDelta(bookside: any, delta: any): void;
|
|
53
|
+
/**
|
|
54
|
+
* @method
|
|
55
|
+
* @name dydx#watchOHLCV
|
|
56
|
+
* @description watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
|
57
|
+
* @see https://docs.dydx.xyz/indexer-client/websockets#candles
|
|
58
|
+
* @param {string} symbol unified symbol of the market to fetch OHLCV data for
|
|
59
|
+
* @param {string} timeframe the length of time each candle represents
|
|
60
|
+
* @param {int} [since] timestamp in ms of the earliest candle to fetch
|
|
61
|
+
* @param {int} [limit] the maximum amount of candles to fetch
|
|
62
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
63
|
+
* @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
|
|
64
|
+
*/
|
|
65
|
+
watchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
|
|
66
|
+
/**
|
|
67
|
+
* @method
|
|
68
|
+
* @name dydx#unWatchOHLCV
|
|
69
|
+
* @description unWatches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
|
70
|
+
* @see https://docs.dydx.xyz/indexer-client/websockets#candles
|
|
71
|
+
* @param {string} symbol unified symbol of the market to fetch OHLCV data for
|
|
72
|
+
* @param {string} timeframe the length of time each candle represents
|
|
73
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
74
|
+
* @param {object} [params.timezone] if provided, kline intervals are interpreted in that timezone instead of UTC, example '+08:00'
|
|
75
|
+
* @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
|
|
76
|
+
*/
|
|
77
|
+
unWatchOHLCV(symbol: string, timeframe?: string, params?: {}): Promise<any>;
|
|
78
|
+
handleOHLCV(client: Client, message: any): void;
|
|
79
|
+
handleErrorMessage(client: Client, message: any): boolean;
|
|
80
|
+
handleMessage(client: Client, message: any): void;
|
|
81
|
+
}
|