ccxt 4.1.13 → 4.1.14

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 (89) hide show
  1. package/CHANGELOG.md +219 -0
  2. package/CONTRIBUTING.md +1 -0
  3. package/README.md +3 -3
  4. package/dist/ccxt.browser.js +296 -106
  5. package/dist/ccxt.browser.min.js +3 -3
  6. package/dist/cjs/ccxt.js +1 -1
  7. package/dist/cjs/src/ascendex.js +1 -0
  8. package/dist/cjs/src/binance.js +6 -2
  9. package/dist/cjs/src/bingx.js +4 -2
  10. package/dist/cjs/src/bitget.js +192 -1
  11. package/dist/cjs/src/bitmart.js +2 -0
  12. package/dist/cjs/src/bittrex.js +6 -0
  13. package/dist/cjs/src/cex.js +1 -0
  14. package/dist/cjs/src/coinbase.js +1 -0
  15. package/dist/cjs/src/coinbasepro.js +1 -0
  16. package/dist/cjs/src/coinex.js +2 -0
  17. package/dist/cjs/src/coinfalcon.js +1 -0
  18. package/dist/cjs/src/coinmate.js +1 -0
  19. package/dist/cjs/src/coinone.js +2 -1
  20. package/dist/cjs/src/cryptocom.js +25 -87
  21. package/dist/cjs/src/currencycom.js +1 -0
  22. package/dist/cjs/src/delta.js +1 -0
  23. package/dist/cjs/src/deribit.js +1 -0
  24. package/dist/cjs/src/digifinex.js +1 -0
  25. package/dist/cjs/src/exmo.js +1 -0
  26. package/dist/cjs/src/gate.js +3 -0
  27. package/dist/cjs/src/gemini.js +1 -0
  28. package/dist/cjs/src/hitbtc.js +1 -0
  29. package/dist/cjs/src/hollaex.js +1 -0
  30. package/dist/cjs/src/huobijp.js +1 -0
  31. package/dist/cjs/src/idex.js +1 -0
  32. package/dist/cjs/src/independentreserve.js +1 -0
  33. package/dist/cjs/src/indodax.js +1 -0
  34. package/dist/cjs/src/kraken.js +9 -0
  35. package/dist/cjs/src/krakenfutures.js +1 -0
  36. package/dist/cjs/src/latoken.js +1 -0
  37. package/dist/cjs/src/poloniex.js +1 -0
  38. package/dist/cjs/src/poloniexfutures.js +8 -2
  39. package/dist/cjs/src/pro/krakenfutures.js +14 -10
  40. package/dist/cjs/src/woo.js +1 -0
  41. package/js/ccxt.d.ts +1 -1
  42. package/js/ccxt.js +1 -1
  43. package/js/src/abstract/binance.d.ts +4 -0
  44. package/js/src/abstract/binancecoinm.d.ts +4 -0
  45. package/js/src/abstract/binanceus.d.ts +4 -0
  46. package/js/src/abstract/binanceusdm.d.ts +4 -0
  47. package/js/src/abstract/kraken.d.ts +8 -0
  48. package/js/src/abstract/poloniexfutures.d.ts +6 -1
  49. package/js/src/ascendex.js +1 -0
  50. package/js/src/binance.js +6 -2
  51. package/js/src/bingx.js +4 -2
  52. package/js/src/bitget.d.ts +28 -0
  53. package/js/src/bitget.js +192 -1
  54. package/js/src/bitmart.js +2 -0
  55. package/js/src/bittrex.d.ts +2 -2
  56. package/js/src/bittrex.js +6 -0
  57. package/js/src/cex.js +1 -0
  58. package/js/src/coinbase.js +1 -0
  59. package/js/src/coinbasepro.js +1 -0
  60. package/js/src/coinex.js +2 -0
  61. package/js/src/coinfalcon.js +1 -0
  62. package/js/src/coinmate.js +1 -0
  63. package/js/src/coinone.js +2 -1
  64. package/js/src/cryptocom.d.ts +0 -2
  65. package/js/src/cryptocom.js +25 -87
  66. package/js/src/currencycom.js +1 -0
  67. package/js/src/delta.js +1 -0
  68. package/js/src/deribit.js +1 -0
  69. package/js/src/digifinex.js +1 -0
  70. package/js/src/exmo.js +1 -0
  71. package/js/src/gate.d.ts +1 -0
  72. package/js/src/gate.js +3 -0
  73. package/js/src/gemini.d.ts +1 -0
  74. package/js/src/gemini.js +1 -0
  75. package/js/src/hitbtc.js +1 -0
  76. package/js/src/hollaex.js +1 -0
  77. package/js/src/huobijp.js +1 -0
  78. package/js/src/idex.js +1 -0
  79. package/js/src/independentreserve.js +1 -0
  80. package/js/src/indodax.js +1 -0
  81. package/js/src/kraken.js +9 -0
  82. package/js/src/krakenfutures.js +1 -0
  83. package/js/src/latoken.js +1 -0
  84. package/js/src/poloniex.js +1 -0
  85. package/js/src/poloniexfutures.js +8 -2
  86. package/js/src/pro/krakenfutures.js +14 -10
  87. package/js/src/woo.js +1 -0
  88. package/package.json +1 -1
  89. package/skip-tests.json +33 -7
