ccxt 4.4.9 → 4.4.10

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 (106) hide show
  1. package/README.md +131 -131
  2. package/dist/ccxt.browser.min.js +3 -3
  3. package/dist/cjs/ccxt.js +1 -1
  4. package/dist/cjs/src/ascendex.js +2 -1
  5. package/dist/cjs/src/binance.js +4 -8
  6. package/dist/cjs/src/bingx.js +19 -20
  7. package/dist/cjs/src/bitfinex2.js +5 -16
  8. package/dist/cjs/src/bitget.js +5 -4
  9. package/dist/cjs/src/bitmart.js +1 -0
  10. package/dist/cjs/src/bitmex.js +4 -3
  11. package/dist/cjs/src/blofin.js +4 -13
  12. package/dist/cjs/src/bybit.js +16 -14
  13. package/dist/cjs/src/coinex.js +15 -1
  14. package/dist/cjs/src/delta.js +2 -1
  15. package/dist/cjs/src/deribit.js +1 -0
  16. package/dist/cjs/src/digifinex.js +15 -1
  17. package/dist/cjs/src/gate.js +30 -9
  18. package/dist/cjs/src/hashkey.js +2 -2
  19. package/dist/cjs/src/hitbtc.js +2 -1
  20. package/dist/cjs/src/htx.js +19 -2
  21. package/dist/cjs/src/hyperliquid.js +6 -1
  22. package/dist/cjs/src/krakenfutures.js +3 -2
  23. package/dist/cjs/src/kucoinfutures.js +11 -0
  24. package/dist/cjs/src/mexc.js +1 -0
  25. package/dist/cjs/src/oceanex.js +83 -3
  26. package/dist/cjs/src/okx.js +14 -0
  27. package/dist/cjs/src/oxfun.js +4 -4
  28. package/dist/cjs/src/phemex.js +1 -0
  29. package/dist/cjs/src/poloniexfutures.js +11 -0
  30. package/dist/cjs/src/pro/deribit.js +43 -1
  31. package/dist/cjs/src/pro/gate.js +1 -1
  32. package/dist/cjs/src/vertex.js +2 -1
  33. package/dist/cjs/src/whitebit.js +10 -9
  34. package/dist/cjs/src/woo.js +42 -17
  35. package/dist/cjs/src/woofipro.js +15 -2
  36. package/dist/cjs/src/xt.js +2 -0
  37. package/js/ccxt.d.ts +1 -1
  38. package/js/ccxt.js +1 -1
  39. package/js/src/abstract/oceanex.d.ts +5 -0
  40. package/js/src/ascendex.d.ts +3 -21
  41. package/js/src/ascendex.js +2 -1
  42. package/js/src/base/Exchange.d.ts +3 -3
  43. package/js/src/base/types.d.ts +1 -0
  44. package/js/src/binance.d.ts +4 -40
  45. package/js/src/binance.js +4 -8
  46. package/js/src/bingx.d.ts +4 -40
  47. package/js/src/bingx.js +19 -20
  48. package/js/src/bitfinex2.d.ts +3 -22
  49. package/js/src/bitfinex2.js +5 -16
  50. package/js/src/bitget.d.ts +3 -39
  51. package/js/src/bitget.js +5 -4
  52. package/js/src/bitmart.d.ts +3 -39
  53. package/js/src/bitmart.js +1 -0
  54. package/js/src/bitmex.d.ts +3 -21
  55. package/js/src/bitmex.js +4 -3
  56. package/js/src/blofin.d.ts +3 -39
  57. package/js/src/blofin.js +4 -13
  58. package/js/src/bybit.d.ts +3 -21
  59. package/js/src/bybit.js +16 -14
  60. package/js/src/coinex.d.ts +5 -40
  61. package/js/src/coinex.js +15 -1
  62. package/js/src/delta.d.ts +4 -40
  63. package/js/src/delta.js +2 -1
  64. package/js/src/deribit.d.ts +3 -39
  65. package/js/src/deribit.js +1 -0
  66. package/js/src/digifinex.d.ts +4 -21
  67. package/js/src/digifinex.js +15 -1
  68. package/js/src/gate.d.ts +6 -41
  69. package/js/src/gate.js +30 -9
  70. package/js/src/hashkey.d.ts +4 -40
  71. package/js/src/hashkey.js +2 -2
  72. package/js/src/hitbtc.d.ts +4 -40
  73. package/js/src/hitbtc.js +2 -1
  74. package/js/src/htx.d.ts +5 -40
  75. package/js/src/htx.js +19 -2
  76. package/js/src/hyperliquid.js +6 -1
  77. package/js/src/krakenfutures.d.ts +3 -21
  78. package/js/src/krakenfutures.js +3 -2
  79. package/js/src/kucoinfutures.d.ts +3 -20
  80. package/js/src/kucoinfutures.js +11 -0
  81. package/js/src/mexc.d.ts +3 -39
  82. package/js/src/mexc.js +1 -0
  83. package/js/src/oceanex.d.ts +9 -1
  84. package/js/src/oceanex.js +83 -3
  85. package/js/src/okx.d.ts +4 -39
  86. package/js/src/okx.js +14 -0
  87. package/js/src/oxfun.d.ts +3 -21
  88. package/js/src/oxfun.js +4 -4
  89. package/js/src/phemex.d.ts +3 -39
  90. package/js/src/phemex.js +1 -0
  91. package/js/src/poloniexfutures.d.ts +3 -20
  92. package/js/src/poloniexfutures.js +11 -0
  93. package/js/src/pro/deribit.d.ts +2 -1
  94. package/js/src/pro/deribit.js +43 -1
  95. package/js/src/pro/gate.js +1 -1
  96. package/js/src/vertex.d.ts +4 -40
  97. package/js/src/vertex.js +2 -1
  98. package/js/src/whitebit.d.ts +4 -21
  99. package/js/src/whitebit.js +10 -9
  100. package/js/src/woo.d.ts +4 -40
  101. package/js/src/woo.js +42 -17
  102. package/js/src/woofipro.d.ts +5 -40
  103. package/js/src/woofipro.js +15 -2
  104. package/js/src/xt.d.ts +3 -39
  105. package/js/src/xt.js +2 -0
  106. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/bitmart.js';
