ccxt 4.5.5 → 4.5.7
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 +4 -4
- package/dist/ccxt.browser.min.js +15 -15
- package/dist/cjs/ccxt.js +6 -6
- package/dist/cjs/src/abstract/toobit.js +11 -0
- package/dist/cjs/src/abstract/tradeogre.js +1 -1
- package/dist/cjs/src/apex.js +2 -2
- package/dist/cjs/src/backpack.js +1 -1
- package/dist/cjs/src/base/Exchange.js +129 -2
- package/dist/cjs/src/bigone.js +4 -4
- package/dist/cjs/src/binance.js +82 -20
- package/dist/cjs/src/bingx.js +5 -2
- package/dist/cjs/src/bitbank.js +1 -0
- package/dist/cjs/src/bitbns.js +1 -0
- package/dist/cjs/src/bitflyer.js +1 -0
- package/dist/cjs/src/bitget.js +16 -9
- package/dist/cjs/src/bithumb.js +1 -0
- package/dist/cjs/src/bitso.js +1 -0
- package/dist/cjs/src/bitvavo.js +26 -40
- package/dist/cjs/src/blockchaincom.js +1 -0
- package/dist/cjs/src/btcalpha.js +1 -0
- package/dist/cjs/src/btcbox.js +1 -0
- package/dist/cjs/src/btcmarkets.js +1 -0
- package/dist/cjs/src/btcturk.js +1 -0
- package/dist/cjs/src/bybit.js +186 -127
- package/dist/cjs/src/coinsph.js +4 -1
- package/dist/cjs/src/cryptocom.js +6 -3
- package/dist/cjs/src/deribit.js +3 -2
- package/dist/cjs/src/digifinex.js +1 -1
- package/dist/cjs/src/gate.js +9 -13
- package/dist/cjs/src/gemini.js +5 -5
- package/dist/cjs/src/htx.js +11 -1
- package/dist/cjs/src/hyperliquid.js +3 -0
- package/dist/cjs/src/independentreserve.js +1 -0
- package/dist/cjs/src/indodax.js +17 -6
- package/dist/cjs/src/kraken.js +31 -8
- package/dist/cjs/src/krakenfutures.js +1 -0
- package/dist/cjs/src/kucoin.js +1 -2
- package/dist/cjs/src/luno.js +4 -1
- package/dist/cjs/src/mercado.js +1 -0
- package/dist/cjs/src/mexc.js +84 -37
- package/dist/cjs/src/novadax.js +1 -0
- package/dist/cjs/src/oceanex.js +1 -0
- package/dist/cjs/src/okcoin.js +4 -1
- package/dist/cjs/src/okx.js +52 -8
- package/dist/cjs/src/phemex.js +1 -1
- package/dist/cjs/src/pro/apex.js +8 -4
- package/dist/cjs/src/pro/backpack.js +7 -5
- package/dist/cjs/src/pro/binance.js +150 -19
- package/dist/cjs/src/pro/bingx.js +206 -220
- package/dist/cjs/src/pro/bitget.js +332 -76
- package/dist/cjs/src/pro/cex.js +1 -0
- package/dist/cjs/src/pro/htx.js +1 -1
- package/dist/cjs/src/pro/independentreserve.js +1 -0
- package/dist/cjs/src/pro/mexc.js +23 -23
- package/dist/cjs/src/pro/okx.js +46 -10
- package/dist/cjs/src/pro/toobit.js +1163 -0
- package/dist/cjs/src/pro/tradeogre.js +1 -1
- package/dist/cjs/src/toobit.js +2999 -0
- package/dist/cjs/src/tradeogre.js +1 -1
- package/dist/cjs/src/upbit.js +1 -0
- package/dist/cjs/src/wavesexchange.js +1 -0
- package/dist/cjs/src/yobit.js +1 -0
- package/dist/cjs/src/zaif.js +1 -0
- package/dist/cjs/src/zonda.js +1 -0
- package/js/ccxt.d.ts +8 -8
- package/js/ccxt.js +6 -6
- package/js/src/abstract/mexc.d.ts +1 -0
- package/js/src/abstract/myokx.d.ts +1 -0
- package/js/src/abstract/okx.d.ts +1 -0
- package/js/src/abstract/okxus.d.ts +1 -0
- package/js/src/abstract/toobit.d.ts +66 -0
- package/js/src/apex.js +2 -2
- package/js/src/backpack.js +1 -1
- package/js/src/base/Exchange.d.ts +9 -0
- package/js/src/base/Exchange.js +129 -2
- package/js/src/bigone.js +4 -4
- package/js/src/binance.d.ts +9 -0
- package/js/src/binance.js +82 -20
- package/js/src/bingx.js +5 -2
- package/js/src/bitbank.js +1 -0
- package/js/src/bitbns.js +1 -0
- package/js/src/bitflyer.js +1 -0
- package/js/src/bitget.js +16 -9
- package/js/src/bithumb.js +1 -0
- package/js/src/bitso.js +1 -0
- package/js/src/bitvavo.d.ts +0 -2
- package/js/src/bitvavo.js +27 -41
- package/js/src/blockchaincom.js +1 -0
- package/js/src/btcalpha.js +1 -0
- package/js/src/btcbox.js +1 -0
- package/js/src/btcmarkets.js +1 -0
- package/js/src/btcturk.js +1 -0
- package/js/src/bybit.d.ts +8 -0
- package/js/src/bybit.js +186 -127
- package/js/src/coinsph.js +4 -1
- package/js/src/cryptocom.js +6 -3
- package/js/src/deribit.js +3 -2
- package/js/src/digifinex.js +1 -1
- package/js/src/gate.d.ts +2 -2
- package/js/src/gate.js +9 -13
- package/js/src/gemini.js +5 -5
- package/js/src/htx.js +11 -1
- package/js/src/hyperliquid.js +3 -0
- package/js/src/independentreserve.js +1 -0
- package/js/src/indodax.js +17 -6
- package/js/src/kraken.d.ts +2 -2
- package/js/src/kraken.js +31 -8
- package/js/src/krakenfutures.js +1 -0
- package/js/src/kucoin.js +1 -2
- package/js/src/luno.js +4 -1
- package/js/src/mercado.js +1 -0
- package/js/src/mexc.d.ts +4 -1
- package/js/src/mexc.js +84 -37
- package/js/src/novadax.js +1 -0
- package/js/src/oceanex.js +1 -0
- package/js/src/okcoin.js +4 -1
- package/js/src/okx.js +52 -8
- package/js/src/phemex.js +1 -1
- package/js/src/pro/apex.js +8 -4
- package/js/src/pro/backpack.d.ts +1 -1
- package/js/src/pro/backpack.js +7 -5
- package/js/src/pro/binance.d.ts +24 -0
- package/js/src/pro/binance.js +150 -19
- package/js/src/pro/bingx.d.ts +53 -33
- package/js/src/pro/bingx.js +207 -221
- package/js/src/pro/bitget.d.ts +6 -0
- package/js/src/pro/bitget.js +332 -76
- package/js/src/pro/cex.js +1 -0
- package/js/src/pro/htx.js +1 -1
- package/js/src/pro/independentreserve.js +1 -0
- package/js/src/pro/mexc.js +23 -23
- package/js/src/pro/okx.d.ts +7 -1
- package/js/src/pro/okx.js +46 -10
- package/js/src/pro/toobit.d.ts +174 -0
- package/js/src/pro/toobit.js +1162 -0
- package/js/src/toobit.d.ts +456 -0
- package/js/src/toobit.js +2992 -0
- package/js/src/upbit.js +1 -0
- package/js/src/wavesexchange.js +1 -0
- package/js/src/yobit.js +1 -0
- package/js/src/zaif.js +1 -0
- package/js/src/zonda.js +1 -0
- package/package.json +1 -1
- package/dist/373.ccxt.browser.js +0 -7630
- package/dist/373.ccxt.browser.min.js +0 -1
- package/js/src/abstract/tradeogre.d.ts +0 -21
- package/js/src/pro/tradeogre.d.ts +0 -49
- package/js/src/pro/tradeogre.js +0 -278
- package/js/src/tradeogre.d.ts +0 -149
- package/js/src/tradeogre.js +0 -872
- /package/js/src/abstract/{tradeogre.js → toobit.js} +0 -0
package/dist/cjs/src/pro/cex.js
CHANGED
|
@@ -1023,6 +1023,7 @@ class cex extends cex$1["default"] {
|
|
|
1023
1023
|
if (incrementalId !== storedOrderBook['nonce'] + 1) {
|
|
1024
1024
|
delete client.subscriptions[messageHash];
|
|
1025
1025
|
client.reject(this.id + ' watchOrderBook() skipped a message', messageHash);
|
|
1026
|
+
return;
|
|
1026
1027
|
}
|
|
1027
1028
|
const timestamp = this.safeInteger(data, 'time');
|
|
1028
1029
|
const asks = this.safeValue(data, 'asks', []);
|
package/dist/cjs/src/pro/htx.js
CHANGED
|
@@ -969,7 +969,7 @@ class htx extends htx$1["default"] {
|
|
|
969
969
|
else {
|
|
970
970
|
// contract branch
|
|
971
971
|
parsedOrder = this.parseWsOrder(message, market);
|
|
972
|
-
const rawTrades = this.
|
|
972
|
+
const rawTrades = this.safeList(message, 'trade', []);
|
|
973
973
|
const tradesLength = rawTrades.length;
|
|
974
974
|
if (tradesLength > 0) {
|
|
975
975
|
const tradesObject = {
|
package/dist/cjs/src/pro/mexc.js
CHANGED
|
@@ -883,6 +883,7 @@ class mexc extends mexc$1["default"] {
|
|
|
883
883
|
catch (e) {
|
|
884
884
|
delete client.subscriptions[messageHash];
|
|
885
885
|
client.reject(e, messageHash);
|
|
886
|
+
return;
|
|
886
887
|
}
|
|
887
888
|
client.resolve(storedOrderBook, messageHash);
|
|
888
889
|
}
|
|
@@ -1503,18 +1504,21 @@ class mexc extends mexc$1["default"] {
|
|
|
1503
1504
|
handleBalance(client, message) {
|
|
1504
1505
|
//
|
|
1505
1506
|
// spot
|
|
1507
|
+
//
|
|
1506
1508
|
// {
|
|
1507
|
-
//
|
|
1508
|
-
// "
|
|
1509
|
-
//
|
|
1510
|
-
//
|
|
1511
|
-
//
|
|
1512
|
-
//
|
|
1513
|
-
//
|
|
1514
|
-
//
|
|
1515
|
-
//
|
|
1516
|
-
//
|
|
1517
|
-
//
|
|
1509
|
+
// channel: "spot@private.account.v3.api.pb",
|
|
1510
|
+
// createTime: "1758134605364",
|
|
1511
|
+
// sendTime: "1758134605373",
|
|
1512
|
+
// privateAccount: {
|
|
1513
|
+
// vcoinName: "USDT",
|
|
1514
|
+
// coinId: "128f589271cb4951b03e71e6323eb7be",
|
|
1515
|
+
// balanceAmount: "0.006016465074677006",
|
|
1516
|
+
// balanceAmountChange: "-4.4022",
|
|
1517
|
+
// frozenAmount: "4.4022",
|
|
1518
|
+
// frozenAmountChange: "4.4022",
|
|
1519
|
+
// type: "ENTRUST_PLACE",
|
|
1520
|
+
// time: "1758134605364",
|
|
1521
|
+
// }
|
|
1518
1522
|
// }
|
|
1519
1523
|
//
|
|
1520
1524
|
//
|
|
@@ -1532,27 +1536,23 @@ class mexc extends mexc$1["default"] {
|
|
|
1532
1536
|
// "ts": 1680059188190
|
|
1533
1537
|
// }
|
|
1534
1538
|
//
|
|
1535
|
-
const
|
|
1536
|
-
const type = (
|
|
1539
|
+
const channel = this.safeString(message, 'channel');
|
|
1540
|
+
const type = (channel === 'spot@private.account.v3.api.pb') ? 'spot' : 'swap';
|
|
1537
1541
|
const messageHash = 'balance:' + type;
|
|
1538
|
-
const data = this.safeDictN(message, ['
|
|
1539
|
-
const futuresTimestamp = this.
|
|
1540
|
-
const timestamp = this.safeInteger2(data, '
|
|
1542
|
+
const data = this.safeDictN(message, ['data', 'privateAccount']);
|
|
1543
|
+
const futuresTimestamp = this.safeInteger2(message, 'ts', 'createTime');
|
|
1544
|
+
const timestamp = this.safeInteger2(data, 'time', futuresTimestamp);
|
|
1541
1545
|
if (!(type in this.balance)) {
|
|
1542
1546
|
this.balance[type] = {};
|
|
1543
1547
|
}
|
|
1544
1548
|
this.balance[type]['info'] = data;
|
|
1545
1549
|
this.balance[type]['timestamp'] = timestamp;
|
|
1546
1550
|
this.balance[type]['datetime'] = this.iso8601(timestamp);
|
|
1547
|
-
const currencyId = this.safeStringN(data, ['
|
|
1551
|
+
const currencyId = this.safeStringN(data, ['currency', 'vcoinName']);
|
|
1548
1552
|
const code = this.safeCurrencyCode(currencyId);
|
|
1549
1553
|
const account = this.account();
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
account['free'] = balanceAmount;
|
|
1553
|
-
}
|
|
1554
|
-
account['total'] = this.safeStringN(data, ['f', 'availableBalance']);
|
|
1555
|
-
account['used'] = this.safeStringN(data, ['l', 'frozenBalance', 'frozenAmount']);
|
|
1554
|
+
account['free'] = this.safeString2(data, 'balanceAmount', 'availableBalance');
|
|
1555
|
+
account['used'] = this.safeStringN(data, ['frozenBalance', 'frozenAmount']);
|
|
1556
1556
|
this.balance[type][code] = account;
|
|
1557
1557
|
this.balance[type] = this.safeBalance(this.balance[type]);
|
|
1558
1558
|
client.resolve(this.balance[type], messageHash);
|
package/dist/cjs/src/pro/okx.js
CHANGED
|
@@ -169,6 +169,8 @@ class okx extends okx$1["default"] {
|
|
|
169
169
|
/**
|
|
170
170
|
* @method
|
|
171
171
|
* @name okx#watchTrades
|
|
172
|
+
* @see https://www.okx.com/docs-v5/en/#order-book-trading-market-data-ws-trades-channel
|
|
173
|
+
* @see https://www.okx.com/docs-v5/en/#order-book-trading-market-data-ws-all-trades-channel
|
|
172
174
|
* @description get the list of most recent trades for a particular symbol
|
|
173
175
|
* @param {string} symbol unified symbol of the market to fetch trades for
|
|
174
176
|
* @param {int} [since] timestamp in ms of the earliest trade to fetch
|
|
@@ -182,11 +184,14 @@ class okx extends okx$1["default"] {
|
|
|
182
184
|
/**
|
|
183
185
|
* @method
|
|
184
186
|
* @name okx#watchTradesForSymbols
|
|
187
|
+
* @see https://www.okx.com/docs-v5/en/#order-book-trading-market-data-ws-trades-channel
|
|
188
|
+
* @see https://www.okx.com/docs-v5/en/#order-book-trading-market-data-ws-all-trades-channel
|
|
185
189
|
* @description get the list of most recent trades for a particular symbol
|
|
186
190
|
* @param {string} symbols
|
|
187
191
|
* @param {int} [since] timestamp in ms of the earliest trade to fetch
|
|
188
192
|
* @param {int} [limit] the maximum amount of trades to fetch
|
|
189
193
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
194
|
+
* @param {string} [params.channel] the channel to subscribe to, trades by default. Can be 'trades' and 'trades-all'
|
|
190
195
|
* @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
|
|
191
196
|
*/
|
|
192
197
|
async watchTradesForSymbols(symbols, since = undefined, limit = undefined, params = {}) {
|
|
@@ -196,7 +201,8 @@ class okx extends okx$1["default"] {
|
|
|
196
201
|
}
|
|
197
202
|
await this.loadMarkets();
|
|
198
203
|
symbols = this.marketSymbols(symbols);
|
|
199
|
-
|
|
204
|
+
let channel = undefined;
|
|
205
|
+
[channel, params] = this.handleOptionAndParams(params, 'watchTrades', 'channel', 'trades');
|
|
200
206
|
const topics = [];
|
|
201
207
|
const messageHashes = [];
|
|
202
208
|
for (let i = 0; i < symbols.length; i++) {
|
|
@@ -213,7 +219,12 @@ class okx extends okx$1["default"] {
|
|
|
213
219
|
'op': 'subscribe',
|
|
214
220
|
'args': topics,
|
|
215
221
|
};
|
|
216
|
-
|
|
222
|
+
let access = 'public';
|
|
223
|
+
if (channel === 'trades-all') {
|
|
224
|
+
access = 'business';
|
|
225
|
+
await this.authenticate({ 'access': access });
|
|
226
|
+
}
|
|
227
|
+
const url = this.getUrl(channel, access);
|
|
217
228
|
const trades = await this.watchMultiple(url, messageHashes, request, messageHashes);
|
|
218
229
|
if (this.newUpdates) {
|
|
219
230
|
const first = this.safeValue(trades, 0);
|
|
@@ -228,17 +239,19 @@ class okx extends okx$1["default"] {
|
|
|
228
239
|
* @description unWatches from the stream channel
|
|
229
240
|
* @param {string[]} symbols
|
|
230
241
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
242
|
+
* @param {string} [params.channel] the channel to subscribe to, trades by default. Can be trades, trades-all
|
|
231
243
|
* @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
|
|
232
244
|
*/
|
|
233
245
|
async unWatchTradesForSymbols(symbols, params = {}) {
|
|
234
246
|
await this.loadMarkets();
|
|
235
247
|
symbols = this.marketSymbols(symbols, undefined, false);
|
|
236
|
-
|
|
248
|
+
let channel = undefined;
|
|
249
|
+
[channel, params] = this.handleOptionAndParams(params, 'watchTrades', 'channel', 'trades');
|
|
237
250
|
const topics = [];
|
|
238
251
|
const messageHashes = [];
|
|
239
252
|
for (let i = 0; i < symbols.length; i++) {
|
|
240
253
|
const symbol = symbols[i];
|
|
241
|
-
messageHashes.push('unsubscribe:
|
|
254
|
+
messageHashes.push('unsubscribe:' + channel + symbol);
|
|
242
255
|
const marketId = this.marketId(symbol);
|
|
243
256
|
const topic = {
|
|
244
257
|
'channel': channel,
|
|
@@ -250,7 +263,12 @@ class okx extends okx$1["default"] {
|
|
|
250
263
|
'op': 'unsubscribe',
|
|
251
264
|
'args': topics,
|
|
252
265
|
};
|
|
253
|
-
|
|
266
|
+
let access = 'public';
|
|
267
|
+
if (channel === 'trades-all') {
|
|
268
|
+
access = 'business';
|
|
269
|
+
await this.authenticate({ 'access': access });
|
|
270
|
+
}
|
|
271
|
+
const url = this.getUrl(channel, access);
|
|
254
272
|
return await this.watchMultiple(url, messageHashes, request, messageHashes);
|
|
255
273
|
}
|
|
256
274
|
/**
|
|
@@ -279,6 +297,23 @@ class okx extends okx$1["default"] {
|
|
|
279
297
|
// }
|
|
280
298
|
// ]
|
|
281
299
|
// }
|
|
300
|
+
// {
|
|
301
|
+
// "arg": {
|
|
302
|
+
// "channel": "trades-all",
|
|
303
|
+
// "instId": "BTC-USDT"
|
|
304
|
+
// },
|
|
305
|
+
// "data": [
|
|
306
|
+
// {
|
|
307
|
+
// "instId": "BTC-USDT",
|
|
308
|
+
// "tradeId": "130639474",
|
|
309
|
+
// "px": "42219.9",
|
|
310
|
+
// "sz": "0.12060306",
|
|
311
|
+
// "side": "buy",
|
|
312
|
+
// "source": "0",
|
|
313
|
+
// "ts": "1630048897897"
|
|
314
|
+
// }
|
|
315
|
+
// ]
|
|
316
|
+
// }
|
|
282
317
|
//
|
|
283
318
|
const arg = this.safeValue(message, 'arg', {});
|
|
284
319
|
const channel = this.safeString(arg, 'channel');
|
|
@@ -2392,6 +2427,7 @@ class okx extends okx$1["default"] {
|
|
|
2392
2427
|
'sprd-tickers': this.handleTicker,
|
|
2393
2428
|
'block-tickers': this.handleTicker,
|
|
2394
2429
|
'trades': this.handleTrades,
|
|
2430
|
+
'trades-all': this.handleTrades,
|
|
2395
2431
|
'account': this.handleBalance,
|
|
2396
2432
|
'funding-rate': this.handleFundingRate,
|
|
2397
2433
|
// 'margin_account': this.handleBalance,
|
|
@@ -2411,9 +2447,9 @@ class okx extends okx$1["default"] {
|
|
|
2411
2447
|
}
|
|
2412
2448
|
}
|
|
2413
2449
|
}
|
|
2414
|
-
handleUnSubscriptionTrades(client, symbol) {
|
|
2415
|
-
const subMessageHash = '
|
|
2416
|
-
const messageHash = 'unsubscribe:
|
|
2450
|
+
handleUnSubscriptionTrades(client, symbol, channel) {
|
|
2451
|
+
const subMessageHash = channel + ':' + symbol;
|
|
2452
|
+
const messageHash = 'unsubscribe:' + subMessageHash;
|
|
2417
2453
|
this.cleanUnsubscription(client, subMessageHash, messageHash);
|
|
2418
2454
|
if (symbol in this.trades) {
|
|
2419
2455
|
delete this.trades[symbol];
|
|
@@ -2460,8 +2496,8 @@ class okx extends okx$1["default"] {
|
|
|
2460
2496
|
const channel = this.safeString(arg, 'channel', '');
|
|
2461
2497
|
const marketId = this.safeString(arg, 'instId');
|
|
2462
2498
|
const symbol = this.safeSymbol(marketId);
|
|
2463
|
-
if (channel === 'trades') {
|
|
2464
|
-
this.handleUnSubscriptionTrades(client, symbol);
|
|
2499
|
+
if (channel === 'trades' || channel === 'trades-all') {
|
|
2500
|
+
this.handleUnSubscriptionTrades(client, symbol, channel);
|
|
2465
2501
|
}
|
|
2466
2502
|
else if (channel.startsWith('bbo') || channel.startsWith('book')) {
|
|
2467
2503
|
this.handleUnsubscriptionOrderBook(client, symbol, channel);
|