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.
Files changed (91) hide show
  1. package/CHANGELOG.md +224 -0
  2. package/README.md +3 -3
  3. package/dist/ccxt.browser.js +477 -226
  4. package/dist/ccxt.browser.min.js +2 -2
  5. package/dist/cjs/ccxt.js +1 -1
  6. package/dist/cjs/src/base/Exchange.js +6 -1
  7. package/dist/cjs/src/binance.js +28 -1
  8. package/dist/cjs/src/bitbank.js +11 -0
  9. package/dist/cjs/src/bitfinex.js +12 -8
  10. package/dist/cjs/src/bitflyer.js +39 -10
  11. package/dist/cjs/src/bitforex.js +0 -8
  12. package/dist/cjs/src/bitget.js +15 -5
  13. package/dist/cjs/src/bitstamp1.js +22 -0
  14. package/dist/cjs/src/bl3p.js +24 -0
  15. package/dist/cjs/src/bybit.js +111 -36
  16. package/dist/cjs/src/coinbasepro.js +11 -0
  17. package/dist/cjs/src/currencycom.js +1 -1
  18. package/dist/cjs/src/deribit.js +3 -3
  19. package/dist/cjs/src/huobi.js +1 -1
  20. package/dist/cjs/src/huobijp.js +1 -1
  21. package/dist/cjs/src/idex.js +1 -1
  22. package/dist/cjs/src/kucoinfutures.js +46 -51
  23. package/dist/cjs/src/lbank.js +1 -1
  24. package/dist/cjs/src/lbank2.js +3 -3
  25. package/dist/cjs/src/okx.js +5 -5
  26. package/dist/cjs/src/pro/ascendex.js +2 -2
  27. package/dist/cjs/src/pro/binance.js +11 -11
  28. package/dist/cjs/src/pro/bitfinex2.js +5 -5
  29. package/dist/cjs/src/pro/bitget.js +5 -5
  30. package/dist/cjs/src/pro/bitmex.js +2 -2
  31. package/dist/cjs/src/pro/bittrex.js +2 -2
  32. package/dist/cjs/src/pro/bitvavo.js +2 -2
  33. package/dist/cjs/src/pro/bybit.js +2 -2
  34. package/dist/cjs/src/pro/coinbase.js +5 -6
  35. package/dist/cjs/src/pro/cryptocom.js +4 -4
  36. package/dist/cjs/src/pro/currencycom.js +3 -3
  37. package/dist/cjs/src/pro/hitbtc.js +4 -4
  38. package/dist/cjs/src/pro/huobi.js +7 -8
  39. package/dist/cjs/src/pro/huobijp.js +1 -2
  40. package/dist/cjs/src/pro/krakenfutures.js +7 -7
  41. package/dist/cjs/src/pro/kucoin.js +51 -2
  42. package/dist/cjs/src/pro/kucoinfutures.js +3 -3
  43. package/dist/cjs/src/pro/phemex.js +4 -4
  44. package/dist/cjs/src/pro/poloniex.js +6 -6
  45. package/dist/cjs/src/pro/whitebit.js +7 -7
  46. package/dist/cjs/src/probit.js +2 -2
  47. package/js/ccxt.d.ts +1 -1
  48. package/js/ccxt.js +1 -1
  49. package/js/src/base/Exchange.js +6 -1
  50. package/js/src/binance.js +28 -1
  51. package/js/src/bitbank.js +11 -0
  52. package/js/src/bitfinex.js +12 -8
  53. package/js/src/bitflyer.js +39 -10
  54. package/js/src/bitforex.js +0 -8
  55. package/js/src/bitget.js +15 -5
  56. package/js/src/bitstamp1.js +22 -0
  57. package/js/src/bl3p.js +24 -0
  58. package/js/src/bybit.js +111 -36
  59. package/js/src/coinbasepro.js +11 -0
  60. package/js/src/currencycom.js +1 -1
  61. package/js/src/deribit.js +3 -3
  62. package/js/src/huobi.js +1 -1
  63. package/js/src/huobijp.js +1 -1
  64. package/js/src/idex.js +1 -1
  65. package/js/src/kucoinfutures.js +46 -51
  66. package/js/src/lbank.js +1 -1
  67. package/js/src/lbank2.js +3 -3
  68. package/js/src/okx.js +5 -5
  69. package/js/src/pro/ascendex.js +2 -2
  70. package/js/src/pro/binance.js +11 -11
  71. package/js/src/pro/bitfinex2.js +5 -5
  72. package/js/src/pro/bitget.js +5 -5
  73. package/js/src/pro/bitmex.js +2 -2
  74. package/js/src/pro/bittrex.js +2 -2
  75. package/js/src/pro/bitvavo.js +2 -2
  76. package/js/src/pro/bybit.js +2 -2
  77. package/js/src/pro/coinbase.js +5 -6
  78. package/js/src/pro/cryptocom.js +4 -4
  79. package/js/src/pro/currencycom.js +3 -3
  80. package/js/src/pro/hitbtc.js +4 -4
  81. package/js/src/pro/huobi.js +7 -8
  82. package/js/src/pro/huobijp.js +1 -2
  83. package/js/src/pro/krakenfutures.js +7 -7
  84. package/js/src/pro/kucoin.d.ts +1 -0
  85. package/js/src/pro/kucoin.js +51 -2
  86. package/js/src/pro/kucoinfutures.js +3 -3
  87. package/js/src/pro/phemex.js +4 -4
  88. package/js/src/pro/poloniex.js +6 -6
  89. package/js/src/pro/whitebit.js +7 -7
  90. package/js/src/probit.js +2 -2
  91. package/package.json +1 -1
