ccxt 4.4.43 → 4.4.44

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 (78) hide show
  1. package/README.md +3 -3
  2. package/dist/ccxt.browser.min.js +15 -15
  3. package/dist/cjs/ccxt.js +1 -1
  4. package/dist/cjs/src/binance.js +55 -43
  5. package/dist/cjs/src/bingx.js +5 -0
  6. package/dist/cjs/src/bitfinex.js +6 -2
  7. package/dist/cjs/src/bitget.js +3 -1
  8. package/dist/cjs/src/bitmart.js +4 -7
  9. package/dist/cjs/src/bitmex.js +3 -5
  10. package/dist/cjs/src/bitstamp.js +5 -0
  11. package/dist/cjs/src/bybit.js +7 -22
  12. package/dist/cjs/src/coinbase.js +13 -9
  13. package/dist/cjs/src/coinbaseinternational.js +13 -9
  14. package/dist/cjs/src/coincatch.js +2 -2
  15. package/dist/cjs/src/coinex.js +5 -5
  16. package/dist/cjs/src/cryptocom.js +3 -1
  17. package/dist/cjs/src/defx.js +2 -2
  18. package/dist/cjs/src/delta.js +1 -1
  19. package/dist/cjs/src/gate.js +7 -2
  20. package/dist/cjs/src/gemini.js +5 -0
  21. package/dist/cjs/src/hashkey.js +9 -9
  22. package/dist/cjs/src/htx.js +105 -2
  23. package/dist/cjs/src/hyperliquid.js +5 -0
  24. package/dist/cjs/src/kraken.js +9 -2
  25. package/dist/cjs/src/krakenfutures.js +5 -0
  26. package/dist/cjs/src/kucoin.js +9 -7
  27. package/dist/cjs/src/kucoinfutures.js +5 -5
  28. package/dist/cjs/src/mexc.js +16 -10
  29. package/dist/cjs/src/ndax.js +1 -1
  30. package/dist/cjs/src/oceanex.js +1 -1
  31. package/dist/cjs/src/okx.js +4 -5
  32. package/dist/cjs/src/pro/bitcoincom.js +4 -1
  33. package/dist/cjs/src/pro/bitopro.js +1 -1
  34. package/dist/cjs/src/whitebit.js +4 -2
  35. package/dist/cjs/src/woo.js +5 -3
  36. package/dist/cjs/src/woofipro.js +5 -2
  37. package/js/ccxt.d.ts +1 -1
  38. package/js/ccxt.js +1 -1
  39. package/js/src/abstract/binance.d.ts +1 -0
  40. package/js/src/abstract/binancecoinm.d.ts +1 -0
  41. package/js/src/abstract/binanceus.d.ts +1 -0
  42. package/js/src/abstract/binanceusdm.d.ts +1 -0
  43. package/js/src/binance.d.ts +33 -32
  44. package/js/src/binance.js +55 -43
  45. package/js/src/bingx.js +5 -0
  46. package/js/src/bitfinex.js +6 -2
  47. package/js/src/bitget.js +3 -1
  48. package/js/src/bitmart.js +4 -7
  49. package/js/src/bitmex.js +3 -5
  50. package/js/src/bitstamp.js +5 -0
  51. package/js/src/bybit.js +7 -22
  52. package/js/src/coinbase.js +13 -9
  53. package/js/src/coinbaseinternational.js +13 -9
  54. package/js/src/coincatch.js +2 -2
  55. package/js/src/coinex.js +5 -5
  56. package/js/src/cryptocom.js +3 -1
  57. package/js/src/defx.js +2 -2
  58. package/js/src/delta.js +1 -1
  59. package/js/src/gate.js +7 -2
  60. package/js/src/gemini.js +5 -0
  61. package/js/src/hashkey.js +9 -9
  62. package/js/src/htx.d.ts +13 -1
  63. package/js/src/htx.js +105 -2
  64. package/js/src/hyperliquid.js +5 -0
  65. package/js/src/kraken.js +9 -2
  66. package/js/src/krakenfutures.js +5 -0
  67. package/js/src/kucoin.js +9 -7
  68. package/js/src/kucoinfutures.js +5 -5
  69. package/js/src/mexc.js +16 -10
  70. package/js/src/ndax.js +1 -1
  71. package/js/src/oceanex.js +1 -1
  72. package/js/src/okx.js +4 -5
  73. package/js/src/pro/bitcoincom.js +4 -1
  74. package/js/src/pro/bitopro.js +1 -1
  75. package/js/src/whitebit.js +4 -2
  76. package/js/src/woo.js +5 -3
  77. package/js/src/woofipro.js +5 -2
  78. package/package.json +1 -1