2
- import type { Int, OrderSide, Balances, OrderType, OHLCV, Order, Str, Trade, Transaction, Ticker, OrderBook, Tickers, Strings, Currency, Market, TransferEntry, Num, TradingFeeInterface, Currencies, IsolatedBorrowRates, IsolatedBorrowRate, Dict, OrderRequest, int } from './base/types.js';
2
+ import type { Int, OrderSide, Balances, OrderType, OHLCV, Order, Str, Trade, Transaction, Ticker, OrderBook, Tickers, Strings, Currency, Market, TransferEntry, Num, TradingFeeInterface, Currencies, IsolatedBorrowRates, IsolatedBorrowRate, Dict, OrderRequest, int, FundingRate } from './base/types.js';
3
3
  /**
4
4
  * @class bitmart
5
5
  * @augments Exchange
@@ -124,44 +124,8 @@ export default class bitmart extends Exchange {
124
124
  fetchOpenInterest(symbol: string, params?: {}): Promise<import("./base/types.js").OpenInterest>;
125
125
  parseOpenInterest(interest: any, market?: Market): import("./base/types.js").OpenInterest;
126
126
  setLeverage(leverage: Int, symbol?: Str, params?: {}): Promise<any>;
127
- fetchFundingRate(symbol: string, params?: {}): Promise<{
128
- info: any;
129
- symbol: string;
130
- markPrice: any;
131
- indexPrice: any;
132
- interestRate: any;
133
- estimatedSettlePrice: any;
134
- timestamp: number;
135
- datetime: string;
136
- fundingRate: number;
137
- fundingTimestamp: any;
138
- fundingDatetime: any;
139
- nextFundingRate: any;
140
- nextFundingTimestamp: any;
141
- nextFundingDatetime: any;
142
- previousFundingRate: number;
143
- previousFundingTimestamp: any;
144
- previousFundingDatetime: any;
145
- }>;
146
- parseFundingRate(contract: any, market?: Market): {
147
- info: any;
148
- symbol: string;
149
- markPrice: any;
150
- indexPrice: any;
151
- interestRate: any;
152
- estimatedSettlePrice: any;
153
- timestamp: number;
154
- datetime: string;
155
- fundingRate: number;
156
- fundingTimestamp: any;
157
- fundingDatetime: any;
158
- nextFundingRate: any;
159
- nextFundingTimestamp: any;
160
- nextFundingDatetime: any;
161
- previousFundingRate: number;
162
- previousFundingTimestamp: any;
163
- previousFundingDatetime: any;
164
- };
127
+ fetchFundingRate(symbol: string, params?: {}): Promise<FundingRate>;
128
+ parseFundingRate(contract: any, market?: Market): FundingRate;
165
129
  fetchPosition(symbol: string, params?: {}): Promise<import("./base/types.js").Position>;
166
130
  fetchPositions(symbols?: Strings, params?: {}): Promise<import("./base/types.js").Position[]>;
167
131
  parsePosition(position: Dict, market?: Market): import("./base/types.js").Position;
package/js/src/bitmart.js CHANGED
@@ -4499,6 +4499,7 @@ export default class bitmart extends Exchange {
4499
4499
  'previousFundingRate': this.safeNumber(contract, 'rate_value'),
4500
4500
  'previousFundingTimestamp': undefined,
4501
4501
  'previousFundingDatetime': undefined,
4502
+ 'interval': undefined,
4502
4503
  };
4503
4504
  }
4504
4505
  async fetchPosition(symbol, params = {}) {
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/bitmex.js';
2
- import type { Int, OrderSide, OrderType, Trade, OHLCV, Order, Liquidation, OrderBook, Balances, Str, Dict, Transaction, Ticker, Tickers, Market, Strings, Currency, Leverage, Leverages, Num, Currencies, int, LedgerEntry } from './base/types.js';
2
+ import type { Int, OrderSide, OrderType, Trade, OHLCV, Order, Liquidation, OrderBook, Balances, Str, Dict, Transaction, Ticker, Tickers, Market, Strings, Currency, Leverage, Leverages, Num, Currencies, int, LedgerEntry, FundingRate, FundingRates } from './base/types.js';
3
3
  /**
4
4
  * @class bitmex
5
5
  * @augments Exchange
@@ -49,26 +49,8 @@ export default class bitmex extends Exchange {
49
49
  fetchPositions(symbols?: Strings, params?: {}): Promise<import("./base/types.js").Position[]>;
50
50
  parsePosition(position: Dict, market?: Market): import("./base/types.js").Position;
51
51
  withdraw(code: string, amount: number, address: string, tag?: any, params?: {}): Promise<Transaction>;
52
- fetchFundingRates(symbols?: Strings, params?: {}): Promise<any>;
53
- parseFundingRate(contract: any, market?: Market): {
54
- info: any;
55
- symbol: string;
56
- markPrice: number;
57
- indexPrice: any;
58
- interestRate: any;
59
- estimatedSettlePrice: number;
60
- timestamp: number;
61
- datetime: string;
62
- fundingRate: number;
63
- fundingTimestamp: string;
64
- fundingDatetime: string;
65
- nextFundingRate: number;
66
- nextFundingTimestamp: any;
67
- nextFundingDatetime: any;
68
- previousFundingRate: any;
69
- previousFundingTimestamp: any;
70
- previousFundingDatetime: any;
71
- };
52
+ fetchFundingRates(symbols?: Strings, params?: {}): Promise<FundingRates>;
53
+ parseFundingRate(contract: any, market?: Market): FundingRate;
72
54
  fetchFundingRateHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<import("./base/types.js").FundingRateHistory[]>;
73
55
  parseFundingRateHistory(info: any, market?: Market): {
74
56
  info: any;
package/js/src/bitmex.js CHANGED
@@ -59,7 +59,7 @@ export default class bitmex extends Exchange {
59
59
  'fetchDepositWithdrawFee': 'emulated',
60
60
  'fetchDepositWithdrawFees': true,
61
61
  'fetchFundingHistory': false,
62
- 'fetchFundingRate': false,
62
+ 'fetchFundingRate': 'emulated',
63
63
  'fetchFundingRateHistory': true,
64
64
  'fetchFundingRates': true,
65
65
  'fetchIndexOHLCV': false,
@@ -2492,7 +2492,7 @@ export default class bitmex extends Exchange {
2492
2492
  * @see https://www.bitmex.com/api/explorer/#!/Instrument/Instrument_getActiveAndIndices
2493
2493
  * @param {string[]|undefined} symbols list of unified market symbols
2494
2494
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2495
- * @returns {object} a dictionary of [funding rates structures]{@link https://docs.ccxt.com/#/?id=funding-rates-structure}, indexe by market symbols
2495
+ * @returns {object[]} a list of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rates-structure}, indexed by market symbols
2496
2496
  */