@@ -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
  //
@@ -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
  //
@@ -508,7 +508,7 @@ class idex extends idex$1 {
508
508
  request['start'] = since;
509
509
  }
510
510
  if (limit !== undefined) {
511
- request['limit'] = limit;
511
+ request['limit'] = Math.min(limit, 1000);
512
512
  }
513
513
  // [
514
514
  // {
@@ -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.futuresPrivateGetPositions(this.extend(request, params));
872
+ const response = await this.futuresPrivateGetPosition(this.extend(request, params));
873
873
  //
874
- // {
875
- // "code": "200000",
876
- // "data": [
877
- // {
878
- // "id": "63b3599e6c41f50001c47d44",
879
- // "symbol": "XBTUSDTM",
880
- // "autoDeposit": false,
881
- // "maintMarginReq": 0.004,
882
- // "riskLimit": 25000,
883
- // "realLeverage": 5.0,
884
- // "crossMode": false,
885
- // "delevPercentage": 0.57,
886
- // "openingTimestamp": 1684000025528,
887
- // "currentTimestamp": 1684000052160,
888
- // "currentQty": 1,
889
- // "currentCost": 26.821,
890
- // "currentComm": 0.0160926,
891
- // "unrealisedCost": 26.821,
892
- // "realisedGrossCost": 0.0,
893
- // "realisedCost": 0.0160926,
894
- // "isOpen": true,
895
- // "markPrice": 26821.13,
896
- // "markValue": 26.82113,
897
- // "posCost": 26.821,
898
- // "posCross": 0.0,
899
- // "posCrossMargin": 0.0,
900
- // "posInit": 5.3642,
901
- // "posComm": 0.01931112,
902
- // "posCommCommon": 0.01931112,
903
- // "posLoss": 0.0,
904
- // "posMargin": 5.38351112,
905
- // "posMaint": 0.12927722,
906
- // "maintMargin": 5.38364112,
907
- // "realisedGrossPnl": 0.0,
908
- // "realisedPnl": -0.0160926,
909
- // "unrealisedPnl": 1.3E-4,
910
- // "unrealisedPnlPcnt": 0.0,
911
- // "unrealisedRoePcnt": 0.0,
912
- // "avgEntryPrice": 26821.0,
913
- // "liquidationPrice": 21567.0,
914
- // "bankruptPrice": 21456.0,
915
- // "settleCurrency": "USDT",
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[0], market);
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, 'realised_pnl'),
1064
+ 'realizedPnl': this.safeNumber(position, 'realisedPnl'),
1070
1065
  'marginRatio': undefined,
