ccxt 4.5.39 → 4.5.41

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 (138) hide show
  1. package/README.md +6 -5
  2. package/dist/ccxt.browser.min.js +18 -18
  3. package/dist/cjs/ccxt.js +6 -1
  4. package/dist/cjs/src/abstract/lighter.js +11 -0
  5. package/dist/cjs/src/ascendex.js +73 -1
  6. package/dist/cjs/src/base/Exchange.js +211 -22
  7. package/dist/cjs/src/base/functions/generic.js +1 -0
  8. package/dist/cjs/src/base/functions/io.js +160 -0
  9. package/dist/cjs/src/base/functions.js +6 -0
  10. package/dist/cjs/src/base/ws/Client.js +1 -0
  11. package/dist/cjs/src/base/ws/WsClient.js +1 -0
  12. package/dist/cjs/src/binance.js +143 -0
  13. package/dist/cjs/src/bingx.js +150 -123
  14. package/dist/cjs/src/bitmart.js +20 -6
  15. package/dist/cjs/src/bitmex.js +436 -0
  16. package/dist/cjs/src/blofin.js +86 -1
  17. package/dist/cjs/src/bybit.js +135 -0
  18. package/dist/cjs/src/coinspot.js +7 -2
  19. package/dist/cjs/src/delta.js +367 -0
  20. package/dist/cjs/src/gate.js +11 -4
  21. package/dist/cjs/src/gemini.js +76 -1
  22. package/dist/cjs/src/htx.js +266 -3
  23. package/dist/cjs/src/hyperliquid.js +20 -7
  24. package/dist/cjs/src/independentreserve.js +7 -7
  25. package/dist/cjs/src/kraken.js +1 -1
  26. package/dist/cjs/src/krakenfutures.js +96 -5
  27. package/dist/cjs/src/kucoin.js +3 -3
  28. package/dist/cjs/src/kucoinfutures.js +121 -0
  29. package/dist/cjs/src/lighter.js +2931 -0
  30. package/dist/cjs/src/mexc.js +9 -2
  31. package/dist/cjs/src/phemex.js +359 -0
  32. package/dist/cjs/src/poloniex.js +5 -0
  33. package/dist/cjs/src/pro/binance.js +2 -2
  34. package/dist/cjs/src/pro/bingx.js +248 -35
  35. package/dist/cjs/src/pro/bitget.js +49 -90
  36. package/dist/cjs/src/pro/bitmart.js +68 -0
  37. package/dist/cjs/src/pro/blofin.js +52 -1
  38. package/dist/cjs/src/pro/coinbaseinternational.js +5 -2
  39. package/dist/cjs/src/pro/defx.js +1 -1
  40. package/dist/cjs/src/pro/kucoinfutures.js +1 -1
  41. package/dist/cjs/src/pro/lighter.js +787 -0
  42. package/dist/cjs/src/pro/mexc.js +73 -1
  43. package/dist/cjs/src/pro/okx.js +7 -4
  44. package/dist/cjs/src/pro/paradex.js +138 -1
  45. package/dist/cjs/src/pro/woo.js +43 -0
  46. package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +1 -0
  47. package/dist/cjs/src/static_dependencies/ethers/address/address.js +1 -0
  48. package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +1 -0
  49. package/dist/cjs/src/static_dependencies/ethers/coders/address.js +1 -0
  50. package/dist/cjs/src/static_dependencies/ethers/coders/array.js +1 -0
  51. package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +1 -0
  52. package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +1 -0
  53. package/dist/cjs/src/static_dependencies/ethers/coders/number.js +1 -0
  54. package/dist/cjs/src/static_dependencies/ethers/fragments.js +1 -0
  55. package/dist/cjs/src/static_dependencies/ethers/index.js +1 -0
  56. package/dist/cjs/src/static_dependencies/ethers/interface.js +1 -0
  57. package/dist/cjs/src/static_dependencies/ethers/typed.js +1 -0
  58. package/dist/cjs/src/static_dependencies/ethers/utils/index.js +1 -0
  59. package/dist/cjs/src/whitebit.js +118 -16
  60. package/dist/cjs/src/woo.js +103 -3
  61. package/js/ccxt.d.ts +9 -3
  62. package/js/ccxt.js +6 -2
  63. package/js/src/abstract/gemini.d.ts +27 -0
  64. package/js/src/abstract/lighter.d.ts +53 -0
  65. package/js/src/abstract/lighter.js +5 -0
  66. package/js/src/ascendex.d.ts +12 -1
  67. package/js/src/ascendex.js +73 -1
  68. package/js/src/base/Exchange.d.ts +29 -14
  69. package/js/src/base/Exchange.js +216 -23
  70. package/js/src/base/functions/generic.js +1 -0
  71. package/js/src/base/functions/io.d.ts +32 -0
  72. package/js/src/base/functions/io.js +131 -0
  73. package/js/src/base/functions.d.ts +1 -0
  74. package/js/src/base/functions.js +1 -0
  75. package/js/src/base/types.d.ts +9 -0
  76. package/js/src/binance.d.ts +27 -1
  77. package/js/src/binance.js +143 -0
  78. package/js/src/bingx.d.ts +113 -108
  79. package/js/src/bingx.js +150 -123
  80. package/js/src/bitmart.js +20 -6
  81. package/js/src/bitmex.d.ts +50 -1
  82. package/js/src/bitmex.js +436 -0
  83. package/js/src/blofin.d.ts +12 -1
  84. package/js/src/blofin.js +86 -1
  85. package/js/src/bybit.d.ts +12 -1
  86. package/js/src/bybit.js +135 -0
  87. package/js/src/coinspot.js +7 -2
  88. package/js/src/delta.d.ts +12 -1
  89. package/js/src/delta.js +367 -0
  90. package/js/src/gate.d.ts +1 -0
  91. package/js/src/gate.js +11 -4
  92. package/js/src/gemini.d.ts +11 -0
  93. package/js/src/gemini.js +76 -1
  94. package/js/src/htx.d.ts +15 -1
  95. package/js/src/htx.js +266 -3
  96. package/js/src/hyperliquid.js +20 -7
  97. package/js/src/independentreserve.js +7 -7
  98. package/js/src/kraken.js +1 -1
  99. package/js/src/krakenfutures.d.ts +1 -1
  100. package/js/src/krakenfutures.js +96 -5
  101. package/js/src/kucoin.d.ts +3 -3
  102. package/js/src/kucoin.js +3 -3
  103. package/js/src/kucoinfutures.d.ts +12 -1
  104. package/js/src/kucoinfutures.js +121 -0
  105. package/js/src/lighter.d.ts +424 -0
  106. package/js/src/lighter.js +2924 -0
  107. package/js/src/mexc.js +9 -2
  108. package/js/src/phemex.d.ts +16 -1
  109. package/js/src/phemex.js +359 -0
  110. package/js/src/poloniex.js +5 -0
  111. package/js/src/pro/binance.js +2 -2
  112. package/js/src/pro/bingx.d.ts +50 -34
  113. package/js/src/pro/bingx.js +249 -36
  114. package/js/src/pro/bitget.d.ts +6 -6
  115. package/js/src/pro/bitget.js +49 -90
  116. package/js/src/pro/bitmart.d.ts +22 -1
  117. package/js/src/pro/bitmart.js +69 -1
  118. package/js/src/pro/blofin.d.ts +12 -1
  119. package/js/src/pro/blofin.js +52 -1
  120. package/js/src/pro/coinbaseinternational.d.ts +2 -2
  121. package/js/src/pro/coinbaseinternational.js +6 -3
  122. package/js/src/pro/defx.js +1 -1
  123. package/js/src/pro/kucoinfutures.js +1 -1
  124. package/js/src/pro/lighter.d.ts +161 -0
  125. package/js/src/pro/lighter.js +780 -0
  126. package/js/src/pro/mexc.d.ts +22 -1
  127. package/js/src/pro/mexc.js +73 -1
  128. package/js/src/pro/okx.d.ts +4 -4
  129. package/js/src/pro/okx.js +7 -4
  130. package/js/src/pro/paradex.d.ts +23 -1
  131. package/js/src/pro/paradex.js +138 -1
  132. package/js/src/pro/woo.d.ts +12 -1
  133. package/js/src/pro/woo.js +43 -0
  134. package/js/src/whitebit.d.ts +2 -1
  135. package/js/src/whitebit.js +118 -16
  136. package/js/src/woo.d.ts +12 -1
  137. package/js/src/woo.js +103 -3
  138. package/package.json +1 -1
