ccxt 4.4.27 → 4.4.29

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 (53) hide show
  1. package/README.md +3 -3
  2. package/dist/ccxt.browser.min.js +3 -3
  3. package/dist/cjs/ccxt.js +1 -1
  4. package/dist/cjs/src/alpaca.js +44 -40
  5. package/dist/cjs/src/base/Exchange.js +3 -0
  6. package/dist/cjs/src/binance.js +7 -0
  7. package/dist/cjs/src/bitget.js +99 -6
  8. package/dist/cjs/src/bitopro.js +21 -21
  9. package/dist/cjs/src/bitrue.js +28 -28
  10. package/dist/cjs/src/bitvavo.js +4 -0
  11. package/dist/cjs/src/bybit.js +51 -646
  12. package/dist/cjs/src/coincatch.js +24 -4
  13. package/dist/cjs/src/kraken.js +48 -35
  14. package/dist/cjs/src/lbank.js +7 -1
  15. package/dist/cjs/src/pro/binance.js +4 -6
  16. package/dist/cjs/src/pro/bitvavo.js +2 -1
  17. package/dist/cjs/src/pro/mexc.js +198 -30
  18. package/dist/cjs/src/vertex.js +51 -6
  19. package/dist/cjs/src/wavesexchange.js +1 -0
  20. package/examples/README.md +0 -2
  21. package/examples/js/cli.js +7 -0
  22. package/js/ccxt.d.ts +1 -1
  23. package/js/ccxt.js +1 -1
  24. package/js/src/abstract/binance.d.ts +7 -0
  25. package/js/src/abstract/binancecoinm.d.ts +7 -0
  26. package/js/src/abstract/binanceus.d.ts +7 -0
  27. package/js/src/abstract/binanceusdm.d.ts +7 -0
  28. package/js/src/abstract/bybit.d.ts +0 -13
  29. package/js/src/alpaca.js +44 -40
  30. package/js/src/base/Exchange.d.ts +1 -0
  31. package/js/src/base/Exchange.js +3 -0
  32. package/js/src/binance.js +7 -0
  33. package/js/src/bitfinex2.d.ts +1 -1
  34. package/js/src/bitget.d.ts +2 -1
  35. package/js/src/bitget.js +99 -6
  36. package/js/src/bitmart.d.ts +1 -1
  37. package/js/src/bitopro.js +21 -21
  38. package/js/src/bitrue.js +28 -28
  39. package/js/src/bitvavo.js +4 -0
  40. package/js/src/bybit.d.ts +0 -8
  41. package/js/src/bybit.js +51 -646
  42. package/js/src/coincatch.d.ts +1 -1
  43. package/js/src/coincatch.js +24 -4
  44. package/js/src/kraken.js +48 -35
  45. package/js/src/lbank.js +7 -1
  46. package/js/src/pro/binance.js +4 -6
  47. package/js/src/pro/bitvavo.js +2 -1
  48. package/js/src/pro/mexc.js +198 -30
  49. package/js/src/vertex.d.ts +4 -2
  50. package/js/src/vertex.js +51 -6
  51. package/js/src/wavesexchange.js +1 -0
  52. package/js/src/whitebit.d.ts +1 -1
  53. package/package.json +1 -1
@@ -106,8 +106,6 @@ python path/to/example.py # substitute for actual filename here
106
106
 