@@ -840,8 +840,8 @@ class coincatch extends coincatch$1 {
840
840
  settleId = this.safeString(supportMarginCoins, 0);
841
841
  settle = this.safeCurrencyCode(settleId);
842
842
  suffix = ':' + settle;
843
- isLinear = baseId === settleId; // todo check
844
- isInverse = quoteId === settleId; // todo check
843
+ isLinear = quoteId === settleId; // todo check
844
+ isInverse = baseId === settleId; // todo check
845
845
  if (isLinear) {
846
846
  subType = 'linear';
847
847
  }
@@ -519,11 +519,11 @@ class coinex extends coinex$1 {
519
519
  },
520
520
  'hedged': false,
521
521
  'trailing': false,
522
- // exchange-supported features
523
- // 'marketBuyRequiresPrice': true,
524
- // 'marketBuyByCost': true,
525
- // 'selfTradePrevention': true,
526
- // 'iceberg': true,
522
+ 'leverage': false,
523
+ 'marketBuyByCost': true,
524
+ 'marketBuyRequiresPrice': true,
525
+ 'selfTradePrevention': true,
526
+ 'iceberg': true, // todo implement
527
527
  },
528
528
  'createOrders': {
529
529
  'max': 5,
@@ -371,10 +371,12 @@ class cryptocom extends cryptocom$1 {
371
371
  'GTD': false,
372
372
  },
373
373
  'hedged': false,
374
- // exchange-supported features
375
374
  'selfTradePrevention': true,
376
375
  'trailing': false,
377
376
  'iceberg': false,
377
+ 'leverage': false,
378
+ 'marketBuyByCost': true,
379
+ 'marketBuyRequiresPrice': true,
378
380
  },