package/js/src/mexc.js CHANGED
@@ -4402,7 +4402,15 @@ export default class mexc extends Exchange {
4402
4402
  // "timestamp": 1643240373359
4403
4403
  // }
4404
4404
  //
4405
- const nextFundingRate = this.safeNumber(contract, 'fundingRate');
4405
+ // watchFundingRate
4406
+ //
4407
+ // {
4408
+ // "symbol": "BTC_USDT",
4409
+ // "rate": -0.000021,
4410
+ // "nextSettleTime": 1771084800000
4411
+ // }
4412
+ //
4413
+ const nextFundingRate = this.safeNumber2(contract, 'fundingRate', 'rate');
4406
4414
  const nextFundingTimestamp = this.safeInteger(contract, 'nextSettleTime');
4407
4415
  const marketId = this.safeString(contract, 'symbol');
4408
4416
  const symbol = this.safeSymbol(marketId, market, undefined, 'contract');
@@ -4702,7 +4710,6 @@ export default class mexc extends Exchange {
4702
4710
  const address = this.safeString(depositAddress, 'address');
4703
4711
  const currencyId = this.safeString(depositAddress, 'coin');
4704
4712
  const networkId = this.safeString(depositAddress, 'netWork');
4705
- this.checkAddress(address);
4706
4713
  return {
4707
4714
  'info': depositAddress,
4708
4715
  'currency': this.safeCurrencyCode(currencyId, currency),
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/phemex.js';
2
- import type { TransferEntry, Balances, Currency, FundingHistory, FundingRateHistory, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, MarginModification, Currencies, Dict, LeverageTier, LeverageTiers, int, FundingRate, DepositAddress, Conversion, Position, Dictionary } from './base/types.js';
2
+ import type { TransferEntry, Balances, Currency, FundingHistory, FundingRateHistory, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, MarginModification, Currencies, Dict, LeverageTier, LeverageTiers, int, FundingRate, DepositAddress, Conversion, Position, Dictionary, ADL } from './base/types.js';
3
3
  /**
4
4
  * @class phemex
5
5
  * @augments Exchange
@@ -493,5 +493,20 @@ export default class phemex extends Exchange {
493
493
  */
494
494
  fetchConvertTradeHistory(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<Conversion[]>;
495
495
  parseConversion(conversion: Dict, fromCurrency?: Currency, toCurrency?: Currency): Conversion;
496
+ /**
497
+ * @method
498
+ * @name phemex#fetchPositionADLRank
499
+ * @description fetches the auto deleveraging rank and risk percentage for a list of symbols
500
+ * @see https://phemex-docs.github.io/#query-account-positions
501
+ * @see https://phemex-docs.github.io/#query-trading-account-and-positions
502
+ * @see https://phemex-docs.github.io/#query-account-positions-with-unrealized-pnl
503
+ * @param {string[]} [symbols] list of unified market symbols
504
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
505
+ * @param {string} [params.code] the currency code to fetch ranks for, USD, BTC or USDT, USDT is the default
506
+ * @param {string} [params.method] *USDT contracts only* 'privateGetGAccountsAccountPositions' or 'privateGetGAccountsAccountPositions' default is 'privateGetGAccountsAccountPositions'
507
+ * @returns {object} an array of [auto de leverage structures]{@link https://docs.ccxt.com/?id=auto-de-leverage-structure}
508
+ */
509
+ fetchPositionsADLRank(symbols?: Strings, params?: {}): Promise<ADL[]>;
510
+ parseADLRank(info: Dict, market?: Market): ADL;
496
511
  handleErrors(httpCode: int, reason: string, url: string, method: string, headers: Dict, body: string, response: any, requestHeaders: any, requestBody: any): any;
497
512
  }
package/js/src/phemex.js CHANGED
@@ -28,6 +28,9 @@ export default class phemex extends Exchange {
28
28
  'future': false,
29
29
  'option': false,
30
30
  'addMargin': false,
31
+ 'borrowCrossMargin': false,
32
+ 'borrowIsolatedMargin': false,
33
+ 'borrowMargin': false,
31
34
  'cancelAllOrders': true,
32
35
  'cancelOrder': true,
33
36
  'closePosition': false,
@@ -38,9 +41,14 @@ export default class phemex extends Exchange {
38
41
  'createStopMarketOrder': true,
39
42
  'createStopOrder': true,
40
43
  'editOrder': true,
44
+ 'fetchAllGreeks': false,
41
45
  'fetchBalance': true,
46
+ 'fetchBorrowInterest': false,
47
+ 'fetchBorrowRate': false,
42
48
  'fetchBorrowRateHistories': false,
43
49
  'fetchBorrowRateHistory': false,
50
+ 'fetchBorrowRates': false,
51
+ 'fetchBorrowRatesPerSymbol': false,
44
52
  'fetchClosedOrders': true,
45
53
  'fetchConvertQuote': true,
46
54
  'fetchConvertTrade': false,
@@ -57,6 +65,7 @@ export default class phemex extends Exchange {
57
65
  'fetchFundingRateHistories': false,
58
66
  'fetchFundingRateHistory': true,
59
67
  'fetchFundingRates': false,
68
+ 'fetchGreeks': false,
60
69
  'fetchIndexOHLCV': false,
61
70
  'fetchIsolatedBorrowRate': false,
62
71
  'fetchIsolatedBorrowRates': false,
@@ -69,10 +78,14 @@ export default class phemex extends Exchange {
69
78
  'fetchOHLCV': true,
70
79
  'fetchOpenInterest': true,
71
80
  'fetchOpenOrders': true,
81
+ 'fetchOption': false,
82
+ 'fetchOptionChain': false,
72
83
  'fetchOrder': true,
73
84
  'fetchOrderBook': true,
74
85
  'fetchOrders': true,
86
+ 'fetchPositionADLRank': true,
75
87
  'fetchPositions': true,
88
+ 'fetchPositionsADLRank': true,
76
89
  'fetchPositionsRisk': false,
77
90
  'fetchPremiumIndexOHLCV': false,
78
91
  'fetchTicker': true,
@@ -81,8 +94,11 @@ export default class phemex extends Exchange {
81
94
  'fetchTradingFee': false,
82
95
  'fetchTradingFees': false,
83
96
  'fetchTransfers': true,
97
+ 'fetchVolatilityHistory': false,
84
98
  'fetchWithdrawals': true,
85
99
  'reduceMargin': false,
100
+ 'repayCrossMargin': false,
101
+ 'repayIsolatedMargin': false,
86
102
  'sandbox': true,
87
103
  'setLeverage': true,
88
104
  'setMargin': true,
@@ -5322,6 +5338,349 @@ export default class phemex extends Exchange {
5322
5338
  'fee': undefined,
5323
5339
  };
5324
5340
  }
5341
+ /**
5342
+ * @method
5343
+ * @name phemex#fetchPositionADLRank
5344
+ * @description fetches the auto deleveraging rank and risk percentage for a list of symbols
5345
+ * @see https://phemex-docs.github.io/#query-account-positions
5346
+ * @see https://phemex-docs.github.io/#query-trading-account-and-positions
5347
+ * @see https://phemex-docs.github.io/#query-account-positions-with-unrealized-pnl
5348
+ * @param {string[]} [symbols] list of unified market symbols
5349
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
5350
+ * @param {string} [params.code] the currency code to fetch ranks for, USD, BTC or USDT, USDT is the default
5351
+ * @param {string} [params.method] *USDT contracts only* 'privateGetGAccountsAccountPositions' or 'privateGetGAccountsAccountPositions' default is 'privateGetGAccountsAccountPositions'
5352
+ * @returns {object} an array of [auto de leverage structures]{@link https://docs.ccxt.com/?id=auto-de-leverage-structure}
5353
+ */
5354
+ async fetchPositionsADLRank(symbols = undefined, params = {}) {
5355
+ await this.loadMarkets();
5356
+ symbols = this.marketSymbols(symbols, undefined, true, true, true);
5357
+ let subType = undefined;
5358
+ let code = this.safeString2(params, 'currency', 'code', 'USDT');
5359
+ params = this.omit(params, ['currency', 'code']);
5360
+ let settle = undefined;
5361
+ let market = undefined;
5362
+ const firstSymbol = this.safeString(symbols, 0);
5363
+ if (firstSymbol !== undefined) {
5364
+ market = this.market(firstSymbol);
5365
+ settle = market['settle'];
5366
+ code = market['settle'];
5367
+ }
5368
+ else {
5369
+ [settle, params] = this.handleOptionAndParams(params, 'fetchPositionsADLRank', 'settle', code);
5370
+ }
5371
+ [subType, params] = this.handleSubTypeAndParams('fetchPositionsADLRank', market, params);
5372
+ const isUSDTSettled = settle === 'USDT';
5373
+ if (isUSDTSettled) {
5374
+ code = 'USDT';
5375
+ }
5376
+ else if (settle === 'BTC') {
5377
+ code = 'BTC';
5378
+ }
5379
+ else if (code === undefined) {
5380
+ code = (subType === 'linear') ? 'USD' : 'BTC';
5381
+ }
5382
+ const currency = this.currency(code);
5383
+ const request = {
5384
+ 'currency': currency['id'],
5385
+ };
5386
+ let response = undefined;
5387
+ if (isUSDTSettled) {
5388
+ let method = undefined;
5389
+ [method, params] = this.handleOptionAndParams(params, 'fetchPositionsADLRank', 'method', 'privateGetGAccountsAccountPositions');
5390
+ if (method === 'privateGetGAccountsAccountPositions') {
5391
+ response = await this.privateGetGAccountsAccountPositions(this.extend(request, params));
5392
+ }
5393
+ else {
5394
+ response = await this.privateGetGAccountsPositions(this.extend(request, params));
5395
+ }
5396
+ //
5397
+ // {
5398
+ // "code": 0,
5399
+ // "msg": "",
5400
+ // "data": {
5401
+ // "account": {
5402
+ // "userID": 940666,
5403
+ // "accountId": 9406660003,
5404
+ // "currency": "USDT",
5405
+ // "accountBalanceRv": "439.96184445932",
5406
+ // "totalUsedBalanceRv": "89.22502732",
5407
+ // "bonusBalanceRv": "0",
5408
+ // "status": 0,
5409
+ // "userMode": 1
5410
+ // },
5411
+ // "positions": [
5412
+ // {
5413
+ // "userID": 940666,
5414
+ // "accountID": 9406660003,
5415
+ // "symbol": "BTCUSDT",
5416
+ // "currency": "USDT",
5417
+ // "side": "Buy",
5418
+ // "positionStatus": "Normal",
5419
+ // "crossMargin": true,
5420
+ // "leverageRr": "-10",
5421
+ // "initMarginReqRr": "0.1",
5422
+ // "maintMarginReqRr": "0.005",
5423
+ // "riskLimitRv": "20000000",
5424
+ // "size": "0.01",
5425
+ // "valueRv": "887.531",
5426
+ // "avgEntryPriceRp": "88753.1",
5427
+ // "avgEntryPrice": "88753.1",
5428
+ // "posCostRv": "89.22502732",
5429
+ // "assignedPosBalanceRv": "89.29802732",
5430
+ // "bankruptCommRv": "0.529812426",
5431
+ // "bankruptPriceRp": "44783.79",
5432
+ // "positionMarginRv": "88.695214894",
5433
+ // "liquidationPriceRp": "45009",
5434
+ // "deleveragePercentileRr": "0",
5435
+ // "buyValueToCostRr": "0.10114",
5436
+ // "sellValueToCostRr": "0.10126",
5437
+ // "markPriceRp": "88747.2",
5438
+ // "estimatedOrdLossRv": "0",
5439
+ // "usedBalanceRv": "89.22502732",
5440
+ // "cumClosedPnlRv": "425.97796",
5441
+ // "cumFundingFeeRv": "54.892930099379",
5442
+ // "cumTransactFeeRv": "1.288782144",
5443
+ // "transactTimeNs": 1767176685241254818,
5444
+ // "takerFeeRateRr": "-1",
5445
+ // "makerFeeRateRr": "-1",
5446
+ // "term": 6,
5447
+ // "lastTermEndTimeNs": 1759835547751667598,
5448
+ // "lastFundingTimeNs": 1759824000000000000,
5449
+ // "curTermRealisedPnlRv": "-0.5325186",
5450
+ // "execSeq": 47732822790,
5451
+ // "posSide": "Long",
5452
+ // "posMode": "Hedged",
5453
+ // "buyLeavesValueRv": "0",
5454
+ // "buyLeavesQtyRq": "0",
5455
+ // "sellLeavesValueRv": "0",
5456
+ // "sellLeavesQtyRq": "0"
5457
+ // },
5458
+ // ]
5459
+ // }
5460
+ // }
5461
+ //
5462
+ }
5463
+ else {
5464
+ response = await this.privateGetAccountsAccountPositions(this.extend(request, params));
5465
+ //
5466
+ // {
5467
+ // "code": 0,
5468
+ // "msg": "",
5469
+ // "data": {
5470
+ // "account": {
5471
+ // "userID": 940666,
5472
+ // "accountId": 9406660001,
5473
+ // "currency": "BTC",
5474
+ // "accountBalanceEv": 50050270,
5475
+ // "totalUsedBalanceEv": 58,
5476
+ // "bonusBalanceEv": 0
5477
+ // },
5478
+ // "positions": [
5479
+ // {
5480
+ // "userID": 940666,
5481
+ // "accountID": 9406660001,
5482
+ // "symbol": "BTCUSD",
5483
+ // "currency": "BTC",
5484
+ // "side": "Buy",
5485
+ // "positionStatus": "Normal",
5486
+ // "crossMargin": false,
5487
+ // "leverageEr": -2000000000,
5488
+ // "leverage": -20.00000000,
5489
+ // "initMarginReqEr": 5000000,
5490
+ // "initMarginReq": 0.05000000,
5491
+ // "maintMarginReqEr": 500000,
5492
+ // "maintMarginReq": 0.00500000,
5493
+ // "riskLimitEv": 150000000000,
5494
+ // "riskLimit": 1500.00000000,
5495
+ // "size": 1,
5496
+ // "value": 0.00001128,
5497
+ // "valueEv": 1128,
5498
+ // "avgEntryPriceEp": 886524823,
5499
+ // "avgEntryPrice": 88652.48230000,
5500
+ // "posCostEv": 58,
5501
+ // "posCost": 5.8E-7,
5502
+ // "assignedPosBalanceEv": 58,
5503
+ // "assignedPosBalance": 5.8E-7,
5504
+ // "bankruptCommEv": 1,
5505
+ // "bankruptComm": 1E-8,
5506
+ // "bankruptPriceEp": 100000,
5507
+ // "bankruptPrice": 10.00000000,
5508
+ // "positionMarginEv": 57,
5509
+ // "positionMargin": 5.7E-7,
5510
+ // "liquidationPriceEp": 100000,
5511
+ // "liquidationPrice": 10.00000000,
5512
+ // "deleveragePercentileEr": 0,
5513
+ // "deleveragePercentile": 0E-8,
5514
+ // "buyValueToCostEr": 5123000,
5515
+ // "buyValueToCost": 0.05123000,
5516
+ // "sellValueToCostEr": 5117000,
5517
+ // "sellValueToCost": 0.05117000,
5518
+ // "markPriceEp": 886028000,
5519
+ // "markPrice": 88602.80000000,
5520
+ // "estimatedOrdLossEv": 0,
5521
+ // "estimatedOrdLoss": 0E-8,
5522
+ // "usedBalanceEv": 58,
5523
+ // "usedBalance": 5.8E-7,
5524
+ // "cumClosedPnlEv": 127,
5525
+ // "cumFundingFeeEv": -146,
5526
+ // "cumTransactFeeEv": 3,
5527
+ // "transactTimeNs": 1767177964554892106,
5528
+ // "takerFeeRateEr": 60000,
5529
+ // "makerFeeRateEr": 10000,
5530
+ // "term": 2,
5531
+ // "lastTermEndTimeNs": 1716225275381802994,
5532
+ // "lastFundingTimeNs": 1767168000000000000,
5533
+ // "curTermRealisedPnlEv": -1,
5534
+ // "execSeq": 1104909332,
5535
+ // "freeQty": -1,
5536
+ // "freeCostEv": 0,
5537
+ // "buyLeavesValueEv": 0,
5538
+ // "sellLeavesValueEv": 0,
5539
+ // "buyLeavesQty": 0,
5540
+ // "sellLeavesQty": 0
5541
+ // }
5542
+ // ]
5543
+ // }
5544
+ // }
5545
+ //
5546
+ }
5547
+ const data = this.safeValue(response, 'data', {});
5548
+ const ranks = this.safeValue(data, 'positions', []);
5549
+ const result = [];
5550
+ for (let i = 0; i < ranks.length; i++) {
5551
+ const rank = ranks[i];
5552
+ result.push(this.parseADLRank(rank));
5553
+ }
5554
+ return this.filterByArrayADLRanks(result, 'symbol', symbols, false);
5555
+ }
5556
+ parseADLRank(info, market = undefined) {
5557
+ //
5558
+ // fetchPositionADLRank: linear
5559
+ //
5560
+ // {
5561
+ // "userID": 940666,
5562
+ // "accountID": 9406660003,
5563
+ // "symbol": "BTCUSDT",
5564
+ // "currency": "USDT",
5565
+ // "side": "Buy",
5566
+ // "positionStatus": "Normal",
5567
+ // "crossMargin": true,
5568
+ // "leverageRr": "-10",
5569
+ // "initMarginReqRr": "0.1",
5570
+ // "maintMarginReqRr": "0.005",
5571
+ // "riskLimitRv": "20000000",
5572
+ // "size": "0.01",
5573
+ // "valueRv": "887.531",
5574
+ // "avgEntryPriceRp": "88753.1",
5575
+ // "avgEntryPrice": "88753.1",
5576
+ // "posCostRv": "89.22502732",
5577
+ // "assignedPosBalanceRv": "89.29802732",
5578
+ // "bankruptCommRv": "0.529812426",
5579
+ // "bankruptPriceRp": "44783.79",
5580
+ // "positionMarginRv": "88.695214894",
5581
+ // "liquidationPriceRp": "45009",
5582
+ // "deleveragePercentileRr": "0",
5583
+ // "buyValueToCostRr": "0.10114",
5584
+ // "sellValueToCostRr": "0.10126",
5585
+ // "markPriceRp": "88747.2",
5586
+ // "estimatedOrdLossRv": "0",
5587
+ // "usedBalanceRv": "89.22502732",
5588
+ // "cumClosedPnlRv": "425.97796",
5589
+ // "cumFundingFeeRv": "54.892930099379",
5590
+ // "cumTransactFeeRv": "1.288782144",
5591
+ // "transactTimeNs": 1767176685241254818,
5592
+ // "takerFeeRateRr": "-1",
5593
+ // "makerFeeRateRr": "-1",
5594
+ // "term": 6,
5595
+ // "lastTermEndTimeNs": 1759835547751667598,
5596
+ // "lastFundingTimeNs": 1759824000000000000,
5597
+ // "curTermRealisedPnlRv": "-0.5325186",
5598
+ // "execSeq": 47732822790,
5599
+ // "posSide": "Long",
5600
+ // "posMode": "Hedged",
5601
+ // "buyLeavesValueRv": "0",
5602
+ // "buyLeavesQtyRq": "0",
5603
+ // "sellLeavesValueRv": "0",
5604
+ // "sellLeavesQtyRq": "0"
5605
+ // }
5606
+ //
5607
+ // fetchPositionADLRank: inverse
5608
+ //
5609
+ // {
5610
+ // "userID": 940666,
5611
+ // "accountID": 9406660001,
5612
+ // "symbol": "BTCUSD",
5613
+ // "currency": "BTC",
5614
+ // "side": "Buy",
5615
+ // "positionStatus": "Normal",
5616
+ // "crossMargin": false,
5617
+ // "leverageEr": -2000000000,
5618
+ // "leverage": -20.00000000,
5619
+ // "initMarginReqEr": 5000000,
5620
+ // "initMarginReq": 0.05000000,
5621
+ // "maintMarginReqEr": 500000,
5622
+ // "maintMarginReq": 0.00500000,
5623
+ // "riskLimitEv": 150000000000,
5624
+ // "riskLimit": 1500.00000000,
5625
+ // "size": 1,
5626
+ // "value": 0.00001128,
5627
+ // "valueEv": 1128,
5628
+ // "avgEntryPriceEp": 886524823,
5629
+ // "avgEntryPrice": 88652.48230000,
5630
+ // "posCostEv": 58,
5631
+ // "posCost": 5.8E-7,
5632
+ // "assignedPosBalanceEv": 58,
5633
+ // "assignedPosBalance": 5.8E-7,
5634
+ // "bankruptCommEv": 1,
5635
+ // "bankruptComm": 1E-8,
5636
+ // "bankruptPriceEp": 100000,
5637
+ // "bankruptPrice": 10.00000000,
5638
+ // "positionMarginEv": 57,
5639
+ // "positionMargin": 5.7E-7,
5640
+ // "liquidationPriceEp": 100000,
5641
+ // "liquidationPrice": 10.00000000,
5642
+ // "deleveragePercentileEr": 0,
5643
+ // "deleveragePercentile": 0E-8,
5644
+ // "buyValueToCostEr": 5123000,
5645
+ // "buyValueToCost": 0.05123000,
5646
+ // "sellValueToCostEr": 5117000,
5647
+ // "sellValueToCost": 0.05117000,
5648
+ // "markPriceEp": 886028000,
5649
+ // "markPrice": 88602.80000000,
5650
+ // "estimatedOrdLossEv": 0,
5651
+ // "estimatedOrdLoss": 0E-8,
5652
+ // "usedBalanceEv": 58,
5653
+ // "usedBalance": 5.8E-7,
5654
+ // "cumClosedPnlEv": 127,
5655
+ // "cumFundingFeeEv": -146,
5656
+ // "cumTransactFeeEv": 3,
5657
+ // "transactTimeNs": 1767177964554892106,
5658
+ // "takerFeeRateEr": 60000,
5659
+ // "makerFeeRateEr": 10000,
5660
+ // "term": 2,
5661
+ // "lastTermEndTimeNs": 1716225275381802994,
5662
+ // "lastFundingTimeNs": 1767168000000000000,
5663
+ // "curTermRealisedPnlEv": -1,
5664
+ // "execSeq": 1104909332,
5665
+ // "freeQty": -1,
5666
+ // "freeCostEv": 0,
5667
+ // "buyLeavesValueEv": 0,
5668
+ // "sellLeavesValueEv": 0,
5669
+ // "buyLeavesQty": 0,
5670
+ // "sellLeavesQty": 0
5671
+ // }
5672
+ //
5673
+ const marketId = this.safeString(info, 'symbol');
5674
+ return {
5675
+ 'info': info,
5676
+ 'symbol': this.safeSymbol(marketId, market, undefined, 'contract'),
5677
+ 'rank': undefined,
5678
+ 'rating': undefined,
5679
+ 'percentage': this.safeNumber2(info, 'deleveragePercentileRr', 'deleveragePercentileEr'),
5680
+ 'timestamp': undefined,
5681
+ 'datetime': undefined,
5682
+ };
5683
+ }
5325
5684
  handleErrors(httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody) {
5326
5685
  if (response === undefined) {
5327
5686
  return undefined; // fallback to default error handler
@@ -39,6 +39,7 @@ export default class poloniex extends Exchange {
39
39
  'createStopOrder': true,
40
40
  'createTriggerOrder': true,
41
41
  'editOrder': true,
42
+ 'fetchAllGreeks': false,
42
43
  'fetchBalance': true,
43
44
  'fetchClosedOrder': false,
44
45
  'fetchClosedOrders': true,
@@ -56,6 +57,7 @@ export default class poloniex extends Exchange {
56
57
  'fetchFundingRate': false,
57
58
  'fetchFundingRateHistory': false,
58
59
  'fetchFundingRates': undefined,
60
+ 'fetchGreeks': false,
59
61
  'fetchLedger': undefined,
60
62
  'fetchLeverage': true,
61
63
  'fetchLiquidations': undefined,
@@ -66,6 +68,8 @@ export default class poloniex extends Exchange {
66
68
  'fetchOpenInterestHistory': false,
67
69
  'fetchOpenOrder': false,
68
70
  'fetchOpenOrders': true,
71
+ 'fetchOption': false,
72
+ 'fetchOptionChain': false,
69
73
  'fetchOrder': true,
70
74
  'fetchOrderBook': true,
71
75
  'fetchOrderBooks': false,
@@ -82,6 +86,7 @@ export default class poloniex extends Exchange {
82
86
  'fetchTransactions': 'emulated',
83
87
  'fetchTransfer': false,
84
88
  'fetchTransfers': false,
89
+ 'fetchVolatilityHistory': false,
85
90
  'fetchWithdrawals': true,
86
91
  'reduceMargin': true,
87
92
  'sandbox': true,
@@ -151,7 +151,7 @@ export default class binance extends binanceRest {
151
151
  'name': 'ticker', // ticker or miniTicker or ticker_<window_size>
152
152
  },
153
153
  'watchTickers': {
154
- 'name': 'ticker', // ticker or miniTicker or ticker_<window_size>
154
+ 'name': 'miniTicker', // miniTicker or ticker_<window_size>
155
155
  },
156
156
  'watchOHLCV': {
157
157
  'name': 'kline', // or indexPriceKline or markPriceKline (coin-m futures)
@@ -1862,7 +1862,7 @@ export default class binance extends binanceRest {
1862
1862
  */
1863
1863
  async watchTickers(symbols = undefined, params = {}) {
1864
1864
  let channelName = undefined;
1865
- [channelName, params] = this.handleOptionAndParams(params, 'watchTickers', 'name', 'ticker');
1865
+ [channelName, params] = this.handleOptionAndParams(params, 'watchTickers', 'name', 'miniTicker');
1866
1866
  if (channelName === 'bookTicker') {
1867
1867
  throw new BadRequest(this.id + ' deprecation notice - to subscribe for bids-asks, use watch_bids_asks() method instead');
1868
1868
  }