package/js/src/huobijp.js CHANGED
@@ -517,6 +517,7 @@ export default class huobijp extends Exchange {
517
517
  'max': undefined,
518
518
  },
519
519
  },
520
+ 'created': undefined,
520
521
  'info': market,
521
522
  });
522
523
  }
package/js/src/idex.js CHANGED
@@ -312,6 +312,7 @@ export default class idex extends Exchange {
312
312
  'max': undefined,
313
313
  },
314
314
  },
315
+ 'created': undefined,
315
316
  'info': entry,
316
317
  });
317
318
  }
@@ -214,6 +214,7 @@ export default class independentreserve extends Exchange {
214
214
  'max': undefined,
215
215
  },
216
216
  },
217
+ 'created': undefined,
217
218
  'info': id,
218
219
  });
219
220
  }
package/js/src/indodax.js CHANGED
@@ -282,6 +282,7 @@ export default class indodax extends Exchange {
282
282
  'max': undefined,
283
283
  },
284
284
  },
285
+ 'created': undefined,
285
286
  'info': market,
286
287
  });
287
288
  }
package/js/src/kraken.js CHANGED
@@ -156,6 +156,7 @@ export default class kraken extends Exchange {
156
156
  'Depth': 1,
157
157
  'OHLC': 1,
158
158
  'Spread': 1,
159
+ 'SystemStatus': 1,
159
160
  'Ticker': 1,
160
161
  'Time': 1,
161
162
  'Trades': 1,
@@ -168,6 +169,7 @@ export default class kraken extends Exchange {
168
169
  'AddExport': 3,
169
170
  'Balance': 3,
170
171
  'CancelAll': 3,
172
+ 'CancelAllOrdersAfter': 3,
171
173
  'CancelOrder': 0,
172
174
  'CancelOrderBatch': 0,
173
175
  'ClosedOrders': 6,
@@ -203,6 +205,13 @@ export default class kraken extends Exchange {
203
205
  // sub accounts
204
206
  'CreateSubaccount': 3,
205
207
  'AccountTransfer': 3,
208
+ // earn
209
+ 'Earn/Allocate': 3,
210
+ 'Earn/Deallocate': 3,
211
+ 'Earn/AllocateStatus': 3,
212
+ 'Earn/DeallocateStatus': 3,
213
+ 'Earn/Strategies': 3,
214
+ 'Earn/Allocations': 3,
206
215
  },
207
216
  },
208
217
  },
@@ -388,6 +388,7 @@ export default class krakenfutures extends Exchange {
388
388
  'max': undefined,
389
389
  },