1071
1066
  'liquidationPrice': this.safeNumber(position, 'liquidationPrice'),
1072
1067
  'markPrice': this.safeNumber(position, 'markPrice'),
@@ -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);
@@ -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 response = await this.fetchTickers([market['symbol']], params);
599
- return this.safeValue(response, market['symbol']);
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
@@ -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 data = [];
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
- data = this.arrayConcat(data, options);
1433
+ markets = this.arrayConcat(markets, options);
1434
1434
  }
1435
- return this.parseMarkets(data);
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 i = 0; i < details.length; i++) {
6695
- const settlement = this.parseSettlement(details[i], market);
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 message = messages[i];
265
- this.handleOrderBookMessage(client, message, orderbook);
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 message = messages[i];
289
- const U = this.safeInteger(message, 'U');
290
- const u = this.safeInteger(message, 'u');
291
- const pu = this.safeInteger(message, 'pu');
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, message, orderbook);
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, message, orderbook);
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 symbol = this.safeString(subscription, 'symbol'); // watchOrderBook
451
- const symbols = this.safeValue(subscription, 'symbols', [symbol]); // watchOrderBookForSymbols
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 messageHash = messageHashes[i];
1159
- const parts = messageHash.split('::');
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, messageHash);
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 id = this.safeString(delta, 0);
598
+ const idString = this.safeString(delta, 0);
599
599
  const price = this.safeFloat(delta, 1);
600
- bookside.store(price, size, id);
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 orderbook = this.orderbooks[symbol];
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 = orderbook[side];
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 = orderbook[side];
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 symbol = this.safeString(data, 0);
297
- const timeframe = this.safeString(data, 1);
298
- const market = this.market(symbol);
299
- const interval = this.safeString(this.options['timeframes'], timeframe);
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(symbol + '#' + timeframe);
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 messageHash = table + ':' + market['id'];
992
- topics.push(messageHash);
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 message = messages[i];
655
- this.handleOrderBookMessage(client, message, orderbook);
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 message = messages[i];
386
- this.handleOrderBookMessage(client, message, orderbook);
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 market = this.market(symbol);
534
- const topic = 'orderbook.' + limit.toString() + '.' + market['id'];
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 event = events[i];
330
- const trades = this.safeValue(event, 'trades');
331
- for (let i = 0; i < trades.length; i++) {
332
- const item = trades[i];
333
- const trade = this.parseTrade(item);
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 messageHash = 'book' + '.' + market['id'];
94
- topics.push(messageHash);
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 messageHash = 'trade' + '.' + market['id'];
182
- topics.push(messageHash);
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 destination = this.safeString(subscription, 'destination');
528
- if (destination !== undefined) {
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, destination);
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 i = 0; i < trades.length; i++) {
536
- stored.append(trades[i]);
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 i = 0; i < ohlcvs.length; i++) {
664
- stored.append(ohlcvs[i]);
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
- const message = messages[i];
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 ping = this.safeInteger(data, 'ts');
1671
- await client.send({ 'action': 'pong', 'data': { 'ts': ping } });
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 ping = this.safeInteger(message, 'ts');
1677
- await client.send({ 'op': 'pong', 'ts': ping });
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 params = {
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': 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
- const message = messages[i];
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 trade = trades[i];
515
- totalCost = Precise["default"].stringAdd(totalCost, this.numberToString(trade['cost']));
516
- totalAmount = Precise["default"].stringAdd(totalAmount, this.numberToString(trade['amount']));
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 order = orders[i];
552
- if (order['id'] === message['order_id']) {
553
- orders[i] = this.extend(order, {
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:' + order['symbol']);
557
+ client.resolve(orders, 'orders:' + currentOrder['symbol']);
558
558
  break;
559
559
  }
560
560
  }