107
107
  [CC Power Analytics Part 1: How to get the data of the exchanges](https://www.linkedin.com/pulse/part-1-cc-power-analytics-how-get-data-exchanges-steve-rein/) – The first part of a series of articles on cryptocurrency analytics.
108
108
 
109
- [tv2bt: Kraken Example, without leverage](https://backtest-rookies.com/2020/04/18/tv2bt-kraken-example-without-leverage/) – an article on using CCXT for backtesting.
110
-
111
109
  [Looking for arbitrage opportunies with ccxt](https://steemit.com/steemdev/@codewithcheese/looking-for-arbitrage-opportunies-with-javascript-library-cctx-supporting-70-exchanges) – An article @steemit on getting arbitrage started with ccxt for crypto-arbitrage.
112
110
 
113
111
  [Use CCXT to calculate Cryptocurrency trade indicators](https://itnext.io/use-ccxt-to-calculate-cryptocurrency-trade-indicators-102a3ac1428e) – an article @ Medium on building basic indicators using CCXT.
@@ -48,6 +48,13 @@ let foundDescription = undefined;
48
48
  for (let i = 0; i < process.argv.length; i++) {
49
49
  if (process.argv[i] === '--name') {
50
50
  foundDescription = process.argv[i + 1];
51
+ // search that string in `params` and remove it
52
+ for (let j = 0; j < params.length; j++) {
53
+ if (params[j] === foundDescription) {
54
+ params.splice(j, 1);
55
+ break;
56
+ }
57
+ }
51
58
  break;
52
59
  }
53
60
  }
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 } 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.26";
7
+ declare const version = "4.4.28";
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.27';
41
+ const version = '4.4.29';
42
42
  Exchange.ccxtVersion = version;
43
43
  //-----------------------------------------------------------------------------
44
44
  import ace from './src/ace.js';
@@ -586,6 +586,9 @@ interface Exchange {
586
586
  eapiPrivateGetMmp(params?: {}): Promise<implicitReturnType>;
587
587
  eapiPrivateGetCountdownCancelAll(params?: {}): Promise<implicitReturnType>;
588
588
  eapiPrivateGetOrder(params?: {}): Promise<implicitReturnType>;
589
+ eapiPrivateGetBlockOrderOrders(params?: {}): Promise<implicitReturnType>;
590
+ eapiPrivateGetBlockOrderExecute(params?: {}): Promise<implicitReturnType>;
591
+ eapiPrivateGetBlockUserTrades(params?: {}): Promise<implicitReturnType>;
589
592
  eapiPrivatePostOrder(params?: {}): Promise<implicitReturnType>;
590
593
  eapiPrivatePostBatchOrders(params?: {}): Promise<implicitReturnType>;
591
594
  eapiPrivatePostListenKey(params?: {}): Promise<implicitReturnType>;
@@ -593,12 +596,16 @@ interface Exchange {
593
596
  eapiPrivatePostMmpReset(params?: {}): Promise<implicitReturnType>;
594
597
  eapiPrivatePostCountdownCancelAll(params?: {}): Promise<implicitReturnType>;
595
598
  eapiPrivatePostCountdownCancelAllHeartBeat(params?: {}): Promise<implicitReturnType>;
599
+ eapiPrivatePostBlockOrderCreate(params?: {}): Promise<implicitReturnType>;
600
+ eapiPrivatePostBlockOrderExecute(params?: {}): Promise<implicitReturnType>;
596
601
  eapiPrivatePutListenKey(params?: {}): Promise<implicitReturnType>;
602
+ eapiPrivatePutBlockOrderCreate(params?: {}): Promise<implicitReturnType>;
597
603
  eapiPrivateDeleteOrder(params?: {}): Promise<implicitReturnType>;
598
604
  eapiPrivateDeleteBatchOrders(params?: {}): Promise<implicitReturnType>;
599
605
  eapiPrivateDeleteAllOpenOrders(params?: {}): Promise<implicitReturnType>;
600
606
  eapiPrivateDeleteAllOpenOrdersByUnderlying(params?: {}): Promise<implicitReturnType>;
601
607
  eapiPrivateDeleteListenKey(params?: {}): Promise<implicitReturnType>;
608
+ eapiPrivateDeleteBlockOrderCreate(params?: {}): Promise<implicitReturnType>;
602
609
  publicGetPing(params?: {}): Promise<implicitReturnType>;
603
610
  publicGetTime(params?: {}): Promise<implicitReturnType>;
604
611
  publicGetDepth(params?: {}): Promise<implicitReturnType>;
@@ -586,6 +586,9 @@ interface binance {
586
586
  eapiPrivateGetMmp(params?: {}): Promise<implicitReturnType>;
587
587
  eapiPrivateGetCountdownCancelAll(params?: {}): Promise<implicitReturnType>;
588
588
  eapiPrivateGetOrder(params?: {}): Promise<implicitReturnType>;
589
+ eapiPrivateGetBlockOrderOrders(params?: {}): Promise<implicitReturnType>;
590
+ eapiPrivateGetBlockOrderExecute(params?: {}): Promise<implicitReturnType>;
591
+ eapiPrivateGetBlockUserTrades(params?: {}): Promise<implicitReturnType>;
589
592
  eapiPrivatePostOrder(params?: {}): Promise<implicitReturnType>;
590
593
  eapiPrivatePostBatchOrders(params?: {}): Promise<implicitReturnType>;
591
594
  eapiPrivatePostListenKey(params?: {}): Promise<implicitReturnType>;
@@ -593,12 +596,16 @@ interface binance {
593
596
  eapiPrivatePostMmpReset(params?: {}): Promise<implicitReturnType>;
594
597
  eapiPrivatePostCountdownCancelAll(params?: {}): Promise<implicitReturnType>;
595
598
  eapiPrivatePostCountdownCancelAllHeartBeat(params?: {}): Promise<implicitReturnType>;
599
+ eapiPrivatePostBlockOrderCreate(params?: {}): Promise<implicitReturnType>;
600
+ eapiPrivatePostBlockOrderExecute(params?: {}): Promise<implicitReturnType>;
596
601
  eapiPrivatePutListenKey(params?: {}): Promise<implicitReturnType>;
602
+ eapiPrivatePutBlockOrderCreate(params?: {}): Promise<implicitReturnType>;
597
603
  eapiPrivateDeleteOrder(params?: {}): Promise<implicitReturnType>;
598
604
  eapiPrivateDeleteBatchOrders(params?: {}): Promise<implicitReturnType>;
599
605
  eapiPrivateDeleteAllOpenOrders(params?: {}): Promise<implicitReturnType>;
600
606
  eapiPrivateDeleteAllOpenOrdersByUnderlying(params?: {}): Promise<implicitReturnType>;
601
607
  eapiPrivateDeleteListenKey(params?: {}): Promise<implicitReturnType>;
608
+ eapiPrivateDeleteBlockOrderCreate(params?: {}): Promise<implicitReturnType>;
602
609
  publicGetPing(params?: {}): Promise<implicitReturnType>;
603
610
  publicGetTime(params?: {}): Promise<implicitReturnType>;
604
611
  publicGetDepth(params?: {}): Promise<implicitReturnType>;
@@ -638,6 +638,9 @@ interface binance {
638
638
  eapiPrivateGetMmp(params?: {}): Promise<implicitReturnType>;
639
639
  eapiPrivateGetCountdownCancelAll(params?: {}): Promise<implicitReturnType>;
640
640
  eapiPrivateGetOrder(params?: {}): Promise<implicitReturnType>;
641
+ eapiPrivateGetBlockOrderOrders(params?: {}): Promise<implicitReturnType>;
642
+ eapiPrivateGetBlockOrderExecute(params?: {}): Promise<implicitReturnType>;
643
+ eapiPrivateGetBlockUserTrades(params?: {}): Promise<implicitReturnType>;
641
644
  eapiPrivatePostOrder(params?: {}): Promise<implicitReturnType>;
642
645
  eapiPrivatePostBatchOrders(params?: {}): Promise<implicitReturnType>;
643
646
  eapiPrivatePostListenKey(params?: {}): Promise<implicitReturnType>;
@@ -645,12 +648,16 @@ interface binance {
645
648
  eapiPrivatePostMmpReset(params?: {}): Promise<implicitReturnType>;
646
649
  eapiPrivatePostCountdownCancelAll(params?: {}): Promise<implicitReturnType>;
647
650
  eapiPrivatePostCountdownCancelAllHeartBeat(params?: {}): Promise<implicitReturnType>;
651
+ eapiPrivatePostBlockOrderCreate(params?: {}): Promise<implicitReturnType>;
652
+ eapiPrivatePostBlockOrderExecute(params?: {}): Promise<implicitReturnType>;
648
653
  eapiPrivatePutListenKey(params?: {}): Promise<implicitReturnType>;
654
+ eapiPrivatePutBlockOrderCreate(params?: {}): Promise<implicitReturnType>;
649
655
  eapiPrivateDeleteOrder(params?: {}): Promise<implicitReturnType>;
650
656
  eapiPrivateDeleteBatchOrders(params?: {}): Promise<implicitReturnType>;
651
657
  eapiPrivateDeleteAllOpenOrders(params?: {}): Promise<implicitReturnType>;
652
658
  eapiPrivateDeleteAllOpenOrdersByUnderlying(params?: {}): Promise<implicitReturnType>;
653
659
  eapiPrivateDeleteListenKey(params?: {}): Promise<implicitReturnType>;
660
+ eapiPrivateDeleteBlockOrderCreate(params?: {}): Promise<implicitReturnType>;
654
661
  publicGetPing(params?: {}): Promise<implicitReturnType>;
655
662
  publicGetTime(params?: {}): Promise<implicitReturnType>;
656
663
  publicGetDepth(params?: {}): Promise<implicitReturnType>;
@@ -586,6 +586,9 @@ interface binance {
586
586
  eapiPrivateGetMmp(params?: {}): Promise<implicitReturnType>;
587
587
  eapiPrivateGetCountdownCancelAll(params?: {}): Promise<implicitReturnType>;
588
588
  eapiPrivateGetOrder(params?: {}): Promise<implicitReturnType>;
589
+ eapiPrivateGetBlockOrderOrders(params?: {}): Promise<implicitReturnType>;
590
+ eapiPrivateGetBlockOrderExecute(params?: {}): Promise<implicitReturnType>;
591
+ eapiPrivateGetBlockUserTrades(params?: {}): Promise<implicitReturnType>;
589
592
  eapiPrivatePostOrder(params?: {}): Promise<implicitReturnType>;
590
593
  eapiPrivatePostBatchOrders(params?: {}): Promise<implicitReturnType>;
591
594
  eapiPrivatePostListenKey(params?: {}): Promise<implicitReturnType>;
@@ -593,12 +596,16 @@ interface binance {
593
596
  eapiPrivatePostMmpReset(params?: {}): Promise<implicitReturnType>;
594
597
  eapiPrivatePostCountdownCancelAll(params?: {}): Promise<implicitReturnType>;
595
598
  eapiPrivatePostCountdownCancelAllHeartBeat(params?: {}): Promise<implicitReturnType>;
599
+ eapiPrivatePostBlockOrderCreate(params?: {}): Promise<implicitReturnType>;
600
+ eapiPrivatePostBlockOrderExecute(params?: {}): Promise<implicitReturnType>;
596
601
  eapiPrivatePutListenKey(params?: {}): Promise<implicitReturnType>;
602
+ eapiPrivatePutBlockOrderCreate(params?: {}): Promise<implicitReturnType>;
597
603
  eapiPrivateDeleteOrder(params?: {}): Promise<implicitReturnType>;
598
604
  eapiPrivateDeleteBatchOrders(params?: {}): Promise<implicitReturnType>;
599
605
  eapiPrivateDeleteAllOpenOrders(params?: {}): Promise<implicitReturnType>;
600
606
  eapiPrivateDeleteAllOpenOrdersByUnderlying(params?: {}): Promise<implicitReturnType>;
601
607
  eapiPrivateDeleteListenKey(params?: {}): Promise<implicitReturnType>;
608
+ eapiPrivateDeleteBlockOrderCreate(params?: {}): Promise<implicitReturnType>;
602
609
  publicGetPing(params?: {}): Promise<implicitReturnType>;
603
610
  publicGetTime(params?: {}): Promise<implicitReturnType>;
604
611
  publicGetDepth(params?: {}): Promise<implicitReturnType>;
@@ -180,19 +180,6 @@ interface Exchange {
180
180
  privateGetV5BrokerEarningsInfo(params?: {}): Promise<implicitReturnType>;
181
181
  privateGetV5BrokerAccountInfo(params?: {}): Promise<implicitReturnType>;
182
182
  privateGetV5BrokerAssetQuerySubMemberDepositRecord(params?: {}): Promise<implicitReturnType>;
183
- privatePostOptionUsdcOpenapiPrivateV1PlaceOrder(params?: {}): Promise<implicitReturnType>;
184
- privatePostOptionUsdcOpenapiPrivateV1ReplaceOrder(params?: {}): Promise<implicitReturnType>;
185
- privatePostOptionUsdcOpenapiPrivateV1CancelOrder(params?: {}): Promise<implicitReturnType>;
186
- privatePostOptionUsdcOpenapiPrivateV1CancelAll(params?: {}): Promise<implicitReturnType>;
187
- privatePostOptionUsdcOpenapiPrivateV1QueryActiveOrders(params?: {}): Promise<implicitReturnType>;
188
- privatePostOptionUsdcOpenapiPrivateV1QueryOrderHistory(params?: {}): Promise<implicitReturnType>;
189
- privatePostOptionUsdcOpenapiPrivateV1ExecutionList(params?: {}): Promise<implicitReturnType>;
190
- privatePostOptionUsdcOpenapiPrivateV1QueryPosition(params?: {}): Promise<implicitReturnType>;
191
- privatePostPerpetualUsdcOpenapiPrivateV1PlaceOrder(params?: {}): Promise<implicitReturnType>;
192
- privatePostPerpetualUsdcOpenapiPrivateV1ReplaceOrder(params?: {}): Promise<implicitReturnType>;
193
- privatePostPerpetualUsdcOpenapiPrivateV1CancelOrder(params?: {}): Promise<implicitReturnType>;
194
- privatePostPerpetualUsdcOpenapiPrivateV1CancelAll(params?: {}): Promise<implicitReturnType>;
195
- privatePostPerpetualUsdcOpenapiPrivateV1PositionLeverageSave(params?: {}): Promise<implicitReturnType>;
196
183
  privatePostSpotV3PrivateOrder(params?: {}): Promise<implicitReturnType>;
197
184
  privatePostSpotV3PrivateCancelOrder(params?: {}): Promise<implicitReturnType>;
198
185
  privatePostSpotV3PrivateCancelOrders(params?: {}): Promise<implicitReturnType>;
package/js/src/alpaca.js CHANGED
@@ -6,6 +6,7 @@
6
6
 
7
7
  // ---------------------------------------------------------------------------
8
8
  import Exchange from './abstract/alpaca.js';
9
+ import { Precise } from './base/Precise.js';
9
10
  import { ExchangeError, BadRequest, PermissionDenied, BadSymbol, NotSupported, InsufficientFunds, InvalidOrder, RateLimitExceeded, ArgumentsRequired } from './base/errors.js';
10
11
  import { TICK_SIZE } from './base/functions/number.js';
11
12
  // ---------------------------------------------------------------------------xs
@@ -1372,19 +1373,19 @@ export default class alpaca extends Exchange {
1372
1373
  const response = await this.traderPrivatePostV2WalletsTransfers(this.extend(request, params));
1373
1374
  //
1374
1375
  // {
1375
- // "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
1376
- // "tx_hash": "string",
1377
- // "direction": "INCOMING",
1376
+ // "id": "e27b70a6-5610-40d7-8468-a516a284b776",
1377
+ // "tx_hash": null,
1378
+ // "direction": "OUTGOING",
1379
+ // "amount": "20",
1380
+ // "usd_value": "19.99856",
1381
+ // "chain": "ETH",
1382
+ // "asset": "USDT",
1383
+ // "from_address": "0x123930E4dCA196E070d39B60c644C8Aae02f23",
1384
+ // "to_address": "0x1232c0925196e4dcf05945f67f690153190fbaab",
1378
1385
  // "status": "PROCESSING",
1379
- // "amount": "string",
1380
- // "usd_value": "string",
1381
- // "network_fee": "string",
1382
- // "fees": "string",
1383
- // "chain": "string",
1384
- // "asset": "string",
1385
- // "from_address": "string",
1386
- // "to_address": "string",
1387
- // "created_at": "2024-11-02T07:42:48.402Z"
1386
+ // "created_at": "2024-11-07T02:39:01.775495Z",
1387
+ // "network_fee": "4",
1388
+ // "fees": "0.1"
1388
1389
  // }
1389
1390
  //
1390
1391
  return this.parseTransaction(response, currency);
@@ -1398,19 +1399,19 @@ export default class alpaca extends Exchange {
1398
1399
  const response = await this.traderPrivateGetV2WalletsTransfers(params);
1399
1400
  //
1400
1401
  // {
1401
- // "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
1402
- // "tx_hash": "string",
1403
- // "direction": "INCOMING",
1402
+ // "id": "e27b70a6-5610-40d7-8468-a516a284b776",
1403
+ // "tx_hash": null,
1404
+ // "direction": "OUTGOING",
1405
+ // "amount": "20",
1406
+ // "usd_value": "19.99856",
1407
+ // "chain": "ETH",
1408
+ // "asset": "USDT",
1409
+ // "from_address": "0x123930E4dCA196E070d39B60c644C8Aae02f23",
1410
+ // "to_address": "0x1232c0925196e4dcf05945f67f690153190fbaab",
1404
1411
  // "status": "PROCESSING",
1405
- // "amount": "string",
1406
- // "usd_value": "string",
1407
- // "network_fee": "string",
1408
- // "fees": "string",
1409
- // "chain": "string",
1410
- // "asset": "string",
1411
- // "from_address": "string",
1412
- // "to_address": "string",
1413
- // "created_at": "2024-11-02T07:42:48.402Z"
1412
+ // "created_at": "2024-11-07T02:39:01.775495Z",
1413
+ // "network_fee": "4",
1414
+ // "fees": "0.1"
1414
1415
  // }
1415
1416
  //
1416
1417
  const results = [];
@@ -1420,7 +1421,7 @@ export default class alpaca extends Exchange {
1420
1421
  if (direction === type) {
1421
1422
  results.push(entry);
1422
1423
  }
1423
- else if (direction === 'BOTH') {
1424
+ else if (type === 'BOTH') {
1424
1425
  results.push(entry);
1425
1426
  }
1426
1427
  }
@@ -1471,26 +1472,29 @@ export default class alpaca extends Exchange {
1471
1472
  parseTransaction(transaction, currency = undefined) {
1472
1473
  //
1473
1474
  // {
1474
- // "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
1475
- // "tx_hash": "string",
1476
- // "direction": "INCOMING",
1475
+ // "id": "e27b70a6-5610-40d7-8468-a516a284b776",
1476
+ // "tx_hash": null,
1477
+ // "direction": "OUTGOING",
1478
+ // "amount": "20",
1479
+ // "usd_value": "19.99856",
1480
+ // "chain": "ETH",
1481
+ // "asset": "USDT",
1482
+ // "from_address": "0x123930E4dCA196E070d39B60c644C8Aae02f23",
1483
+ // "to_address": "0x1232c0925196e4dcf05945f67f690153190fbaab",
1477
1484
  // "status": "PROCESSING",
1478
- // "amount": "string",
1479
- // "usd_value": "string",
1480
- // "network_fee": "string",
1481
- // "fees": "string",
1482
- // "chain": "string",
1483
- // "asset": "string",
1484
- // "from_address": "string",
1485
- // "to_address": "string",
1486
- // "created_at": "2024-11-02T07:42:48.402Z"
1485
+ // "created_at": "2024-11-07T02:39:01.775495Z",
1486
+ // "network_fee": "4",
1487
+ // "fees": "0.1"
1487
1488
  // }
1488
1489
  //
1489
1490
  const datetime = this.safeString(transaction, 'created_at');
1490
1491
  const currencyId = this.safeString(transaction, 'asset');
1491
1492
  const code = this.safeCurrencyCode(currencyId, currency);
1493
+ const fees = this.safeString(transaction, 'fees');
1494
+ const networkFee = this.safeString(transaction, 'network_fee');
1495
+ const totalFee = Precise.stringAdd(fees, networkFee);
1492
1496
  const fee = {
1493
- 'cost': this.safeNumber(transaction, 'fees'),
1497
+ 'cost': this.parseNumber(totalFee),
1494
1498
  'currency': code,
1495
1499
  };
1496
1500
  return {
@@ -1519,8 +1523,8 @@ export default class alpaca extends Exchange {
1519
1523
  parseTransactionStatus(status) {
1520
1524
  const statuses = {
1521
1525
  'PROCESSING': 'pending',
1522
- // 'FAILED': 'failed',
1523
- // 'SUCCESS': 'ok',
1526
+ 'FAILED': 'failed',
1527
+ 'COMPLETE': 'ok',
1524
1528
  };
1525
1529
  return this.safeString(statuses, status, status);
1526
1530
  }
@@ -754,6 +754,7 @@ export default class Exchange {
754
754
  unWatchOrderBookForSymbols(symbols: string[], params?: {}): Promise<any>;
755
755
  fetchDepositAddresses(codes?: Strings, params?: {}): Promise<DepositAddress[]>;
756
756
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
757
+ fetchOrderBookWs(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
757
758
  fetchMarginMode(symbol: string, params?: {}): Promise<MarginMode>;
758
759
  fetchMarginModes(symbols?: Strings, params?: {}): Promise<MarginModes>;
759
760
  fetchRestOrderBookSafe(symbol: any, limit?: any, params?: {}): Promise<OrderBook>;
@@ -2052,6 +2052,9 @@ export default class Exchange {
2052
2052
  async fetchOrderBook(symbol, limit = undefined, params = {}) {
2053
2053
  throw new NotSupported(this.id + ' fetchOrderBook() is not supported yet');
2054
2054
  }
2055
+ async fetchOrderBookWs(symbol, limit = undefined, params = {}) {
2056
+ throw new NotSupported(this.id + ' fetchOrderBookWs() is not supported yet');
2057
+ }
2055
2058
  async fetchMarginMode(symbol, params = {}) {
2056
2059
  if (this.has['fetchMarginModes']) {
2057
2060
  const marginModes = await this.fetchMarginModes([symbol], params);
package/js/src/binance.js CHANGED
@@ -953,6 +953,9 @@ export default class binance extends Exchange {
953
953
  'mmp': 1,
954
954
  'countdownCancelAll': 1,
955
955
  'order': 1,
956
+ 'block/order/orders': 5,
957
+ 'block/order/execute': 5,
958
+ 'block/user-trades': 5,
956
959
  },
957
960
  'post': {
958
961
  'order': 1,
@@ -962,9 +965,12 @@ export default class binance extends Exchange {
962
965
  'mmpReset': 1,
963
966
  'countdownCancelAll': 1,
964
967
  'countdownCancelAllHeartBeat': 10,
968
+ 'block/order/create': 5,
969
+ 'block/order/execute': 5,
965
970
  },
966
971
  'put': {
967
972
  'listenKey': 1,
973
+ 'block/order/create': 5,
968
974
  },
969
975
  'delete': {
970
976
  'order': 1,
@@ -972,6 +978,7 @@ export default class binance extends Exchange {
972
978
  'allOpenOrders': 1,
973
979
  'allOpenOrdersByUnderlying': 1,
974
980
  'listenKey': 1,
981
+ 'block/order/create': 5,
975
982
  },
976
983
  },
977
984
  'public': {
@@ -55,7 +55,7 @@ export default class bitfinex2 extends Exchange {
55
55
  parseTransaction(transaction: Dict, currency?: Currency): Transaction;
56
56
  fetchTradingFees(params?: {}): Promise<TradingFees>;
57
57
  fetchDepositsWithdrawals(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<Transaction[]>;
58
- withdraw(code: string, amount: number, address: string, tag?: any, params?: {}): Promise<any>;
58
+ withdraw(code: string, amount: number, address: string, tag?: any, params?: {}): Promise<Transaction>;
59
59
  fetchPositions(symbols?: Strings, params?: {}): Promise<import("./base/types.js").Position[]>;
60
60
  parsePosition(position: Dict, market?: Market): import("./base/types.js").Position;
61
61
  nonce(): number;
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/bitget.js';
2
- import type { Int, OrderSide, OrderType, Trade, OHLCV, Order, FundingRateHistory, OrderRequest, FundingHistory, Balances, Str, Transaction, Ticker, OrderBook, Tickers, Market, Strings, Currency, Position, Liquidation, TransferEntry, Leverage, MarginMode, Num, MarginModification, TradingFeeInterface, Currencies, TradingFees, Conversion, CrossBorrowRate, IsolatedBorrowRate, Dict, LeverageTier, int, LedgerEntry, FundingRate, DepositAddress, LongShortRatio, BorrowInterest } from './base/types.js';
2
+ import type { Int, OrderSide, OrderType, Trade, OHLCV, Order, FundingRateHistory, OrderRequest, FundingHistory, Balances, Str, Transaction, Ticker, OrderBook, Tickers, Market, Strings, Currency, Position, Liquidation, TransferEntry, Leverage, MarginMode, Num, MarginModification, TradingFeeInterface, Currencies, TradingFees, Conversion, CrossBorrowRate, IsolatedBorrowRate, Dict, LeverageTier, int, LedgerEntry, FundingRate, DepositAddress, LongShortRatio, BorrowInterest, FundingRates } from './base/types.js';
3
3
  /**
4
4
  * @class bitget
5
5
  * @augments Exchange
@@ -67,6 +67,7 @@ export default class bitget extends Exchange {
67
67
  parsePosition(position: Dict, market?: Market): Position;
68
68
  fetchFundingRateHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingRateHistory[]>;
69
69
  fetchFundingRate(symbol: string, params?: {}): Promise<FundingRate>;
70
+ fetchFundingRates(symbols?: Strings, params?: {}): Promise<FundingRates>;
70
71
  parseFundingRate(contract: any, market?: Market): FundingRate;
71
72
  fetchFundingHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingHistory[]>;
72
73
  parseFundingHistory(contract: any, market?: Market): {
package/js/src/bitget.js CHANGED
@@ -87,7 +87,7 @@ export default class bitget extends Exchange {
87
87
  'fetchFundingIntervals': false,
88
88
  'fetchFundingRate': true,
89
89
  'fetchFundingRateHistory': true,
90
- 'fetchFundingRates': false,
90
+ 'fetchFundingRates': true,
91
91
  'fetchIndexOHLCV': true,
92
92
  'fetchIsolatedBorrowRate': true,
93
93
  'fetchIsolatedBorrowRates': false,
@@ -6849,6 +6849,71 @@ export default class bitget extends Exchange {
6849
6849
  const data = this.safeValue(response, 'data', []);
6850
6850
  return this.parseFundingRate(data[0], market);
6851
6851
  }
6852
+ async fetchFundingRates(symbols = undefined, params = {}) {
6853
+ /**
6854
+ * @method
6855
+ * @name bitget#fetchFundingRates
6856
+ * @description fetch the current funding rates for all markets
6857
+ * @see https://www.bitget.com/api-doc/contract/market/Get-All-Symbol-Ticker
6858
+ * @param {string[]} [symbols] list of unified market symbols
6859
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
6860
+ * @param {string} [params.subType] *contract only* 'linear', 'inverse'
6861
+ * @param {string} [params.productType] *contract only* 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
6862
+ * @returns {object} a dictionary of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rates-structure}, indexed by market symbols
6863
+ */
6864
+ await this.loadMarkets();
6865
+ let market = undefined;
6866
+ if (symbols !== undefined) {
6867
+ const symbol = this.safeValue(symbols, 0);
6868
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
6869
+ if (sandboxMode) {
6870
+ const sandboxSymbol = this.convertSymbolForSandbox(symbol);
6871
+ market = this.market(sandboxSymbol);
6872
+ }
6873
+ else {
6874
+ market = this.market(symbol);
6875
+ }
6876
+ }
6877
+ const request = {};
6878
+ let productType = undefined;
6879
+ [productType, params] = this.handleProductTypeAndParams(market, params);
6880
+ request['productType'] = productType;
6881
+ const response = await this.publicMixGetV2MixMarketTickers(this.extend(request, params));
6882
+ // {
6883
+ // "code": "00000",
6884
+ // "msg": "success",
6885
+ // "requestTime": 1700533773477,
6886
+ // "data": [
6887
+ // {
6888
+ // "symbol": "BTCUSD",
6889
+ // "lastPr": "29904.5",
6890
+ // "askPr": "29904.5",
6891
+ // "bidPr": "29903.5",
6892
+ // "bidSz": "0.5091",
6893
+ // "askSz": "2.2694",
6894
+ // "high24h": "0",
6895
+ // "low24h": "0",
6896
+ // "ts": "1695794271400",
6897
+ // "change24h": "0",
6898
+ // "baseVolume": "0",
6899
+ // "quoteVolume": "0",
6900
+ // "usdtVolume": "0",
6901
+ // "openUtc": "0",
6902
+ // "changeUtc24h": "0",
6903
+ // "indexPrice": "29132.353333",
6904
+ // "fundingRate": "-0.0007",
6905
+ // "holdingAmount": "125.6844",
6906
+ // "deliveryStartTime": null,
6907
+ // "deliveryTime": null,
6908
+ // "deliveryStatus": "delivery_normal",
6909
+ // "open24h": "0",
6910
+ // "markPrice": "12345"
6911
+ // },
6912
+ // ]
6913
+ // }
6914
+ const data = this.safeList(response, 'data', []);
6915
+ return this.parseFundingRates(data, market);
6916
+ }
6852
6917
  parseFundingRate(contract, market = undefined) {
6853
6918
  //
6854
6919
  // fetchFundingRate
@@ -6865,11 +6930,39 @@ export default class bitget extends Exchange {
6865
6930
  // "nextFundingTime": "1727942400000",
6866
6931
  // "ratePeriod": "8"
6867
6932
  // }
6868
- //
6933
+ // fetchFundingRates
6934
+ // {
6935
+ // "symbol": "BTCUSD",
6936
+ // "lastPr": "29904.5",
6937
+ // "askPr": "29904.5",
6938
+ // "bidPr": "29903.5",
6939
+ // "bidSz": "0.5091",
6940
+ // "askSz": "2.2694",
6941
+ // "high24h": "0",
6942
+ // "low24h": "0",
6943
+ // "ts": "1695794271400",
6944
+ // "change24h": "0",
6945
+ // "baseVolume": "0",
6946
+ // "quoteVolume": "0",
6947
+ // "usdtVolume": "0",
6948
+ // "openUtc": "0",
6949
+ // "changeUtc24h": "0",
6950
+ // "indexPrice": "29132.353333",
6951
+ // "fundingRate": "-0.0007",
6952
+ // "holdingAmount": "125.6844",
6953
+ // "deliveryStartTime": null,
6954
+ // "deliveryTime": null,
6955
+ // "deliveryStatus": "delivery_normal",
6956
+ // "open24h": "0",
6957
+ // "markPrice": "12345"
6958
+ // }
6869
6959
  const marketId = this.safeString(contract, 'symbol');
6870
6960
  const symbol = this.safeSymbol(marketId, market, undefined, 'swap');
6871
6961
  const fundingTimestamp = this.safeInteger(contract, 'nextFundingTime');
6872
6962
  const interval = this.safeString(contract, 'ratePeriod');
6963
+ const timestamp = this.safeInteger(contract, 'ts');
6964
+ const markPrice = this.safeNumber(contract, 'markPrice');
6965
+ const indexPrice = this.safeNumber(contract, 'indexPrice');
6873
6966
  let intervalString = undefined;
6874
6967
  if (interval !== undefined) {
6875
6968
  intervalString = interval + 'h';
@@ -6877,12 +6970,12 @@ export default class bitget extends Exchange {
6877
6970
  return {
6878
6971
  'info': contract,
6879
6972
  'symbol': symbol,
6880
- 'markPrice': undefined,
6881
- 'indexPrice': undefined,
6973
+ 'markPrice': markPrice,
6974
+ 'indexPrice': indexPrice,
6882
6975
  'interestRate': undefined,
6883
6976
  'estimatedSettlePrice': undefined,
6884
- 'timestamp': undefined,
6885
- 'datetime': undefined,
6977
+ 'timestamp': timestamp,
6978
+ 'datetime': this.iso8601(timestamp),
6886
6979
  'fundingRate': this.safeNumber(contract, 'fundingRate'),
6887
6980
  'fundingTimestamp': fundingTimestamp,
6888
6981
  'fundingDatetime': this.iso8601(fundingTimestamp),
@@ -69,7 +69,7 @@ export default class bitmart extends Exchange {
69
69
  fetchOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
70
70
  fetchDepositAddress(code: string, params?: {}): Promise<DepositAddress>;
71
71
  parseDepositAddress(depositAddress: any, currency?: any): DepositAddress;
72
- withdraw(code: string, amount: number, address: string, tag?: any, params?: {}): Promise<any>;
72
+ withdraw(code: string, amount: number, address: string, tag?: any, params?: {}): Promise<Transaction>;
73
73
  fetchTransactionsByType(type: any, code?: Str, since?: Int, limit?: Int, params?: {}): Promise<Transaction[]>;
74
74
  fetchDeposit(id: string, code?: Str, params?: {}): Promise<Transaction>;
75
75
  fetchDeposits(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<Transaction[]>;