390
390
  },
391
+ 'created': this.parse8601(this.safeString(market, 'openingDate')),
391
392
  'info': market,
392
393
  });
393
394
  }
package/js/src/latoken.js CHANGED
@@ -367,6 +367,7 @@ export default class latoken extends Exchange {
367
367
  'max': this.safeNumber(market, 'maxOrderCost' + capitalizedQuote),
368
368
  },
369
369
  },
370
+ 'created': this.safeInteger(market, 'created'),
370
371
  'info': market,
371
372
  });
372
373
  }
@@ -555,6 +555,7 @@ export default class poloniex extends Exchange {
555
555
  'max': undefined,
556
556
  },
557
557
  },
558
+ 'created': this.safeInteger(market, 'tradableStartTime'),
558
559
  'info': market,
559
560
  });
560
561
  }
@@ -105,22 +105,27 @@ export default class poloniexfutures extends Exchange {
105
105
  'get': {
106
106
  'account-overview': 1,
107
107
  'transaction-history': 1,
108
+ 'maxActiveOrders': 1,
109
+ 'maxRiskLimit': 1,
110
+ 'userFeeRate': 1,
111
+ 'marginType/query': 1,
108
112
  'orders': 1,
109
113
  'stopOrders': 1,
110
114
  'recentDoneOrders': 1,
111
115
  'orders/{order-id}': 1,
116
+ 'clientOrderId/{clientOid}': 1,
112
117
  'fills': 1,
113
118
  'openOrderStatistics': 1,
114
119
  'position': 1.5,
115
120
  'positions': 1.5,
116
121
  'funding-history': 1,
117
- 'marginType/query': 1,
118
122
  },
119
123
  'post': {
120
124
  'orders': 1.5,
121
125
  'batchOrders': 1.5,
122
126
  'position/margin/auto-deposit-status': 1.5,
123
127
  'position/margin/deposit-margin': 1.5,
128
+ 'position/margin/withdraw-margin': 1.5,
124
129
  'bullet-private': 1,
125
130
  'marginType/change': 1,
126
131
  },
@@ -337,6 +342,7 @@ export default class poloniexfutures extends Exchange {
337
342
  'max': undefined,
338
343
  },
339
344
  },
345
+ 'created': this.safeInteger(market, 'firstOpenDate'),
340
346
  'info': market,
341
347
  });
342
348
  }
@@ -1261,7 +1267,7 @@ export default class poloniexfutures extends Exchange {
1261
1267
  }
1262
1268
  const request = {};
1263
1269
  if (!stop) {
1264
- request['status'] = status === 'open' ? 'active' : 'done';
1270
+ request['status'] = (status === 'open') ? 'active' : 'done';
1265
1271
  }