2497
2497
  await this.loadMarkets();
2498
2498
  const response = await this.publicGetInstrumentActiveAndIndices(params);
@@ -2526,7 +2526,7 @@ export default class bitmex extends Exchange {
2526
2526
  'timestamp': this.parse8601(datetime),
2527
2527
  'datetime': datetime,
2528
2528
  'fundingRate': this.safeNumber(contract, 'fundingRate'),
2529
- 'fundingTimestamp': this.iso8601(fundingDatetime),
2529
+ 'fundingTimestamp': this.parseToNumeric(this.iso8601(fundingDatetime)),
2530
2530
  'fundingDatetime': fundingDatetime,
2531
2531
  'nextFundingRate': this.safeNumber(contract, 'indicativeFundingRate'),
2532
2532
  'nextFundingTimestamp': undefined,
@@ -2534,6 +2534,7 @@ export default class bitmex extends Exchange {
2534
2534
  'previousFundingRate': undefined,
2535
2535
  'previousFundingTimestamp': undefined,
2536
2536
  'previousFundingDatetime': undefined,
2537
+ 'interval': undefined,
2537
2538
  };
2538
2539
  }
2539
2540
  async fetchFundingRateHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/blofin.js';
2
- import type { Int, OrderSide, OrderType, Trade, OHLCV, Order, FundingRateHistory, OrderRequest, Str, Transaction, Ticker, OrderBook, Balances, Tickers, Market, Strings, Currency, Position, TransferEntry, Leverage, Leverages, MarginMode, Num, TradingFeeInterface, Dict, int, LedgerEntry } from './base/types.js';
2
+ import type { Int, OrderSide, OrderType, Trade, OHLCV, Order, FundingRateHistory, OrderRequest, Str, Transaction, Ticker, OrderBook, Balances, Tickers, Market, Strings, Currency, Position, TransferEntry, Leverage, Leverages, MarginMode, Num, TradingFeeInterface, Dict, int, LedgerEntry, FundingRate } from './base/types.js';
3
3
  /**
4
4
  * @class blofin
5
5
  * @augments Exchange
@@ -17,44 +17,8 @@ export default class blofin extends Exchange {
17
17
  parseOHLCV(ohlcv: any, market?: Market): OHLCV;
18
18
  fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
19
19
  fetchFundingRateHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingRateHistory[]>;
20
- parseFundingRate(contract: any, market?: Market): {
21
- info: any;
22
- symbol: string;
23
- markPrice: any;
24
- indexPrice: any;
25
- interestRate: number;
26
- estimatedSettlePrice: any;
27
- timestamp: any;
28
- datetime: any;
29
- fundingRate: number;
30
- fundingTimestamp: number;
31
- fundingDatetime: string;
32
- nextFundingRate: number;
33
- nextFundingTimestamp: number;
34
- nextFundingDatetime: string;
35
- previousFundingRate: any;
36
- previousFundingTimestamp: any;
37
- previousFundingDatetime: any;
38
- };
39
- fetchFundingRate(symbol: string, params?: {}): Promise<{
40
- info: any;
41
- symbol: string;
42
- markPrice: any;
43
- indexPrice: any;
44
- interestRate: number;
45
- estimatedSettlePrice: any;
46
- timestamp: any;
47
- datetime: any;
48
- fundingRate: number;
49
- fundingTimestamp: number;
50
- fundingDatetime: string;
51
- nextFundingRate: number;
52
- nextFundingTimestamp: number;
53
- nextFundingDatetime: string;
54
- previousFundingRate: any;
55
- previousFundingTimestamp: any;
56
- previousFundingDatetime: any;
57
- }>;
20
+ parseFundingRate(contract: any, market?: Market): FundingRate;
21
+ fetchFundingRate(symbol: string, params?: {}): Promise<FundingRate>;
58
22
  parseBalanceByType(type: any, response: any): Balances;
59
23
  parseBalance(response: any): Balances;
60
24
  parseFundingBalance(response: any): Balances;
package/js/src/blofin.js CHANGED
@@ -796,17 +796,10 @@ export default class blofin extends Exchange {
796
796
  // "fundingRate": "0.00027815",
797
797
  // "fundingTime": "1634256000000",
798
798
  // "instId": "BTC-USD-SWAP",
799
- // "instType": "SWAP",
800
- // "nextFundingRate": "0.00017",
801
- // "nextFundingTime": "1634284800000"
802
799
  // }
803
800
  //
804
- // in the response above nextFundingRate is actually two funding rates from now
805
- //
806
- const nextFundingRateTimestamp = this.safeInteger(contract, 'nextFundingTime');
807
801
  const marketId = this.safeString(contract, 'instId');
808
802
  const symbol = this.safeSymbol(marketId, market);
809
- const nextFundingRate = this.safeNumber(contract, 'nextFundingRate');
810
803
  const fundingTime = this.safeInteger(contract, 'fundingTime');
811
804
  // > The current interest is 0.
812
805
  return {
@@ -821,12 +814,13 @@ export default class blofin extends Exchange {
821
814
  'fundingRate': this.safeNumber(contract, 'fundingRate'),
822
815
  'fundingTimestamp': fundingTime,
823
816
  'fundingDatetime': this.iso8601(fundingTime),
824
- 'nextFundingRate': nextFundingRate,
825
- 'nextFundingTimestamp': nextFundingRateTimestamp,
826
- 'nextFundingDatetime': this.iso8601(nextFundingRateTimestamp),
817
+ 'nextFundingRate': undefined,
818
+ 'nextFundingTimestamp': undefined,
819
+ 'nextFundingDatetime': undefined,
827
820
  'previousFundingRate': undefined,
828
821
  'previousFundingTimestamp': undefined,
829
822
  'previousFundingDatetime': undefined,
823
+ 'interval': undefined,
830
824
  };
831
825
  }
832
826
  async fetchFundingRate(symbol, params = {}) {
@@ -856,9 +850,6 @@ export default class blofin extends Exchange {
856
850
  // "fundingRate": "0.00027815",
857
851
  // "fundingTime": "1634256000000",
858
852
  // "instId": "BTC-USD-SWAP",
859
- // "instType": "SWAP",
860
- // "nextFundingRate": "0.00017",
861
- // "nextFundingTime": "1634284800000"
862
853
  // }
863
854
  // ],
864
855
  // "msg": ""
package/js/src/bybit.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/bybit.js';
2
- import type { Int, OrderSide, OrderType, Trade, Order, OHLCV, FundingRateHistory, OpenInterest, OrderRequest, Balances, Str, Transaction, Ticker, OrderBook, Tickers, Greeks, Strings, Market, Currency, MarketInterface, TransferEntry, Liquidation, Leverage, Num, FundingHistory, Option, OptionChain, TradingFeeInterface, Currencies, TradingFees, CancellationRequest, Position, CrossBorrowRate, Dict, LeverageTier, LeverageTiers, int, LedgerEntry, Conversion } from './base/types.js';
2
+ import type { Int, OrderSide, OrderType, Trade, Order, OHLCV, FundingRateHistory, OpenInterest, OrderRequest, Balances, Str, Transaction, Ticker, OrderBook, Tickers, Greeks, Strings, Market, Currency, MarketInterface, TransferEntry, Liquidation, Leverage, Num, FundingHistory, Option, OptionChain, TradingFeeInterface, Currencies, TradingFees, CancellationRequest, Position, CrossBorrowRate, Dict, LeverageTier, LeverageTiers, int, LedgerEntry, Conversion, FundingRate, FundingRates } from './base/types.js';
3
3
  /**
4
4
  * @class bybit
5
5
  * @augments Exchange
@@ -29,26 +29,8 @@ export default class bybit extends Exchange {
29
29
  fetchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
30
30
  parseOHLCV(ohlcv: any, market?: Market): OHLCV;
31
31
  fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
32
- parseFundingRate(ticker: any, market?: Market): {
33
- info: any;
34
- symbol: string;
35
- markPrice: number;
36
- indexPrice: number;
37
- interestRate: any;
38
- estimatedSettlePrice: any;
39
- timestamp: number;
40
- datetime: string;
41
- fundingRate: number;
42
- fundingTimestamp: number;
43
- fundingDatetime: string;
44
- nextFundingRate: any;
45
- nextFundingTimestamp: any;
46
- nextFundingDatetime: any;
47
- previousFundingRate: any;
48
- previousFundingTimestamp: any;
49
- previousFundingDatetime: any;
50
- };
51
- fetchFundingRates(symbols?: Strings, params?: {}): Promise<any>;
32
+ parseFundingRate(ticker: any, market?: Market): FundingRate;
33
+ fetchFundingRates(symbols?: Strings, params?: {}): Promise<FundingRates>;
52
34
  fetchFundingRateHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingRateHistory[]>;
53
35
  parseTrade(trade: Dict, market?: Market): Trade;
54
36
  fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
package/js/src/bybit.js CHANGED
@@ -82,7 +82,7 @@ export default class bybit extends Exchange {
82
82
  'fetchDepositWithdrawFee': 'emulated',
83
83
  'fetchDepositWithdrawFees': true,
84
84
  'fetchFundingHistory': true,
85
- 'fetchFundingRate': true,
85
+ 'fetchFundingRate': 'emulated',
86
86
  'fetchFundingRateHistory': true,
87
87
  'fetchFundingRates': true,
88
88
  'fetchGreeks': true,
@@ -2438,6 +2438,7 @@ export default class bybit extends Exchange {
2438
2438
  return this.parseOHLCVs(ohlcvs, market, timeframe, since, limit);
2439
2439
  }
2440
2440
  parseFundingRate(ticker, market = undefined) {
2441
+ //
2441
2442
  // {
2442
2443
  // "symbol": "BTCUSDT",
2443
2444
  // "bidPrice": "19255",
@@ -2488,6 +2489,7 @@ export default class bybit extends Exchange {
2488
2489
  'previousFundingRate': undefined,
2489
2490
  'previousFundingTimestamp': undefined,
2490
2491
  'previousFundingDatetime': undefined,
2492
+ 'interval': undefined,
2491
2493
  };
2492
2494
  }
2493
2495
  async fetchFundingRates(symbols = undefined, params = {}) {
@@ -2498,7 +2500,7 @@ export default class bybit extends Exchange {
2498
2500
  * @see https://bybit-exchange.github.io/docs/v5/market/tickers
2499
2501
  * @param {string[]} symbols unified symbols of the markets to fetch the funding rates for, all market funding rates are returned if not assigned
2500
2502
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2501
- * @returns {object} an array of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
2503
+ * @returns {object[]} a list of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
2502
2504
  */