379
381
  'createOrders': {
380
382
  'max': 10,
@@ -934,10 +934,10 @@ class defx extends defx$1 {
934
934
  const id = this.safeString(trade, 'id');
935
935
  const oid = this.safeString(trade, 'orderId');
936
936
  const takerOrMaker = this.safeStringLower(trade, 'role');
937
- const buyerMaker = this.safeString(trade, 'buyerMaker');
937
+ const buyerMaker = this.safeBool(trade, 'buyerMaker');
938
938
  let side = this.safeStringLower(trade, 'side');
939
939
  if (buyerMaker !== undefined) {
940
- if (buyerMaker === 'true') {
940
+ if (buyerMaker) {
941
941
  side = 'sell';
942
942
  }
943
943
  else {
@@ -739,7 +739,7 @@ class delta extends delta$1 {
739
739
  // other markets (swap, futures, move, spread, irs) seem to use the step of '1' contract
740
740
  amountPrecision = this.parseNumber('1');
741
741
  }
742
- const linear = (settle === base);
742
+ const linear = (settle === quote);
743
743
  let optionType = undefined;
744
744
  let symbol = base + '/' + quote;
745
745
  if (swap || future || option) {
@@ -705,7 +705,7 @@ class gate extends gate$1 {
705
705
  },
706
706
  },
707
707
  'features': {
708
- 'spot': {
708
+ 'default': {
709
709
  'sandbox': true,
710
710
  'createOrder': {
711
711
  'marginMode': true,
@@ -724,9 +724,11 @@ class gate extends gate$1 {
724
724
  },
725
725
  'hedged': false,
726
726
  'trailing': false,
727
- // exchange-specific features
728
727
  'iceberg': true,
729
728
  'selfTradePrevention': true,
729
+ 'leverage': false,
730
+ 'marketBuyByCost': true,
731
+ 'marketBuyRequiresPrice': true,
730
732
  },
731
733
  'createOrders': {
732
734
  'max': 40, // NOTE! max 10 per symbol
@@ -762,6 +764,9 @@ class gate extends gate$1 {
762
764
  'limit': 1000,
763
765
  },
764
766
  },
767
+ 'spot': {
768
+ 'extends': 'default',
769
+ },
765
770
  'forDerivatives': {
766
771
  'extends': 'spot',
767
772
  'createOrder': {
@@ -315,6 +315,11 @@ class gemini extends gemini$1 {
315
315
  },
316
316
  'hedged': false,
317
317
  'trailing': false,
318
+ 'leverage': false,
319
+ 'marketBuyByCost': true,
320
+ 'marketBuyRequiresPrice': false,
321
+ 'selfTradePrevention': false,
322
+ 'iceberg': false,
318
323
  },
319
324
  'createOrders': undefined,
320
325
  'fetchMyTrades': {
@@ -355,13 +355,11 @@ class hashkey extends hashkey$1 {
355
355
  },
356
356
  'hedged': false,
357
357
  'trailing': false,
358
- // exchange-supported features
359
- // 'marketBuyRequiresPrice': false,
360
- // 'marketBuyByCost': false,
361
- // 'selfTradePrevention': true,
362
- // 'twap': false,
363
- // 'iceberg': false,
364
- // 'oco': false,
358
+ 'leverage': false,
359
+ 'marketBuyByCost': true,
360
+ 'marketBuyRequiresPrice': true,
361
+ 'selfTradePrevention': true,
362
+ 'iceberg': false,
365
363
  },
366
364
  'createOrders': {
367
365
  'max': 20,
@@ -2437,8 +2435,10 @@ class hashkey extends hashkey$1 {
2437
2435
  if (!market['spot']) {
2438
2436
  throw new errors.NotSupported(this.id + ' createMarketBuyOrderWithCost() is supported for spot markets only');
2439
2437
  }
2440
- params['cost'] = cost;
2441
- return await this.createOrder(symbol, 'market', 'buy', cost, undefined, params);
2438
+ const req = {
2439
+ 'cost': cost,
2440
+ };
2441
+ return await this.createOrder(symbol, 'market', 'buy', cost, undefined, this.extend(req, params));
2442
2442
  }
2443
2443
  /**
2444
2444
  * @method
@@ -96,6 +96,7 @@ class htx extends htx$1 {
96
96
  'fetchOHLCV': true,
97
97
  'fetchOpenInterest': true,
98
98
  'fetchOpenInterestHistory': true,
99
+ 'fetchOpenInterests': true,
99
100
  'fetchOpenOrder': undefined,
100
101
  'fetchOpenOrders': true,
101
102
  'fetchOrder': true,
@@ -1251,9 +1252,11 @@ class htx extends htx$1 {
1251
1252
  },
1252
1253
  'hedged': false,
1253
1254
  'trailing': false,
1254
- // exchange-specific features
1255
1255
  'iceberg': false,
1256
1256
  'selfTradePrevention': true,
1257
+ 'leverage': true,
1258
+ 'marketBuyByCost': true,
1259
+ 'marketBuyRequiresPrice': true,
1257
1260
  },
1258
1261
  'createOrders': {
1259
1262
  'max': 10,
@@ -8640,6 +8643,105 @@ class htx extends htx$1 {
8640
8643
  const tick = this.safeList(data, 'tick');
8641
8644
  return this.parseOpenInterestsHistory(tick, market, since, limit);
8642
8645
  }
8646
+ /**
8647
+ * @method
8648
+ * @name htx#fetchOpenInterests
8649
+ * @description Retrieves the open interest for a list of symbols
8650
+ * @see https://huobiapi.github.io/docs/dm/v1/en/#get-contract-open-interest-information
8651
+ * @see https://huobiapi.github.io/docs/coin_margined_swap/v1/en/#get-swap-open-interest-information
8652
+ * @see https://huobiapi.github.io/docs/usdt_swap/v1/en/#general-get-swap-open-interest-information
8653
+ * @param {string[]} [symbols] a list of unified CCXT market symbols
8654
+ * @param {object} [params] exchange specific parameters
8655
+ * @returns {object[]} a list of [open interest structures]{@link https://docs.ccxt.com/#/?id=open-interest-structure}
8656
+ */
8657
+ async fetchOpenInterests(symbols = undefined, params = {}) {
8658
+ await this.loadMarkets();
8659
+ symbols = this.marketSymbols(symbols);
8660
+ let market = undefined;
8661
+ if (symbols !== undefined) {
8662
+ const symbolsLength = symbols.length;
8663
+ if (symbolsLength > 0) {
8664
+ const first = this.safeString(symbols, 0);
8665
+ market = this.market(first);
8666
+ }
8667
+ }
8668
+ const request = {};
8669
+ let subType = undefined;
8670
+ [subType, params] = this.handleSubTypeAndParams('fetchPositions', market, params, 'linear');
8671
+ let marketType = undefined;
8672
+ [marketType, params] = this.handleMarketTypeAndParams('fetchPositions', market, params);
8673
+ let response = undefined;
8674
+ if (marketType === 'future') {
8675
+ response = await this.contractPublicGetApiV1ContractOpenInterest(this.extend(request, params));
8676
+ //
8677
+ // {
8678
+ // "status": "ok",
8679
+ // "data": [
8680
+ // {
8681
+ // "volume": 118850.000000000000000000,
8682
+ // "amount": 635.502025211544374189,
8683
+ // "symbol": "BTC",
8684
+ // "contract_type": "this_week",
8685
+ // "contract_code": "BTC220930",
8686
+ // "trade_amount": 1470.9400749347598691119206024033947897351,
8687
+ // "trade_volume": 286286,
8688
+ // "trade_turnover": 28628600.000000000000000000
8689
+ // }
8690
+ // ],
8691
+ // "ts": 1664337928805
8692
+ // }
8693
+ //
8694
+ }
8695
+ else if (subType === 'inverse') {
8696
+ response = await this.contractPublicGetSwapApiV1SwapOpenInterest(this.extend(request, params));
8697
+ //
8698
+ // {
8699
+ // "status": "ok",
8700
+ // "data": [
8701
+ // {
8702
+ // "volume": 518018.000000000000000000,
8703
+ // "amount": 2769.675777407074725180,
8704
+ // "symbol": "BTC",
8705
+ // "contract_code": "BTC-USD",
8706
+ // "trade_amount": 9544.4032080046491323463688602729806842458,
8707
+ // "trade_volume": 1848448,
8708
+ // "trade_turnover": 184844800.000000000000000000
8709
+ // }
8710
+ // ],
8711
+ // "ts": 1664337226028
8712
+ // }
8713
+ //
8714
+ }
8715
+ else {
8716
+ request['contract_type'] = 'swap';
8717
+ response = await this.contractPublicGetLinearSwapApiV1SwapOpenInterest(this.extend(request, params));
8718
+ //
8719
+ // {
8720
+ // "status": "ok",
8721
+ // "data": [
8722
+ // {
8723
+ // "volume": 7192610.000000000000000000,
8724
+ // "amount": 7192.610000000000000000,
8725
+ // "symbol": "BTC",
8726
+ // "value": 134654290.332000000000000000,
8727
+ // "contract_code": "BTC-USDT",
8728
+ // "trade_amount": 70692.804,
8729
+ // "trade_volume": 70692804,
8730
+ // "trade_turnover": 1379302592.9518,
8731
+ // "business_type": "swap",
8732
+ // "pair": "BTC-USDT",
8733
+ // "contract_type": "swap",
8734
+ // "trade_partition": "USDT"
8735
+ // }
8736
+ // ],
8737
+ // "ts": 1664336503144
8738
+ // }
8739
+ //
8740
+ }
8741
+ const data = this.safeList(response, 'data', []);
8742
+ const result = this.parseOpenInterests(data);
8743
+ return this.filterByArray(result, 'symbol', symbols);
8744
+ }
8643
8745
  /**
8644
8746
  * @method
8645
8747
  * @name htx#fetchOpenInterest
@@ -8803,8 +8905,9 @@ class htx extends htx$1 {
8803
8905
  const timestamp = this.safeInteger(interest, 'ts');
8804
8906
  const amount = this.safeNumber(interest, 'volume');
8805
8907
  const value = this.safeNumber(interest, 'value');
8908
+ const marketId = this.safeString(interest, 'contract_code');
8806
8909
  return this.safeOpenInterest({
8807
- 'symbol': this.safeString(market, 'symbol'),
8910
+ 'symbol': this.safeSymbol(marketId, market),
8808
8911
  'baseVolume': amount,
8809
8912
  'quoteVolume': value,
8810
8913
  'openInterestAmount': amount,
@@ -235,6 +235,11 @@ class hyperliquid extends hyperliquid$1 {
235
235
  },
236
236
  'hedged': false,
237
237
  'trailing': false,
238
+ 'leverage': false,
239
+ 'marketBuyByCost': false,
240
+ 'marketBuyRequiresPrice': false,
241
+ 'selfTradePrevention': false,
242
+ 'iceberg': false,
238
243
  },
239
244
  'createOrders': {
240
245
  'max': 1000,
@@ -446,6 +446,11 @@ class kraken extends kraken$1 {
446
446
  },
447
447
  'hedged': false,
448
448
  'trailing': true,
449
+ 'leverage': false,
450
+ 'marketBuyByCost': true,
451
+ 'marketBuyRequiresPrice': false,
452
+ 'selfTradePrevention': true,
453
+ 'iceberg': true, // todo implement
449
454
  },
450
455
  'createOrders': undefined,
451
456
  'fetchMyTrades': {
@@ -1508,8 +1513,10 @@ class kraken extends kraken$1 {
1508
1513
  async createMarketOrderWithCost(symbol, side, cost, params = {}) {
1509
1514
  await this.loadMarkets();
1510
1515
  // only buy orders are supported by the endpoint
1511
- params['cost'] = cost;
1512
- return await this.createOrder(symbol, 'market', side, cost, undefined, params);
1516
+ const req = {
1517
+ 'cost': cost,
1518
+ };
1519
+ return await this.createOrder(symbol, 'market', side, 1, undefined, this.extend(req, params));
1513
1520
  }
1514
1521
  /**
1515
1522
  * @method
@@ -284,6 +284,11 @@ class krakenfutures extends krakenfutures$1 {
284
284
  },
285
285
  'hedged': false,
286
286
  'trailing': false,
287
+ 'leverage': false,
288
+ 'marketBuyByCost': false,
289
+ 'marketBuyRequiresPrice': false,
290
+ 'selfTradePrevention': false,
291
+ 'iceberg': false,
287
292
  },
288
293
  'createOrders': {
289
294
  'max': 100,
@@ -1006,11 +1006,11 @@ class kucoin extends kucoin$1 {
1006
1006
  },
1007
1007
  'hedged': false,
1008
1008
  'trailing': false,
1009
- // exchange-supported features
1010
- // 'iceberg': true,
1011
- // 'selfTradePrevention': true,
1012
- // 'twap': false,
1013
- // 'oco': false,
1009
+ 'leverage': false,
1010
+ 'marketBuyByCost': true,
1011
+ 'marketBuyRequiresPrice': false,
1012
+ 'selfTradePrevention': true,
1013
+ 'iceberg': true, // todo implement
1014
1014
  },
1015
1015
  'createOrders': {
1016
1016
  'max': 5,
@@ -2315,8 +2315,10 @@ class kucoin extends kucoin$1 {
2315
2315
  */
2316
2316
  async createMarketOrderWithCost(symbol, side, cost, params = {}) {
2317
2317
  await this.loadMarkets();
2318
- params['cost'] = cost;
2319
- return await this.createOrder(symbol, 'market', side, cost, undefined, params);
2318
+ const req = {
2319
+ 'cost': cost,
2320
+ };
2321
+ return await this.createOrder(symbol, 'market', side, 0, undefined, this.extend(req, params));
2320
2322
  }
2321
2323
  /**
2322
2324
  * @method
@@ -385,11 +385,11 @@ class kucoinfutures extends kucoinfutures$1 {
385
385
  },
386
386
  'hedged': false,
387
387
  'trailing': false,
388
- // exchange-supported features
389
- // 'iceberg': true,
390
- // 'selfTradePrevention': true,
391
- // 'twap': false,
392
- // 'oco': false,
388
+ 'leverage': true,
389
+ 'marketBuyByCost': true,
390
+ 'marketBuyRequiresPrice': false,
391
+ 'selfTradePrevention': true,
392
+ 'iceberg': true,
393
393
  },
394
394
  'createOrders': {
395
395
  'max': 20,
@@ -695,10 +695,12 @@ class mexc extends mexc$1 {
695
695
  'PO': true,
696
696
  'GTD': false,
697
697
  },
698
- 'hedged': false,
699
- // exchange-supported features
700
- 'selfTradePrevention': false,
698
+ 'hedged': true,
701
699
  'trailing': false,
700
+ 'leverage': true,
701
+ 'marketBuyByCost': true,
702
+ 'marketBuyRequiresPrice': false,
703
+ 'selfTradePrevention': false,
702
704
  'iceberg': false,
703
705
  },
704
706
  'createOrders': {
@@ -758,10 +760,10 @@ class mexc extends mexc$1 {
758
760
  'stopLossPrice': false,
759
761
  'takeProfitPrice': false,
760
762
  'hedged': true,
763
+ 'leverage': true,
764
+ 'marketBuyByCost': false,
761
765
  },
762
- 'createOrders': {
763
- 'max': 50,
764
- },
766
+ 'createOrders': undefined,
765
767
  'fetchMyTrades': {
766
768
  'marginMode': false,
767
769
  'limit': 100,
@@ -2248,8 +2250,10 @@ class mexc extends mexc$1 {
2248
2250
  if (!market['spot']) {
2249
2251
  throw new errors.NotSupported(this.id + ' createMarketBuyOrderWithCost() supports spot orders only');
2250
2252
  }
2251
- params['cost'] = cost;
2252
- return await this.createOrder(symbol, 'market', 'buy', 0, undefined, params);
2253
+ const req = {
2254
+ 'cost': cost,
2255
+ };
2256
+ return await this.createOrder(symbol, 'market', 'buy', 0, undefined, this.extend(req, params));
2253
2257
  }
2254
2258
  /**
2255
2259
  * @method
@@ -2267,8 +2271,10 @@ class mexc extends mexc$1 {
2267
2271
  if (!market['spot']) {
2268
2272
  throw new errors.NotSupported(this.id + ' createMarketBuyOrderWithCost() supports spot orders only');
2269
2273
  }
2270
- params['cost'] = cost;
2271
- return await this.createOrder(symbol, 'market', 'sell', 0, undefined, params);
2274
+ const req = {
2275
+ 'cost': cost,
2276
+ };
2277
+ return await this.createOrder(symbol, 'market', 'sell', 0, undefined, this.extend(req, params));
2272
2278
  }
2273
2279
  /**
2274
2280
  * @method
@@ -352,7 +352,7 @@ class ndax extends ndax$1 {
352
352
  //
353
353
  // {
354
354
  // "Authenticated": true,
355
- // "UserId":57765,
355
+ // "UserId":57764,
356
356
  // "SessionToken":"4a2a5857-c4e5-4fac-b09e-2c4c30b591a0"
357
357
  // }
358
358
  //
@@ -497,7 +497,7 @@ class oceanex extends oceanex$1 {
497
497
  // "funds":"6.0732952",
498
498
  // "market":"ethusdt",
499
499
  // "created_at":"2022-04-19T19:03:15Z",
500
- // "created_on":1650394995,
500
+ // "created_on":1650394994,
501
501
  // "side":"bid"
502
502
  // },
503
503
  // ]
@@ -1180,7 +1180,6 @@ class okx extends okx$1 {
1180
1180
  'brokerId': 'e847386590ce4dBC',
1181
1181
  },
1182
1182
  'features': {
1183
- // https://www.okx.com/docs-v5/en/#order-book-trading-trade-post-place-order
1184
1183
  'default': {
1185
1184
  'sandbox': true,
1186
1185
  'createOrder': {
@@ -1209,12 +1208,12 @@ class okx extends okx$1 {
1209
1208
  'GTD': false,
1210
1209
  },
1211
1210
  'hedged': true,
1212
- // even though the below params not unified yet, it's useful metadata for users to know that exchange supports them
1213
- 'selfTradePrevention': true,
1214
1211
  'trailing': true,
1215
- 'twap': true,
1216
1212
  'iceberg': true,
1217
- 'oco': true,
1213
+ 'leverage': false,
1214
+ 'selfTradePrevention': true,
1215
+ 'marketBuyByCost': true,
1216
+ 'marketBuyRequiresPrice': false,
1218
1217
  },
1219
1218
  'createOrders': {
1220
1219
  'max': 20,
@@ -17,7 +17,10 @@ class bitcoincom extends hitbtc {
17
17
  'urls': {
18
18
  'logo': 'https://user-images.githubusercontent.com/1294454/97296144-514fa300-1861-11eb-952b-3d55d492200b.jpg',
19
19
  'api': {
20
- 'ws': 'wss://api.fmfw.io/api/2/ws',
20
+ 'ws': {
21
+ 'public': 'wss://api.fmfw.io/api/3/ws/public',
22
+ 'private': 'wss://api.fmfw.io/api/3/ws/trading',
23
+ },
21
24
  },
22
25
  },
23
26
  'fees': {
@@ -74,7 +74,7 @@ class bitopro extends bitopro$1 {
74
74
  endPart = market['id'];
75
75
  }
76
76
  else {
77
- endPart = market['id'] + ':' + limit;
77
+ endPart = market['id'] + ':' + this.numberToString(limit);
78
78
  }
79
79
  const orderbook = await this.watchPublic('order-books', messageHash, endPart);
80
80
  return orderbook.limit();
@@ -1228,9 +1228,11 @@ class whitebit extends whitebit$1 {
1228
1228
  * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1229
1229
  */
1230
1230
  async createMarketOrderWithCost(symbol, side, cost, params = {}) {
1231
- params['cost'] = cost;
1231
+ const req = {
1232
+ 'cost': cost,
1233
+ };
1232
1234
  // only buy side is supported
1233
- return await this.createOrder(symbol, 'market', side, 0, undefined, params);
1235
+ return await this.createOrder(symbol, 'market', side, 0, undefined, this.extend(req, params));
1234
1236
  }
1235
1237
  /**
1236
1238
  * @method
@@ -333,9 +333,11 @@ class woo extends woo$1 {
333
333
  },
334
334
  'hedged': false,
335
335
  'trailing': true,
336
- // exchange specific params:
337
- // 'iceberg': true,
338
- // 'oco': true,
336
+ 'leverage': false,
337
+ 'marketBuyByCost': true,
338
+ 'marketBuyRequiresPrice': false,
339
+ 'selfTradePrevention': false,
340
+ 'iceberg': true, // todo implement
339
341
  },
340
342
  'createOrders': undefined,
341
343
  'fetchMyTrades': {
@@ -320,8 +320,11 @@ class woofipro extends woofipro$1 {
320
320
  },
321
321
  'hedged': false,
322
322
  'trailing': true,
323
- // exchange specific
324
- // 'iceberg': true,
323
+ 'leverage': true,
324
+ 'marketBuyByCost': false,
325
+ 'marketBuyRequiresPrice': false,
326
+ 'selfTradePrevention': false,
327
+ 'iceberg': true, // todo implement
325
328
  },
326
329
  'createOrders': {
327
330
  'max': 10,
package/js/ccxt.d.ts CHANGED
@@ -4,7 +4,7 @@ import * as functions from './src/base/functions.js';
4
4
  import * as errors from './src/base/errors.js';
5
5
  import type { Int, int, Str, Strings, Num, Bool, IndexType, OrderSide, OrderType, MarketType, SubType, Dict, NullableDict, List, NullableList, Fee, OHLCV, OHLCVC, implicitReturnType, Market, Currency, Dictionary, MinMax, FeeInterface, TradingFeeInterface, MarketInterface, Trade, Order, OrderBook, Ticker, Transaction, Tickers, CurrencyInterface, Balance, BalanceAccount, Account, PartialBalances, Balances, DepositAddress, WithdrawalResponse, DepositAddressResponse, FundingRate, FundingRates, Position, BorrowInterest, LeverageTier, LedgerEntry, DepositWithdrawFeeNetwork, DepositWithdrawFee, TransferEntry, CrossBorrowRate, IsolatedBorrowRate, FundingRateHistory, OpenInterest, Liquidation, OrderRequest, CancellationRequest, FundingHistory, MarketMarginModes, MarginMode, Greeks, Conversion, Option, LastPrice, Leverage, MarginModification, Leverages, LastPrices, Currencies, TradingFees, MarginModes, OptionChain, IsolatedBorrowRates, CrossBorrowRates, LeverageTiers, LongShortRatio, OpenInterests } from './src/base/types.js';
6
6
  import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, UnsubscribeError } from './src/base/errors.js';
7
- declare const version = "4.4.42";
7
+ declare const version = "4.4.43";
8
8
  import ace from './src/ace.js';
9
9
  import alpaca from './src/alpaca.js';
10
10
  import ascendex from './src/ascendex.js';
package/js/ccxt.js CHANGED
@@ -38,7 +38,7 @@ import * as errors from './src/base/errors.js';
38
38
  import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, UnsubscribeError } from './src/base/errors.js';
39
39
  //-----------------------------------------------------------------------------
40
40
  // this is updated by vss.js when building
41
- const version = '4.4.43';
41
+ const version = '4.4.44';
42
42
  Exchange.ccxtVersion = version;
43
43
  //-----------------------------------------------------------------------------
44
44
  import ace from './src/ace.js';
@@ -761,6 +761,7 @@ interface Exchange {
761
761
  papiDeleteMarginAllOpenOrders(params?: {}): Promise<implicitReturnType>;
762
762
  papiDeleteMarginOrderList(params?: {}): Promise<implicitReturnType>;
763
763
  papiDeleteListenKey(params?: {}): Promise<implicitReturnType>;
764
+ papiV2GetUmAccount(params?: {}): Promise<implicitReturnType>;
764
765
  }
765
766
  declare abstract class Exchange extends _Exchange {
766
767
  }
@@ -761,6 +761,7 @@ interface binance {
761
761
  papiDeleteMarginAllOpenOrders(params?: {}): Promise<implicitReturnType>;
762
762
  papiDeleteMarginOrderList(params?: {}): Promise<implicitReturnType>;
763
763
  papiDeleteListenKey(params?: {}): Promise<implicitReturnType>;
764
+ papiV2GetUmAccount(params?: {}): Promise<implicitReturnType>;
764
765
  }
765
766
  declare abstract class binance extends _binance {
766
767
  }
@@ -813,6 +813,7 @@ interface binance {
813
813
  papiDeleteMarginAllOpenOrders(params?: {}): Promise<implicitReturnType>;
814
814
  papiDeleteMarginOrderList(params?: {}): Promise<implicitReturnType>;
815
815
  papiDeleteListenKey(params?: {}): Promise<implicitReturnType>;
816
+ papiV2GetUmAccount(params?: {}): Promise<implicitReturnType>;
816
817
  }
817
818
  declare abstract class binance extends _binance {
818
819
  }
@@ -761,6 +761,7 @@ interface binance {
761
761
  papiDeleteMarginAllOpenOrders(params?: {}): Promise<implicitReturnType>;
762
762
  papiDeleteMarginOrderList(params?: {}): Promise<implicitReturnType>;
763
763
  papiDeleteListenKey(params?: {}): Promise<implicitReturnType>;
764
+ papiV2GetUmAccount(params?: {}): Promise<implicitReturnType>;
764
765
  }
765
766
  declare abstract class binance extends _binance {
766
767
  }