1266
1272
  else if (status !== 'open') {
1267
1273
  throw new BadRequest(this.id + ' fetchOrdersByStatus() can only fetch untriggered stop orders');
@@ -102,6 +102,9 @@ export default class krakenfutures extends krakenfuturesRest {
102
102
  };
103
103
  const marketIds = [];
104
104
  let messageHash = name;
105
+ if (symbols === undefined) {
106
+ symbols = [];
107
+ }
105
108
  for (let i = 0; i < symbols.length; i++) {
106
109
  const symbol = symbols[i];
107
110
  marketIds.push(this.marketId(symbol));
@@ -167,6 +170,7 @@ export default class krakenfutures extends krakenfuturesRest {
167
170
  const method = this.safeString(this.options, 'watchTickerMethod', 'ticker'); // or ticker_lite
168
171
  const name = this.safeString2(params, 'method', 'watchTickerMethod', method);
169
172
  params = this.omit(params, ['watchTickerMethod', 'method']);
173
+ symbols = this.marketSymbols(symbols, undefined, false);
170
174
  return await this.subscribePublic(name, symbols, params);
171
175
  }
172
176
  async watchTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -318,7 +322,7 @@ export default class krakenfutures extends krakenfuturesRest {
318
322
  // }
319
323
  //
320
324
  const channel = this.safeString(message, 'feed');
321
- const marketId = this.safeStringLower(message, 'product_id');
325
+ const marketId = this.safeString(message, 'product_id');
322
326
  if (marketId !== undefined) {
323
327
  const market = this.market(marketId);
324
328
  const symbol = market['symbol'];
@@ -359,7 +363,7 @@ export default class krakenfutures extends krakenfuturesRest {
359
363
  // "price": 34893
360
364
  // }
361
365
  //
362
- const marketId = this.safeStringLower(trade, 'product_id');
366
+ const marketId = this.safeString(trade, 'product_id');
363
367
  market = this.safeMarket(marketId, market);
364
368
  const timestamp = this.safeInteger(trade, 'time');
365
369
  return this.safeTrade({
@@ -412,7 +416,7 @@ export default class krakenfutures extends krakenfuturesRest {
412
416
  // }
413
417
  //
414
418
  const timestamp = this.safeInteger(trade, 'tradeTime');
415
- const marketId = this.safeStringLower(trade, 'symbol');
419
+ const marketId = this.safeString(trade, 'symbol');
416
420
  return this.safeTrade({
417
421
  'info': trade,
418
422
  'id': this.safeString(trade, 'tradeId'),
@@ -491,7 +495,7 @@ export default class krakenfutures extends krakenfuturesRest {
491
495
  }
492
496
  const order = this.safeValue(message, 'order');
493
497
  if (order !== undefined) {
494
- const marketId = this.safeStringLower(order, 'instrument');
498
+ const marketId = this.safeString(order, 'instrument');
495
499
  const messageHash = 'orders';
496
500
  const symbol = this.safeSymbol(marketId);
497
501
  const orderId = this.safeString(order, 'order_id');
@@ -684,7 +688,7 @@ export default class krakenfutures extends krakenfuturesRest {
684
688
  status = 'cancelled';
685
689
  }
686
690
  }
687
- const marketId = this.safeStringLower(unparsedOrder, 'instrument');
691
+ const marketId = this.safeString(unparsedOrder, 'instrument');
688
692
  const timestamp = this.safeString(unparsedOrder, 'time');
689
693
  const direction = this.safeInteger(unparsedOrder, 'direction');
690
694
  return this.safeOrder({
@@ -765,7 +769,7 @@ export default class krakenfutures extends krakenfuturesRest {
765
769
  // "volumeQuote": 6899673.0
766
770
  // }
767
771
  //
768
- const marketId = this.safeStringLower(message, 'product_id');
772
+ const marketId = this.safeString(message, 'product_id');
769
773
  const feed = this.safeString(message, 'feed');
770
774
  if (marketId !== undefined) {
771
775
  const ticker = this.parseWsTicker(message);
@@ -826,7 +830,7 @@ export default class krakenfutures extends krakenfuturesRest {
826
830
  // "volumeQuote": 6899673.0
827
831
  // }
828
832
  //
829
- const marketId = this.safeStringLower(ticker, 'product_id');
833
+ const marketId = this.safeString(ticker, 'product_id');
830
834
  market = this.safeMarket(marketId, market);
831
835
  const symbol = market['symbol'];
832
836
  const timestamp = this.parse8601(this.safeString(ticker, 'lastTime'));
@@ -884,7 +888,7 @@ export default class krakenfutures extends krakenfuturesRest {
884
888
  // ]
885
889
  // }
886
890
  //
887
- const marketId = this.safeStringLower(message, 'product_id');
891
+ const marketId = this.safeString(message, 'product_id');
888
892
  const market = this.safeMarket(marketId);
889
893
  const symbol = market['symbol'];
890
894
  const messageHash = 'book:' + symbol;
@@ -924,7 +928,7 @@ export default class krakenfutures extends krakenfuturesRest {
924
928
  // "timestamp": 1612269953629
925
929
  // }
926
930
  //
927
- const marketId = this.safeStringLower(message, 'product_id');
931
+ const marketId = this.safeString(message, 'product_id');
928
932
  const market = this.safeMarket(marketId);
929
933
  const symbol = market['symbol'];
930
934
  const messageHash = 'book:' + symbol;
@@ -1228,7 +1232,7 @@ export default class krakenfutures extends krakenfuturesRest {
1228
1232
  // }
1229
1233
  //
1230
1234
  const timestamp = this.safeInteger(trade, 'time');
1231
- const marketId = this.safeStringLower(trade, 'instrument');
1235
+ const marketId = this.safeString(trade, 'instrument');
1232
1236
  market = this.safeMarket(marketId, market);
1233
1237
  const isBuy = this.safeValue(trade, 'buy');
1234
1238
  const feeCurrencyId = this.safeString(trade, 'fee_currency');
package/js/src/woo.js CHANGED
@@ -403,6 +403,7 @@ export default class woo extends Exchange {
403
403
  'max': undefined,
404
404
  },
405
405
  },
406
+ 'created': this.safeIntegerProduct(market, 'created_time', 1000),
406
407
  'info': market,
407
408
  });
408
409
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccxt",
3
- "version": "4.1.13",
3
+ "version": "4.1.14",
4
4
  "description": "A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 130+ exchanges",
5
5
  "unpkg": "dist/ccxt.browser.js",
6
6
  "type": "module",
package/skip-tests.json CHANGED
@@ -660,8 +660,37 @@
660
660
  "active":"is undefined",
661
661
  "currencyIdAndCode": "from travis location (USA) these webapi endpoints cant be loaded"
662
662
  },
663
- "fetchTickers": "timestamp might be of 1970-01-01T00:00:00.000Z",
664
- "fetchTicker": "same"
663
+ "fetchTickers": {
664
+ "timestamp": "timestamp might be of 1970-01-01T00:00:00.000Z",
665
+ "quoteVolume": "can't be infered"
666
+ },
667
+ "fetchTicker": {
668
+ "timestamp": "timestamp might be of 1970-01-01T00:00:00.000Z",
669
+ "quoteVolume": "can't be infered"
670
+
671
+ },
672
+ "fetchPositions": {
673
+ "entryPrice": "entryPrice is not provided",
674
+ "markPrice": "undefined",
675
+ "notional": "undefined",
676
+ "leverage": "undefined",
677
+ "liquidationPrice": "undefined",
678
+ "marginMode": "undefined",
679
+ "percentage": "undefined",
680
+ "marginRatio": "undefined",
681
+ "stopLossPrice": "undefined",
682
+ "takeProfitPrice": "undefined",
683
+ "maintenanceMargin": "undefined",
684
+ "initialMarginPercentage": "undefined",
685
+ "maintenanceMarginPercentage": "undefined",
686
+ "hedged": "undefined",
687
+ "side": "undefined",
688
+ "contracts": "undefined"
689
+ },
690
+ "fetchAccounts": {
691
+ "type": "type is not provided",
692
+ "code": "not provided"
693
+ }
665
694
  }
666
695
  },
667
696
  "currencycom": {
@@ -1256,12 +1285,9 @@
1256
1285
  },
1257
1286
  "krakenfutures": {
1258
1287
  "skip": "continious timeouts https://app.travis-ci.com/github/ccxt/ccxt/builds/265225134#L2431",
1288
+ "skipWs": true,
1259
1289
  "skipMethods": {
1260
- "loadMarkets": {
1261
- "type":"unexpected market type",
1262
- "limits": "messed",
1263
- "active":"is undefined"
1264
- },
1290
+ "loadMarkets": "skip loadMarkets",
1265
1291
  "fetchCurrencies": {
1266
1292
  "withdraw": "undefined",
1267
1293
  "deposit": "undefined"