2503
2505
  await this.loadMarkets();
2504
2506
  let market = undefined;
@@ -2558,18 +2560,10 @@ export default class bybit extends Exchange {
2558
2560
  // "time": 1663670053454
2559
2561
  // }
2560
2562
  //
2561
- let tickerList = this.safeValue(response, 'result', []);
2562
- const timestamp = this.safeInteger(response, 'time');
2563
- tickerList = this.safeValue(tickerList, 'list');
2564
- const fundingRates = {};
2565
- for (let i = 0; i < tickerList.length; i++) {
2566
- const rawTicker = tickerList[i];
2567
- rawTicker['timestamp'] = timestamp; // will be removed inside the parser
2568
- const ticker = this.parseFundingRate(tickerList[i], undefined);
2569
- const symbol = ticker['symbol'];
2570
- fundingRates[symbol] = ticker;
2571
- }
2572
- return this.filterByArray(fundingRates, 'symbol', symbols);
2563
+ const data = this.safeDict(response, 'result', {});
2564
+ const tickerList = this.safeList(data, 'list', []);
2565
+ const result = this.parseFundingRates(tickerList);
2566
+ return this.filterByArray(result, 'symbol', symbols);
2573
2567
  }
2574
2568
  async fetchFundingRateHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
2575
2569
  /**
@@ -3713,6 +3707,7 @@ export default class bybit extends Exchange {
3713
3707
  // 'orderIv': '0', // Implied volatility; parameters are passed according to the real value; for example, for 10%, 0.1 is passed
3714
3708
  };
3715
3709
  const hedged = this.safeBool(params, 'hedged', false);
3710
+ const reduceOnly = this.safeBool(params, 'reduceOnly');
3716
3711
  let triggerPrice = this.safeValue2(params, 'triggerPrice', 'stopPrice');
3717
3712
  const stopLossTriggerPrice = this.safeValue(params, 'stopLossPrice');
3718
3713
  const takeProfitTriggerPrice = this.safeValue(params, 'takeProfitPrice');
@@ -3912,6 +3907,10 @@ export default class bybit extends Exchange {
3912
3907
  }
3913
3908
  }
3914
3909
  if (!market['spot'] && hedged) {
3910
+ if (reduceOnly) {
3911
+ params = this.omit(params, 'reduceOnly');
3912
+ side = (side === 'buy') ? 'sell' : 'buy';
3913
+ }
3915
3914
  request['positionIdx'] = (side === 'buy') ? 1 : 2;
3916
3915
  }
3917
3916
  params = this.omit(params, ['stopPrice', 'timeInForce', 'stopLossPrice', 'takeProfitPrice', 'postOnly', 'clientOrderId', 'triggerPrice', 'stopLoss', 'takeProfit', 'trailingAmount', 'trailingTriggerPrice', 'hedged']);
@@ -6831,6 +6830,8 @@ export default class bybit extends Exchange {
6831
6830
  }
6832
6831
  const maintenanceMarginPercentage = Precise.stringDiv(maintenanceMarginString, notional);
6833
6832
  const marginRatio = Precise.stringDiv(maintenanceMarginString, collateralString, 4);
6833
+ const positionIdx = this.safeString(position, 'positionIdx');
6834
+ const hedged = (positionIdx !== undefined) && (positionIdx !== '0');
6834
6835
  return this.safePosition({
6835
6836
  'info': position,
6836
6837
  'id': undefined,
@@ -6859,6 +6860,7 @@ export default class bybit extends Exchange {
6859
6860
  'percentage': undefined,
6860
6861
  'stopLossPrice': this.safeNumber2(position, 'stop_loss', 'stopLoss'),
6861
6862
  'takeProfitPrice': this.safeNumber2(position, 'take_profit', 'takeProfit'),
6863
+ 'hedged': hedged,
6862
6864
  });
6863
6865
  }
6864
6866
  async fetchLeverage(symbol, params = {}) {
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/coinex.js';
2
- import type { Balances, Currency, FundingHistory, FundingRateHistory, Int, Market, OHLCV, Order, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, OrderRequest, TransferEntry, Leverage, Num, MarginModification, TradingFeeInterface, Currencies, TradingFees, Position, IsolatedBorrowRate, Dict, LeverageTiers, LeverageTier, int } from './base/types.js';
2
+ import type { Balances, Currency, FundingHistory, FundingRateHistory, Int, Market, OHLCV, Order, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, OrderRequest, TransferEntry, Leverage, Num, MarginModification, TradingFeeInterface, Currencies, TradingFees, Position, IsolatedBorrowRate, Dict, LeverageTiers, LeverageTier, int, FundingRate, FundingRates } from './base/types.js';
3
3
  /**
4
4
  * @class coinex
5
5
  * @augments Exchange
@@ -75,45 +75,10 @@ export default class coinex extends Exchange {
75
75
  addMargin(symbol: string, amount: number, params?: {}): Promise<MarginModification>;
76
76
  reduceMargin(symbol: string, amount: number, params?: {}): Promise<MarginModification>;
77
77
  fetchFundingHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingHistory[]>;
78
- fetchFundingRate(symbol: string, params?: {}): Promise<{
79
- info: any;
80
- symbol: string;
81
- markPrice: number;
82
- indexPrice: any;
83
- interestRate: any;
84
- estimatedSettlePrice: any;
85
- timestamp: any;
86
- datetime: any;
87
- fundingRate: number;
88
- fundingTimestamp: number;
89
- fundingDatetime: string;
90
- nextFundingRate: number;
91
- nextFundingTimestamp: number;
92
- nextFundingDatetime: string;
93
- previousFundingRate: any;
94
- previousFundingTimestamp: any;
95
- previousFundingDatetime: any;
96
- }>;
97
- parseFundingRate(contract: any, market?: Market): {
98
- info: any;
99
- symbol: string;
100
- markPrice: number;
101
- indexPrice: any;
102
- interestRate: any;
103
- estimatedSettlePrice: any;
104
- timestamp: any;
105
- datetime: any;
106
- fundingRate: number;
107
- fundingTimestamp: number;
108
- fundingDatetime: string;
109
- nextFundingRate: number;
110
- nextFundingTimestamp: number;
111
- nextFundingDatetime: string;
112
- previousFundingRate: any;
113
- previousFundingTimestamp: any;
114
- previousFundingDatetime: any;
115
- };
116
- fetchFundingRates(symbols?: Strings, params?: {}): Promise<any>;
78
+ fetchFundingRate(symbol: string, params?: {}): Promise<FundingRate>;
79
+ parseFundingRate(contract: any, market?: Market): FundingRate;
80
+ parseFundingInterval(interval: any): string;
81
+ fetchFundingRates(symbols?: Strings, params?: {}): Promise<FundingRates>;
117
82
  withdraw(code: string, amount: number, address: string, tag?: any, params?: {}): Promise<Transaction>;
118
83
  parseTransactionStatus(status: Str): string;
119
84
  fetchFundingRateHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingRateHistory[]>;
package/js/src/coinex.js CHANGED
@@ -4573,6 +4573,9 @@ export default class coinex extends Exchange {
4573
4573
  //
4574
4574
  const currentFundingTimestamp = this.safeInteger(contract, 'latest_funding_time');
4575
4575
  const futureFundingTimestamp = this.safeInteger(contract, 'next_funding_time');
4576
+ const fundingTimeString = this.safeString(contract, 'latest_funding_time');
4577
+ const nextFundingTimeString = this.safeString(contract, 'next_funding_time');
4578
+ const millisecondsInterval = Precise.stringSub(nextFundingTimeString, fundingTimeString);
4576
4579
  const marketId = this.safeString(contract, 'market');
4577
4580
  return {
4578
4581
  'info': contract,
@@ -4592,13 +4595,24 @@ export default class coinex extends Exchange {
4592
4595
  'previousFundingRate': undefined,
4593
4596
  'previousFundingTimestamp': undefined,
4594
4597
  'previousFundingDatetime': undefined,
4598
+ 'interval': this.parseFundingInterval(millisecondsInterval),
4595
4599
  };
4596
4600
  }
4601
+ parseFundingInterval(interval) {
4602
+ const intervals = {
4603
+ '3600000': '1h',
4604
+ '14400000': '4h',
4605
+ '28800000': '8h',
4606
+ '57600000': '16h',
4607
+ '86400000': '24h',
4608
+ };
4609
+ return this.safeString(intervals, interval, interval);
4610
+ }
4597
4611
  async fetchFundingRates(symbols = undefined, params = {}) {
4598
4612
  /**
4599
4613
  * @method
4600
4614
  * @name coinex#fetchFundingRates
4601
- * @description fetch the current funding rates
4615
+ * @description fetch the current funding rates for multiple markets
4602
4616
  * @see https://docs.coinex.com/api/v2/futures/market/http/list-market-funding-rate
4603
4617
  * @param {string[]} symbols unified market symbols
4604
4618
  * @param {object} [params] extra parameters specific to the exchange API endpoint
package/js/src/delta.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/delta.js';
2
- import type { Balances, Currency, Greeks, Int, Market, MarketInterface, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Position, Leverage, MarginMode, Num, Option, MarginModification, Currencies, Dict, int, LedgerEntry } from './base/types.js';
2
+ import type { Balances, Currency, Greeks, Int, Market, MarketInterface, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Position, Leverage, MarginMode, Num, Option, MarginModification, Currencies, Dict, int, LedgerEntry, FundingRate, FundingRates } from './base/types.js';
3
3
  /**
4
4
  * @class delta
5
5
  * @augments Exchange
@@ -60,45 +60,9 @@ export default class delta extends Exchange {
60
60
  network: string;
61
61
  info: any;
62
62
  };
63
- fetchFundingRate(symbol: string, params?: {}): Promise<{
64
- info: any;
65
- symbol: string;
66
- markPrice: number;
67
- indexPrice: number;
68
- interestRate: any;
69
- estimatedSettlePrice: any;
70
- timestamp: number;
71
- datetime: string;
72
- fundingRate: number;
73
- fundingTimestamp: any;
74
- fundingDatetime: any;
75
- nextFundingRate: any;
76
- nextFundingTimestamp: any;
77
- nextFundingDatetime: any;
78
- previousFundingRate: any;
79
- previousFundingTimestamp: any;
80
- previousFundingDatetime: any;
81
- }>;
82
- fetchFundingRates(symbols?: Strings, params?: {}): Promise<any>;
83
- parseFundingRate(contract: any, market?: Market): {
84
- info: any;
85
- symbol: string;
86
- markPrice: number;
87
- indexPrice: number;
88
- interestRate: any;
89
- estimatedSettlePrice: any;
90
- timestamp: number;
91
- datetime: string;
92
- fundingRate: number;
93
- fundingTimestamp: any;
94
- fundingDatetime: any;
95
- nextFundingRate: any;
96
- nextFundingTimestamp: any;
97
- nextFundingDatetime: any;
98
- previousFundingRate: any;
99
- previousFundingTimestamp: any;
100
- previousFundingDatetime: any;
101
- };
63
+ fetchFundingRate(symbol: string, params?: {}): Promise<FundingRate>;
64
+ fetchFundingRates(symbols?: Strings, params?: {}): Promise<FundingRates>;
65
+ parseFundingRate(contract: any, market?: Market): FundingRate;
102
66
  addMargin(symbol: string, amount: number, params?: {}): Promise<MarginModification>;
103
67
  reduceMargin(symbol: string, amount: number, params?: {}): Promise<MarginModification>;
104
68
  modifyMarginHelper(symbol: string, amount: any, type: any, params?: {}): Promise<MarginModification>;
package/js/src/delta.js CHANGED
@@ -2455,7 +2455,7 @@ export default class delta extends Exchange {
2455
2455
  * @see https://docs.delta.exchange/#get-tickers-for-products
2456
2456
  * @param {string[]|undefined} symbols list of unified market symbols
2457
2457
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2458
- * @returns {object} a dictionary of [funding rates structures]{@link https://docs.ccxt.com/#/?id=funding-rates-structure}, indexe by market symbols
2458
+ * @returns {object[]} a list of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rates-structure}, indexed by market symbols
2459
2459
  */
