ccxt 4.4.9 → 4.4.11

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 (117) 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 +6 -9
  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 +6 -5
  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 +26 -3
  21. package/dist/cjs/src/hyperliquid.js +6 -1
  22. package/dist/cjs/src/kraken.js +41 -13
  23. package/dist/cjs/src/krakenfutures.js +3 -2
  24. package/dist/cjs/src/kucoinfutures.js +11 -0
  25. package/dist/cjs/src/mexc.js +12 -4
  26. package/dist/cjs/src/oceanex.js +83 -3
  27. package/dist/cjs/src/okx.js +15 -0
  28. package/dist/cjs/src/oxfun.js +4 -4
  29. package/dist/cjs/src/phemex.js +1 -0
  30. package/dist/cjs/src/poloniexfutures.js +11 -0
  31. package/dist/cjs/src/pro/deribit.js +122 -1
  32. package/dist/cjs/src/pro/exmo.js +31 -1
  33. package/dist/cjs/src/pro/gate.js +1 -1
  34. package/dist/cjs/src/pro/okx.js +1 -1
  35. package/dist/cjs/src/vertex.js +2 -1
  36. package/dist/cjs/src/whitebit.js +10 -9
  37. package/dist/cjs/src/woo.js +42 -17
  38. package/dist/cjs/src/woofipro.js +15 -2
  39. package/dist/cjs/src/xt.js +2 -0
  40. package/js/ccxt.d.ts +1 -1
  41. package/js/ccxt.js +1 -1
  42. package/js/src/abstract/binance.d.ts +1 -0
  43. package/js/src/abstract/binancecoinm.d.ts +1 -0
  44. package/js/src/abstract/binanceus.d.ts +1 -0
  45. package/js/src/abstract/binanceusdm.d.ts +1 -0
  46. package/js/src/abstract/oceanex.d.ts +5 -0
  47. package/js/src/ascendex.d.ts +3 -21
  48. package/js/src/ascendex.js +2 -1
  49. package/js/src/base/Exchange.d.ts +3 -3
  50. package/js/src/base/types.d.ts +1 -0
  51. package/js/src/binance.d.ts +4 -40
  52. package/js/src/binance.js +6 -9
  53. package/js/src/bingx.d.ts +4 -40
  54. package/js/src/bingx.js +19 -20
  55. package/js/src/bitfinex2.d.ts +3 -22
  56. package/js/src/bitfinex2.js +5 -16
  57. package/js/src/bitget.d.ts +3 -39
  58. package/js/src/bitget.js +6 -5
  59. package/js/src/bitmart.d.ts +3 -39
  60. package/js/src/bitmart.js +1 -0
  61. package/js/src/bitmex.d.ts +3 -21
  62. package/js/src/bitmex.js +4 -3
  63. package/js/src/blofin.d.ts +3 -39
  64. package/js/src/blofin.js +4 -13
  65. package/js/src/bybit.d.ts +3 -21
  66. package/js/src/bybit.js +16 -14
  67. package/js/src/coinex.d.ts +5 -40
  68. package/js/src/coinex.js +15 -1
  69. package/js/src/delta.d.ts +4 -40
  70. package/js/src/delta.js +2 -1
  71. package/js/src/deribit.d.ts +3 -39
  72. package/js/src/deribit.js +1 -0
  73. package/js/src/digifinex.d.ts +4 -21
  74. package/js/src/digifinex.js +15 -1
  75. package/js/src/gate.d.ts +6 -41
  76. package/js/src/gate.js +30 -9
  77. package/js/src/hashkey.d.ts +4 -40
  78. package/js/src/hashkey.js +2 -2
  79. package/js/src/hitbtc.d.ts +4 -40
  80. package/js/src/hitbtc.js +2 -1
  81. package/js/src/htx.d.ts +5 -40
  82. package/js/src/htx.js +26 -3
  83. package/js/src/hyperliquid.js +6 -1
  84. package/js/src/kraken.js +41 -13
  85. package/js/src/krakenfutures.d.ts +3 -21
  86. package/js/src/krakenfutures.js +3 -2
  87. package/js/src/kucoinfutures.d.ts +3 -20
  88. package/js/src/kucoinfutures.js +11 -0
  89. package/js/src/mexc.d.ts +3 -39
  90. package/js/src/mexc.js +12 -4
  91. package/js/src/oceanex.d.ts +9 -1
  92. package/js/src/oceanex.js +83 -3
  93. package/js/src/okx.d.ts +4 -39
  94. package/js/src/okx.js +16 -1
  95. package/js/src/oxfun.d.ts +3 -21
  96. package/js/src/oxfun.js +4 -4
  97. package/js/src/phemex.d.ts +3 -39
  98. package/js/src/phemex.js +1 -0
  99. package/js/src/poloniexfutures.d.ts +3 -20
  100. package/js/src/poloniexfutures.js +11 -0
  101. package/js/src/pro/deribit.d.ts +5 -1
  102. package/js/src/pro/deribit.js +122 -1
  103. package/js/src/pro/exmo.d.ts +2 -1
  104. package/js/src/pro/exmo.js +31 -1
  105. package/js/src/pro/gate.js +1 -1
  106. package/js/src/pro/okx.js +1 -1
  107. package/js/src/vertex.d.ts +4 -40
  108. package/js/src/vertex.js +2 -1
  109. package/js/src/whitebit.d.ts +4 -21
  110. package/js/src/whitebit.js +10 -9
  111. package/js/src/woo.d.ts +4 -40
  112. package/js/src/woo.js +42 -17
  113. package/js/src/woofipro.d.ts +5 -40
  114. package/js/src/woofipro.js +15 -2
  115. package/js/src/xt.d.ts +3 -39
  116. package/js/src/xt.js +2 -0
  117. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/hashkey.js';
