ccxt 4.1.13 → 4.1.16
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/CHANGELOG.md +219 -0
- package/CONTRIBUTING.md +1 -0
- package/README.md +3 -3
- package/dist/ccxt.browser.js +539 -189
- package/dist/ccxt.browser.min.js +9 -9
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/ascendex.js +1 -0
- package/dist/cjs/src/base/Exchange.js +3 -0
- package/dist/cjs/src/binance.js +6 -2
- package/dist/cjs/src/bingx.js +5 -3
- package/dist/cjs/src/bitget.js +357 -64
- package/dist/cjs/src/bitmart.js +2 -0
- package/dist/cjs/src/bitmex.js +6 -3
- package/dist/cjs/src/bittrex.js +7 -0
- package/dist/cjs/src/btcalpha.js +2 -1
- package/dist/cjs/src/btcturk.js +3 -0
- package/dist/cjs/src/cex.js +1 -0
- package/dist/cjs/src/coinbase.js +1 -0
- package/dist/cjs/src/coinbasepro.js +1 -0
- package/dist/cjs/src/coinex.js +2 -0
- package/dist/cjs/src/coinfalcon.js +1 -0
- package/dist/cjs/src/coinmate.js +1 -0
- package/dist/cjs/src/coinone.js +15 -5
- package/dist/cjs/src/cryptocom.js +25 -87
- package/dist/cjs/src/currencycom.js +1 -0
- package/dist/cjs/src/delta.js +1 -0
- package/dist/cjs/src/deribit.js +1 -0
- package/dist/cjs/src/digifinex.js +10 -8
- package/dist/cjs/src/exmo.js +1 -0
- package/dist/cjs/src/gate.js +3 -0
- package/dist/cjs/src/gemini.js +1 -0
- package/dist/cjs/src/hitbtc.js +1 -0
- package/dist/cjs/src/hollaex.js +1 -0
- package/dist/cjs/src/huobi.js +8 -0
- package/dist/cjs/src/huobijp.js +1 -0
- package/dist/cjs/src/idex.js +1 -0
- package/dist/cjs/src/independentreserve.js +1 -0
- package/dist/cjs/src/indodax.js +1 -0
- package/dist/cjs/src/kraken.js +10 -0
- package/dist/cjs/src/krakenfutures.js +1 -0
- package/dist/cjs/src/kucoin.js +1 -0
- package/dist/cjs/src/kucoinfutures.js +1 -0
- package/dist/cjs/src/kuna.js +1 -0
- package/dist/cjs/src/latoken.js +1 -0
- package/dist/cjs/src/lbank.js +1 -0
- package/dist/cjs/src/lbank2.js +2 -0
- package/dist/cjs/src/luno.js +1 -0
- package/dist/cjs/src/lykke.js +2 -1
- package/dist/cjs/src/mercado.js +1 -0
- package/dist/cjs/src/mexc.js +4 -1
- package/dist/cjs/src/ndax.js +1 -0
- package/dist/cjs/src/novadax.js +1 -0
- package/dist/cjs/src/oceanex.js +1 -0
- package/dist/cjs/src/phemex.js +2 -0
- package/dist/cjs/src/poloniex.js +1 -0
- package/dist/cjs/src/poloniexfutures.js +8 -2
- package/dist/cjs/src/pro/krakenfutures.js +14 -10
- package/dist/cjs/src/probit.js +1 -0
- package/dist/cjs/src/tidex.js +1 -0
- package/dist/cjs/src/timex.js +1 -0
- package/dist/cjs/src/tokocrypto.js +1 -0
- package/dist/cjs/src/upbit.js +1 -0
- package/dist/cjs/src/wavesexchange.js +1 -0
- package/dist/cjs/src/wazirx.js +2 -1
- package/dist/cjs/src/whitebit.js +1 -0
- package/dist/cjs/src/woo.js +1 -0
- package/dist/cjs/src/yobit.js +1 -0
- package/dist/cjs/src/zaif.js +1 -0
- package/dist/cjs/src/zonda.js +1 -0
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/binance.d.ts +4 -0
- package/js/src/abstract/binancecoinm.d.ts +4 -0
- package/js/src/abstract/binanceus.d.ts +4 -0
- package/js/src/abstract/binanceusdm.d.ts +4 -0
- package/js/src/abstract/btcturk.d.ts +3 -0
- package/js/src/abstract/kraken.d.ts +8 -0
- package/js/src/abstract/poloniexfutures.d.ts +6 -1
- package/js/src/ascendex.js +1 -0
- package/js/src/base/Exchange.d.ts +1 -0
- package/js/src/base/Exchange.js +3 -0
- package/js/src/binance.js +6 -2
- package/js/src/bingx.js +5 -3
- package/js/src/bitget.d.ts +28 -0
- package/js/src/bitget.js +357 -64
- package/js/src/bitmart.js +2 -0
- package/js/src/bitmex.js +6 -3
- package/js/src/bittrex.d.ts +2 -2
- package/js/src/bittrex.js +7 -0
- package/js/src/btcalpha.js +2 -1
- package/js/src/btcturk.js +3 -0
- package/js/src/cex.js +1 -0
- package/js/src/coinbase.js +1 -0
- package/js/src/coinbasepro.js +1 -0
- package/js/src/coinex.js +2 -0
- package/js/src/coinfalcon.js +1 -0
- package/js/src/coinmate.js +1 -0
- package/js/src/coinone.js +15 -5
- package/js/src/cryptocom.d.ts +0 -2
- package/js/src/cryptocom.js +25 -87
- package/js/src/currencycom.js +1 -0
- package/js/src/delta.js +1 -0
- package/js/src/deribit.js +1 -0
- package/js/src/digifinex.d.ts +3 -28
- package/js/src/digifinex.js +10 -8
- package/js/src/exmo.js +1 -0
- package/js/src/gate.d.ts +1 -0
- package/js/src/gate.js +3 -0
- package/js/src/gemini.d.ts +1 -0
- package/js/src/gemini.js +1 -0
- package/js/src/hitbtc.js +1 -0
- package/js/src/hollaex.js +1 -0
- package/js/src/huobi.js +8 -0
- package/js/src/huobijp.js +1 -0
- package/js/src/idex.js +1 -0
- package/js/src/independentreserve.js +1 -0
- package/js/src/indodax.js +1 -0
- package/js/src/kraken.js +10 -0
- package/js/src/krakenfutures.js +1 -0
- package/js/src/kucoin.js +1 -0
- package/js/src/kucoinfutures.js +1 -0
- package/js/src/kuna.js +1 -0
- package/js/src/latoken.js +1 -0
- package/js/src/lbank.js +1 -0
- package/js/src/lbank2.js +2 -0
- package/js/src/luno.js +1 -0
- package/js/src/lykke.js +2 -1
- package/js/src/mercado.js +1 -0
- package/js/src/mexc.js +4 -1
- package/js/src/ndax.js +1 -0
- package/js/src/novadax.js +1 -0
- package/js/src/oceanex.js +1 -0
- package/js/src/phemex.d.ts +2 -0
- package/js/src/phemex.js +2 -0
- package/js/src/poloniex.js +1 -0
- package/js/src/poloniexfutures.js +8 -2
- package/js/src/pro/krakenfutures.js +14 -10
- package/js/src/probit.js +1 -0
- package/js/src/tidex.js +1 -0
- package/js/src/timex.d.ts +1 -0
- package/js/src/timex.js +1 -0
- package/js/src/tokocrypto.js +1 -0
- package/js/src/upbit.js +1 -0
- package/js/src/wavesexchange.js +1 -0
- package/js/src/wazirx.js +2 -1
- package/js/src/whitebit.js +1 -0
- package/js/src/woo.js +1 -0
- package/js/src/yobit.js +1 -0
- package/js/src/zaif.js +1 -0
- package/js/src/zonda.js +1 -0
- package/package.json +1 -1
- package/skip-tests.json +141 -12
package/dist/cjs/ccxt.js
CHANGED
|
@@ -180,7 +180,7 @@ var woo$1 = require('./src/pro/woo.js');
|
|
|
180
180
|
|
|
181
181
|
//-----------------------------------------------------------------------------
|
|
182
182
|
// this is updated by vss.js when building
|
|
183
|
-
const version = '4.1.
|
|
183
|
+
const version = '4.1.16';
|
|
184
184
|
Exchange["default"].ccxtVersion = version;
|
|
185
185
|
const exchanges = {
|
|
186
186
|
'ace': ace,
|
package/dist/cjs/src/ascendex.js
CHANGED
|
@@ -1056,6 +1056,9 @@ class Exchange {
|
|
|
1056
1056
|
convertToBigInt(value) {
|
|
1057
1057
|
return BigInt(value); // used on XT
|
|
1058
1058
|
}
|
|
1059
|
+
stringToCharsArray(value) {
|
|
1060
|
+
return value.split('');
|
|
1061
|
+
}
|
|
1059
1062
|
valueIsDefined(value) {
|
|
1060
1063
|
return value !== undefined && value !== null;
|
|
1061
1064
|
}
|
package/dist/cjs/src/binance.js
CHANGED
|
@@ -247,7 +247,8 @@ class binance extends binance$1 {
|
|
|
247
247
|
'margin/exchange-small-liability-history': 0.6667,
|
|
248
248
|
'margin/next-hourly-interest-rate': 0.6667,
|
|
249
249
|
'margin/capital-flow': 10,
|
|
250
|
-
'margin/delist-schedule':
|
|
250
|
+
'margin/delist-schedule': 10,
|
|
251
|
+
'margin/available-inventory': 0.3334,
|
|
251
252
|
'loan/vip/loanable/data': 40,
|
|
252
253
|
'loan/vip/collateral/data': 40,
|
|
253
254
|
'loan/vip/request/data': 2.6668,
|
|
@@ -638,7 +639,8 @@ class binance extends binance$1 {
|
|
|
638
639
|
'premiumIndexKlines': { 'cost': 1, 'byLimit': [[99, 1], [499, 2], [1000, 5], [10000, 10]] },
|
|
639
640
|
'ticker/24hr': { 'cost': 1, 'noSymbol': 40 },
|
|
640
641
|
'ticker/price': { 'cost': 1, 'noSymbol': 2 },
|
|
641
|
-
'ticker/bookTicker': { 'cost':
|
|
642
|
+
'ticker/bookTicker': { 'cost': 2, 'noSymbol': 5 },
|
|
643
|
+
'constituents': 2,
|
|
642
644
|
'openInterest': 1,
|
|
643
645
|
},
|
|
644
646
|
},
|
|
@@ -723,6 +725,8 @@ class binance extends binance$1 {
|
|
|
723
725
|
'ticker/bookTicker': { 'cost': 1, 'noSymbol': 2 },
|
|
724
726
|
'openInterest': 1,
|
|
725
727
|
'indexInfo': 1,
|
|
728
|
+
'assetIndex': { 'cost': 1, 'noSymbol': 10 },
|
|
729
|
+
'constituents': 2,
|
|
726
730
|
'apiTradingStatus': { 'cost': 1, 'noSymbol': 10 },
|
|
727
731
|
'lvtKlines': 1,
|
|
728
732
|
},
|
package/dist/cjs/src/bingx.js
CHANGED
|
@@ -1553,7 +1553,7 @@ class bingx extends bingx$1 {
|
|
|
1553
1553
|
'info': position,
|
|
1554
1554
|
'id': this.safeString(position, 'positionId'),
|
|
1555
1555
|
'symbol': this.safeSymbol(marketId, market, '-', 'swap'),
|
|
1556
|
-
'notional': this.
|
|
1556
|
+
'notional': this.safeNumber(position, 'positionAmt'),
|
|
1557
1557
|
'marginMode': marginMode,
|
|
1558
1558
|
'liquidationPrice': undefined,
|
|
1559
1559
|
'entryPrice': this.safeNumber2(position, 'avgPrice', 'entryPrice'),
|
|
@@ -2697,8 +2697,10 @@ class bingx extends bingx$1 {
|
|
|
2697
2697
|
const network = this.safeString(transaction, 'network');
|
|
2698
2698
|
const currencyId = this.safeString(transaction, 'coin');
|
|
2699
2699
|
let code = this.safeCurrencyCode(currencyId, currency);
|
|
2700
|
-
if (code !== undefined && code.indexOf(network) >= 0) {
|
|
2701
|
-
|
|
2700
|
+
if ((code !== undefined) && (code !== network) && code.indexOf(network) >= 0) {
|
|
2701
|
+
if (network !== undefined) {
|
|
2702
|
+
code = code.replace(network, '');
|
|
2703
|
+
}
|
|
2702
2704
|
}
|
|
2703
2705
|
const rawType = this.safeString(transaction, 'transferType');
|
|
2704
2706
|
const type = (rawType === '0') ? 'deposit' : 'withdrawal';
|
package/dist/cjs/src/bitget.js
CHANGED
|
@@ -25,11 +25,12 @@ class bitget extends bitget$1 {
|
|
|
25
25
|
'has': {
|
|
26
26
|
'CORS': undefined,
|
|
27
27
|
'spot': true,
|
|
28
|
-
'margin':
|
|
28
|
+
'margin': undefined,
|
|
29
29
|
'swap': true,
|
|
30
30
|
'future': true,
|
|
31
31
|
'option': false,
|
|
32
32
|
'addMargin': true,
|
|
33
|
+
'borrowMargin': true,
|
|
33
34
|
'cancelAllOrders': true,
|
|
34
35
|
'cancelOrder': true,
|
|
35
36
|
'cancelOrders': true,
|
|
@@ -88,6 +89,7 @@ class bitget extends bitget$1 {
|
|
|
88
89
|
'fetchWithdrawal': false,
|
|
89
90
|
'fetchWithdrawals': true,
|
|
90
91
|
'reduceMargin': true,
|
|
92
|
+
'repayMargin': true,
|
|
91
93
|
'setLeverage': true,
|
|
92
94
|
'setMarginMode': true,
|
|
93
95
|
'setPositionMode': true,
|
|
@@ -1292,6 +1294,7 @@ class bitget extends bitget$1 {
|
|
|
1292
1294
|
'max': undefined,
|
|
1293
1295
|
},
|
|
1294
1296
|
},
|
|
1297
|
+
'created': undefined,
|
|
1295
1298
|
'info': market,
|
|
1296
1299
|
};
|
|
1297
1300
|
}
|
|
@@ -2638,18 +2641,20 @@ class bitget extends bitget$1 {
|
|
|
2638
2641
|
* @description query for balance and get the amount of funds available for trading or funds locked in orders
|
|
2639
2642
|
* @see https://bitgetlimited.github.io/apidoc/en/spot/#get-account-assets
|
|
2640
2643
|
* @see https://bitgetlimited.github.io/apidoc/en/mix/#get-account-list
|
|
2644
|
+
* @see https://bitgetlimited.github.io/apidoc/en/margin/#get-cross-assets
|
|
2645
|
+
* @see https://bitgetlimited.github.io/apidoc/en/margin/#get-isolated-assets
|
|
2641
2646
|
* @param {object} [params] extra parameters specific to the bitget api endpoint
|
|
2642
2647
|
* @returns {object} a [balance structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#balance-structure}
|
|
2643
2648
|
*/
|
|
2644
2649
|
const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
|
|
2645
2650
|
await this.loadMarkets();
|
|
2646
|
-
const [marketType, query] = this.handleMarketTypeAndParams('fetchBalance', undefined, params);
|
|
2647
|
-
const method = this.getSupportedMapping(marketType, {
|
|
2648
|
-
'spot': 'privateSpotGetAccountAssets',
|
|
2649
|
-
'swap': 'privateMixGetAccountAccounts',
|
|
2650
|
-
});
|
|
2651
2651
|
const request = {};
|
|
2652
|
-
|
|
2652
|
+
let marketType = undefined;
|
|
2653
|
+
let marginMode = undefined;
|
|
2654
|
+
let response = undefined;
|
|
2655
|
+
[marketType, params] = this.handleMarketTypeAndParams('fetchBalance', undefined, params);
|
|
2656
|
+
[marginMode, params] = this.handleMarginModeAndParams('fetchBalance', params);
|
|
2657
|
+
if ((marketType === 'swap') || (marketType === 'future')) {
|
|
2653
2658
|
let subType = undefined;
|
|
2654
2659
|
[subType, params] = this.handleSubTypeAndParams('fetchBalance', undefined, params);
|
|
2655
2660
|
let productType = (subType === 'linear') ? 'UMCBL' : 'DMCBL';
|
|
@@ -2657,45 +2662,106 @@ class bitget extends bitget$1 {
|
|
|
2657
2662
|
productType = 'S' + productType;
|
|
2658
2663
|
}
|
|
2659
2664
|
request['productType'] = productType;
|
|
2665
|
+
response = await this.privateMixGetAccountAccounts(this.extend(request, params));
|
|
2666
|
+
}
|
|
2667
|
+
else if (marginMode === 'isolated') {
|
|
2668
|
+
response = await this.privateMarginGetIsolatedAccountAssets(this.extend(request, params));
|
|
2669
|
+
}
|
|
2670
|
+
else if (marginMode === 'cross') {
|
|
2671
|
+
response = await this.privateMarginGetCrossAccountAssets(this.extend(request, params));
|
|
2672
|
+
}
|
|
2673
|
+
else if (marketType === 'spot') {
|
|
2674
|
+
response = await this.privateSpotGetAccountAssets(this.extend(request, params));
|
|
2675
|
+
}
|
|
2676
|
+
else {
|
|
2677
|
+
throw new errors.NotSupported(this.id + ' fetchBalance() does not support ' + marketType + ' accounts');
|
|
2660
2678
|
}
|
|
2661
|
-
const response = await this[method](this.extend(request, query));
|
|
2662
2679
|
// spot
|
|
2680
|
+
//
|
|
2663
2681
|
// {
|
|
2664
|
-
//
|
|
2665
|
-
//
|
|
2666
|
-
//
|
|
2667
|
-
//
|
|
2668
|
-
//
|
|
2669
|
-
//
|
|
2670
|
-
//
|
|
2671
|
-
//
|
|
2672
|
-
//
|
|
2673
|
-
//
|
|
2674
|
-
//
|
|
2675
|
-
//
|
|
2676
|
-
//
|
|
2682
|
+
// "code": "00000",
|
|
2683
|
+
// "msg": "success",
|
|
2684
|
+
// "requestTime": 1697507299139,
|
|
2685
|
+
// "data": [
|
|
2686
|
+
// {
|
|
2687
|
+
// "coinId": 1,
|
|
2688
|
+
// "coinName": "BTC",
|
|
2689
|
+
// "available": "0.00000000",
|
|
2690
|
+
// "frozen": "0.00000000",
|
|
2691
|
+
// "lock": "0.00000000",
|
|
2692
|
+
// "uTime": "1697248128000"
|
|
2693
|
+
// },
|
|
2694
|
+
// ]
|
|
2677
2695
|
// }
|
|
2678
2696
|
//
|
|
2679
2697
|
// swap
|
|
2698
|
+
//
|
|
2680
2699
|
// {
|
|
2681
|
-
//
|
|
2682
|
-
//
|
|
2683
|
-
//
|
|
2684
|
-
//
|
|
2685
|
-
//
|
|
2686
|
-
//
|
|
2687
|
-
//
|
|
2688
|
-
//
|
|
2689
|
-
//
|
|
2690
|
-
//
|
|
2691
|
-
//
|
|
2692
|
-
//
|
|
2693
|
-
//
|
|
2694
|
-
//
|
|
2695
|
-
//
|
|
2696
|
-
//
|
|
2700
|
+
// "code": "00000",
|
|
2701
|
+
// "msg": "success",
|
|
2702
|
+
// "requestTime": 1697507505367,
|
|
2703
|
+
// "data": [
|
|
2704
|
+
// {
|
|
2705
|
+
// "marginCoin": "STETH",
|
|
2706
|
+
// "locked": "0",
|
|
2707
|
+
// "available": "0",
|
|
2708
|
+
// "crossMaxAvailable": "0",
|
|
2709
|
+
// "fixedMaxAvailable": "0",
|
|
2710
|
+
// "maxTransferOut": "0",
|
|
2711
|
+
// "equity": "0",
|
|
2712
|
+
// "usdtEquity": "0",
|
|
2713
|
+
// "btcEquity": "0",
|
|
2714
|
+
// "crossRiskRate": "0",
|
|
2715
|
+
// "unrealizedPL": "0",
|
|
2716
|
+
// "bonus": "0"
|
|
2717
|
+
// },
|
|
2718
|
+
// ]
|
|
2697
2719
|
// }
|
|
2698
|
-
|
|
2720
|
+
//
|
|
2721
|
+
// isolated margin
|
|
2722
|
+
//
|
|
2723
|
+
// {
|
|
2724
|
+
// "code": "00000",
|
|
2725
|
+
// "msg": "success",
|
|
2726
|
+
// "requestTime": 1697501436571,
|
|
2727
|
+
// "data": [
|
|
2728
|
+
// {
|
|
2729
|
+
// "symbol": "BTCUSDT",
|
|
2730
|
+
// "coin": "BTC",
|
|
2731
|
+
// "totalAmount": "0.00021654",
|
|
2732
|
+
// "available": "0.00021654",
|
|
2733
|
+
// "transferable": "0.00021654",
|
|
2734
|
+
// "frozen": "0",
|
|
2735
|
+
// "borrow": "0",
|
|
2736
|
+
// "interest": "0",
|
|
2737
|
+
// "net": "0.00021654",
|
|
2738
|
+
// "ctime": "1697248128071"
|
|
2739
|
+
// },
|
|
2740
|
+
// ]
|
|
2741
|
+
// }
|
|
2742
|
+
//
|
|
2743
|
+
// cross margin
|
|
2744
|
+
//
|
|
2745
|
+
// {
|
|
2746
|
+
// "code": "00000",
|
|
2747
|
+
// "msg": "success",
|
|
2748
|
+
// "requestTime": 1697515463804,
|
|
2749
|
+
// "data": [
|
|
2750
|
+
// {
|
|
2751
|
+
// "coin": "BTC",
|
|
2752
|
+
// "totalAmount": "0.00024996",
|
|
2753
|
+
// "available": "0.00024996",
|
|
2754
|
+
// "transferable": "0.00004994",
|
|
2755
|
+
// "frozen": "0",
|
|
2756
|
+
// "borrow": "0.0001",
|
|
2757
|
+
// "interest": "0.00000001",
|
|
2758
|
+
// "net": "0.00014995",
|
|
2759
|
+
// "ctime": "1697251265504"
|
|
2760
|
+
// },
|
|
2761
|
+
// ]
|
|
2762
|
+
// }
|
|
2763
|
+
//
|
|
2764
|
+
const data = this.safeValue(response, 'data', []);
|
|
2699
2765
|
return this.parseBalance(data);
|
|
2700
2766
|
}
|
|
2701
2767
|
parseBalance(balance) {
|
|
@@ -2704,42 +2770,81 @@ class bitget extends bitget$1 {
|
|
|
2704
2770
|
// spot
|
|
2705
2771
|
//
|
|
2706
2772
|
// {
|
|
2707
|
-
// coinId:
|
|
2708
|
-
// coinName:
|
|
2709
|
-
// available:
|
|
2710
|
-
// frozen:
|
|
2711
|
-
// lock:
|
|
2712
|
-
// uTime:
|
|
2773
|
+
// "coinId": 1,
|
|
2774
|
+
// "coinName": "BTC",
|
|
2775
|
+
// "available": "0.00000000",
|
|
2776
|
+
// "frozen": "0.00000000",
|
|
2777
|
+
// "lock": "0.00000000",
|
|
2778
|
+
// "uTime": "1697248128000"
|
|
2713
2779
|
// }
|
|
2714
2780
|
//
|
|
2715
2781
|
// swap
|
|
2716
2782
|
//
|
|
2717
2783
|
// {
|
|
2718
|
-
// marginCoin:
|
|
2719
|
-
// locked:
|
|
2720
|
-
// available:
|
|
2721
|
-
// crossMaxAvailable:
|
|
2722
|
-
// fixedMaxAvailable:
|
|
2723
|
-
// maxTransferOut:
|
|
2724
|
-
// equity:
|
|
2725
|
-
// usdtEquity:
|
|
2726
|
-
// btcEquity:
|
|
2727
|
-
// crossRiskRate:
|
|
2728
|
-
// unrealizedPL:
|
|
2729
|
-
// bonus:
|
|
2784
|
+
// "marginCoin": "STETH",
|
|
2785
|
+
// "locked": "0",
|
|
2786
|
+
// "available": "0",
|
|
2787
|
+
// "crossMaxAvailable": "0",
|
|
2788
|
+
// "fixedMaxAvailable": "0",
|
|
2789
|
+
// "maxTransferOut": "0",
|
|
2790
|
+
// "equity": "0",
|
|
2791
|
+
// "usdtEquity": "0",
|
|
2792
|
+
// "btcEquity": "0",
|
|
2793
|
+
// "crossRiskRate": "0",
|
|
2794
|
+
// "unrealizedPL": "0",
|
|
2795
|
+
// "bonus": "0"
|
|
2796
|
+
// }
|
|
2797
|
+
//
|
|
2798
|
+
// isolated margin
|
|
2799
|
+
//
|
|
2800
|
+
// {
|
|
2801
|
+
// "symbol": "BTCUSDT",
|
|
2802
|
+
// "coin": "BTC",
|
|
2803
|
+
// "totalAmount": "0.00021654",
|
|
2804
|
+
// "available": "0.00021654",
|
|
2805
|
+
// "transferable": "0.00021654",
|
|
2806
|
+
// "frozen": "0",
|
|
2807
|
+
// "borrow": "0",
|
|
2808
|
+
// "interest": "0",
|
|
2809
|
+
// "net": "0.00021654",
|
|
2810
|
+
// "ctime": "1697248128071"
|
|
2811
|
+
// }
|
|
2812
|
+
//
|
|
2813
|
+
// cross margin
|
|
2814
|
+
//
|
|
2815
|
+
// {
|
|
2816
|
+
// "coin": "BTC",
|
|
2817
|
+
// "totalAmount": "0.00024995",
|
|
2818
|
+
// "available": "0.00024995",
|
|
2819
|
+
// "transferable": "0.00004993",
|
|
2820
|
+
// "frozen": "0",
|
|
2821
|
+
// "borrow": "0.0001",
|
|
2822
|
+
// "interest": "0.00000001",
|
|
2823
|
+
// "net": "0.00014994",
|
|
2824
|
+
// "ctime": "1697251265504"
|
|
2730
2825
|
// }
|
|
2731
2826
|
//
|
|
2732
2827
|
for (let i = 0; i < balance.length; i++) {
|
|
2733
2828
|
const entry = balance[i];
|
|
2734
|
-
const currencyId = this.safeString2(entry, 'coinName', 'marginCoin');
|
|
2735
|
-
const code = this.safeCurrencyCode(currencyId);
|
|
2736
2829
|
const account = this.account();
|
|
2737
|
-
const
|
|
2738
|
-
const
|
|
2739
|
-
|
|
2740
|
-
|
|
2741
|
-
|
|
2742
|
-
|
|
2830
|
+
const currencyId = this.safeStringN(entry, ['coinName', 'marginCoin', 'coin']);
|
|
2831
|
+
const code = this.safeCurrencyCode(currencyId);
|
|
2832
|
+
const borrow = this.safeString(entry, 'borrow');
|
|
2833
|
+
if (borrow !== undefined) {
|
|
2834
|
+
const interest = this.safeString(entry, 'interest');
|
|
2835
|
+
account['free'] = this.safeString(entry, 'transferable');
|
|
2836
|
+
account['total'] = this.safeString(entry, 'totalAmount');
|
|
2837
|
+
account['debt'] = Precise["default"].stringAdd(borrow, interest);
|
|
2838
|
+
}
|
|
2839
|
+
else {
|
|
2840
|
+
// Use transferable instead of available for swap and margin https://github.com/ccxt/ccxt/pull/19127
|
|
2841
|
+
const spotAccountFree = this.safeString(entry, 'available');
|
|
2842
|
+
const contractAccountFree = this.safeString(entry, 'maxTransferOut');
|
|
2843
|
+
account['free'] = (contractAccountFree !== undefined) ? contractAccountFree : spotAccountFree;
|
|
2844
|
+
const frozen = this.safeString(entry, 'frozen');
|
|
2845
|
+
const locked = this.safeString2(entry, 'lock', 'locked');
|
|
2846
|
+
account['used'] = Precise["default"].stringAdd(frozen, locked);
|
|
2847
|
+
}
|
|
2743
2848
|
result[code] = account;
|
|
2744
2849
|
}
|
|
2745
2850
|
return this.safeBalance(result);
|
|
@@ -5198,6 +5303,194 @@ class bitget extends bitget$1 {
|
|
|
5198
5303
|
'info': interest,
|
|
5199
5304
|
}, market);
|
|
5200
5305
|
}
|
|
5306
|
+
async borrowMargin(code, amount, symbol = undefined, params = {}) {
|
|
5307
|
+
/**
|
|
5308
|
+
* @method
|
|
5309
|
+
* @name bitget#borrowMargin
|
|
5310
|
+
* @description create a loan to borrow margin
|
|
5311
|
+
* @see https://bitgetlimited.github.io/apidoc/en/margin/#cross-borrow
|
|
5312
|
+
* @see https://bitgetlimited.github.io/apidoc/en/margin/#isolated-borrow
|
|
5313
|
+
* @param {string} code unified currency code of the currency to borrow
|
|
5314
|
+
* @param {string} amount the amount to borrow
|
|
5315
|
+
* @param {string} [symbol] unified market symbol
|
|
5316
|
+
* @param {object} [params] extra parameters specific to the bitget api endpoint
|
|
5317
|
+
* @param {string} [params.marginMode] 'isolated' or 'cross', symbol is required for 'isolated'
|
|
5318
|
+
* @returns {object} a [margin loan structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#margin-loan-structure}
|
|
5319
|
+
*/
|
|
5320
|
+
await this.loadMarkets();
|
|
5321
|
+
const currency = this.currency(code);
|
|
5322
|
+
const request = {
|
|
5323
|
+
'coin': currency['info']['coinName'],
|
|
5324
|
+
'borrowAmount': this.currencyToPrecision(code, amount),
|
|
5325
|
+
};
|
|
5326
|
+
let response = undefined;
|
|
5327
|
+
let marginMode = undefined;
|
|
5328
|
+
[marginMode, params] = this.handleMarginModeAndParams('borrowMargin', params);
|
|
5329
|
+
if ((symbol !== undefined) || (marginMode === 'isolated')) {
|
|
5330
|
+
this.checkRequiredSymbol('borrowMargin', symbol);
|
|
5331
|
+
const market = this.market(symbol);
|
|
5332
|
+
const marketId = market['id'];
|
|
5333
|
+
const parts = marketId.split('_');
|
|
5334
|
+
const marginMarketId = this.safeStringUpper(parts, 0);
|
|
5335
|
+
request['symbol'] = marginMarketId;
|
|
5336
|
+
response = await this.privateMarginPostIsolatedAccountBorrow(this.extend(request, params));
|
|
5337
|
+
}
|
|
5338
|
+
else {
|
|
5339
|
+
response = await this.privateMarginPostCrossAccountBorrow(this.extend(request, params));
|
|
5340
|
+
}
|
|
5341
|
+
//
|
|
5342
|
+
// isolated
|
|
5343
|
+
//
|
|
5344
|
+
// {
|
|
5345
|
+
// "code": "00000",
|
|
5346
|
+
// "msg": "success",
|
|
5347
|
+
// "requestTime": 1697250952516,
|
|
5348
|
+
// "data": {
|
|
5349
|
+
// "clientOid": null,
|
|
5350
|
+
// "symbol": "BTCUSDT",
|
|
5351
|
+
// "coin": "BTC",
|
|
5352
|
+
// "borrowAmount": "0.001"
|
|
5353
|
+
// }
|
|
5354
|
+
// }
|
|
5355
|
+
//
|
|
5356
|
+
// cross
|
|
5357
|
+
//
|
|
5358
|
+
// {
|
|
5359
|
+
// "code": "00000",
|
|
5360
|
+
// "msg": "success",
|
|
5361
|
+
// "requestTime": 1697251314271,
|
|
5362
|
+
// "data": {
|
|
5363
|
+
// "clientOid": null,
|
|
5364
|
+
// "coin": "BTC",
|
|
5365
|
+
// "borrowAmount": "0.0001"
|
|
5366
|
+
// }
|
|
5367
|
+
// }
|
|
5368
|
+
//
|
|
5369
|
+
const data = this.safeValue(response, 'data', {});
|
|
5370
|
+
return this.parseMarginLoan(data, currency);
|
|
5371
|
+
}
|
|
5372
|
+
async repayMargin(code, amount, symbol = undefined, params = {}) {
|
|
5373
|
+
/**
|
|
5374
|
+
* @method
|
|
5375
|
+
* @name bitget#repayMargin
|
|
5376
|
+
* @description repay borrowed margin and interest
|
|
5377
|
+
* @see https://bitgetlimited.github.io/apidoc/en/margin/#cross-repay
|
|
5378
|
+
* @see https://bitgetlimited.github.io/apidoc/en/margin/#isolated-repay
|
|
5379
|
+
* @param {string} code unified currency code of the currency to repay
|
|
5380
|
+
* @param {string} amount the amount to repay
|
|
5381
|
+
* @param {string} [symbol] unified market symbol
|
|
5382
|
+
* @param {object} [params] extra parameters specific to the bitget api endpoint
|
|
5383
|
+
* @param {string} [params.marginMode] 'isolated' or 'cross', symbol is required for 'isolated'
|
|
5384
|
+
* @returns {object} a [margin loan structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#margin-loan-structure}
|
|
5385
|
+
*/
|
|
5386
|
+
await this.loadMarkets();
|
|
5387
|
+
const currency = this.currency(code);
|
|
5388
|
+
const request = {
|
|
5389
|
+
'coin': currency['info']['coinName'],
|
|
5390
|
+
'repayAmount': this.currencyToPrecision(code, amount),
|
|
5391
|
+
};
|
|
5392
|
+
let response = undefined;
|
|
5393
|
+
let marginMode = undefined;
|
|
5394
|
+
[marginMode, params] = this.handleMarginModeAndParams('repayMargin', params);
|
|
5395
|
+
if ((symbol !== undefined) || (marginMode === 'isolated')) {
|
|
5396
|
+
this.checkRequiredSymbol('repayMargin', symbol);
|
|
5397
|
+
const market = this.market(symbol);
|
|
5398
|
+
const marketId = market['id'];
|
|
5399
|
+
const parts = marketId.split('_');
|
|
5400
|
+
const marginMarketId = this.safeStringUpper(parts, 0);
|
|
5401
|
+
request['symbol'] = marginMarketId;
|
|
5402
|
+
response = await this.privateMarginPostIsolatedAccountRepay(this.extend(request, params));
|
|
5403
|
+
}
|
|
5404
|
+
else {
|
|
5405
|
+
response = await this.privateMarginPostCrossAccountRepay(this.extend(request, params));
|
|
5406
|
+
}
|
|
5407
|
+
//
|
|
5408
|
+
// isolated
|
|
5409
|
+
//
|
|
5410
|
+
// {
|
|
5411
|
+
// "code": "00000",
|
|
5412
|
+
// "msg": "success",
|
|
5413
|
+
// "requestTime": 1697251988593,
|
|
5414
|
+
// "data": {
|
|
5415
|
+
// "remainDebtAmount": "0",
|
|
5416
|
+
// "clientOid": null,
|
|
5417
|
+
// "symbol": "BTCUSDT",
|
|
5418
|
+
// "coin": "BTC",
|
|
5419
|
+
// "repayAmount": "0.00100001"
|
|
5420
|
+
// }
|
|
5421
|
+
// }
|
|
5422
|
+
//
|
|
5423
|
+
// cross
|
|
5424
|
+
//
|
|
5425
|
+
// {
|
|
5426
|
+
// "code": "00000",
|
|
5427
|
+
// "msg": "success",
|
|
5428
|
+
// "requestTime": 1697252151042,
|
|
5429
|
+
// "data": {
|
|
5430
|
+
// "remainDebtAmount": "0",
|
|
5431
|
+
// "clientOid": null,
|
|
5432
|
+
// "coin": "BTC",
|
|
5433
|
+
// "repayAmount": "0.00010001"
|
|
5434
|
+
// }
|
|
5435
|
+
// }
|
|
5436
|
+
//
|
|
5437
|
+
const data = this.safeValue(response, 'data', {});
|
|
5438
|
+
return this.parseMarginLoan(data, currency);
|
|
5439
|
+
}
|
|
5440
|
+
parseMarginLoan(info, currency = undefined) {
|
|
5441
|
+
//
|
|
5442
|
+
// isolated: borrowMargin
|
|
5443
|
+
//
|
|
5444
|
+
// {
|
|
5445
|
+
// "clientOid": null,
|
|
5446
|
+
// "symbol": "BTCUSDT",
|
|
5447
|
+
// "coin": "BTC",
|
|
5448
|
+
// "borrowAmount": "0.001"
|
|
5449
|
+
// }
|
|
5450
|
+
//
|
|
5451
|
+
// cross: borrowMargin
|
|
5452
|
+
//
|
|
5453
|
+
// {
|
|
5454
|
+
// "clientOid": null,
|
|
5455
|
+
// "coin": "BTC",
|
|
5456
|
+
// "borrowAmount": "0.0001"
|
|
5457
|
+
// }
|
|
5458
|
+
//
|
|
5459
|
+
// isolated: repayMargin
|
|
5460
|
+
//
|
|
5461
|
+
// {
|
|
5462
|
+
// "remainDebtAmount": "0",
|
|
5463
|
+
// "clientOid": null,
|
|
5464
|
+
// "symbol": "BTCUSDT",
|
|
5465
|
+
// "coin": "BTC",
|
|
5466
|
+
// "repayAmount": "0.00100001"
|
|
5467
|
+
// }
|
|
5468
|
+
//
|
|
5469
|
+
// cross: repayMargin
|
|
5470
|
+
//
|
|
5471
|
+
// {
|
|
5472
|
+
// "remainDebtAmount": "0",
|
|
5473
|
+
// "clientOid": null,
|
|
5474
|
+
// "coin": "BTC",
|
|
5475
|
+
// "repayAmount": "0.00010001"
|
|
5476
|
+
// }
|
|
5477
|
+
//
|
|
5478
|
+
const currencyId = this.safeString(info, 'coin');
|
|
5479
|
+
const marketId = this.safeString(info, 'symbol');
|
|
5480
|
+
let symbol = undefined;
|
|
5481
|
+
if (marketId !== undefined) {
|
|
5482
|
+
symbol = this.safeSymbol(marketId);
|
|
5483
|
+
}
|
|
5484
|
+
return {
|
|
5485
|
+
'id': this.safeString(info, 'clientOid'),
|
|
5486
|
+
'currency': this.safeCurrencyCode(currencyId, currency),
|
|
5487
|
+
'amount': this.safeNumber2(info, 'borrowAmount', 'repayAmount'),
|
|
5488
|
+
'symbol': symbol,
|
|
5489
|
+
'timestamp': undefined,
|
|
5490
|
+
'datetime': undefined,
|
|
5491
|
+
'info': info,
|
|
5492
|
+
};
|
|
5493
|
+
}
|
|
5201
5494
|
handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
|
|
5202
5495
|
if (!response) {
|
|
5203
5496
|
return undefined; // fallback to default error handler
|
package/dist/cjs/src/bitmart.js
CHANGED
|
@@ -757,6 +757,7 @@ class bitmart extends bitmart$1 {
|
|
|
757
757
|
'max': undefined,
|
|
758
758
|
},
|
|
759
759
|
},
|
|
760
|
+
'created': undefined,
|
|
760
761
|
'info': market,
|
|
761
762
|
});
|
|
762
763
|
}
|
|
@@ -863,6 +864,7 @@ class bitmart extends bitmart$1 {
|
|
|
863
864
|
'max': undefined,
|
|
864
865
|
},
|
|
865
866
|
},
|
|
867
|
+
'created': this.safeInteger(market, 'open_timestamp'),
|
|
866
868
|
'info': market,
|
|
867
869
|
});
|
|
868
870
|
}
|
package/dist/cjs/src/bitmex.js
CHANGED
|
@@ -660,6 +660,7 @@ class bitmex extends bitmex$1 {
|
|
|
660
660
|
'max': positionIsQuote ? maxOrderQty : undefined,
|
|
661
661
|
},
|
|
662
662
|
},
|
|
663
|
+
'created': this.parse8601(this.safeString(market, 'listing')),
|
|
663
664
|
'info': market,
|
|
664
665
|
});
|
|
665
666
|
}
|
|
@@ -1040,6 +1041,7 @@ class bitmex extends bitmex$1 {
|
|
|
1040
1041
|
'Deposit': 'transaction',
|
|
1041
1042
|
'Transfer': 'transfer',
|
|
1042
1043
|
'AffiliatePayout': 'referral',
|
|
1044
|
+
'SpotTrade': 'trade',
|
|
1043
1045
|
};
|
|
1044
1046
|
return this.safeString(types, type, type);
|
|
1045
1047
|
}
|
|
@@ -1577,9 +1579,9 @@ class bitmex extends bitmex$1 {
|
|
|
1577
1579
|
const feeCurrencyCode = this.safeCurrencyCode(currencyId);
|
|
1578
1580
|
const feeRateString = this.safeString(trade, 'commission');
|
|
1579
1581
|
fee = {
|
|
1580
|
-
'cost': feeCostString,
|
|
1582
|
+
'cost': Precise["default"].stringAbs(feeCostString),
|
|
1581
1583
|
'currency': feeCurrencyCode,
|
|
1582
|
-
'rate': feeRateString,
|
|
1584
|
+
'rate': Precise["default"].stringAbs(feeRateString),
|
|
1583
1585
|
};
|
|
1584
1586
|
}
|
|
1585
1587
|
// Trade or Funding
|
|
@@ -2107,7 +2109,8 @@ class bitmex extends bitmex$1 {
|
|
|
2107
2109
|
// }
|
|
2108
2110
|
// ]
|
|
2109
2111
|
//
|
|
2110
|
-
|
|
2112
|
+
const results = this.parsePositions(response, symbols);
|
|
2113
|
+
return this.filterByArrayPositions(results, 'symbol', symbols, false);
|
|
2111
2114
|
}
|
|
2112
2115
|
parsePosition(position, market = undefined) {
|
|
2113
2116
|
//
|