2460
2460
  await this.loadMarkets();
2461
2461
  symbols = this.marketSymbols(symbols);
@@ -2579,6 +2579,7 @@ export default class delta extends Exchange {
2579
2579
  'previousFundingRate': undefined,
2580
2580
  'previousFundingTimestamp': undefined,
2581
2581
  'previousFundingDatetime': undefined,
2582
+ 'interval': undefined,
2582
2583
  };
2583
2584
  }
2584
2585
  async addMargin(symbol, amount, params = {}) {
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/deribit.js';
2
- import type { Balances, Currency, FundingRateHistory, Greeks, Int, Liquidation, Market, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry, MarketInterface, Num, Account, Option, OptionChain, Currencies, TradingFees, Dict, int } from './base/types.js';
2
+ import type { Balances, Currency, FundingRateHistory, Greeks, Int, Liquidation, Market, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry, MarketInterface, Num, Account, Option, OptionChain, Currencies, TradingFees, Dict, int, FundingRate } from './base/types.js';
3
3
  /**
4
4
  * @class deribit
5
5
  * @augments Exchange
@@ -89,45 +89,9 @@ export default class deribit extends Exchange {
89
89
  networks: {};
90
90
  };
91
91
  fetchDepositWithdrawFees(codes?: Strings, params?: {}): Promise<any>;
92
- fetchFundingRate(symbol: string, params?: {}): Promise<{
93
- info: any;
94
- symbol: string;
95
- markPrice: any;
96
- indexPrice: number;
97
- interestRate: any;
98
- estimatedSettlePrice: any;
99
- timestamp: number;
100
- datetime: string;
101
- fundingRate: number;
102
- fundingTimestamp: any;
103
- fundingDatetime: any;
104
- nextFundingRate: any;
105
- nextFundingTimestamp: any;
106
- nextFundingDatetime: any;
107
- previousFundingRate: any;
108
- previousFundingTimestamp: any;
109
- previousFundingDatetime: any;
110
- }>;
92
+ fetchFundingRate(symbol: string, params?: {}): Promise<FundingRate>;
111
93
  fetchFundingRateHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingRateHistory[]>;
112
- parseFundingRate(contract: any, market?: Market): {
113
- info: any;
114
- symbol: string;
115
- markPrice: any;
116
- indexPrice: number;
117
- interestRate: any;
118
- estimatedSettlePrice: any;
119
- timestamp: number;
120
- datetime: string;
121
- fundingRate: number;
122
- fundingTimestamp: any;
123
- fundingDatetime: any;
124
- nextFundingRate: any;
125
- nextFundingTimestamp: any;
126
- nextFundingDatetime: any;
127
- previousFundingRate: any;
128
- previousFundingTimestamp: any;
129
- previousFundingDatetime: any;
130
- };
94
+ parseFundingRate(contract: any, market?: Market): FundingRate;
131
95
  fetchLiquidations(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Liquidation[]>;
132
96
  addPaginationCursorToResult(cursor: any, data: any): any;
133
97
  fetchMyLiquidations(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Liquidation[]>;
package/js/src/deribit.js CHANGED
@@ -3140,6 +3140,7 @@ export default class deribit extends Exchange {
3140
3140
  'previousFundingRate': undefined,
3141
3141
  'previousFundingTimestamp': undefined,
3142
3142
  'previousFundingDatetime': undefined,
3143
+ 'interval': '8h',
3143
3144
  };
3144
3145
  }
3145
3146
  async fetchLiquidations(symbol, since = undefined, limit = undefined, params = {}) {
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/digifinex.js';
2
- import type { FundingRateHistory, Int, OHLCV, Order, OrderSide, OrderType, OrderRequest, Trade, Balances, Str, Transaction, Ticker, OrderBook, Tickers, Strings, Market, Currency, TransferEntry, Num, MarginModification, TradingFeeInterface, Currencies, CrossBorrowRate, CrossBorrowRates, Dict, LeverageTier, LeverageTiers, int, LedgerEntry } from './base/types.js';
2
+ import type { FundingRateHistory, Int, OHLCV, Order, OrderSide, OrderType, OrderRequest, Trade, Balances, Str, Transaction, Ticker, OrderBook, Tickers, Strings, Market, Currency, TransferEntry, Num, MarginModification, TradingFeeInterface, Currencies, CrossBorrowRate, CrossBorrowRates, Dict, LeverageTier, LeverageTiers, int, LedgerEntry, FundingRate } from './base/types.js';
3
3
  /**
4
4
  * @class digifinex
5
5
  * @augments Exchange
@@ -84,26 +84,9 @@ export default class digifinex extends Exchange {
84
84
  info: any;
85
85
  };
86
86
  parseBorrowRates(info: any, codeKey: any): any;
87
- fetchFundingRate(symbol: string, params?: {}): Promise<any>;
88
- parseFundingRate(contract: any, market?: Market): {
89
- info: any;
90
- symbol: string;
91
- markPrice: any;
92
- indexPrice: any;
93
- interestRate: any;
94
- estimatedSettlePrice: any;
95
- timestamp: any;
96
- datetime: any;
97
- fundingRate: number;
98
- fundingTimestamp: number;
99
- fundingDatetime: string;
100
- nextFundingRate: string;
101
- nextFundingTimestamp: number;
102
- nextFundingDatetime: string;
103
- previousFundingRate: any;
104
- previousFundingTimestamp: any;
105
- previousFundingDatetime: any;
106
- };
87
+ fetchFundingRate(symbol: string, params?: {}): Promise<FundingRate>;
88
+ parseFundingRate(contract: any, market?: Market): FundingRate;
89
+ parseFundingInterval(interval: any): string;
107
90
  fetchFundingRateHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingRateHistory[]>;
108
91
  fetchTradingFee(symbol: string, params?: {}): Promise<TradingFeeInterface>;
109
92
  parseTradingFee(fee: Dict, market?: Market): TradingFeeInterface;