2
- import type { Account, Balances, Currencies, Currency, Dict, FundingRateHistory, LastPrice, LastPrices, Leverage, LeverageTier, LeverageTiers, Int, Market, Num, OHLCV, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry, LedgerEntry } from './base/types.js';
2
+ import type { Account, Balances, Currencies, Currency, Dict, FundingRateHistory, LastPrice, LastPrices, Leverage, LeverageTier, LeverageTiers, Int, Market, Num, OHLCV, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry, LedgerEntry, FundingRate, FundingRates } from './base/types.js';
3
3
  /**
4
4
  * @class hashkey
5
5
  * @augments Exchange
@@ -99,45 +99,9 @@ export default class hashkey extends Exchange {
99
99
  parseOrderStatus(status: any): string;
100
100
  parseOrderTypeTimeInForceAndPostOnly(type: any, timeInForce: any): any[];
101
101
  parseOrderType(type: any): string;
102
- fetchFundingRate(symbol: string, params?: {}): Promise<{
103
- info: any;
104
- symbol: string;
105
- markPrice: any;
106
- indexPrice: any;
107
- interestRate: any;
108
- estimatedSettlePrice: any;
109
- timestamp: any;
110
- datetime: any;
111
- fundingRate: number;
112
- fundingTimestamp: any;
113
- fundingDatetime: any;
114
- nextFundingRate: any;
115
- nextFundingTimestamp: number;
116
- nextFundingDatetime: string;
117
- previousFundingRate: any;
118
- previousFundingTimestamp: any;
119
- previousFundingDatetime: any;
120
- }>;
121
- fetchFundingRates(symbols?: Strings, params?: {}): Promise<any>;
122
- parseFundingRate(contract: any, market?: Market): {
123
- info: any;
124
- symbol: string;
125
- markPrice: any;
126
- indexPrice: any;
127
- interestRate: any;
128
- estimatedSettlePrice: any;
129
- timestamp: any;
130
- datetime: any;
131
- fundingRate: number;
132
- fundingTimestamp: any;
133
- fundingDatetime: any;
134
- nextFundingRate: any;
135
- nextFundingTimestamp: number;
136
- nextFundingDatetime: string;
137
- previousFundingRate: any;
138
- previousFundingTimestamp: any;
139
- previousFundingDatetime: any;
140
- };
102
+ fetchFundingRate(symbol: string, params?: {}): Promise<FundingRate>;
103
+ fetchFundingRates(symbols?: Strings, params?: {}): Promise<FundingRates>;
104
+ parseFundingRate(contract: any, market?: Market): FundingRate;
141
105
  fetchFundingRateHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingRateHistory[]>;
142
106
  fetchPositions(symbols?: Strings, params?: {}): Promise<Position[]>;
143
107
  fetchPositionsForSymbol(symbol: string, params?: {}): Promise<Position[]>;
package/js/src/hashkey.js CHANGED
@@ -3742,7 +3742,7 @@ export default class hashkey extends Exchange {
3742
3742
  * @see https://hashkeyglobal-apidoc.readme.io/reference/get-futures-funding-rate
3743
3743
  * @param {string[]|undefined} symbols list of unified market symbols
3744
3744
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3745
- * @returns {object} a dictionary of [funding rates structures]{@link https://docs.ccxt.com/#/?id=funding-rates-structure}, indexe by market symbols
3745
+ * @returns {object[]} a list of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rates-structure}, indexed by market symbols
3746
3746
  */
3747
3747
  await this.loadMarkets();
3748
3748
  symbols = this.marketSymbols(symbols);
@@ -3761,7 +3761,6 @@ export default class hashkey extends Exchange {
3761
3761
  }
3762
3762
  parseFundingRate(contract, market = undefined) {
3763
3763
  //
3764
- // fetchFundingRates
3765
3764
  // {
3766
3765
  // "symbol": "ETHUSDT-PERPETUAL",
3767
3766
  // "rate": "0.0001",
@@ -3790,6 +3789,7 @@ export default class hashkey extends Exchange {
3790
3789
  'previousFundingRate': undefined,
3791
3790
  'previousFundingTimestamp': undefined,
3792
3791
  'previousFundingDatetime': undefined,
3792
+ 'interval': undefined,
3793
3793
  };
3794
3794
  }
3795
3795
  async fetchFundingRateHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/hitbtc.js';
