ccxt 4.2.55 → 4.2.57
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.
- package/README.md +4 -3
- package/build.sh +2 -2
- package/dist/ccxt.browser.js +540 -185
- package/dist/ccxt.browser.min.js +6 -6
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/base/Exchange.js +31 -2
- package/dist/cjs/src/binance.js +155 -0
- package/dist/cjs/src/bingx.js +3 -1
- package/dist/cjs/src/bitmex.js +42 -1
- package/dist/cjs/src/hitbtc.js +51 -54
- package/dist/cjs/src/mexc.js +75 -0
- package/dist/cjs/src/pro/bitget.js +69 -73
- package/dist/cjs/src/pro/bitmex.js +23 -32
- package/dist/cjs/src/pro/bybit.js +19 -5
- package/dist/cjs/src/pro/cex.js +6 -2
- package/dist/cjs/src/pro/coinex.js +6 -3
- package/dist/cjs/src/pro/currencycom.js +2 -1
- package/dist/cjs/src/pro/kraken.js +1 -1
- package/dist/cjs/src/pro/mexc.js +2 -2
- package/dist/cjs/src/pro/whitebit.js +11 -7
- package/dist/cjs/src/upbit.js +1 -1
- package/dist/cjs/src/woo.js +41 -0
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/woo.d.ts +9 -0
- package/js/src/base/Exchange.d.ts +11 -5
- package/js/src/base/Exchange.js +31 -2
- package/js/src/base/types.d.ts +5 -3
- package/js/src/binance.d.ts +3 -1
- package/js/src/binance.js +155 -0
- package/js/src/bingx.d.ts +4 -4
- package/js/src/bingx.js +3 -1
- package/js/src/bitmex.d.ts +2 -0
- package/js/src/bitmex.js +42 -1
- package/js/src/hitbtc.d.ts +3 -2
- package/js/src/hitbtc.js +51 -54
- package/js/src/mexc.d.ts +12 -0
- package/js/src/mexc.js +75 -0
- package/js/src/pro/bitget.d.ts +0 -1
- package/js/src/pro/bitget.js +69 -73
- package/js/src/pro/bitmex.js +24 -31
- package/js/src/pro/bybit.js +19 -5
- package/js/src/pro/cex.js +6 -2
- package/js/src/pro/coinex.js +6 -3
- package/js/src/pro/currencycom.js +2 -1
- package/js/src/pro/kraken.js +1 -1
- package/js/src/pro/mexc.js +2 -2
- package/js/src/pro/whitebit.js +11 -7
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
- package/js/src/upbit.js +1 -1
- package/js/src/woo.d.ts +1 -0
- package/js/src/woo.js +41 -0
- package/package.json +1 -1
- package/skip-tests.json +21 -163
package/dist/cjs/ccxt.js
CHANGED
|
@@ -176,7 +176,7 @@ var woo$1 = require('./src/pro/woo.js');
|
|
|
176
176
|
|
|
177
177
|
//-----------------------------------------------------------------------------
|
|
178
178
|
// this is updated by vss.js when building
|
|
179
|
-
const version = '4.2.
|
|
179
|
+
const version = '4.2.57';
|
|
180
180
|
Exchange["default"].ccxtVersion = version;
|
|
181
181
|
const exchanges = {
|
|
182
182
|
'ace': ace,
|
|
@@ -436,9 +436,11 @@ class Exchange {
|
|
|
436
436
|
'fetchLedger': undefined,
|
|
437
437
|
'fetchLedgerEntry': undefined,
|
|
438
438
|
'fetchLeverage': undefined,
|
|
439
|
+
'fetchLeverages': undefined,
|
|
439
440
|
'fetchLeverageTiers': undefined,
|
|
440
441
|
'fetchLiquidations': undefined,
|
|
441
442
|
'fetchMarginMode': undefined,
|
|
443
|
+
'fetchMarginModes': undefined,
|
|
442
444
|
'fetchMarketLeverageTiers': undefined,
|
|
443
445
|
'fetchMarkets': true,
|
|
444
446
|
'fetchMarketsWs': undefined,
|
|
@@ -1867,8 +1869,17 @@ class Exchange {
|
|
|
1867
1869
|
async fetchOrderBook(symbol, limit = undefined, params = {}) {
|
|
1868
1870
|
throw new errors.NotSupported(this.id + ' fetchOrderBook() is not supported yet');
|
|
1869
1871
|
}
|
|
1870
|
-
async fetchMarginMode(symbol
|
|
1871
|
-
|
|
1872
|
+
async fetchMarginMode(symbol, params = {}) {
|
|
1873
|
+
if (this.has['fetchMarginModes']) {
|
|
1874
|
+
const marginModes = await this.fetchMarginModes([symbol], params);
|
|
1875
|
+
return this.safeDict(marginModes, symbol);
|
|
1876
|
+
}
|
|
1877
|
+
else {
|
|
1878
|
+
throw new errors.NotSupported(this.id + ' fetchMarginMode() is not supported yet');
|
|
1879
|
+
}
|
|
1880
|
+
}
|
|
1881
|
+
async fetchMarginModes(symbols = undefined, params = {}) {
|
|
1882
|
+
throw new errors.NotSupported(this.id + ' fetchMarginModes () is not supported yet');
|
|
1872
1883
|
}
|
|
1873
1884
|
async fetchRestOrderBookSafe(symbol, limit = undefined, params = {}) {
|
|
1874
1885
|
const fetchSnapshotMaxRetries = this.handleOption('watchOrderBook', 'maxRetries', 3);
|
|
@@ -1979,6 +1990,9 @@ class Exchange {
|
|
|
1979
1990
|
async fetchLeverage(symbol, params = {}) {
|
|
1980
1991
|
throw new errors.NotSupported(this.id + ' fetchLeverage() is not supported yet');
|
|
1981
1992
|
}
|
|
1993
|
+
async fetchLeverages(symbols = undefined, params = {}) {
|
|
1994
|
+
throw new errors.NotSupported(this.id + ' fetchLeverages() is not supported yet');
|
|
1995
|
+
}
|
|
1982
1996
|
async setPositionMode(hedged, symbol = undefined, params = {}) {
|
|
1983
1997
|
throw new errors.NotSupported(this.id + ' setPositionMode() is not supported yet');
|
|
1984
1998
|
}
|
|
@@ -5558,6 +5572,21 @@ class Exchange {
|
|
|
5558
5572
|
parseGreeks(greeks, market = undefined) {
|
|
5559
5573
|
throw new errors.NotSupported(this.id + ' parseGreeks () is not supported yet');
|
|
5560
5574
|
}
|
|
5575
|
+
parseMarginModes(response, symbols = undefined, symbolKey = undefined, marketType = undefined) {
|
|
5576
|
+
const marginModeStructures = {};
|
|
5577
|
+
for (let i = 0; i < response.length; i++) {
|
|
5578
|
+
const info = response[i];
|
|
5579
|
+
const marketId = this.safeString(info, symbolKey);
|
|
5580
|
+
const market = this.safeMarket(marketId, undefined, undefined, marketType);
|
|
5581
|
+
if ((symbols === undefined) || this.inArray(market['symbol'], symbols)) {
|
|
5582
|
+
marginModeStructures[market['symbol']] = this.parseMarginMode(info, market);
|
|
5583
|
+
}
|
|
5584
|
+
}
|
|
5585
|
+
return marginModeStructures;
|
|
5586
|
+
}
|
|
5587
|
+
parseMarginMode(marginMode, market = undefined) {
|
|
5588
|
+
throw new errors.NotSupported(this.id + ' parseMarginMode () is not supported yet');
|
|
5589
|
+
}
|
|
5561
5590
|
}
|
|
5562
5591
|
|
|
5563
5592
|
exports.Exchange = Exchange;
|
package/dist/cjs/src/binance.js
CHANGED
|
@@ -97,6 +97,8 @@ class binance extends binance$1 {
|
|
|
97
97
|
'fetchLeverage': true,
|
|
98
98
|
'fetchLeverageTiers': true,
|
|
99
99
|
'fetchLiquidations': false,
|
|
100
|
+
'fetchMarginMode': 'emulated',
|
|
101
|
+
'fetchMarginModes': true,
|
|
100
102
|
'fetchMarketLeverageTiers': 'emulated',
|
|
101
103
|
'fetchMarkets': true,
|
|
102
104
|
'fetchMarkOHLCV': true,
|
|
@@ -12158,6 +12160,159 @@ class binance extends binance$1 {
|
|
|
12158
12160
|
'hedged': dualSidePosition,
|
|
12159
12161
|
};
|
|
12160
12162
|
}
|
|
12163
|
+
async fetchMarginModes(symbols = undefined, params = {}) {
|
|
12164
|
+
/**
|
|
12165
|
+
* @method
|
|
12166
|
+
* @name binance#fetchMarginMode
|
|
12167
|
+
* @description fetches margin modes ("isolated" or "cross") that the market for the symbol in in, with symbol=undefined all markets for a subType (linear/inverse) are returned
|
|
12168
|
+
* @see https://binance-docs.github.io/apidocs/futures/en/#account-information-v2-user_data
|
|
12169
|
+
* @param {string} symbol unified symbol of the market the order was made in
|
|
12170
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
12171
|
+
* @returns {object} struct of marginMode
|
|
12172
|
+
*/
|
|
12173
|
+
await this.loadMarkets();
|
|
12174
|
+
let market = undefined;
|
|
12175
|
+
if (symbols !== undefined) {
|
|
12176
|
+
symbols = this.marketSymbols(symbols);
|
|
12177
|
+
market = this.market(symbols[0]);
|
|
12178
|
+
}
|
|
12179
|
+
let subType = undefined;
|
|
12180
|
+
[subType, params] = this.handleSubTypeAndParams('fetchMarginMode', market, params);
|
|
12181
|
+
let response = undefined;
|
|
12182
|
+
if (subType === 'linear') {
|
|
12183
|
+
response = await this.fapiPrivateV2GetAccount(params);
|
|
12184
|
+
//
|
|
12185
|
+
// {
|
|
12186
|
+
// feeTier: '0',
|
|
12187
|
+
// canTrade: true,
|
|
12188
|
+
// canDeposit: true,
|
|
12189
|
+
// canWithdraw: true,
|
|
12190
|
+
// tradeGroupId: '-1',
|
|
12191
|
+
// updateTime: '0',
|
|
12192
|
+
// multiAssetsMargin: true,
|
|
12193
|
+
// totalInitialMargin: '438.31134352',
|
|
12194
|
+
// totalMaintMargin: '5.90847101',
|
|
12195
|
+
// totalWalletBalance: '4345.15626338',
|
|
12196
|
+
// totalUnrealizedProfit: '376.45220224',
|
|
12197
|
+
// totalMarginBalance: '4721.60846562',
|
|
12198
|
+
// totalPositionInitialMargin: '425.45252687',
|
|
12199
|
+
// totalOpenOrderInitialMargin: '12.85881664',
|
|
12200
|
+
// totalCrossWalletBalance: '4345.15626338',
|
|
12201
|
+
// totalCrossUnPnl: '376.45220224',
|
|
12202
|
+
// availableBalance: '4281.84764041',
|
|
12203
|
+
// maxWithdrawAmount: '4281.84764041',
|
|
12204
|
+
// assets: [
|
|
12205
|
+
// {
|
|
12206
|
+
// asset: 'ETH',
|
|
12207
|
+
// walletBalance: '0.00000000',
|
|
12208
|
+
// unrealizedProfit: '0.00000000',
|
|
12209
|
+
// marginBalance: '0.00000000',
|
|
12210
|
+
// maintMargin: '0.00000000',
|
|
12211
|
+
// initialMargin: '0.00000000',
|
|
12212
|
+
// positionInitialMargin: '0.00000000',
|
|
12213
|
+
// openOrderInitialMargin: '0.00000000',
|
|
12214
|
+
// maxWithdrawAmount: '0.00000000',
|
|
12215
|
+
// crossWalletBalance: '0.00000000',
|
|
12216
|
+
// crossUnPnl: '0.00000000',
|
|
12217
|
+
// availableBalance: '1.26075574',
|
|
12218
|
+
// marginAvailable: true,
|
|
12219
|
+
// updateTime: '0'
|
|
12220
|
+
// },
|
|
12221
|
+
// ...
|
|
12222
|
+
// ],
|
|
12223
|
+
// positions: [
|
|
12224
|
+
// {
|
|
12225
|
+
// symbol: 'SNTUSDT',
|
|
12226
|
+
// initialMargin: '0',
|
|
12227
|
+
// maintMargin: '0',
|
|
12228
|
+
// unrealizedProfit: '0.00000000',
|
|
12229
|
+
// positionInitialMargin: '0',
|
|
12230
|
+
// openOrderInitialMargin: '0',
|
|
12231
|
+
// leverage: '20',
|
|
12232
|
+
// isolated: false,
|
|
12233
|
+
// entryPrice: '0.0',
|
|
12234
|
+
// breakEvenPrice: '0.0',
|
|
12235
|
+
// maxNotional: '25000',
|
|
12236
|
+
// positionSide: 'BOTH',
|
|
12237
|
+
// positionAmt: '0',
|
|
12238
|
+
// notional: '0',
|
|
12239
|
+
// isolatedWallet: '0',
|
|
12240
|
+
// updateTime: '0',
|
|
12241
|
+
// bidNotional: '0',
|
|
12242
|
+
// askNotional: '0'
|
|
12243
|
+
// },
|
|
12244
|
+
// ...
|
|
12245
|
+
// ]
|
|
12246
|
+
// }
|
|
12247
|
+
//
|
|
12248
|
+
}
|
|
12249
|
+
else if (subType === 'inverse') {
|
|
12250
|
+
response = await this.dapiPrivateGetAccount(params);
|
|
12251
|
+
//
|
|
12252
|
+
// {
|
|
12253
|
+
// feeTier: '0',
|
|
12254
|
+
// canTrade: true,
|
|
12255
|
+
// canDeposit: true,
|
|
12256
|
+
// canWithdraw: true,
|
|
12257
|
+
// updateTime: '0',
|
|
12258
|
+
// assets: [
|
|
12259
|
+
// {
|
|
12260
|
+
// asset: 'APT',
|
|
12261
|
+
// walletBalance: '0.00000000',
|
|
12262
|
+
// unrealizedProfit: '0.00000000',
|
|
12263
|
+
// marginBalance: '0.00000000',
|
|
12264
|
+
// maintMargin: '0.00000000',
|
|
12265
|
+
// initialMargin: '0.00000000',
|
|
12266
|
+
// positionInitialMargin: '0.00000000',
|
|
12267
|
+
// openOrderInitialMargin: '0.00000000',
|
|
12268
|
+
// maxWithdrawAmount: '0.00000000',
|
|
12269
|
+
// crossWalletBalance: '0.00000000',
|
|
12270
|
+
// crossUnPnl: '0.00000000',
|
|
12271
|
+
// availableBalance: '0.00000000',
|
|
12272
|
+
// updateTime: '0'
|
|
12273
|
+
// },
|
|
12274
|
+
// ...
|
|
12275
|
+
// ],
|
|
12276
|
+
// positions: [
|
|
12277
|
+
// {
|
|
12278
|
+
// symbol: 'BCHUSD_240329',
|
|
12279
|
+
// initialMargin: '0',
|
|
12280
|
+
// maintMargin: '0',
|
|
12281
|
+
// unrealizedProfit: '0.00000000',
|
|
12282
|
+
// positionInitialMargin: '0',
|
|
12283
|
+
// openOrderInitialMargin: '0',
|
|
12284
|
+
// leverage: '20',
|
|
12285
|
+
// isolated: false,
|
|
12286
|
+
// positionSide: 'BOTH',
|
|
12287
|
+
// entryPrice: '0.00000000',
|
|
12288
|
+
// maxQty: '1000',
|
|
12289
|
+
// notionalValue: '0',
|
|
12290
|
+
// isolatedWallet: '0',
|
|
12291
|
+
// updateTime: '0',
|
|
12292
|
+
// positionAmt: '0',
|
|
12293
|
+
// breakEvenPrice: '0.00000000'
|
|
12294
|
+
// },
|
|
12295
|
+
// ...
|
|
12296
|
+
// ]
|
|
12297
|
+
// }
|
|
12298
|
+
//
|
|
12299
|
+
}
|
|
12300
|
+
else {
|
|
12301
|
+
throw new errors.BadRequest(this.id + ' fetchMarginModes () supports linear and inverse subTypes only');
|
|
12302
|
+
}
|
|
12303
|
+
const assets = this.safeValue(response, 'positions', []);
|
|
12304
|
+
return this.parseMarginModes(assets, symbols, 'symbol', 'swap');
|
|
12305
|
+
}
|
|
12306
|
+
parseMarginMode(marginMode, market = undefined) {
|
|
12307
|
+
const marketId = this.safeString(marginMode, 'symbol');
|
|
12308
|
+
market = this.safeMarket(marketId, market);
|
|
12309
|
+
const isIsolated = this.safeBool(marginMode, 'isolated');
|
|
12310
|
+
return {
|
|
12311
|
+
'info': marginMode,
|
|
12312
|
+
'symbol': market['symbol'],
|
|
12313
|
+
'marginMode': isIsolated ? 'isolated' : 'cross',
|
|
12314
|
+
};
|
|
12315
|
+
}
|
|
12161
12316
|
}
|
|
12162
12317
|
|
|
12163
12318
|
module.exports = binance;
|
package/dist/cjs/src/bingx.js
CHANGED
|
@@ -1399,7 +1399,9 @@ class bingx extends bingx$1 {
|
|
|
1399
1399
|
if (symbols !== undefined) {
|
|
1400
1400
|
symbols = this.marketSymbols(symbols);
|
|
1401
1401
|
const firstSymbol = this.safeString(symbols, 0);
|
|
1402
|
-
|
|
1402
|
+
if (firstSymbol !== undefined) {
|
|
1403
|
+
market = this.market(firstSymbol);
|
|
1404
|
+
}
|
|
1403
1405
|
}
|
|
1404
1406
|
let type = undefined;
|
|
1405
1407
|
[type, params] = this.handleMarketTypeAndParams('fetchTickers', market, params);
|
package/dist/cjs/src/bitmex.js
CHANGED
|
@@ -59,7 +59,8 @@ class bitmex extends bitmex$1 {
|
|
|
59
59
|
'fetchFundingRates': true,
|
|
60
60
|
'fetchIndexOHLCV': false,
|
|
61
61
|
'fetchLedger': true,
|
|
62
|
-
'fetchLeverage':
|
|
62
|
+
'fetchLeverage': true,
|
|
63
|
+
'fetchLeverages': true,
|
|
63
64
|
'fetchLeverageTiers': false,
|
|
64
65
|
'fetchLiquidations': true,
|
|
65
66
|
'fetchMarketLeverageTiers': false,
|
|
@@ -2114,6 +2115,46 @@ class bitmex extends bitmex$1 {
|
|
|
2114
2115
|
//
|
|
2115
2116
|
return this.parseOrders(response, market);
|
|
2116
2117
|
}
|
|
2118
|
+
async fetchLeverages(symbols = undefined, params = {}) {
|
|
2119
|
+
/**
|
|
2120
|
+
* @method
|
|
2121
|
+
* @name bitmex#fetchLeverages
|
|
2122
|
+
* @description fetch the set leverage for all contract markets
|
|
2123
|
+
* @see https://www.bitmex.com/api/explorer/#!/Position/Position_get
|
|
2124
|
+
* @param {string[]} [symbols] a list of unified market symbols
|
|
2125
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2126
|
+
* @returns {object} a list of [leverage structures]{@link https://docs.ccxt.com/#/?id=leverage-structure}
|
|
2127
|
+
*/
|
|
2128
|
+
await this.loadMarkets();
|
|
2129
|
+
const positions = await this.fetchPositions(symbols, params);
|
|
2130
|
+
const result = [];
|
|
2131
|
+
for (let i = 0; i < positions.length; i++) {
|
|
2132
|
+
const entry = positions[i];
|
|
2133
|
+
const marketId = this.safeString(entry, 'symbol');
|
|
2134
|
+
const market = this.safeMarket(marketId, undefined, undefined, 'contract');
|
|
2135
|
+
result.push({
|
|
2136
|
+
'info': entry,
|
|
2137
|
+
'symbol': market['symbol'],
|
|
2138
|
+
'leverage': this.safeInteger(entry, 'leverage'),
|
|
2139
|
+
'marginMode': this.safeString(entry, 'marginMode'),
|
|
2140
|
+
});
|
|
2141
|
+
}
|
|
2142
|
+
return result;
|
|
2143
|
+
}
|
|
2144
|
+
async fetchLeverage(symbol, params = {}) {
|
|
2145
|
+
/**
|
|
2146
|
+
* @method
|
|
2147
|
+
* @name bitmex#fetchLeverage
|
|
2148
|
+
* @description fetch the set leverage for a market
|
|
2149
|
+
* @see https://www.bitmex.com/api/explorer/#!/Position/Position_get
|
|
2150
|
+
* @param {string} symbol unified market symbol
|
|
2151
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2152
|
+
* @returns {object} a [leverage structure]{@link https://docs.ccxt.com/#/?id=leverage-structure}
|
|
2153
|
+
*/
|
|
2154
|
+
await this.loadMarkets();
|
|
2155
|
+
const leverage = await this.fetchLeverages([symbol], params);
|
|
2156
|
+
return leverage;
|
|
2157
|
+
}
|
|
2117
2158
|
async fetchPositions(symbols = undefined, params = {}) {
|
|
2118
2159
|
/**
|
|
2119
2160
|
* @method
|
package/dist/cjs/src/hitbtc.js
CHANGED
|
@@ -63,7 +63,8 @@ class hitbtc extends hitbtc$1 {
|
|
|
63
63
|
'fetchLeverage': true,
|
|
64
64
|
'fetchLeverageTiers': undefined,
|
|
65
65
|
'fetchLiquidations': false,
|
|
66
|
-
'fetchMarginMode':
|
|
66
|
+
'fetchMarginMode': 'emulated',
|
|
67
|
+
'fetchMarginModes': true,
|
|
67
68
|
'fetchMarketLeverageTiers': false,
|
|
68
69
|
'fetchMarkets': true,
|
|
69
70
|
'fetchMarkOHLCV': true,
|
|
@@ -2507,7 +2508,7 @@ class hitbtc extends hitbtc$1 {
|
|
|
2507
2508
|
'stopLossPrice': undefined,
|
|
2508
2509
|
}, market);
|
|
2509
2510
|
}
|
|
2510
|
-
async
|
|
2511
|
+
async fetchMarginModes(symbols = undefined, params = {}) {
|
|
2511
2512
|
/**
|
|
2512
2513
|
* @method
|
|
2513
2514
|
* @name hitbtc#fetchMarginMode
|
|
@@ -2520,70 +2521,66 @@ class hitbtc extends hitbtc$1 {
|
|
|
2520
2521
|
*/
|
|
2521
2522
|
await this.loadMarkets();
|
|
2522
2523
|
let market = undefined;
|
|
2523
|
-
if (
|
|
2524
|
-
|
|
2524
|
+
if (symbols !== undefined) {
|
|
2525
|
+
symbols = this.marketSymbols(symbols);
|
|
2526
|
+
market = this.market(symbols[0]);
|
|
2525
2527
|
}
|
|
2526
2528
|
let marketType = undefined;
|
|
2527
2529
|
[marketType, params] = this.handleMarketTypeAndParams('fetchMarginMode', market, params);
|
|
2528
2530
|
let response = undefined;
|
|
2529
2531
|
if (marketType === 'margin') {
|
|
2530
2532
|
response = await this.privateGetMarginConfig(params);
|
|
2533
|
+
//
|
|
2534
|
+
// {
|
|
2535
|
+
// "config": [{
|
|
2536
|
+
// "symbol": "BTCUSD",
|
|
2537
|
+
// "margin_call_leverage_mul": "1.50",
|
|
2538
|
+
// "liquidation_leverage_mul": "2.00",
|
|
2539
|
+
// "max_initial_leverage": "10.00",
|
|
2540
|
+
// "margin_mode": "Isolated",
|
|
2541
|
+
// "force_close_fee": "0.05",
|
|
2542
|
+
// "enabled": true,
|
|
2543
|
+
// "active": true,
|
|
2544
|
+
// "limit_base": "50000.00",
|
|
2545
|
+
// "limit_power": "2.2",
|
|
2546
|
+
// "unlimited_threshold": "10.0"
|
|
2547
|
+
// }]
|
|
2548
|
+
// }
|
|
2549
|
+
//
|
|
2531
2550
|
}
|
|
2532
2551
|
else if (marketType === 'swap') {
|
|
2533
2552
|
response = await this.privateGetFuturesConfig(params);
|
|
2553
|
+
//
|
|
2554
|
+
// {
|
|
2555
|
+
// "config": [{
|
|
2556
|
+
// "symbol": "BTCUSD_PERP",
|
|
2557
|
+
// "margin_call_leverage_mul": "1.20",
|
|
2558
|
+
// "liquidation_leverage_mul": "2.00",
|
|
2559
|
+
// "max_initial_leverage": "100.00",
|
|
2560
|
+
// "margin_mode": "Isolated",
|
|
2561
|
+
// "force_close_fee": "0.001",
|
|
2562
|
+
// "enabled": true,
|
|
2563
|
+
// "active": false,
|
|
2564
|
+
// "limit_base": "5000000.000000000000",
|
|
2565
|
+
// "limit_power": "1.25",
|
|
2566
|
+
// "unlimited_threshold": "2.00"
|
|
2567
|
+
// }]
|
|
2568
|
+
// }
|
|
2569
|
+
//
|
|
2534
2570
|
}
|
|
2535
2571
|
else {
|
|
2536
|
-
throw new errors.BadSymbol(this.id + '
|
|
2537
|
-
}
|
|
2538
|
-
//
|
|
2539
|
-
// margin
|
|
2540
|
-
// {
|
|
2541
|
-
// "config": [{
|
|
2542
|
-
// "symbol": "BTCUSD",
|
|
2543
|
-
// "margin_call_leverage_mul": "1.50",
|
|
2544
|
-
// "liquidation_leverage_mul": "2.00",
|
|
2545
|
-
// "max_initial_leverage": "10.00",
|
|
2546
|
-
// "margin_mode": "Isolated",
|
|
2547
|
-
// "force_close_fee": "0.05",
|
|
2548
|
-
// "enabled": true,
|
|
2549
|
-
// "active": true,
|
|
2550
|
-
// "limit_base": "50000.00",
|
|
2551
|
-
// "limit_power": "2.2",
|
|
2552
|
-
// "unlimited_threshold": "10.0"
|
|
2553
|
-
// }]
|
|
2554
|
-
// }
|
|
2555
|
-
//
|
|
2556
|
-
// swap
|
|
2557
|
-
// {
|
|
2558
|
-
// "config": [{
|
|
2559
|
-
// "symbol": "BTCUSD_PERP",
|
|
2560
|
-
// "margin_call_leverage_mul": "1.20",
|
|
2561
|
-
// "liquidation_leverage_mul": "2.00",
|
|
2562
|
-
// "max_initial_leverage": "100.00",
|
|
2563
|
-
// "margin_mode": "Isolated",
|
|
2564
|
-
// "force_close_fee": "0.001",
|
|
2565
|
-
// "enabled": true,
|
|
2566
|
-
// "active": false,
|
|
2567
|
-
// "limit_base": "5000000.000000000000",
|
|
2568
|
-
// "limit_power": "1.25",
|
|
2569
|
-
// "unlimited_threshold": "2.00"
|
|
2570
|
-
// }]
|
|
2571
|
-
// }
|
|
2572
|
-
//
|
|
2573
|
-
const config = this.safeValue(response, 'config', []);
|
|
2574
|
-
const marginModes = [];
|
|
2575
|
-
for (let i = 0; i < config.length; i++) {
|
|
2576
|
-
const data = this.safeValue(config, i);
|
|
2577
|
-
const marketId = this.safeString(data, 'symbol');
|
|
2578
|
-
const marketInner = this.safeMarket(marketId);
|
|
2579
|
-
marginModes.push({
|
|
2580
|
-
'info': data,
|
|
2581
|
-
'symbol': this.safeString(marketInner, 'symbol'),
|
|
2582
|
-
'marginMode': this.safeStringLower(data, 'margin_mode'),
|
|
2583
|
-
});
|
|
2572
|
+
throw new errors.BadSymbol(this.id + ' fetchMarginModes () supports swap contracts and margin only');
|
|
2584
2573
|
}
|
|
2585
|
-
const
|
|
2586
|
-
return this.
|
|
2574
|
+
const config = this.safeList(response, 'config', []);
|
|
2575
|
+
return this.parseMarginModes(config, symbols, 'symbol');
|
|
2576
|
+
}
|
|
2577
|
+
parseMarginMode(marginMode, market = undefined) {
|
|
2578
|
+
const marketId = this.safeString(marginMode, 'symbol');
|
|
2579
|
+
return {
|
|
2580
|
+
'info': marginMode,
|
|
2581
|
+
'symbol': this.safeSymbol(marketId, market),
|
|
2582
|
+
'marginMode': this.safeStringLower(marginMode, 'margin_mode'),
|
|
2583
|
+
};
|
|
2587
2584
|
}
|
|
2588
2585
|
async transfer(code, amount, fromAccount, toAccount, params = {}) {
|
|
2589
2586
|
/**
|
package/dist/cjs/src/mexc.js
CHANGED
|
@@ -71,6 +71,8 @@ class mexc extends mexc$1 {
|
|
|
71
71
|
'fetchL2OrderBook': true,
|
|
72
72
|
'fetchLedger': undefined,
|
|
73
73
|
'fetchLedgerEntry': undefined,
|
|
74
|
+
'fetchLeverage': true,
|
|
75
|
+
'fetchLeverages': false,
|
|
74
76
|
'fetchLeverageTiers': true,
|
|
75
77
|
'fetchMarginMode': false,
|
|
76
78
|
'fetchMarketLeverageTiers': undefined,
|
|
@@ -5373,6 +5375,79 @@ class mexc extends mexc$1 {
|
|
|
5373
5375
|
}
|
|
5374
5376
|
return this.assignDefaultDepositWithdrawFees(result);
|
|
5375
5377
|
}
|
|
5378
|
+
async fetchLeverage(symbol, params = {}) {
|
|
5379
|
+
/**
|
|
5380
|
+
* @method
|
|
5381
|
+
* @name mexc#fetchLeverage
|
|
5382
|
+
* @description fetch the set leverage for a market
|
|
5383
|
+
* @see https://mexcdevelop.github.io/apidocs/contract_v1_en/#get-leverage
|
|
5384
|
+
* @param {string} symbol unified market symbol
|
|
5385
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
5386
|
+
* @returns {object} a [leverage structure]{@link https://docs.ccxt.com/#/?id=leverage-structure}
|
|
5387
|
+
*/
|
|
5388
|
+
await this.loadMarkets();
|
|
5389
|
+
const market = this.market(symbol);
|
|
5390
|
+
const request = {
|
|
5391
|
+
'symbol': market['id'],
|
|
5392
|
+
};
|
|
5393
|
+
const response = await this.contractPrivateGetPositionLeverage(this.extend(request, params));
|
|
5394
|
+
//
|
|
5395
|
+
// {
|
|
5396
|
+
// "success": true,
|
|
5397
|
+
// "code": 0,
|
|
5398
|
+
// "data": [
|
|
5399
|
+
// {
|
|
5400
|
+
// "level": 1,
|
|
5401
|
+
// "maxVol": 463300,
|
|
5402
|
+
// "mmr": 0.004,
|
|
5403
|
+
// "imr": 0.005,
|
|
5404
|
+
// "positionType": 1,
|
|
5405
|
+
// "openType": 1,
|
|
5406
|
+
// "leverage": 20,
|
|
5407
|
+
// "limitBySys": false,
|
|
5408
|
+
// "currentMmr": 0.004
|
|
5409
|
+
// },
|
|
5410
|
+
// {
|
|
5411
|
+
// "level": 1,
|
|
5412
|
+
// "maxVol": 463300,
|
|
5413
|
+
// "mmr": 0.004,
|
|
5414
|
+
// "imr": 0.005,
|
|
5415
|
+
// "positionType": 2,
|
|
5416
|
+
// "openType": 1,
|
|
5417
|
+
// "leverage": 20,
|
|
5418
|
+
// "limitBySys": false,
|
|
5419
|
+
// "currentMmr": 0.004
|
|
5420
|
+
// }
|
|
5421
|
+
// ]
|
|
5422
|
+
// }
|
|
5423
|
+
//
|
|
5424
|
+
const data = this.safeList(response, 'data', []);
|
|
5425
|
+
const longLeverage = this.safeDict(data, 0);
|
|
5426
|
+
return this.parseLeverage(longLeverage, market);
|
|
5427
|
+
}
|
|
5428
|
+
parseLeverage(leverage, market = undefined) {
|
|
5429
|
+
//
|
|
5430
|
+
// {
|
|
5431
|
+
// "level": 1,
|
|
5432
|
+
// "maxVol": 463300,
|
|
5433
|
+
// "mmr": 0.004,
|
|
5434
|
+
// "imr": 0.005,
|
|
5435
|
+
// "positionType": 1,
|
|
5436
|
+
// "openType": 1,
|
|
5437
|
+
// "leverage": 20,
|
|
5438
|
+
// "limitBySys": false,
|
|
5439
|
+
// "currentMmr": 0.004
|
|
5440
|
+
// }
|
|
5441
|
+
//
|
|
5442
|
+
const marketId = this.safeString(leverage, 'symbol');
|
|
5443
|
+
market = this.safeMarket(marketId, market, undefined, 'contract');
|
|
5444
|
+
return {
|
|
5445
|
+
'info': leverage,
|
|
5446
|
+
'symbol': market['symbol'],
|
|
5447
|
+
'leverage': this.safeInteger(leverage, 'leverage'),
|
|
5448
|
+
'marginMode': undefined,
|
|
5449
|
+
};
|
|
5450
|
+
}
|
|
5376
5451
|
handleMarginModeAndParams(methodName, params = {}, defaultValue = undefined) {
|
|
5377
5452
|
/**
|
|
5378
5453
|
* @ignore
|