ccxt 4.0.99 → 4.0.101
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/CHANGELOG.md +224 -0
- package/README.md +3 -3
- package/dist/ccxt.browser.js +477 -226
- package/dist/ccxt.browser.min.js +2 -2
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/base/Exchange.js +6 -1
- package/dist/cjs/src/binance.js +28 -1
- package/dist/cjs/src/bitbank.js +11 -0
- package/dist/cjs/src/bitfinex.js +12 -8
- package/dist/cjs/src/bitflyer.js +39 -10
- package/dist/cjs/src/bitforex.js +0 -8
- package/dist/cjs/src/bitget.js +15 -5
- package/dist/cjs/src/bitstamp1.js +22 -0
- package/dist/cjs/src/bl3p.js +24 -0
- package/dist/cjs/src/bybit.js +111 -36
- package/dist/cjs/src/coinbasepro.js +11 -0
- package/dist/cjs/src/currencycom.js +1 -1
- package/dist/cjs/src/deribit.js +3 -3
- package/dist/cjs/src/huobi.js +1 -1
- package/dist/cjs/src/huobijp.js +1 -1
- package/dist/cjs/src/idex.js +1 -1
- package/dist/cjs/src/kucoinfutures.js +46 -51
- package/dist/cjs/src/lbank.js +1 -1
- package/dist/cjs/src/lbank2.js +3 -3
- package/dist/cjs/src/okx.js +5 -5
- package/dist/cjs/src/pro/ascendex.js +2 -2
- package/dist/cjs/src/pro/binance.js +11 -11
- package/dist/cjs/src/pro/bitfinex2.js +5 -5
- package/dist/cjs/src/pro/bitget.js +5 -5
- package/dist/cjs/src/pro/bitmex.js +2 -2
- package/dist/cjs/src/pro/bittrex.js +2 -2
- package/dist/cjs/src/pro/bitvavo.js +2 -2
- package/dist/cjs/src/pro/bybit.js +2 -2
- package/dist/cjs/src/pro/coinbase.js +5 -6
- package/dist/cjs/src/pro/cryptocom.js +4 -4
- package/dist/cjs/src/pro/currencycom.js +3 -3
- package/dist/cjs/src/pro/hitbtc.js +4 -4
- package/dist/cjs/src/pro/huobi.js +7 -8
- package/dist/cjs/src/pro/huobijp.js +1 -2
- package/dist/cjs/src/pro/krakenfutures.js +7 -7
- package/dist/cjs/src/pro/kucoin.js +51 -2
- package/dist/cjs/src/pro/kucoinfutures.js +3 -3
- package/dist/cjs/src/pro/phemex.js +4 -4
- package/dist/cjs/src/pro/poloniex.js +6 -6
- package/dist/cjs/src/pro/whitebit.js +7 -7
- package/dist/cjs/src/probit.js +2 -2
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/base/Exchange.js +6 -1
- package/js/src/binance.js +28 -1
- package/js/src/bitbank.js +11 -0
- package/js/src/bitfinex.js +12 -8
- package/js/src/bitflyer.js +39 -10
- package/js/src/bitforex.js +0 -8
- package/js/src/bitget.js +15 -5
- package/js/src/bitstamp1.js +22 -0
- package/js/src/bl3p.js +24 -0
- package/js/src/bybit.js +111 -36
- package/js/src/coinbasepro.js +11 -0
- package/js/src/currencycom.js +1 -1
- package/js/src/deribit.js +3 -3
- package/js/src/huobi.js +1 -1
- package/js/src/huobijp.js +1 -1
- package/js/src/idex.js +1 -1
- package/js/src/kucoinfutures.js +46 -51
- package/js/src/lbank.js +1 -1
- package/js/src/lbank2.js +3 -3
- package/js/src/okx.js +5 -5
- package/js/src/pro/ascendex.js +2 -2
- package/js/src/pro/binance.js +11 -11
- package/js/src/pro/bitfinex2.js +5 -5
- package/js/src/pro/bitget.js +5 -5
- package/js/src/pro/bitmex.js +2 -2
- package/js/src/pro/bittrex.js +2 -2
- package/js/src/pro/bitvavo.js +2 -2
- package/js/src/pro/bybit.js +2 -2
- package/js/src/pro/coinbase.js +5 -6
- package/js/src/pro/cryptocom.js +4 -4
- package/js/src/pro/currencycom.js +3 -3
- package/js/src/pro/hitbtc.js +4 -4
- package/js/src/pro/huobi.js +7 -8
- package/js/src/pro/huobijp.js +1 -2
- package/js/src/pro/krakenfutures.js +7 -7
- package/js/src/pro/kucoin.d.ts +1 -0
- package/js/src/pro/kucoin.js +51 -2
- package/js/src/pro/kucoinfutures.js +3 -3
- package/js/src/pro/phemex.js +4 -4
- package/js/src/pro/poloniex.js +6 -6
- package/js/src/pro/whitebit.js +7 -7
- package/js/src/probit.js +2 -2
- package/package.json +1 -1
package/dist/cjs/src/huobi.js
CHANGED
|
@@ -2551,7 +2551,7 @@ class huobi extends huobi$1 {
|
|
|
2551
2551
|
}
|
|
2552
2552
|
request[fieldName] = market['id'];
|
|
2553
2553
|
if (limit !== undefined) {
|
|
2554
|
-
request['size'] = limit; // max 2000
|
|
2554
|
+
request['size'] = Math.min(limit, 2000); // max 2000
|
|
2555
2555
|
}
|
|
2556
2556
|
const response = await this[method](this.extend(request, params));
|
|
2557
2557
|
//
|
package/dist/cjs/src/huobijp.js
CHANGED
|
@@ -869,7 +869,7 @@ class huobijp extends huobijp$1 {
|
|
|
869
869
|
'symbol': market['id'],
|
|
870
870
|
};
|
|
871
871
|
if (limit !== undefined) {
|
|
872
|
-
request['size'] = limit;
|
|
872
|
+
request['size'] = Math.min(limit, 2000);
|
|
873
873
|
}
|
|
874
874
|
const response = await this.marketGetHistoryTrade(this.extend(request, params));
|
|
875
875
|
//
|
package/dist/cjs/src/idex.js
CHANGED
|
@@ -869,58 +869,53 @@ class kucoinfutures extends kucoinfutures$1 {
|
|
|
869
869
|
const request = {
|
|
870
870
|
'symbol': market['id'],
|
|
871
871
|
};
|
|
872
|
-
const response = await this.
|
|
872
|
+
const response = await this.futuresPrivateGetPosition(this.extend(request, params));
|
|
873
873
|
//
|
|
874
|
-
//
|
|
875
|
-
//
|
|
876
|
-
//
|
|
877
|
-
//
|
|
878
|
-
//
|
|
879
|
-
//
|
|
880
|
-
//
|
|
881
|
-
//
|
|
882
|
-
//
|
|
883
|
-
//
|
|
884
|
-
//
|
|
885
|
-
//
|
|
886
|
-
//
|
|
887
|
-
//
|
|
888
|
-
//
|
|
889
|
-
//
|
|
890
|
-
//
|
|
891
|
-
//
|
|
892
|
-
//
|
|
893
|
-
//
|
|
894
|
-
//
|
|
895
|
-
//
|
|
896
|
-
//
|
|
897
|
-
//
|
|
898
|
-
//
|
|
899
|
-
//
|
|
900
|
-
//
|
|
901
|
-
//
|
|
902
|
-
//
|
|
903
|
-
//
|
|
904
|
-
//
|
|
905
|
-
//
|
|
906
|
-
//
|
|
907
|
-
//
|
|
908
|
-
//
|
|
909
|
-
//
|
|
910
|
-
//
|
|
911
|
-
//
|
|
912
|
-
//
|
|
913
|
-
//
|
|
914
|
-
//
|
|
915
|
-
//
|
|
916
|
-
// "isInverse": false,
|
|
917
|
-
// "maintainMargin": 0.004
|
|
918
|
-
// }
|
|
919
|
-
// ]
|
|
920
|
-
// }
|
|
874
|
+
// {
|
|
875
|
+
// "code": "200000",
|
|
876
|
+
// "data": {
|
|
877
|
+
// "id": "6505ee6eaff4070001f651c4",
|
|
878
|
+
// "symbol": "XBTUSDTM",
|
|
879
|
+
// "autoDeposit": false,
|
|
880
|
+
// "maintMarginReq": 0,
|
|
881
|
+
// "riskLimit": 200,
|
|
882
|
+
// "realLeverage": 0.0,
|
|
883
|
+
// "crossMode": false,
|
|
884
|
+
// "delevPercentage": 0.0,
|
|
885
|
+
// "currentTimestamp": 1694887534594,
|
|
886
|
+
// "currentQty": 0,
|
|
887
|
+
// "currentCost": 0.0,
|
|
888
|
+
// "currentComm": 0.0,
|
|
889
|
+
// "unrealisedCost": 0.0,
|
|
890
|
+
// "realisedGrossCost": 0.0,
|
|
891
|
+
// "realisedCost": 0.0,
|
|
892
|
+
// "isOpen": false,
|
|
893
|
+
// "markPrice": 26611.71,
|
|
894
|
+
// "markValue": 0.0,
|
|
895
|
+
// "posCost": 0.0,
|
|
896
|
+
// "posCross": 0,
|
|
897
|
+
// "posInit": 0.0,
|
|
898
|
+
// "posComm": 0.0,
|
|
899
|
+
// "posLoss": 0.0,
|
|
900
|
+
// "posMargin": 0.0,
|
|
901
|
+
// "posMaint": 0.0,
|
|
902
|
+
// "maintMargin": 0.0,
|
|
903
|
+
// "realisedGrossPnl": 0.0,
|
|
904
|
+
// "realisedPnl": 0.0,
|
|
905
|
+
// "unrealisedPnl": 0.0,
|
|
906
|
+
// "unrealisedPnlPcnt": 0,
|
|
907
|
+
// "unrealisedRoePcnt": 0,
|
|
908
|
+
// "avgEntryPrice": 0.0,
|
|
909
|
+
// "liquidationPrice": 0.0,
|
|
910
|
+
// "bankruptPrice": 0.0,
|
|
911
|
+
// "settleCurrency": "USDT",
|
|
912
|
+
// "maintainMargin": 0,
|
|
913
|
+
// "riskLimitLevel": 1
|
|
914
|
+
// }
|
|
915
|
+
// }
|
|
921
916
|
//
|
|
922
|
-
const data = this.safeValue(response, 'data',
|
|
923
|
-
return this.parsePosition(data
|
|
917
|
+
const data = this.safeValue(response, 'data', {});
|
|
918
|
+
return this.parsePosition(data, market);
|
|
924
919
|
}
|
|
925
920
|
async fetchPositions(symbols = undefined, params = {}) {
|
|
926
921
|
/**
|
|
@@ -1066,7 +1061,7 @@ class kucoinfutures extends kucoinfutures$1 {
|
|
|
1066
1061
|
'unrealizedPnl': this.parseNumber(unrealisedPnl),
|
|
1067
1062
|
'contracts': this.parseNumber(Precise["default"].stringAbs(size)),
|
|
1068
1063
|
'contractSize': this.safeValue(market, 'contractSize'),
|
|
1069
|
-
'realizedPnl': this.safeNumber(position, '
|
|
1064
|
+
'realizedPnl': this.safeNumber(position, 'realisedPnl'),
|
|
1070
1065
|
'marginRatio': undefined,
|
|
1071
1066
|
'liquidationPrice': this.safeNumber(position, 'liquidationPrice'),
|
|
1072
1067
|
'markPrice': this.safeNumber(position, 'markPrice'),
|
package/dist/cjs/src/lbank.js
CHANGED
|
@@ -406,7 +406,7 @@ class lbank extends lbank$1 {
|
|
|
406
406
|
request['time'] = since;
|
|
407
407
|
}
|
|
408
408
|
if (limit !== undefined) {
|
|
409
|
-
request['size'] = limit;
|
|
409
|
+
request['size'] = Math.min(limit, 600);
|
|
410
410
|
}
|
|
411
411
|
const response = await this.publicGetTrades(this.extend(request, params));
|
|
412
412
|
return this.parseTrades(response, market, since, limit);
|
package/dist/cjs/src/lbank2.js
CHANGED
|
@@ -595,8 +595,8 @@ class lbank2 extends lbank2$1 {
|
|
|
595
595
|
await this.loadMarkets();
|
|
596
596
|
const market = this.market(symbol);
|
|
597
597
|
if (market['swap']) {
|
|
598
|
-
const
|
|
599
|
-
return this.safeValue(
|
|
598
|
+
const responseForSwap = await this.fetchTickers([market['symbol']], params);
|
|
599
|
+
return this.safeValue(responseForSwap, market['symbol']);
|
|
600
600
|
}
|
|
601
601
|
const request = {
|
|
602
602
|
'symbol': market['id'],
|
|
@@ -918,7 +918,7 @@ class lbank2 extends lbank2$1 {
|
|
|
918
918
|
request['time'] = since;
|
|
919
919
|
}
|
|
920
920
|
if (limit !== undefined) {
|
|
921
|
-
request['size'] = limit;
|
|
921
|
+
request['size'] = Math.min(limit, 600);
|
|
922
922
|
}
|
|
923
923
|
else {
|
|
924
924
|
request['size'] = 600; // max
|
package/dist/cjs/src/okx.js
CHANGED
|
@@ -1426,13 +1426,13 @@ class okx extends okx$1 {
|
|
|
1426
1426
|
promises.push(this.publicGetPublicInstruments(this.extend(request, params)));
|
|
1427
1427
|
}
|
|
1428
1428
|
const promisesResult = await Promise.all(promises);
|
|
1429
|
-
let
|
|
1429
|
+
let markets = [];
|
|
1430
1430
|
for (let i = 0; i < promisesResult.length; i++) {
|
|
1431
1431
|
const res = this.safeValue(promisesResult, i, {});
|
|
1432
1432
|
const options = this.safeValue(res, 'data', []);
|
|
1433
|
-
|
|
1433
|
+
markets = this.arrayConcat(markets, options);
|
|
1434
1434
|
}
|
|
1435
|
-
return this.parseMarkets(
|
|
1435
|
+
return this.parseMarkets(markets);
|
|
1436
1436
|
}
|
|
1437
1437
|
const response = await this.publicGetPublicInstruments(this.extend(request, params));
|
|
1438
1438
|
//
|
|
@@ -6691,8 +6691,8 @@ class okx extends okx$1 {
|
|
|
6691
6691
|
const entry = settlements[i];
|
|
6692
6692
|
const timestamp = this.safeInteger(entry, 'ts');
|
|
6693
6693
|
const details = this.safeValue(entry, 'details', []);
|
|
6694
|
-
for (let
|
|
6695
|
-
const settlement = this.parseSettlement(details[
|
|
6694
|
+
for (let j = 0; j < details.length; j++) {
|
|
6695
|
+
const settlement = this.parseSettlement(details[j], market);
|
|
6696
6696
|
result.push(this.extend(settlement, {
|
|
6697
6697
|
'timestamp': timestamp,
|
|
6698
6698
|
'datetime': this.iso8601(timestamp),
|
|
@@ -261,8 +261,8 @@ class ascendex extends ascendex$1 {
|
|
|
261
261
|
// unroll the accumulated deltas
|
|
262
262
|
const messages = orderbook.cache;
|
|
263
263
|
for (let i = 0; i < messages.length; i++) {
|
|
264
|
-
const
|
|
265
|
-
this.handleOrderBookMessage(client,
|
|
264
|
+
const messageItem = messages[i];
|
|
265
|
+
this.handleOrderBookMessage(client, messageItem, orderbook);
|
|
266
266
|
}
|
|
267
267
|
this.orderbooks[symbol] = orderbook;
|
|
268
268
|
client.resolve(orderbook, messageHash);
|
|
@@ -285,10 +285,10 @@ class binance extends binance$1 {
|
|
|
285
285
|
// unroll the accumulated deltas
|
|
286
286
|
const messages = orderbook.cache;
|
|
287
287
|
for (let i = 0; i < messages.length; i++) {
|
|
288
|
-
const
|
|
289
|
-
const U = this.safeInteger(
|
|
290
|
-
const u = this.safeInteger(
|
|
291
|
-
const pu = this.safeInteger(
|
|
288
|
+
const messageItem = messages[i];
|
|
289
|
+
const U = this.safeInteger(messageItem, 'U');
|
|
290
|
+
const u = this.safeInteger(messageItem, 'u');
|
|
291
|
+
const pu = this.safeInteger(messageItem, 'pu');
|
|
292
292
|
if (type === 'future') {
|
|
293
293
|
// 4. Drop any event where u is < lastUpdateId in the snapshot
|
|
294
294
|
if (u < orderbook['nonce']) {
|
|
@@ -296,7 +296,7 @@ class binance extends binance$1 {
|
|
|
296
296
|
}
|
|
297
297
|
// 5. The first processed event should have U <= lastUpdateId AND u >= lastUpdateId
|
|
298
298
|
if ((U <= orderbook['nonce']) && (u >= orderbook['nonce']) || (pu === orderbook['nonce'])) {
|
|
299
|
-
this.handleOrderBookMessage(client,
|
|
299
|
+
this.handleOrderBookMessage(client, messageItem, orderbook);
|
|
300
300
|
}
|
|
301
301
|
}
|
|
302
302
|
else {
|
|
@@ -306,7 +306,7 @@ class binance extends binance$1 {
|
|
|
306
306
|
}
|
|
307
307
|
// 5. The first processed event should have U <= lastUpdateId+1 AND u >= lastUpdateId+1
|
|
308
308
|
if (((U - 1) <= orderbook['nonce']) && ((u - 1) >= orderbook['nonce'])) {
|
|
309
|
-
this.handleOrderBookMessage(client,
|
|
309
|
+
this.handleOrderBookMessage(client, messageItem, orderbook);
|
|
310
310
|
}
|
|
311
311
|
}
|
|
312
312
|
}
|
|
@@ -447,8 +447,8 @@ class binance extends binance$1 {
|
|
|
447
447
|
handleOrderBookSubscription(client, message, subscription) {
|
|
448
448
|
const defaultLimit = this.safeInteger(this.options, 'watchOrderBookLimit', 1000);
|
|
449
449
|
// const messageHash = this.safeString (subscription, 'messageHash');
|
|
450
|
-
const
|
|
451
|
-
const symbols = this.safeValue(subscription, 'symbols', [
|
|
450
|
+
const symbolOfSubscription = this.safeString(subscription, 'symbol'); // watchOrderBook
|
|
451
|
+
const symbols = this.safeValue(subscription, 'symbols', [symbolOfSubscription]); // watchOrderBookForSymbols
|
|
452
452
|
const limit = this.safeInteger(subscription, 'limit', defaultLimit);
|
|
453
453
|
// handle list of symbols
|
|
454
454
|
for (let i = 0; i < symbols.length; i++) {
|
|
@@ -1155,12 +1155,12 @@ class binance extends binance$1 {
|
|
|
1155
1155
|
client.resolve(result, '!' + 'bookTicker@arr');
|
|
1156
1156
|
const messageHashes = this.findMessageHashes(client, 'tickers::');
|
|
1157
1157
|
for (let i = 0; i < messageHashes.length; i++) {
|
|
1158
|
-
const
|
|
1159
|
-
const parts =
|
|
1158
|
+
const currentMessageHash = messageHashes[i];
|
|
1159
|
+
const parts = currentMessageHash.split('::');
|
|
1160
1160
|
const symbolsString = parts[1];
|
|
1161
1161
|
const symbols = symbolsString.split(',');
|
|
1162
1162
|
if (this.inArray(symbol, symbols)) {
|
|
1163
|
-
client.resolve(result,
|
|
1163
|
+
client.resolve(result, currentMessageHash);
|
|
1164
1164
|
}
|
|
1165
1165
|
}
|
|
1166
1166
|
}
|
|
@@ -595,9 +595,9 @@ class bitfinex2 extends bitfinex2$1 {
|
|
|
595
595
|
const size = (delta[2] < 0) ? -delta[2] : delta[2];
|
|
596
596
|
const side = (delta[2] < 0) ? 'asks' : 'bids';
|
|
597
597
|
const bookside = orderbook[side];
|
|
598
|
-
const
|
|
598
|
+
const idString = this.safeString(delta, 0);
|
|
599
599
|
const price = this.safeFloat(delta, 1);
|
|
600
|
-
bookside.store(price, size,
|
|
600
|
+
bookside.store(price, size, idString);
|
|
601
601
|
}
|
|
602
602
|
}
|
|
603
603
|
else {
|
|
@@ -617,12 +617,12 @@ class bitfinex2 extends bitfinex2$1 {
|
|
|
617
617
|
}
|
|
618
618
|
else {
|
|
619
619
|
const deltas = message[1];
|
|
620
|
-
const
|
|
620
|
+
const orderbookItem = this.orderbooks[symbol];
|
|
621
621
|
if (isRaw) {
|
|
622
622
|
const price = this.safeString(deltas, 1);
|
|
623
623
|
const size = (deltas[2] < 0) ? -deltas[2] : deltas[2];
|
|
624
624
|
const side = (deltas[2] < 0) ? 'asks' : 'bids';
|
|
625
|
-
const bookside =
|
|
625
|
+
const bookside = orderbookItem[side];
|
|
626
626
|
// price = 0 means that you have to remove the order from your book
|
|
627
627
|
const amount = Precise["default"].stringGt(price, '0') ? size : '0';
|
|
628
628
|
bookside.store(this.parseNumber(price), this.parseNumber(amount), id);
|
|
@@ -633,7 +633,7 @@ class bitfinex2 extends bitfinex2$1 {
|
|
|
633
633
|
const price = this.safeString(deltas, 0);
|
|
634
634
|
const size = Precise["default"].stringLt(amount, '0') ? Precise["default"].stringNeg(amount) : amount;
|
|
635
635
|
const side = Precise["default"].stringLt(amount, '0') ? 'asks' : 'bids';
|
|
636
|
-
const bookside =
|
|
636
|
+
const bookside = orderbookItem[side];
|
|
637
637
|
bookside.store(this.parseNumber(price), this.parseNumber(size), this.parseNumber(counter));
|
|
638
638
|
}
|
|
639
639
|
client.resolve(orderbook, messageHash);
|
|
@@ -293,10 +293,10 @@ class bitget extends bitget$1 {
|
|
|
293
293
|
const hashes = [];
|
|
294
294
|
for (let i = 0; i < symbolsAndTimeframes.length; i++) {
|
|
295
295
|
const data = symbolsAndTimeframes[i];
|
|
296
|
-
const
|
|
297
|
-
const
|
|
298
|
-
const market = this.market(
|
|
299
|
-
const interval = this.safeString(this.options['timeframes'],
|
|
296
|
+
const currentSymbol = this.safeString(data, 0);
|
|
297
|
+
const currentTimeframe = this.safeString(data, 1);
|
|
298
|
+
const market = this.market(currentSymbol);
|
|
299
|
+
const interval = this.safeString(this.options['timeframes'], currentTimeframe);
|
|
300
300
|
const instType = market['spot'] ? 'sp' : 'mc';
|
|
301
301
|
const args = {
|
|
302
302
|
'instType': instType,
|
|
@@ -304,7 +304,7 @@ class bitget extends bitget$1 {
|
|
|
304
304
|
'instId': this.getWsMarketId(market),
|
|
305
305
|
};
|
|
306
306
|
topics.push(args);
|
|
307
|
-
hashes.push(
|
|
307
|
+
hashes.push(currentSymbol + '#' + currentSymbol);
|
|
308
308
|
}
|
|
309
309
|
const messageHash = 'multipleOHLCV::' + hashes.join(',');
|
|
310
310
|
const [symbol, timeframe, stored] = await this.watchPublicMultiple(messageHash, topics, params);
|
|
@@ -988,8 +988,8 @@ class bitmex extends bitmex$1 {
|
|
|
988
988
|
for (let i = 0; i < symbols.length; i++) {
|
|
989
989
|
const symbol = symbols[i];
|
|
990
990
|
const market = this.market(symbol);
|
|
991
|
-
const
|
|
992
|
-
topics.push(
|
|
991
|
+
const currentMessageHash = table + ':' + market['id'];
|
|
992
|
+
topics.push(currentMessageHash);
|
|
993
993
|
}
|
|
994
994
|
const messageHash = 'multipleOrderbook::' + symbols.join(',');
|
|
995
995
|
const url = this.urls['api']['ws'];
|
|
@@ -651,8 +651,8 @@ class bittrex extends bittrex$1 {
|
|
|
651
651
|
// unroll the accumulated deltas
|
|
652
652
|
// 3. Playback the cached Level 2 data flow.
|
|
653
653
|
for (let i = 0; i < messages.length; i++) {
|
|
654
|
-
const
|
|
655
|
-
this.handleOrderBookMessage(client,
|
|
654
|
+
const messageItem = messages[i];
|
|
655
|
+
this.handleOrderBookMessage(client, messageItem, orderbook);
|
|
656
656
|
}
|
|
657
657
|
this.orderbooks[symbol] = orderbook;
|
|
658
658
|
client.resolve(orderbook, messageHash);
|
|
@@ -382,8 +382,8 @@ class bitvavo extends bitvavo$1 {
|
|
|
382
382
|
// unroll the accumulated deltas
|
|
383
383
|
const messages = orderbook.cache;
|
|
384
384
|
for (let i = 0; i < messages.length; i++) {
|
|
385
|
-
const
|
|
386
|
-
this.handleOrderBookMessage(client,
|
|
385
|
+
const messageItem = messages[i];
|
|
386
|
+
this.handleOrderBookMessage(client, messageItem, orderbook);
|
|
387
387
|
}
|
|
388
388
|
this.orderbooks[symbol] = orderbook;
|
|
389
389
|
client.resolve(orderbook, messageHash);
|
|
@@ -530,8 +530,8 @@ class bybit extends bybit$1 {
|
|
|
530
530
|
const topics = [];
|
|
531
531
|
for (let i = 0; i < symbols.length; i++) {
|
|
532
532
|
const symbol = symbols[i];
|
|
533
|
-
const
|
|
534
|
-
const topic = 'orderbook.' + limit.toString() + '.' +
|
|
533
|
+
const currentMarket = this.market(symbol);
|
|
534
|
+
const topic = 'orderbook.' + limit.toString() + '.' + currentMarket['id'];
|
|
535
535
|
topics.push(topic);
|
|
536
536
|
}
|
|
537
537
|
const messageHash = 'multipleOrderbook::' + symbols.join(',');
|
|
@@ -326,12 +326,11 @@ class coinbase extends coinbase$1 {
|
|
|
326
326
|
this.trades[symbol] = tradesArray;
|
|
327
327
|
}
|
|
328
328
|
for (let i = 0; i < events.length; i++) {
|
|
329
|
-
const
|
|
330
|
-
const
|
|
331
|
-
for (let
|
|
332
|
-
const item =
|
|
333
|
-
|
|
334
|
-
tradesArray.append(trade);
|
|
329
|
+
const currentEvent = events[i];
|
|
330
|
+
const currentTrades = this.safeValue(currentEvent, 'trades');
|
|
331
|
+
for (let j = 0; j < currentTrades.length; j++) {
|
|
332
|
+
const item = currentTrades[i];
|
|
333
|
+
tradesArray.append(this.parseTrade(item));
|
|
335
334
|
}
|
|
336
335
|
}
|
|
337
336
|
client.resolve(tradesArray, messageHash);
|
|
@@ -90,8 +90,8 @@ class cryptocom extends cryptocom$1 {
|
|
|
90
90
|
for (let i = 0; i < symbols.length; i++) {
|
|
91
91
|
const symbol = symbols[i];
|
|
92
92
|
const market = this.market(symbol);
|
|
93
|
-
const
|
|
94
|
-
topics.push(
|
|
93
|
+
const currentMessageHash = 'book' + '.' + market['id'];
|
|
94
|
+
topics.push(currentMessageHash);
|
|
95
95
|
}
|
|
96
96
|
const messageHash = 'multipleOrderbooks::' + symbols.join(',');
|
|
97
97
|
const orderbook = await this.watchPublicMultiple(messageHash, topics, params);
|
|
@@ -178,8 +178,8 @@ class cryptocom extends cryptocom$1 {
|
|
|
178
178
|
for (let i = 0; i < symbols.length; i++) {
|
|
179
179
|
const symbol = symbols[i];
|
|
180
180
|
const market = this.market(symbol);
|
|
181
|
-
const
|
|
182
|
-
topics.push(
|
|
181
|
+
const currentMessageHash = 'trade' + '.' + market['id'];
|
|
182
|
+
topics.push(currentMessageHash);
|
|
183
183
|
}
|
|
184
184
|
const messageHash = 'multipleTrades::' + symbols.join(',');
|
|
185
185
|
const trades = await this.watchPublicMultiple(messageHash, topics, params);
|
|
@@ -524,13 +524,13 @@ class currencycom extends currencycom$1 {
|
|
|
524
524
|
const subscription = this.safeValue(subscriptionsById, requestId);
|
|
525
525
|
if (subscription !== undefined) {
|
|
526
526
|
if (status === 'OK') {
|
|
527
|
-
const
|
|
528
|
-
if (
|
|
527
|
+
const subscriptionDestination = this.safeString(subscription, 'destination');
|
|
528
|
+
if (subscriptionDestination !== undefined) {
|
|
529
529
|
const methods = {
|
|
530
530
|
'/api/v1/ticker/24hr': this.handleTicker,
|
|
531
531
|
'/api/v1/account': this.handleBalance,
|
|
532
532
|
};
|
|
533
|
-
const method = this.safeValue(methods,
|
|
533
|
+
const method = this.safeValue(methods, subscriptionDestination);
|
|
534
534
|
if (method === undefined) {
|
|
535
535
|
return message;
|
|
536
536
|
}
|
|
@@ -532,8 +532,8 @@ class hitbtc extends hitbtc$1 {
|
|
|
532
532
|
this.trades[symbol] = stored;
|
|
533
533
|
}
|
|
534
534
|
const trades = this.parseWsTrades(data[marketId], market);
|
|
535
|
-
for (let
|
|
536
|
-
stored.append(trades[
|
|
535
|
+
for (let j = 0; j < trades.length; j++) {
|
|
536
|
+
stored.append(trades[j]);
|
|
537
537
|
}
|
|
538
538
|
const messageHash = 'trades::' + symbol;
|
|
539
539
|
client.resolve(stored, messageHash);
|
|
@@ -660,8 +660,8 @@ class hitbtc extends hitbtc$1 {
|
|
|
660
660
|
this.ohlcvs[symbol][timeframe] = stored;
|
|
661
661
|
}
|
|
662
662
|
const ohlcvs = this.parseWsOHLCVs(data[marketId], market);
|
|
663
|
-
for (let
|
|
664
|
-
stored.append(ohlcvs[
|
|
663
|
+
for (let j = 0; j < ohlcvs.length; j++) {
|
|
664
|
+
stored.append(ohlcvs[j]);
|
|
665
665
|
}
|
|
666
666
|
const messageHash = channel + '::' + symbol;
|
|
667
667
|
client.resolve(stored, messageHash);
|
|
@@ -405,8 +405,7 @@ class huobi extends huobi$1 {
|
|
|
405
405
|
orderbook.reset(snapshot);
|
|
406
406
|
// unroll the accumulated deltas
|
|
407
407
|
for (let i = 0; i < messages.length; i++) {
|
|
408
|
-
|
|
409
|
-
this.handleOrderBookMessage(client, message, orderbook);
|
|
408
|
+
this.handleOrderBookMessage(client, messages[i], orderbook);
|
|
410
409
|
}
|
|
411
410
|
this.orderbooks[symbol] = orderbook;
|
|
412
411
|
client.resolve(orderbook, messageHash);
|
|
@@ -1667,14 +1666,14 @@ class huobi extends huobi$1 {
|
|
|
1667
1666
|
const action = this.safeString(message, 'action');
|
|
1668
1667
|
if (action === 'ping') {
|
|
1669
1668
|
const data = this.safeValue(message, 'data');
|
|
1670
|
-
const
|
|
1671
|
-
await client.send({ 'action': 'pong', 'data': { 'ts':
|
|
1669
|
+
const pingTs = this.safeInteger(data, 'ts');
|
|
1670
|
+
await client.send({ 'action': 'pong', 'data': { 'ts': pingTs } });
|
|
1672
1671
|
return;
|
|
1673
1672
|
}
|
|
1674
1673
|
const op = this.safeString(message, 'op');
|
|
1675
1674
|
if (op === 'ping') {
|
|
1676
|
-
const
|
|
1677
|
-
await client.send({ 'op': 'pong', 'ts':
|
|
1675
|
+
const pingTs = this.safeInteger(message, 'ts');
|
|
1676
|
+
await client.send({ 'op': 'pong', 'ts': pingTs });
|
|
1678
1677
|
}
|
|
1679
1678
|
}
|
|
1680
1679
|
catch (e) {
|
|
@@ -2143,7 +2142,7 @@ class huobi extends huobi$1 {
|
|
|
2143
2142
|
const signature = this.hmac(this.encode(payload), this.encode(this.secret), sha256.sha256, 'base64');
|
|
2144
2143
|
let request = undefined;
|
|
2145
2144
|
if (type === 'spot') {
|
|
2146
|
-
const
|
|
2145
|
+
const newParams = {
|
|
2147
2146
|
'authType': 'api',
|
|
2148
2147
|
'accessKey': this.apiKey,
|
|
2149
2148
|
'signatureMethod': 'HmacSHA256',
|
|
@@ -2152,7 +2151,7 @@ class huobi extends huobi$1 {
|
|
|
2152
2151
|
'signature': signature,
|
|
2153
2152
|
};
|
|
2154
2153
|
request = {
|
|
2155
|
-
'params':
|
|
2154
|
+
'params': newParams,
|
|
2156
2155
|
'action': 'req',
|
|
2157
2156
|
'ch': 'auth',
|
|
2158
2157
|
};
|
|
@@ -325,8 +325,7 @@ class huobijp extends huobijp$1 {
|
|
|
325
325
|
// unroll the accumulated deltas
|
|
326
326
|
const messages = orderbook.cache;
|
|
327
327
|
for (let i = 0; i < messages.length; i++) {
|
|
328
|
-
|
|
329
|
-
this.handleOrderBookMessage(client, message, orderbook);
|
|
328
|
+
this.handleOrderBookMessage(client, messages[i], orderbook);
|
|
330
329
|
}
|
|
331
330
|
this.orderbooks[symbol] = orderbook;
|
|
332
331
|
client.resolve(orderbook, messageHash);
|
|
@@ -511,9 +511,9 @@ class krakenfutures extends krakenfutures$1 {
|
|
|
511
511
|
let totalAmount = '0';
|
|
512
512
|
const trades = previousOrder['trades'];
|
|
513
513
|
for (let i = 0; i < trades.length; i++) {
|
|
514
|
-
const
|
|
515
|
-
totalCost = Precise["default"].stringAdd(totalCost, this.numberToString(
|
|
516
|
-
totalAmount = Precise["default"].stringAdd(totalAmount, this.numberToString(
|
|
514
|
+
const currentTrade = trades[i];
|
|
515
|
+
totalCost = Precise["default"].stringAdd(totalCost, this.numberToString(currentTrade['cost']));
|
|
516
|
+
totalAmount = Precise["default"].stringAdd(totalAmount, this.numberToString(currentTrade['amount']));
|
|
517
517
|
}
|
|
518
518
|
if (Precise["default"].stringGt(totalAmount, '0')) {
|
|
519
519
|
previousOrder['average'] = Precise["default"].stringDiv(totalCost, totalAmount);
|
|
@@ -548,13 +548,13 @@ class krakenfutures extends krakenfutures$1 {
|
|
|
548
548
|
if (isCancel) {
|
|
549
549
|
// get order without symbol
|
|
550
550
|
for (let i = 0; i < orders.length; i++) {
|
|
551
|
-
const
|
|
552
|
-
if (
|
|
553
|
-
orders[i] = this.extend(
|
|
551
|
+
const currentOrder = orders[i];
|
|
552
|
+
if (currentOrder['id'] === message['order_id']) {
|
|
553
|
+
orders[i] = this.extend(currentOrder, {
|
|
554
554
|
'status': 'canceled',
|
|
555
555
|
});
|
|
556
556
|
client.resolve(orders, 'orders');
|
|
557
|
-
client.resolve(orders, 'orders:' +
|
|
557
|
+
client.resolve(orders, 'orders:' + currentOrder['symbol']);
|
|
558
558
|
break;
|
|
559
559
|
}
|
|
560
560
|
}
|