ccxt 4.2.56 → 4.2.58
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 -4
- package/dist/ccxt.browser.js +818 -335
- package/dist/ccxt.browser.min.js +7 -7
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/alpaca.js +90 -88
- package/dist/cjs/src/base/Exchange.js +53 -3
- package/dist/cjs/src/binance.js +196 -28
- package/dist/cjs/src/bingx.js +12 -1
- package/dist/cjs/src/bitget.js +71 -56
- package/dist/cjs/src/bitmex.js +26 -1
- package/dist/cjs/src/bitrue.js +24 -15
- package/dist/cjs/src/blofin.js +24 -1
- package/dist/cjs/src/bybit.js +11 -3
- package/dist/cjs/src/currencycom.js +15 -5
- package/dist/cjs/src/delta.js +14 -1
- package/dist/cjs/src/gate.js +1 -1
- package/dist/cjs/src/hitbtc.js +63 -55
- package/dist/cjs/src/krakenfutures.js +22 -7
- package/dist/cjs/src/kuna.js +14 -11
- package/dist/cjs/src/mexc.js +75 -0
- package/dist/cjs/src/okx.js +31 -1
- package/dist/cjs/src/pro/alpaca.js +1 -1
- package/dist/cjs/src/pro/bitmex.js +23 -32
- package/dist/cjs/src/pro/cex.js +6 -2
- package/dist/cjs/src/pro/coinex.js +6 -3
- package/dist/cjs/src/pro/mexc.js +2 -2
- package/dist/cjs/src/pro/whitebit.js +15 -13
- package/dist/cjs/src/probit.js +1 -1
- package/dist/cjs/src/wavesexchange.js +1 -1
- package/dist/cjs/src/woo.js +20 -4
- package/js/ccxt.d.ts +3 -3
- package/js/ccxt.js +1 -1
- package/js/src/alpaca.js +90 -88
- package/js/src/base/Exchange.d.ts +14 -6
- package/js/src/base/Exchange.js +53 -3
- package/js/src/base/types.d.ts +12 -1
- package/js/src/binance.d.ts +5 -2
- package/js/src/binance.js +196 -28
- package/js/src/bingx.d.ts +3 -2
- package/js/src/bingx.js +12 -1
- package/js/src/bitget.d.ts +3 -2
- package/js/src/bitget.js +71 -56
- package/js/src/bitmex.d.ts +3 -1
- package/js/src/bitmex.js +26 -1
- package/js/src/bitrue.js +24 -15
- package/js/src/blofin.d.ts +3 -2
- package/js/src/blofin.js +24 -1
- package/js/src/bybit.d.ts +3 -6
- package/js/src/bybit.js +11 -3
- package/js/src/currencycom.d.ts +3 -2
- package/js/src/currencycom.js +15 -5
- package/js/src/delta.d.ts +3 -2
- package/js/src/delta.js +14 -1
- package/js/src/gate.js +1 -1
- package/js/src/hitbtc.d.ts +5 -3
- package/js/src/hitbtc.js +63 -55
- package/js/src/krakenfutures.d.ts +3 -2
- package/js/src/krakenfutures.js +22 -7
- package/js/src/kuna.js +14 -11
- package/js/src/mexc.d.ts +3 -1
- package/js/src/mexc.js +75 -0
- package/js/src/okx.d.ts +3 -2
- package/js/src/okx.js +31 -1
- package/js/src/pro/alpaca.js +1 -1
- package/js/src/pro/bitmex.js +24 -31
- package/js/src/pro/cex.js +6 -2
- package/js/src/pro/coinex.js +6 -3
- package/js/src/pro/mexc.js +2 -2
- package/js/src/pro/whitebit.js +15 -13
- package/js/src/probit.js +1 -1
- package/js/src/wavesexchange.js +1 -1
- package/js/src/woo.d.ts +3 -5
- package/js/src/woo.js +20 -4
- package/package.json +1 -1
- package/skip-tests.json +26 -8
package/js/src/binance.js
CHANGED
|
@@ -97,9 +97,12 @@ export default class binance extends Exchange {
|
|
|
97
97
|
'fetchLastPrices': true,
|
|
98
98
|
'fetchLedger': true,
|
|
99
99
|
'fetchLedgerEntry': true,
|
|
100
|
-
'fetchLeverage':
|
|
100
|
+
'fetchLeverage': 'emulated',
|
|
101
|
+
'fetchLeverages': true,
|
|
101
102
|
'fetchLeverageTiers': true,
|
|
102
103
|
'fetchLiquidations': false,
|
|
104
|
+
'fetchMarginMode': 'emulated',
|
|
105
|
+
'fetchMarginModes': true,
|
|
103
106
|
'fetchMarketLeverageTiers': 'emulated',
|
|
104
107
|
'fetchMarkets': true,
|
|
105
108
|
'fetchMarkOHLCV': true,
|
|
@@ -10389,31 +10392,27 @@ export default class binance extends Exchange {
|
|
|
10389
10392
|
//
|
|
10390
10393
|
return response;
|
|
10391
10394
|
}
|
|
10392
|
-
async
|
|
10395
|
+
async fetchLeverages(symbols = undefined, params = {}) {
|
|
10393
10396
|
/**
|
|
10394
10397
|
* @method
|
|
10395
|
-
* @name binance#
|
|
10396
|
-
* @description fetch the set leverage for
|
|
10398
|
+
* @name binance#fetchLeverages
|
|
10399
|
+
* @description fetch the set leverage for all markets
|
|
10397
10400
|
* @see https://binance-docs.github.io/apidocs/futures/en/#account-information-v2-user_data
|
|
10398
10401
|
* @see https://binance-docs.github.io/apidocs/delivery/en/#account-information-user_data
|
|
10399
10402
|
* @see https://binance-docs.github.io/apidocs/pm/en/#get-um-account-detail-user_data
|
|
10400
10403
|
* @see https://binance-docs.github.io/apidocs/pm/en/#get-cm-account-detail-user_data
|
|
10401
|
-
* @param {string}
|
|
10404
|
+
* @param {string[]} [symbols] a list of unified market symbols
|
|
10402
10405
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
10403
|
-
* @returns {object} a [leverage
|
|
10406
|
+
* @returns {object} a list of [leverage structures]{@link https://docs.ccxt.com/#/?id=leverage-structure}
|
|
10404
10407
|
*/
|
|
10405
10408
|
await this.loadMarkets();
|
|
10406
10409
|
await this.loadLeverageBrackets(false, params);
|
|
10407
|
-
const market = this.market(symbol);
|
|
10408
|
-
if (!market['contract']) {
|
|
10409
|
-
throw new NotSupported(this.id + ' fetchLeverage() supports linear and inverse contracts only');
|
|
10410
|
-
}
|
|
10411
10410
|
let type = undefined;
|
|
10412
|
-
[type, params] = this.handleMarketTypeAndParams('
|
|
10411
|
+
[type, params] = this.handleMarketTypeAndParams('fetchLeverages', undefined, params);
|
|
10413
10412
|
let subType = undefined;
|
|
10414
|
-
[subType, params] = this.handleSubTypeAndParams('
|
|
10413
|
+
[subType, params] = this.handleSubTypeAndParams('fetchLeverages', undefined, params, 'linear');
|
|
10415
10414
|
let isPortfolioMargin = undefined;
|
|
10416
|
-
[isPortfolioMargin, params] = this.handleOptionAndParams2(params, '
|
|
10415
|
+
[isPortfolioMargin, params] = this.handleOptionAndParams2(params, 'fetchLeverages', 'papi', 'portfolioMargin', false);
|
|
10417
10416
|
let response = undefined;
|
|
10418
10417
|
if (this.isLinear(type, subType)) {
|
|
10419
10418
|
if (isPortfolioMargin) {
|
|
@@ -10432,23 +10431,39 @@ export default class binance extends Exchange {
|
|
|
10432
10431
|
}
|
|
10433
10432
|
}
|
|
10434
10433
|
else {
|
|
10435
|
-
throw new NotSupported(this.id + '
|
|
10434
|
+
throw new NotSupported(this.id + ' fetchLeverages() supports linear and inverse contracts only');
|
|
10436
10435
|
}
|
|
10437
|
-
const
|
|
10438
|
-
|
|
10439
|
-
|
|
10440
|
-
|
|
10441
|
-
|
|
10442
|
-
|
|
10443
|
-
|
|
10444
|
-
|
|
10445
|
-
|
|
10446
|
-
'marginMode': marginMode,
|
|
10447
|
-
'leverage': this.safeInteger(position, 'leverage'),
|
|
10448
|
-
};
|
|
10449
|
-
}
|
|
10436
|
+
const leverages = this.safeList(response, 'positions', []);
|
|
10437
|
+
return this.parseLeverages(leverages, symbols, 'symbol');
|
|
10438
|
+
}
|
|
10439
|
+
parseLeverage(leverage, market = undefined) {
|
|
10440
|
+
const marketId = this.safeString(leverage, 'symbol');
|
|
10441
|
+
const marginModeRaw = this.safeBool(leverage, 'isolated');
|
|
10442
|
+
let marginMode = undefined;
|
|
10443
|
+
if (marginModeRaw !== undefined) {
|
|
10444
|
+
marginMode = marginModeRaw ? 'isolated' : 'cross';
|
|
10450
10445
|
}
|
|
10451
|
-
|
|
10446
|
+
const side = this.safeStringLower(leverage, 'positionSide');
|
|
10447
|
+
let longLeverage = undefined;
|
|
10448
|
+
let shortLeverage = undefined;
|
|
10449
|
+
const leverageValue = this.safeInteger(leverage, 'leverage');
|
|
10450
|
+
if (side === 'both') {
|
|
10451
|
+
longLeverage = leverageValue;
|
|
10452
|
+
shortLeverage = leverageValue;
|
|
10453
|
+
}
|
|
10454
|
+
else if (side === 'long') {
|
|
10455
|
+
longLeverage = leverageValue;
|
|
10456
|
+
}
|
|
10457
|
+
else if (side === 'short') {
|
|
10458
|
+
shortLeverage = leverageValue;
|
|
10459
|
+
}
|
|
10460
|
+
return {
|
|
10461
|
+
'info': leverage,
|
|
10462
|
+
'symbol': this.safeSymbol(marketId, market),
|
|
10463
|
+
'marginMode': marginMode,
|
|
10464
|
+
'longLeverage': longLeverage,
|
|
10465
|
+
'shortLeverage': shortLeverage,
|
|
10466
|
+
};
|
|
10452
10467
|
}
|
|
10453
10468
|
async fetchSettlementHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
10454
10469
|
/**
|
|
@@ -12161,4 +12176,157 @@ export default class binance extends Exchange {
|
|
|
12161
12176
|
'hedged': dualSidePosition,
|
|
12162
12177
|
};
|
|
12163
12178
|
}
|
|
12179
|
+
async fetchMarginModes(symbols = undefined, params = {}) {
|
|
12180
|
+
/**
|
|
12181
|
+
* @method
|
|
12182
|
+
* @name binance#fetchMarginMode
|
|
12183
|
+
* @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
|
|
12184
|
+
* @see https://binance-docs.github.io/apidocs/futures/en/#account-information-v2-user_data
|
|
12185
|
+
* @param {string} symbol unified symbol of the market the order was made in
|
|
12186
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
12187
|
+
* @returns {object} struct of marginMode
|
|
12188
|
+
*/
|
|
12189
|
+
await this.loadMarkets();
|
|
12190
|
+
let market = undefined;
|
|
12191
|
+
if (symbols !== undefined) {
|
|
12192
|
+
symbols = this.marketSymbols(symbols);
|
|
12193
|
+
market = this.market(symbols[0]);
|
|
12194
|
+
}
|
|
12195
|
+
let subType = undefined;
|
|
12196
|
+
[subType, params] = this.handleSubTypeAndParams('fetchMarginMode', market, params);
|
|
12197
|
+
let response = undefined;
|
|
12198
|
+
if (subType === 'linear') {
|
|
12199
|
+
response = await this.fapiPrivateV2GetAccount(params);
|
|
12200
|
+
//
|
|
12201
|
+
// {
|
|
12202
|
+
// feeTier: '0',
|
|
12203
|
+
// canTrade: true,
|
|
12204
|
+
// canDeposit: true,
|
|
12205
|
+
// canWithdraw: true,
|
|
12206
|
+
// tradeGroupId: '-1',
|
|
12207
|
+
// updateTime: '0',
|
|
12208
|
+
// multiAssetsMargin: true,
|
|
12209
|
+
// totalInitialMargin: '438.31134352',
|
|
12210
|
+
// totalMaintMargin: '5.90847101',
|
|
12211
|
+
// totalWalletBalance: '4345.15626338',
|
|
12212
|
+
// totalUnrealizedProfit: '376.45220224',
|
|
12213
|
+
// totalMarginBalance: '4721.60846562',
|
|
12214
|
+
// totalPositionInitialMargin: '425.45252687',
|
|
12215
|
+
// totalOpenOrderInitialMargin: '12.85881664',
|
|
12216
|
+
// totalCrossWalletBalance: '4345.15626338',
|
|
12217
|
+
// totalCrossUnPnl: '376.45220224',
|
|
12218
|
+
// availableBalance: '4281.84764041',
|
|
12219
|
+
// maxWithdrawAmount: '4281.84764041',
|
|
12220
|
+
// assets: [
|
|
12221
|
+
// {
|
|
12222
|
+
// asset: 'ETH',
|
|
12223
|
+
// walletBalance: '0.00000000',
|
|
12224
|
+
// unrealizedProfit: '0.00000000',
|
|
12225
|
+
// marginBalance: '0.00000000',
|
|
12226
|
+
// maintMargin: '0.00000000',
|
|
12227
|
+
// initialMargin: '0.00000000',
|
|
12228
|
+
// positionInitialMargin: '0.00000000',
|
|
12229
|
+
// openOrderInitialMargin: '0.00000000',
|
|
12230
|
+
// maxWithdrawAmount: '0.00000000',
|
|
12231
|
+
// crossWalletBalance: '0.00000000',
|
|
12232
|
+
// crossUnPnl: '0.00000000',
|
|
12233
|
+
// availableBalance: '1.26075574',
|
|
12234
|
+
// marginAvailable: true,
|
|
12235
|
+
// updateTime: '0'
|
|
12236
|
+
// },
|
|
12237
|
+
// ...
|
|
12238
|
+
// ],
|
|
12239
|
+
// positions: [
|
|
12240
|
+
// {
|
|
12241
|
+
// symbol: 'SNTUSDT',
|
|
12242
|
+
// initialMargin: '0',
|
|
12243
|
+
// maintMargin: '0',
|
|
12244
|
+
// unrealizedProfit: '0.00000000',
|
|
12245
|
+
// positionInitialMargin: '0',
|
|
12246
|
+
// openOrderInitialMargin: '0',
|
|
12247
|
+
// leverage: '20',
|
|
12248
|
+
// isolated: false,
|
|
12249
|
+
// entryPrice: '0.0',
|
|
12250
|
+
// breakEvenPrice: '0.0',
|
|
12251
|
+
// maxNotional: '25000',
|
|
12252
|
+
// positionSide: 'BOTH',
|
|
12253
|
+
// positionAmt: '0',
|
|
12254
|
+
// notional: '0',
|
|
12255
|
+
// isolatedWallet: '0',
|
|
12256
|
+
// updateTime: '0',
|
|
12257
|
+
// bidNotional: '0',
|
|
12258
|
+
// askNotional: '0'
|
|
12259
|
+
// },
|
|
12260
|
+
// ...
|
|
12261
|
+
// ]
|
|
12262
|
+
// }
|
|
12263
|
+
//
|
|
12264
|
+
}
|
|
12265
|
+
else if (subType === 'inverse') {
|
|
12266
|
+
response = await this.dapiPrivateGetAccount(params);
|
|
12267
|
+
//
|
|
12268
|
+
// {
|
|
12269
|
+
// feeTier: '0',
|
|
12270
|
+
// canTrade: true,
|
|
12271
|
+
// canDeposit: true,
|
|
12272
|
+
// canWithdraw: true,
|
|
12273
|
+
// updateTime: '0',
|
|
12274
|
+
// assets: [
|
|
12275
|
+
// {
|
|
12276
|
+
// asset: 'APT',
|
|
12277
|
+
// walletBalance: '0.00000000',
|
|
12278
|
+
// unrealizedProfit: '0.00000000',
|
|
12279
|
+
// marginBalance: '0.00000000',
|
|
12280
|
+
// maintMargin: '0.00000000',
|
|
12281
|
+
// initialMargin: '0.00000000',
|
|
12282
|
+
// positionInitialMargin: '0.00000000',
|
|
12283
|
+
// openOrderInitialMargin: '0.00000000',
|
|
12284
|
+
// maxWithdrawAmount: '0.00000000',
|
|
12285
|
+
// crossWalletBalance: '0.00000000',
|
|
12286
|
+
// crossUnPnl: '0.00000000',
|
|
12287
|
+
// availableBalance: '0.00000000',
|
|
12288
|
+
// updateTime: '0'
|
|
12289
|
+
// },
|
|
12290
|
+
// ...
|
|
12291
|
+
// ],
|
|
12292
|
+
// positions: [
|
|
12293
|
+
// {
|
|
12294
|
+
// symbol: 'BCHUSD_240329',
|
|
12295
|
+
// initialMargin: '0',
|
|
12296
|
+
// maintMargin: '0',
|
|
12297
|
+
// unrealizedProfit: '0.00000000',
|
|
12298
|
+
// positionInitialMargin: '0',
|
|
12299
|
+
// openOrderInitialMargin: '0',
|
|
12300
|
+
// leverage: '20',
|
|
12301
|
+
// isolated: false,
|
|
12302
|
+
// positionSide: 'BOTH',
|
|
12303
|
+
// entryPrice: '0.00000000',
|
|
12304
|
+
// maxQty: '1000',
|
|
12305
|
+
// notionalValue: '0',
|
|
12306
|
+
// isolatedWallet: '0',
|
|
12307
|
+
// updateTime: '0',
|
|
12308
|
+
// positionAmt: '0',
|
|
12309
|
+
// breakEvenPrice: '0.00000000'
|
|
12310
|
+
// },
|
|
12311
|
+
// ...
|
|
12312
|
+
// ]
|
|
12313
|
+
// }
|
|
12314
|
+
//
|
|
12315
|
+
}
|
|
12316
|
+
else {
|
|
12317
|
+
throw new BadRequest(this.id + ' fetchMarginModes () supports linear and inverse subTypes only');
|
|
12318
|
+
}
|
|
12319
|
+
const assets = this.safeValue(response, 'positions', []);
|
|
12320
|
+
return this.parseMarginModes(assets, symbols, 'symbol', 'swap');
|
|
12321
|
+
}
|
|
12322
|
+
parseMarginMode(marginMode, market = undefined) {
|
|
12323
|
+
const marketId = this.safeString(marginMode, 'symbol');
|
|
12324
|
+
market = this.safeMarket(marketId, market);
|
|
12325
|
+
const isIsolated = this.safeBool(marginMode, 'isolated');
|
|
12326
|
+
return {
|
|
12327
|
+
'info': marginMode,
|
|
12328
|
+
'symbol': market['symbol'],
|
|
12329
|
+
'marginMode': isIsolated ? 'isolated' : 'cross',
|
|
12330
|
+
};
|
|
12331
|
+
}
|
|
12164
12332
|
}
|
package/js/src/bingx.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Exchange from './abstract/bingx.js';
|
|
2
|
-
import type { TransferEntry, Int, OrderSide, OHLCV, FundingRateHistory, Order, OrderType, OrderRequest, Str, Trade, Balances, Transaction, Ticker, OrderBook, Tickers, Market, Strings, Currency, Position, Dict } from './base/types.js';
|
|
2
|
+
import type { TransferEntry, Int, OrderSide, OHLCV, FundingRateHistory, Order, OrderType, OrderRequest, Str, Trade, Balances, Transaction, Ticker, OrderBook, Tickers, Market, Strings, Currency, Position, Dict, Leverage } from './base/types.js';
|
|
3
3
|
/**
|
|
4
4
|
* @class bingx
|
|
5
5
|
* @augments Exchange
|
|
@@ -110,7 +110,8 @@ export default class bingx extends Exchange {
|
|
|
110
110
|
parseTransactionStatus(status: string): string;
|
|
111
111
|
setMarginMode(marginMode: string, symbol?: Str, params?: {}): Promise<any>;
|
|
112
112
|
setMargin(symbol: string, amount: number, params?: {}): Promise<any>;
|
|
113
|
-
fetchLeverage(symbol: string, params?: {}): Promise<
|
|
113
|
+
fetchLeverage(symbol: string, params?: {}): Promise<Leverage>;
|
|
114
|
+
parseLeverage(leverage: any, market?: any): Leverage;
|
|
114
115
|
setLeverage(leverage: Int, symbol?: Str, params?: {}): Promise<any>;
|
|
115
116
|
fetchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
|
|
116
117
|
parseDepositWithdrawFee(fee: any, currency?: Currency): {
|
package/js/src/bingx.js
CHANGED
|
@@ -3499,7 +3499,18 @@ export default class bingx extends Exchange {
|
|
|
3499
3499
|
// }
|
|
3500
3500
|
// }
|
|
3501
3501
|
//
|
|
3502
|
-
|
|
3502
|
+
const data = this.safeDict(response, 'data', {});
|
|
3503
|
+
return this.parseLeverage(data, market);
|
|
3504
|
+
}
|
|
3505
|
+
parseLeverage(leverage, market = undefined) {
|
|
3506
|
+
const marketId = this.safeString(leverage, 'symbol');
|
|
3507
|
+
return {
|
|
3508
|
+
'info': leverage,
|
|
3509
|
+
'symbol': this.safeSymbol(marketId, market),
|
|
3510
|
+
'marginMode': undefined,
|
|
3511
|
+
'longLeverage': this.safeInteger(leverage, 'longLeverage'),
|
|
3512
|
+
'shortLeverage': this.safeInteger(leverage, 'shortLeverage'),
|
|
3513
|
+
};
|
|
3503
3514
|
}
|
|
3504
3515
|
async setLeverage(leverage, symbol = undefined, params = {}) {
|
|
3505
3516
|
/**
|
package/js/src/bitget.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Exchange from './abstract/bitget.js';
|
|
2
|
-
import type { Int, OrderSide, OrderType, Trade, OHLCV, Order, FundingRateHistory, OrderRequest, FundingHistory, Balances, Str, Transaction, Ticker, OrderBook, Tickers, Market, Strings, Currency, Position, Liquidation, TransferEntry } from './base/types.js';
|
|
2
|
+
import type { Int, OrderSide, OrderType, Trade, OHLCV, Order, FundingRateHistory, OrderRequest, FundingHistory, Balances, Str, Transaction, Ticker, OrderBook, Tickers, Market, Strings, Currency, Position, Liquidation, TransferEntry, Leverage } from './base/types.js';
|
|
3
3
|
/**
|
|
4
4
|
* @class bitget
|
|
5
5
|
* @augments Exchange
|
|
@@ -157,7 +157,8 @@ export default class bitget extends Exchange {
|
|
|
157
157
|
};
|
|
158
158
|
reduceMargin(symbol: string, amount: any, params?: {}): Promise<any>;
|
|
159
159
|
addMargin(symbol: string, amount: any, params?: {}): Promise<any>;
|
|
160
|
-
fetchLeverage(symbol: string, params?: {}): Promise<
|
|
160
|
+
fetchLeverage(symbol: string, params?: {}): Promise<Leverage>;
|
|
161
|
+
parseLeverage(leverage: any, market?: any): Leverage;
|
|
161
162
|
setLeverage(leverage: Int, symbol?: Str, params?: {}): Promise<any>;
|
|
162
163
|
setMarginMode(marginMode: string, symbol?: Str, params?: {}): Promise<any>;
|
|
163
164
|
setPositionMode(hedged: boolean, symbol?: Str, params?: {}): Promise<any>;
|