ccxt 4.4.6 → 4.4.8
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 +3 -3
- package/dist/ccxt.browser.min.js +2 -2
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/base/Exchange.js +21 -2
- package/dist/cjs/src/binance.js +51 -12
- package/dist/cjs/src/bingx.js +3 -0
- package/dist/cjs/src/bitget.js +10 -6
- package/dist/cjs/src/bitmart.js +124 -1
- package/dist/cjs/src/bybit.js +377 -10
- package/dist/cjs/src/gate.js +3 -0
- package/dist/cjs/src/htx.js +22 -0
- package/dist/cjs/src/kucoin.js +2 -2
- package/dist/cjs/src/mexc.js +97 -13
- package/dist/cjs/src/okx.js +4 -0
- package/dist/cjs/src/pro/bitget.js +66 -0
- package/dist/cjs/src/pro/bitmart.js +81 -0
- package/dist/cjs/src/pro/bitvavo.js +92 -1
- package/dist/cjs/src/pro/blofin.js +64 -0
- package/dist/cjs/src/pro/okx.js +11 -5
- package/examples/js/cli.js +2 -0
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/binance.d.ts +1 -0
- package/js/src/abstract/binancecoinm.d.ts +1 -0
- package/js/src/abstract/binanceus.d.ts +1 -0
- package/js/src/abstract/binanceusdm.d.ts +1 -0
- package/js/src/abstract/bybit.d.ts +5 -0
- package/js/src/abstract/okx.d.ts +2 -0
- package/js/src/base/Exchange.d.ts +4 -0
- package/js/src/base/Exchange.js +21 -2
- package/js/src/binance.d.ts +15 -15
- package/js/src/binance.js +51 -12
- package/js/src/bingx.js +3 -0
- package/js/src/bitget.js +10 -6
- package/js/src/bitmart.d.ts +1 -0
- package/js/src/bitmart.js +124 -1
- package/js/src/bybit.d.ts +7 -1
- package/js/src/bybit.js +377 -10
- package/js/src/gate.js +3 -0
- package/js/src/htx.js +22 -0
- package/js/src/kucoin.js +2 -2
- package/js/src/mexc.d.ts +2 -0
- package/js/src/mexc.js +97 -13
- package/js/src/okx.js +4 -0
- package/js/src/pro/bitget.d.ts +3 -0
- package/js/src/pro/bitget.js +66 -0
- package/js/src/pro/bitmart.d.ts +3 -0
- package/js/src/pro/bitmart.js +81 -0
- package/js/src/pro/bitvavo.d.ts +7 -2
- package/js/src/pro/bitvavo.js +92 -1
- package/js/src/pro/blofin.d.ts +3 -0
- package/js/src/pro/blofin.js +64 -0
- package/js/src/pro/okx.d.ts +1 -0
- package/js/src/pro/okx.js +11 -5
- package/package.json +1 -1
package/js/src/pro/blofin.js
CHANGED
|
@@ -21,6 +21,7 @@ export default class blofin extends blofinRest {
|
|
|
21
21
|
'watchOrderBookForSymbols': true,
|
|
22
22
|
'watchTicker': true,
|
|
23
23
|
'watchTickers': true,
|
|
24
|
+
'watchBidsAsks': true,
|
|
24
25
|
'watchOHLCV': true,
|
|
25
26
|
'watchOHLCVForSymbols': true,
|
|
26
27
|
'watchOrders': true,
|
|
@@ -273,6 +274,7 @@ export default class blofin extends blofinRest {
|
|
|
273
274
|
// ],
|
|
274
275
|
// }
|
|
275
276
|
//
|
|
277
|
+
this.handleBidAsk(client, message);
|
|
276
278
|
const arg = this.safeDict(message, 'arg');
|
|
277
279
|
const channelName = this.safeString(arg, 'channel');
|
|
278
280
|
const data = this.safeList(message, 'data');
|
|
@@ -287,6 +289,68 @@ export default class blofin extends blofinRest {
|
|
|
287
289
|
parseWsTicker(ticker, market = undefined) {
|
|
288
290
|
return this.parseTicker(ticker, market);
|
|
289
291
|
}
|
|
292
|
+
async watchBidsAsks(symbols = undefined, params = {}) {
|
|
293
|
+
/**
|
|
294
|
+
* @method
|
|
295
|
+
* @name blofin#watchBidsAsks
|
|
296
|
+
* @description watches best bid & ask for symbols
|
|
297
|
+
* @see https://docs.blofin.com/index.html#ws-tickers-channel
|
|
298
|
+
* @param {string[]} symbols unified symbol of the market to fetch the ticker for
|
|
299
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
300
|
+
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
301
|
+
*/
|
|
302
|
+
await this.loadMarkets();
|
|
303
|
+
symbols = this.marketSymbols(symbols, undefined, false);
|
|
304
|
+
const firstMarket = this.market(symbols[0]);
|
|
305
|
+
const channel = 'tickers';
|
|
306
|
+
let marketType = undefined;
|
|
307
|
+
[marketType, params] = this.handleMarketTypeAndParams('watchBidsAsks', firstMarket, params);
|
|
308
|
+
const url = this.implodeHostname(this.urls['api']['ws'][marketType]['public']);
|
|
309
|
+
const messageHashes = [];
|
|
310
|
+
const args = [];
|
|
311
|
+
for (let i = 0; i < symbols.length; i++) {
|
|
312
|
+
const market = this.market(symbols[i]);
|
|
313
|
+
messageHashes.push('bidask:' + market['symbol']);
|
|
314
|
+
args.push({
|
|
315
|
+
'channel': channel,
|
|
316
|
+
'instId': market['id'],
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
const request = this.getSubscriptionRequest(args);
|
|
320
|
+
const ticker = await this.watchMultiple(url, messageHashes, this.deepExtend(request, params), messageHashes);
|
|
321
|
+
if (this.newUpdates) {
|
|
322
|
+
const tickers = {};
|
|
323
|
+
tickers[ticker['symbol']] = ticker;
|
|
324
|
+
return tickers;
|
|
325
|
+
}
|
|
326
|
+
return this.filterByArray(this.bidsasks, 'symbol', symbols);
|
|
327
|
+
}
|
|
328
|
+
handleBidAsk(client, message) {
|
|
329
|
+
const data = this.safeList(message, 'data');
|
|
330
|
+
for (let i = 0; i < data.length; i++) {
|
|
331
|
+
const ticker = this.parseWsBidAsk(data[i]);
|
|
332
|
+
const symbol = ticker['symbol'];
|
|
333
|
+
const messageHash = 'bidask:' + symbol;
|
|
334
|
+
this.bidsasks[symbol] = ticker;
|
|
335
|
+
client.resolve(ticker, messageHash);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
parseWsBidAsk(ticker, market = undefined) {
|
|
339
|
+
const marketId = this.safeString(ticker, 'instId');
|
|
340
|
+
market = this.safeMarket(marketId, market, '-');
|
|
341
|
+
const symbol = this.safeString(market, 'symbol');
|
|
342
|
+
const timestamp = this.safeInteger(ticker, 'ts');
|
|
343
|
+
return this.safeTicker({
|
|
344
|
+
'symbol': symbol,
|
|
345
|
+
'timestamp': timestamp,
|
|
346
|
+
'datetime': this.iso8601(timestamp),
|
|
347
|
+
'ask': this.safeString(ticker, 'askPrice'),
|
|
348
|
+
'askVolume': this.safeString(ticker, 'askSize'),
|
|
349
|
+
'bid': this.safeString(ticker, 'bidPrice'),
|
|
350
|
+
'bidVolume': this.safeString(ticker, 'bidSize'),
|
|
351
|
+
'info': ticker,
|
|
352
|
+
}, market);
|
|
353
|
+
}
|
|
290
354
|
async watchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
|
|
291
355
|
/**
|
|
292
356
|
* @method
|
package/js/src/pro/okx.d.ts
CHANGED
|
@@ -52,6 +52,7 @@ export default class okx extends okxRest {
|
|
|
52
52
|
watchOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
|
53
53
|
handleOrders(client: Client, message: any, subscription?: any): void;
|
|
54
54
|
handleMyTrades(client: Client, message: any): void;
|
|
55
|
+
requestId(): string;
|
|
55
56
|
createOrderWs(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): Promise<Order>;
|
|
56
57
|
handlePlaceOrders(client: Client, message: any): void;
|
|
57
58
|
editOrderWs(id: string, symbol: string, type: OrderType, side: OrderSide, amount?: Num, price?: Num, params?: {}): Promise<Order>;
|
package/js/src/pro/okx.js
CHANGED
|
@@ -1957,6 +1957,12 @@ export default class okx extends okxRest {
|
|
|
1957
1957
|
client.resolve(this.orders, symbolMessageHash);
|
|
1958
1958
|
}
|
|
1959
1959
|
}
|
|
1960
|
+
requestId() {
|
|
1961
|
+
const ts = this.milliseconds().toString();
|
|
1962
|
+
const randomNumber = this.randNumber(4);
|
|
1963
|
+
const randomPart = randomNumber.toString();
|
|
1964
|
+
return ts + randomPart;
|
|
1965
|
+
}
|
|
1960
1966
|
async createOrderWs(symbol, type, side, amount, price = undefined, params = {}) {
|
|
1961
1967
|
/**
|
|
1962
1968
|
* @method
|
|
@@ -1975,7 +1981,7 @@ export default class okx extends okxRest {
|
|
|
1975
1981
|
await this.loadMarkets();
|
|
1976
1982
|
await this.authenticate();
|
|
1977
1983
|
const url = this.getUrl('private', 'private');
|
|
1978
|
-
const messageHash = this.
|
|
1984
|
+
const messageHash = this.requestId();
|
|
1979
1985
|
let op = undefined;
|
|
1980
1986
|
[op, params] = this.handleOptionAndParams(params, 'createOrderWs', 'op', 'batch-orders');
|
|
1981
1987
|
const args = this.createOrderRequest(symbol, type, side, amount, price, params);
|
|
@@ -2045,7 +2051,7 @@ export default class okx extends okxRest {
|
|
|
2045
2051
|
await this.loadMarkets();
|
|
2046
2052
|
await this.authenticate();
|
|
2047
2053
|
const url = this.getUrl('private', 'private');
|
|
2048
|
-
const messageHash = this.
|
|
2054
|
+
const messageHash = this.requestId();
|
|
2049
2055
|
let op = undefined;
|
|
2050
2056
|
[op, params] = this.handleOptionAndParams(params, 'editOrderWs', 'op', 'amend-order');
|
|
2051
2057
|
const args = this.editOrderRequest(id, symbol, type, side, amount, price, params);
|
|
@@ -2074,7 +2080,7 @@ export default class okx extends okxRest {
|
|
|
2074
2080
|
await this.loadMarkets();
|
|
2075
2081
|
await this.authenticate();
|
|
2076
2082
|
const url = this.getUrl('private', 'private');
|
|
2077
|
-
const messageHash = this.
|
|
2083
|
+
const messageHash = this.requestId();
|
|
2078
2084
|
const clientOrderId = this.safeString2(params, 'clOrdId', 'clientOrderId');
|
|
2079
2085
|
params = this.omit(params, ['clientOrderId', 'clOrdId']);
|
|
2080
2086
|
const arg = {
|
|
@@ -2114,7 +2120,7 @@ export default class okx extends okxRest {
|
|
|
2114
2120
|
await this.loadMarkets();
|
|
2115
2121
|
await this.authenticate();
|
|
2116
2122
|
const url = this.getUrl('private', 'private');
|
|
2117
|
-
const messageHash = this.
|
|
2123
|
+
const messageHash = this.requestId();
|
|
2118
2124
|
const args = [];
|
|
2119
2125
|
for (let i = 0; i < idsLength; i++) {
|
|
2120
2126
|
const arg = {
|
|
@@ -2150,7 +2156,7 @@ export default class okx extends okxRest {
|
|
|
2150
2156
|
throw new BadRequest(this.id + 'cancelAllOrdersWs is only applicable to Option in Portfolio Margin mode, and MMP privilege is required.');
|
|
2151
2157
|
}
|
|
2152
2158
|
const url = this.getUrl('private', 'private');
|
|
2153
|
-
const messageHash = this.
|
|
2159
|
+
const messageHash = this.requestId();
|
|
2154
2160
|
const request = {
|
|
2155
2161
|
'id': messageHash,
|
|
2156
2162
|
'op': 'mass-cancel',
|
package/package.json
CHANGED