2
- import type { TransferEntry, Int, OrderSide, OrderType, FundingRateHistory, OHLCV, Ticker, Order, OrderBook, Dict, Position, Str, Trade, Balances, Transaction, MarginMode, Tickers, Strings, Market, Currency, MarginModes, Leverage, Num, MarginModification, TradingFeeInterface, Currencies, TradingFees, Dictionary, int } from './base/types.js';
2
+ import type { TransferEntry, Int, OrderSide, OrderType, FundingRateHistory, OHLCV, Ticker, Order, OrderBook, Dict, Position, Str, Trade, Balances, Transaction, MarginMode, Tickers, Strings, Market, Currency, MarginModes, Leverage, Num, MarginModification, TradingFeeInterface, Currencies, TradingFees, Dictionary, int, FundingRate, FundingRates } from './base/types.js';
3
3
  /**
4
4
  * @class hitbtc
5
5
  * @augments Exchange
@@ -67,51 +67,15 @@ export default class hitbtc extends Exchange {
67
67
  info: any;
68
68
  }>;
69
69
  withdraw(code: string, amount: number, address: string, tag?: any, params?: {}): Promise<Transaction>;
70
- fetchFundingRates(symbols?: Strings, params?: {}): Promise<any>;
70
+ fetchFundingRates(symbols?: Strings, params?: {}): Promise<FundingRates>;
71
71
  fetchFundingRateHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingRateHistory[]>;
72
72
  fetchPositions(symbols?: Strings, params?: {}): Promise<Position[]>;
73
73
  fetchPosition(symbol: string, params?: {}): Promise<Position>;
74
74
  parsePosition(position: Dict, market?: Market): Position;
75
75
  parseOpenInterest(interest: any, market?: Market): import("./base/types.js").OpenInterest;
76
76
  fetchOpenInterest(symbol: string, params?: {}): Promise<import("./base/types.js").OpenInterest>;
77
- fetchFundingRate(symbol: string, params?: {}): Promise<{
78
- info: any;
79
- symbol: string;
80
- markPrice: number;
81
- indexPrice: number;
82
- interestRate: number;
83
- estimatedSettlePrice: any;
84
- timestamp: number;
85
- datetime: string;
86
- fundingRate: number;
87
- fundingTimestamp: number;
88
- fundingDatetime: string;
89
- nextFundingRate: number;
90
- nextFundingTimestamp: any;
91
- nextFundingDatetime: any;
92
- previousFundingRate: any;
93
- previousFundingTimestamp: any;
94
- previousFundingDatetime: any;
95
- }>;
96
- parseFundingRate(contract: any, market?: Market): {
97
- info: any;
98
- symbol: string;
99
- markPrice: number;
100
- indexPrice: number;
101
- interestRate: number;
102
- estimatedSettlePrice: any;
103
- timestamp: number;
104
- datetime: string;
105
- fundingRate: number;
106
- fundingTimestamp: number;
107
- fundingDatetime: string;
108
- nextFundingRate: number;
109
- nextFundingTimestamp: any;
110
- nextFundingDatetime: any;
111
- previousFundingRate: any;
112
- previousFundingTimestamp: any;
113
- previousFundingDatetime: any;
114
- };
77
+ fetchFundingRate(symbol: string, params?: {}): Promise<FundingRate>;
78
+ parseFundingRate(contract: any, market?: Market): FundingRate;
115
79
  modifyMarginHelper(symbol: string, amount: any, type: any, params?: {}): Promise<MarginModification>;
116
80
  parseMarginModification(data: Dict, market?: Market): MarginModification;
117
81
  reduceMargin(symbol: string, amount: number, params?: {}): Promise<MarginModification>;
package/js/src/hitbtc.js CHANGED
@@ -2741,7 +2741,7 @@ export default class hitbtc extends Exchange {
2741
2741
  * @see https://api.hitbtc.com/#futures-info
2742
2742
  * @param {string[]} symbols unified symbols of the markets to fetch the funding rates for, all market funding rates are returned if not assigned
2743
2743
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2744
- * @returns {object} an array of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
2744
+ * @returns {object[]} a list of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
2745
2745
  */
2746
2746
  await this.loadMarkets();
2747
2747
  let market = undefined;
@@ -3237,6 +3237,7 @@ export default class hitbtc extends Exchange {
3237
3237
  'previousFundingRate': undefined,
3238
3238
  'previousFundingTimestamp': undefined,
3239
3239
  'previousFundingDatetime': undefined,
3240
+ 'interval': undefined,
3240
3241
  };
3241
3242
  }
3242
3243
  async modifyMarginHelper(symbol, amount, type, params = {}) {
package/js/src/htx.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/htx.js';
2
- import type { TransferEntry, Int, OrderSide, OrderType, Order, OHLCV, Trade, FundingRateHistory, Balances, Str, Dict, Transaction, Ticker, OrderBook, Tickers, OrderRequest, Strings, Market, Currency, Num, Account, TradingFeeInterface, Currencies, IsolatedBorrowRates, IsolatedBorrowRate, LeverageTiers, LeverageTier, int, LedgerEntry } from './base/types.js';
2
+ import type { TransferEntry, Int, OrderSide, OrderType, Order, OHLCV, Trade, FundingRateHistory, Balances, Str, Dict, Transaction, Ticker, OrderBook, Tickers, OrderRequest, Strings, Market, Currency, Num, Account, TradingFeeInterface, Currencies, IsolatedBorrowRates, IsolatedBorrowRate, LeverageTiers, LeverageTier, int, LedgerEntry, FundingRate, FundingRates } from './base/types.js';
3
3
  /**
4
4
  * @class huobi
5
5
  * @augments Exchange
@@ -115,45 +115,10 @@ export default class htx extends Exchange {
115
115
  fetchIsolatedBorrowRates(params?: {}): Promise<IsolatedBorrowRates>;
116
116
  parseIsolatedBorrowRate(info: Dict, market?: Market): IsolatedBorrowRate;
117
117
  fetchFundingRateHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingRateHistory[]>;
118
- parseFundingRate(contract: any, market?: Market): {
119
- info: any;
120
- symbol: string;
121
- markPrice: any;
122
- indexPrice: any;
123
- interestRate: any;
124
- estimatedSettlePrice: any;
125
- timestamp: any;
126
- datetime: any;
127
- fundingRate: number;
128
- fundingTimestamp: number;
129
- fundingDatetime: string;
130
- nextFundingRate: number;
131
- nextFundingTimestamp: number;
132
- nextFundingDatetime: string;
133
- previousFundingRate: any;
134
- previousFundingTimestamp: any;
135
- previousFundingDatetime: any;
136
- };
137
- fetchFundingRate(symbol: string, params?: {}): Promise<{
138
- info: any;
139
- symbol: string;
140
- markPrice: any;
141
- indexPrice: any;
142
- interestRate: any;
143
- estimatedSettlePrice: any;
144
- timestamp: any;
145
- datetime: any;
146
- fundingRate: number;
147
- fundingTimestamp: number;
148
- fundingDatetime: string;
149
- nextFundingRate: number;
150
- nextFundingTimestamp: number;
151
- nextFundingDatetime: string;
152
- previousFundingRate: any;
153
- previousFundingTimestamp: any;
154
- previousFundingDatetime: any;
155
- }>;
156
- fetchFundingRates(symbols?: Strings, params?: {}): Promise<any>;
118
+ parseFundingRate(contract: any, market?: Market): FundingRate;
119
+ parseFundingInterval(interval: any): string;
120
+ fetchFundingRate(symbol: string, params?: {}): Promise<FundingRate>;
121
+ fetchFundingRates(symbols?: Strings, params?: {}): Promise<FundingRates>;
157
122
  fetchBorrowInterest(code?: Str, symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<any>;
158
123
  parseBorrowInterest(info: Dict, market?: Market): {
159
124
  account: string;
package/js/src/htx.js CHANGED
@@ -187,7 +187,7 @@ export default class htx extends Exchange {
187
187
  },
188
188
  'www': 'https://www.huobi.com',
189
189
  'referral': {
190
- 'url': 'https://www.huobi.com/en-us/v/register/double-invite/?inviter_id=11343840&invite_code=6rmm2223',
190
+ 'url': 'https://www.htx.com.vc/invite/en-us/1h?invite_code=6rmm2223',
191
191
  'discount': 0.15,
192
192
  },
193
193
  'doc': [
@@ -1221,6 +1221,7 @@ export default class htx extends Exchange {
1221
1221
  // https://github.com/ccxt/ccxt/issues/6081
1222
1222
  // https://github.com/ccxt/ccxt/issues/3365
1223
1223
  // https://github.com/ccxt/ccxt/issues/2873
1224
+ 'NGL': 'GFNGL',
1224
1225
  'GET': 'THEMIS',
1225
1226
  'GTC': 'GAMECOM',
1226
1227
  'HIT': 'HITCHAIN',
@@ -1231,7 +1232,8 @@ export default class htx extends Exchange {
1231
1232
  'PNT': 'PENTA',
1232
1233
  'SBTC': 'SUPERBITCOIN',
1233
1234
  'SOUL': 'SOULSAVER',
1234
- 'BIFI': 'BITCOINFILE', // conflict with Beefy.Finance https://github.com/ccxt/ccxt/issues/8706
1235
+ 'BIFI': 'BITCOINFILE',
1236
+ 'FUD': 'FTX Users\' Debt',
1235
1237
  },
1236
1238
  });
1237
1239
  }
@@ -7000,6 +7002,9 @@ export default class htx extends Exchange {
7000
7002
  const nextFundingRate = this.safeNumber(contract, 'estimated_rate');
7001
7003
  const fundingTimestamp = this.safeInteger(contract, 'funding_time');
7002
7004
  const nextFundingTimestamp = this.safeInteger(contract, 'next_funding_time');
7005
+ const fundingTimeString = this.safeString(contract, 'funding_time');
7006
+ const nextFundingTimeString = this.safeString(contract, 'next_funding_time');
7007
+ const millisecondsInterval = Precise.stringSub(nextFundingTimeString, fundingTimeString);
7003
7008
  const marketId = this.safeString(contract, 'contract_code');
7004
7009
  const symbol = this.safeSymbol(marketId, market);
7005
7010
  return {
@@ -7020,8 +7025,19 @@ export default class htx extends Exchange {
7020
7025
  'previousFundingRate': undefined,
7021
7026
  'previousFundingTimestamp': undefined,
7022
7027
  'previousFundingDatetime': undefined,
7028
+ 'interval': this.parseFundingInterval(millisecondsInterval),
7023
7029
  };
7024
7030
  }
7031
+ parseFundingInterval(interval) {
7032
+ const intervals = {
7033
+ '3600000': '1h',
7034
+ '14400000': '4h',
7035
+ '28800000': '8h',
7036
+ '57600000': '16h',
7037
+ '86400000': '24h',
7038
+ };
7039
+ return this.safeString(intervals, interval, interval);
7040
+ }
7025
7041
  async fetchFundingRate(symbol, params = {}) {
7026
7042
  /**
7027
7043
  * @method
@@ -7071,7 +7087,7 @@ export default class htx extends Exchange {
7071
7087
  * @description fetch the funding rate for multiple markets
7072
7088
  * @param {string[]|undefined} symbols list of unified market symbols
7073
7089
  * @param {object} [params] extra parameters specific to the exchange API endpoint
7074
- * @returns {object} a dictionary of [funding rates structures]{@link https://docs.ccxt.com/#/?id=funding-rates-structure}, indexe by market symbols
7090
+ * @returns {object[]} a list of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rates-structure}, indexed by market symbols
7075
7091
  */
7076
7092
  await this.loadMarkets();
7077
7093
  symbols = this.marketSymbols(symbols);
@@ -7495,6 +7511,10 @@ export default class htx extends Exchange {
7495
7511
  * @method
7496
7512
  * @name htx#setLeverage
7497
7513
  * @description set the level of leverage for a market
7514
+ * @see https://huobiapi.github.io/docs/usdt_swap/v1/en/#isolated-switch-leverage
7515
+ * @see https://huobiapi.github.io/docs/usdt_swap/v1/en/#cross-switch-leverage
7516
+ * @see https://huobiapi.github.io/docs/coin_margined_swap/v1/en/#switch-leverage
7517
+ * @see https://huobiapi.github.io/docs/dm/v1/en/#switch-leverage // Coin-m futures
7498
7518
  * @param {float} leverage the rate of leverage
7499
7519
  * @param {string} symbol unified market symbol
7500
7520
  * @param {object} [params] extra parameters specific to the exchange API endpoint
@@ -8838,6 +8858,9 @@ export default class htx extends Exchange {
8838
8858
  * @method
8839
8859
  * @name htx#fetchSettlementHistory
8840
8860
  * @description Fetches historical settlement records
8861
+ * @see https://huobiapi.github.io/docs/dm/v1/en/#query-historical-settlement-records-of-the-platform-interface
8862
+ * @see https://huobiapi.github.io/docs/coin_margined_swap/v1/en/#query-historical-settlement-records-of-the-platform-interface
8863
+ * @see https://huobiapi.github.io/docs/usdt_swap/v1/en/#general-query-historical-settlement-records-of-the-platform-interface
8841
8864
  * @param {string} symbol unified symbol of the market to fetch the settlement history for
8842
8865
  * @param {int} [since] timestamp in ms, value range = current time - 90 days,default = current time - 90 days
8843
8866
  * @param {int} [limit] page items, default 20, shall not exceed 50
@@ -2038,6 +2038,7 @@ export default class hyperliquid extends Exchange {
2038
2038
  // "crossed": true,
2039
2039
  // "dir": "Close Long",
2040
2040
  // "fee": "0.050062",
2041
+ // "feeToken": "USDC",
2041
2042
  // "hash": "0x09d77c96791e98b5775a04092584ab010d009445119c71e4005c0d634ea322bc",
2042
2043
  // "liquidationMarkPx": null,
2043
2044
  // "oid": 3929354691,
@@ -2097,7 +2098,11 @@ export default class hyperliquid extends Exchange {
2097
2098
  'price': price,
2098
2099
  'amount': amount,
2099
2100
  'cost': undefined,
2100
- 'fee': { 'cost': fee, 'currency': 'USDC' },
2101
+ 'fee': {
2102
+ 'cost': fee,
2103
+ 'currency': this.safeString(trade, 'feeToken'),
2104
+ 'rate': undefined,
2105
+ },
2101
2106
  }, market);
2102
2107
  }
2103
2108
  async fetchPosition(symbol, params = {}) {
package/js/src/kraken.js CHANGED
@@ -51,6 +51,7 @@ export default class kraken extends Exchange {
51
51
  'createStopMarketOrder': true,
52
52
  'createStopOrder': true,
53
53
  'createTrailingAmountOrder': true,
54
+ 'createTrailingPercentOrder': true,
54
55
  'editOrder': true,
55
56
  'fetchBalance': true,
56
57
  'fetchBorrowInterest': false,
@@ -441,7 +442,9 @@ export default class kraken extends Exchange {
441
442
  'EGeneral:Internal error': ExchangeNotAvailable,
442
443
  'EGeneral:Temporary lockout': DDoSProtection,
443
444
  'EGeneral:Permission denied': PermissionDenied,
445
+ 'EGeneral:Invalid arguments:price': InvalidOrder,
444
446
  'EOrder:Unknown order': InvalidOrder,
447
+ 'EOrder:Invalid price:Invalid price argument': InvalidOrder,
445
448
  'EOrder:Order minimum not met': InvalidOrder,
446
449
  'EGeneral:Invalid arguments': BadRequest,
447
450
  'ESession:Invalid session': AuthenticationError,
@@ -1453,8 +1456,8 @@ export default class kraken extends Exchange {
1453
1456
  /**
1454
1457
  * @method
1455
1458
  * @name kraken#createOrder
1456
- * @see https://docs.kraken.com/rest/#tag/Spot-Trading/operation/addOrder
1457
1459
  * @description create a trade order
1460
+ * @see https://docs.kraken.com/api/docs/rest-api/add-order
1458
1461
  * @param {string} symbol unified symbol of the market to create an order in
1459
1462
  * @param {string} type 'market' or 'limit'
1460
1463
  * @param {string} side 'buy' or 'sell'
@@ -1466,7 +1469,9 @@ export default class kraken extends Exchange {
1466
1469
  * @param {float} [params.stopLossPrice] *margin only* the price that a stop loss order is triggered at
1467
1470
  * @param {float} [params.takeProfitPrice] *margin only* the price that a take profit order is triggered at
1468
1471
  * @param {string} [params.trailingAmount] *margin only* the quote amount to trail away from the current market price
1472
+ * @param {string} [params.trailingPercent] *margin only* the percent to trail away from the current market price
1469
1473
  * @param {string} [params.trailingLimitAmount] *margin only* the quote amount away from the trailingAmount
1474
+ * @param {string} [params.trailingLimitPercent] *margin only* the percent away from the trailingAmount
1470
1475
  * @param {string} [params.offset] *margin only* '+' or '-' whether you want the trailingLimitAmount value to be positive or negative, default is negative '-'
1471
1476
  * @param {string} [params.trigger] *margin only* the activation price type, 'last' or 'index', default is 'last'
1472
1477
  * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
@@ -1800,8 +1805,11 @@ export default class kraken extends Exchange {
1800
1805
  const isTakeProfitTriggerOrder = takeProfitTriggerPrice !== undefined;
1801
1806
  const isStopLossOrTakeProfitTrigger = isStopLossTriggerOrder || isTakeProfitTriggerOrder;
1802
1807
  const trailingAmount = this.safeString(params, 'trailingAmount');
1808
+ const trailingPercent = this.safeString(params, 'trailingPercent');
1803
1809
  const trailingLimitAmount = this.safeString(params, 'trailingLimitAmount');
1810
+ const trailingLimitPercent = this.safeString(params, 'trailingLimitPercent');
1804
1811
  const isTrailingAmountOrder = trailingAmount !== undefined;
1812
+ const isTrailingPercentOrder = trailingPercent !== undefined;
1805
1813
  const isLimitOrder = type.endsWith('limit'); // supporting limit, stop-loss-limit, take-profit-limit, etc
1806
1814
  const isMarketOrder = type === 'market';
1807
1815
  const cost = this.safeString(params, 'cost');
@@ -1845,20 +1853,36 @@ export default class kraken extends Exchange {
1845
1853
  request['price2'] = this.priceToPrecision(symbol, price);
1846
1854
  }
1847
1855
  }
1848
- else if (isTrailingAmountOrder) {
1856
+ else if (isTrailingAmountOrder || isTrailingPercentOrder) {
1857
+ let trailingPercentString = undefined;
1858
+ if (isTrailingPercentOrder) {
1859
+ trailingPercentString = (trailingPercent.endsWith('%')) ? trailingPercent : '+' + (this.numberToString(trailingPercent) + '%');
1860
+ }
1861
+ const trailingAmountString = (trailingAmount !== undefined) ? '+' + trailingAmount : undefined; // must use + for this
1862
+ const offset = this.safeString(params, 'offset', '-'); // can use + or - for this
1863
+ const trailingLimitAmountString = (trailingLimitAmount !== undefined) ? offset + this.numberToString(trailingLimitAmount) : undefined;
1849
1864
  const trailingActivationPriceType = this.safeString(params, 'trigger', 'last');
1850
- const trailingAmountString = '+' + trailingAmount;
1851
1865
  request['trigger'] = trailingActivationPriceType;
1852
- if (isLimitOrder || (trailingLimitAmount !== undefined)) {
1853
- const offset = this.safeString(params, 'offset', '-');
1854
- const trailingLimitAmountString = offset + this.numberToString(trailingLimitAmount);
1855
- request['price'] = trailingAmountString;
1856
- request['price2'] = trailingLimitAmountString;
1866
+ if (isLimitOrder || (trailingLimitAmount !== undefined) || (trailingLimitPercent !== undefined)) {
1857
1867
  request['ordertype'] = 'trailing-stop-limit';
1868
+ if (trailingLimitPercent !== undefined) {
1869
+ const trailingLimitPercentString = (trailingLimitPercent.endsWith('%')) ? trailingLimitPercent : (this.numberToString(trailingLimitPercent) + '%');
1870
+ request['price'] = trailingPercentString;
1871
+ request['price2'] = trailingLimitPercentString;
1872
+ }
1873
+ else if (trailingLimitAmount !== undefined) {
1874
+ request['price'] = trailingAmountString;
1875
+ request['price2'] = trailingLimitAmountString;
1876
+ }
1858
1877
  }
1859
1878
  else {
1860
- request['price'] = trailingAmountString;
1861
1879
  request['ordertype'] = 'trailing-stop';
1880
+ if (trailingPercent !== undefined) {
1881
+ request['price'] = trailingPercentString;
1882
+ }
1883
+ else {
1884
+ request['price'] = trailingAmountString;
1885
+ }
1862
1886
  }
1863
1887
  }
1864
1888
  if (reduceOnly) {
@@ -1896,7 +1920,7 @@ export default class kraken extends Exchange {
1896
1920
  if ((flags !== undefined) && !('oflags' in request)) {
1897
1921
  request['oflags'] = flags;
1898
1922
  }
1899
- params = this.omit(params, ['timeInForce', 'reduceOnly', 'stopLossPrice', 'takeProfitPrice', 'trailingAmount', 'trailingLimitAmount', 'offset']);
1923
+ params = this.omit(params, ['timeInForce', 'reduceOnly', 'stopLossPrice', 'takeProfitPrice', 'trailingAmount', 'trailingPercent', 'trailingLimitAmount', 'trailingLimitPercent', 'offset']);
1900
1924
  return [request, params];
1901
1925
  }
1902
1926
  async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
@@ -3118,11 +3142,16 @@ export default class kraken extends Exchange {
3118
3142
  }
3119
3143
  }
3120
3144
  else if (api === 'private') {
3145
+ const price = this.safeString(params, 'price');
3146
+ let isTriggerPercent = false;
3147
+ if (price !== undefined) {
3148
+ isTriggerPercent = (price.endsWith('%')) ? true : false;
3149
+ }
3121
3150
  const isCancelOrderBatch = (path === 'CancelOrderBatch');
3122
3151
  this.checkRequiredCredentials();
3123
3152
  const nonce = this.nonce().toString();
3124
3153
  // urlencodeNested is used to address https://github.com/ccxt/ccxt/issues/12872
3125
- if (isCancelOrderBatch) {
3154
+ if (isCancelOrderBatch || isTriggerPercent) {
3126
3155
  body = this.json(this.extend({ 'nonce': nonce }, params));
3127
3156
  }
3128
3157
  else {
@@ -3137,9 +3166,8 @@ export default class kraken extends Exchange {
3137
3166
  headers = {
3138
3167
  'API-Key': this.apiKey,
3139
3168
  'API-Sign': signature,
3140
- // 'Content-Type': 'application/x-www-form-urlencoded',
3141
3169
  };
3142
- if (isCancelOrderBatch) {
3170
+ if (isCancelOrderBatch || isTriggerPercent) {
3143
3171
  headers['Content-Type'] = 'application/json';
3144
3172
  }
3145
3173
  else {
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/krakenfutures.js';
2
- import type { TransferEntry, Int, OrderSide, OrderType, OHLCV, Trade, FundingRateHistory, OrderRequest, Order, Balances, Str, Dict, Ticker, OrderBook, Tickers, Strings, Market, Currency, Leverage, Leverages, Num, LeverageTier, LeverageTiers, int } from './base/types.js';
2
+ import type { TransferEntry, Int, OrderSide, OrderType, OHLCV, Trade, FundingRateHistory, OrderRequest, Order, Balances, Str, Dict, Ticker, OrderBook, Tickers, Strings, Market, Currency, Leverage, Leverages, Num, LeverageTier, LeverageTiers, int, FundingRate, FundingRates } from './base/types.js';
3
3
  /**
4
4
  * @class krakenfutures
5
5
  * @augments Exchange
@@ -32,26 +32,8 @@ export default class krakenfutures extends Exchange {
32
32
  fetchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
33
33
  fetchBalance(params?: {}): Promise<Balances>;
34
34
  parseBalance(response: any): Balances;
35
- fetchFundingRates(symbols?: Strings, params?: {}): Promise<any>;
36
- parseFundingRate(ticker: any, market?: Market): {
37
- info: any;
38
- symbol: string;
39
- markPrice: number;
40
- indexPrice: number;
41
- interestRate: any;
42
- estimatedSettlePrice: any;
43
- timestamp: number;
44
- datetime: string;
45
- fundingRate: number;
46
- fundingTimestamp: any;
47
- fundingDatetime: any;
48
- nextFundingRate: number;
49
- nextFundingTimestamp: any;
50
- nextFundingDatetime: any;
51
- previousFundingRate: any;
52
- previousFundingTimestamp: any;
53
- previousFundingDatetime: any;
54
- };
35
+ fetchFundingRates(symbols?: Strings, params?: {}): Promise<FundingRates>;
36
+ parseFundingRate(ticker: any, market?: Market): FundingRate;
55
37
  fetchFundingRateHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingRateHistory[]>;
56
38
  fetchPositions(symbols?: Strings, params?: {}): Promise<import("./base/types.js").Position[]>;
57
39
  parsePositions(response: any, symbols?: Strings, params?: {}): any[];
@@ -2165,8 +2165,8 @@ export default class krakenfutures extends Exchange {
2165
2165
  /**
2166
2166
  * @method
2167
2167
  * @name krakenfutures#fetchFundingRates
2168
+ * @description fetch the current funding rates for multiple markets
2168
2169
  * @see https://docs.futures.kraken.com/#http-api-trading-v3-api-market-data-get-tickers
2169
- * @description fetch the current funding rates
2170
2170
  * @param {string[]} symbols unified market symbols
2171
2171
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2172
2172
  * @returns {Order[]} an array of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
@@ -2174,7 +2174,7 @@ export default class krakenfutures extends Exchange {
2174
2174
  await this.loadMarkets();
2175
2175
  const marketIds = this.marketIds(symbols);
2176
2176
  const response = await this.publicGetTickers(params);
2177
- const tickers = this.safeValue(response, 'tickers');
2177
+ const tickers = this.safeList(response, 'tickers', []);
2178
2178
  const fundingRates = [];
2179
2179
  for (let i = 0; i < tickers.length; i++) {
2180
2180
  const entry = tickers[i];
@@ -2244,6 +2244,7 @@ export default class krakenfutures extends Exchange {
2244
2244
  'previousFundingRate': undefined,
2245
2245
  'previousFundingTimestamp': undefined,
2246
2246
  'previousFundingDatetime': undefined,
2247
+ 'interval': undefined,
2247
2248
  };
2248
2249
  }
2249
2250
  async fetchFundingRateHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -1,5 +1,5 @@
1
1
  import kucoin from './abstract/kucoinfutures.js';
2
- import type { TransferEntry, Int, OrderSide, OrderType, OHLCV, Order, Trade, OrderRequest, FundingHistory, Balances, Str, Ticker, Tickers, OrderBook, Transaction, Strings, Market, Currency, Num, MarginModification, TradingFeeInterface, Dict, LeverageTier, MarginMode, Leverage } from './base/types.js';
2
+ import type { TransferEntry, Int, OrderSide, OrderType, OHLCV, Order, Trade, OrderRequest, FundingHistory, Balances, Str, Ticker, Tickers, OrderBook, Transaction, Strings, Market, Currency, Num, MarginModification, TradingFeeInterface, Dict, LeverageTier, MarginMode, Leverage, FundingRate } from './base/types.js';
3
3
  /**
4
4
  * @class kucoinfutures
5
5
  * @augments Exchange
@@ -46,25 +46,8 @@ export default class kucoinfutures extends kucoin {
46
46
  fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
47
47
  fetchOrder(id?: Str, symbol?: Str, params?: {}): Promise<Order>;
48
48
  parseOrder(order: Dict, market?: Market): Order;
49
- fetchFundingRate(symbol: string, params?: {}): Promise<{
50
- info: any;
51
- symbol: string;
52
- markPrice: any;
53
- indexPrice: any;
54
- interestRate: any;
55
- estimatedSettlePrice: any;
56
- timestamp: any;
57
- datetime: any;
58
- fundingRate: number;
59
- fundingTimestamp: number;
60
- fundingDatetime: string;
61
- nextFundingRate: number;
62
- nextFundingTimestamp: any;
63
- nextFundingDatetime: any;
64
- previousFundingRate: any;
65
- previousFundingTimestamp: any;
66
- previousFundingDatetime: any;
67
- }>;
49
+ fetchFundingRate(symbol: string, params?: {}): Promise<FundingRate>;
50
+ parseFundingInterval(interval: any): string;
68
51
  parseBalance(response: any): Balances;
69
52
  fetchBalance(params?: {}): Promise<Balances>;
70
53
  transfer(code: string, amount: number, fromAccount: string, toAccount: string, params?: {}): Promise<TransferEntry>;
@@ -2204,8 +2204,19 @@ export default class kucoinfutures extends kucoin {
2204
2204
  'previousFundingRate': undefined,
2205
2205
  'previousFundingTimestamp': undefined,
2206
2206
  'previousFundingDatetime': undefined,
2207
+ 'interval': this.parseFundingInterval(this.safeString(data, 'granularity')),
2207
2208
  };
2208
2209
  }
2210
+ parseFundingInterval(interval) {
2211
+ const intervals = {
2212
+ '3600000': '1h',
2213
+ '14400000': '4h',
2214
+ '28800000': '8h',
2215
+ '57600000': '16h',
2216
+ '86400000': '24h',
2217
+ };
2218
+ return this.safeString(intervals, interval, interval);
2219
+ }
2209
2220
  parseBalance(response) {
2210
2221
  const result = {
2211
2222
  'info': response,
package/js/src/mexc.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/mexc.js';
2
- import type { TransferEntry, IndexType, Int, OrderSide, Balances, OrderType, OHLCV, FundingRateHistory, Position, OrderBook, OrderRequest, FundingHistory, Order, Str, Trade, Transaction, Ticker, Tickers, Strings, Market, Currency, Leverage, Num, Account, MarginModification, Currencies, TradingFees, Dict, LeverageTier, LeverageTiers, int } from './base/types.js';
2
+ import type { TransferEntry, IndexType, Int, OrderSide, Balances, OrderType, OHLCV, FundingRateHistory, Position, OrderBook, OrderRequest, FundingHistory, Order, Str, Trade, Transaction, Ticker, Tickers, Strings, Market, Currency, Leverage, Num, Account, MarginModification, Currencies, TradingFees, Dict, LeverageTier, LeverageTiers, int, FundingRate } from './base/types.js';
3
3
  /**
4
4
  * @class mexc
5
5
  * @augments Exchange
@@ -64,44 +64,8 @@ export default class mexc extends Exchange {
64
64
  addMargin(symbol: string, amount: number, params?: {}): Promise<MarginModification>;
65
65
  setLeverage(leverage: Int, symbol?: Str, params?: {}): Promise<any>;
66
66
  fetchFundingHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingHistory[]>;
67
- parseFundingRate(contract: any, market?: Market): {
68
- info: any;
69
- symbol: string;
70
- markPrice: any;
71
- indexPrice: any;
72
- interestRate: any;
73
- estimatedSettlePrice: any;
74
- timestamp: number;
75
- datetime: string;
76
- fundingRate: number;
77
- fundingTimestamp: number;
78
- fundingDatetime: string;
79
- nextFundingRate: any;
80
- nextFundingTimestamp: any;
81
- nextFundingDatetime: any;
82
- previousFundingRate: any;
83
- previousFundingTimestamp: any;
84
- previousFundingDatetime: any;
85
- };
86
- fetchFundingRate(symbol: string, params?: {}): Promise<{
87
- info: any;
88
- symbol: string;
89
- markPrice: any;
90
- indexPrice: any;
91
- interestRate: any;
92
- estimatedSettlePrice: any;
93
- timestamp: number;
94
- datetime: string;
95
- fundingRate: number;
96
- fundingTimestamp: number;
97
- fundingDatetime: string;
98
- nextFundingRate: any;
99
- nextFundingTimestamp: any;
100
- nextFundingDatetime: any;
101
- previousFundingRate: any;
102
- previousFundingTimestamp: any;
103
- previousFundingDatetime: any;
104
- }>;
67
+ parseFundingRate(contract: any, market?: Market): FundingRate;
68
+ fetchFundingRate(symbol: string, params?: {}): Promise<FundingRate>;
105
69
  fetchFundingRateHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingRateHistory[]>;
106
70
  fetchLeverageTiers(symbols?: Strings, params?: {}): Promise<LeverageTiers>;
107
71
  parseMarketLeverageTiers(info: any, market?: Market): LeverageTier[];