ccxt 4.1.12 → 4.1.14
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 +1242 -120
- package/dist/ccxt.browser.min.js +3 -3
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/ace.js +1 -0
- package/dist/cjs/src/alpaca.js +1 -0
- package/dist/cjs/src/ascendex.js +1 -0
- package/dist/cjs/src/base/Exchange.js +30 -0
- package/dist/cjs/src/bigone.js +1 -0
- package/dist/cjs/src/binance.js +237 -3
- package/dist/cjs/src/bingx.js +5 -2
- package/dist/cjs/src/bitbank.js +1 -0
- package/dist/cjs/src/bitbns.js +1 -0
- package/dist/cjs/src/bitfinex.js +1 -0
- package/dist/cjs/src/bitfinex2.js +1 -0
- package/dist/cjs/src/bitflyer.js +1 -0
- package/dist/cjs/src/bitforex.js +1 -0
- package/dist/cjs/src/bitget.js +203 -3
- package/dist/cjs/src/bithumb.js +1 -0
- package/dist/cjs/src/bitmart.js +105 -0
- package/dist/cjs/src/bitmex.js +70 -0
- package/dist/cjs/src/bitopro.js +1 -0
- package/dist/cjs/src/bitpanda.js +1 -0
- package/dist/cjs/src/bitrue.js +1 -0
- package/dist/cjs/src/bitso.js +1 -0
- package/dist/cjs/src/bitstamp.js +1 -0
- package/dist/cjs/src/bittrex.js +6 -0
- package/dist/cjs/src/bitvavo.js +1 -0
- package/dist/cjs/src/blockchaincom.js +1 -0
- package/dist/cjs/src/btcalpha.js +1 -0
- package/dist/cjs/src/btcmarkets.js +1 -0
- package/dist/cjs/src/btcturk.js +1 -0
- package/dist/cjs/src/bybit.js +3 -3
- 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 +2 -1
- 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 +164 -0
- package/dist/cjs/src/digifinex.js +1 -0
- package/dist/cjs/src/exmo.js +1 -0
- package/dist/cjs/src/gate.js +192 -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 +102 -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 +9 -0
- package/dist/cjs/src/krakenfutures.js +1 -0
- package/dist/cjs/src/kucoin.js +1 -0
- package/dist/cjs/src/kucoinfutures.js +1 -1
- package/dist/cjs/src/latoken.js +1 -0
- package/dist/cjs/src/okx.js +1 -0
- package/dist/cjs/src/poloniex.js +21 -7
- package/dist/cjs/src/poloniexfutures.js +8 -2
- package/dist/cjs/src/pro/krakenfutures.js +14 -10
- package/dist/cjs/src/woo.js +1 -0
- package/js/ccxt.d.ts +3 -3
- 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/kraken.d.ts +8 -0
- package/js/src/abstract/poloniex.d.ts +18 -5
- package/js/src/abstract/poloniexfutures.d.ts +6 -1
- package/js/src/ace.js +1 -0
- package/js/src/alpaca.js +1 -0
- package/js/src/ascendex.js +1 -0
- package/js/src/base/Exchange.d.ts +6 -2
- package/js/src/base/Exchange.js +30 -0
- package/js/src/base/types.d.ts +9 -0
- package/js/src/bigone.js +1 -0
- package/js/src/binance.d.ts +13 -1
- package/js/src/binance.js +237 -3
- package/js/src/bingx.d.ts +1 -0
- package/js/src/bingx.js +5 -2
- package/js/src/bitbank.js +1 -0
- package/js/src/bitbns.js +1 -0
- package/js/src/bitfinex.js +1 -0
- package/js/src/bitfinex2.js +1 -0
- package/js/src/bitflyer.js +1 -0
- package/js/src/bitforex.js +1 -0
- package/js/src/bitget.d.ts +28 -0
- package/js/src/bitget.js +203 -3
- package/js/src/bithumb.js +1 -0
- package/js/src/bitmart.d.ts +12 -0
- package/js/src/bitmart.js +105 -0
- package/js/src/bitmex.d.ts +13 -1
- package/js/src/bitmex.js +70 -0
- package/js/src/bitopro.js +1 -0
- package/js/src/bitpanda.js +1 -0
- package/js/src/bitrue.js +1 -0
- package/js/src/bitso.js +1 -0
- package/js/src/bitstamp.js +1 -0
- package/js/src/bittrex.d.ts +2 -2
- package/js/src/bittrex.js +6 -0
- package/js/src/bitvavo.js +1 -0
- package/js/src/blockchaincom.js +1 -0
- package/js/src/btcalpha.js +1 -0
- package/js/src/btcmarkets.js +1 -0
- package/js/src/btcturk.js +1 -0
- package/js/src/bybit.js +3 -3
- 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 +2 -1
- 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.d.ts +14 -0
- package/js/src/deribit.js +164 -0
- package/js/src/digifinex.js +1 -0
- package/js/src/exmo.js +1 -0
- package/js/src/gate.d.ts +14 -0
- package/js/src/gate.js +192 -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.d.ts +12 -0
- package/js/src/huobi.js +102 -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 +9 -0
- package/js/src/krakenfutures.js +1 -0
- package/js/src/kucoin.js +1 -0
- package/js/src/kucoinfutures.js +1 -1
- package/js/src/latoken.js +1 -0
- package/js/src/okx.js +1 -0
- package/js/src/poloniex.js +21 -7
- package/js/src/poloniexfutures.js +8 -2
- package/js/src/pro/krakenfutures.js +14 -10
- package/js/src/woo.js +1 -0
- package/package.json +1 -1
- package/skip-tests.json +94 -12
package/dist/ccxt.browser.js
CHANGED
|
@@ -1710,6 +1710,7 @@ class ace extends _abstract_ace_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
1710
1710
|
'amount': this.parseNumber(this.parsePrecision(this.safeString(market, 'basePrecision'))),
|
|
1711
1711
|
},
|
|
1712
1712
|
'active': undefined,
|
|
1713
|
+
'created': undefined,
|
|
1713
1714
|
'info': market,
|
|
1714
1715
|
});
|
|
1715
1716
|
}
|
|
@@ -2841,6 +2842,7 @@ class alpaca extends _abstract_alpaca_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
2841
2842
|
'max': undefined,
|
|
2842
2843
|
},
|
|
2843
2844
|
},
|
|
2845
|
+
'created': undefined,
|
|
2844
2846
|
'info': asset,
|
|
2845
2847
|
});
|
|
2846
2848
|
}
|
|
@@ -4047,6 +4049,7 @@ class ascendex extends _abstract_ascendex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
4047
4049
|
'max': this.safeNumber(market, 'maxNotional'),
|
|
4048
4050
|
},
|
|
4049
4051
|
},
|
|
4052
|
+
'created': this.safeInteger(market, 'tradingStartTime'),
|
|
4050
4053
|
'info': market,
|
|
4051
4054
|
});
|
|
4052
4055
|
}
|
|
@@ -9802,6 +9805,12 @@ class Exchange {
|
|
|
9802
9805
|
async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
9803
9806
|
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' fetchMyTrades() is not supported yet');
|
|
9804
9807
|
}
|
|
9808
|
+
async fetchMyLiquidations(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
9809
|
+
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' fetchMyLiquidations() is not supported yet');
|
|
9810
|
+
}
|
|
9811
|
+
async fetchLiquidations(symbol, since = undefined, limit = undefined, params = {}) {
|
|
9812
|
+
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' fetchLiquidations() is not supported yet');
|
|
9813
|
+
}
|
|
9805
9814
|
async fetchMyTradesWs(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
9806
9815
|
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' fetchMyTradesWs() is not supported yet');
|
|
9807
9816
|
}
|
|
@@ -10926,6 +10935,30 @@ class Exchange {
|
|
|
10926
10935
|
'info': this.safeValue(interest, 'info'),
|
|
10927
10936
|
});
|
|
10928
10937
|
}
|
|
10938
|
+
parseLiquidation(liquidation, market = undefined) {
|
|
10939
|
+
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' parseLiquidation () is not supported yet');
|
|
10940
|
+
}
|
|
10941
|
+
parseLiquidations(liquidations, market = undefined, since = undefined, limit = undefined) {
|
|
10942
|
+
/**
|
|
10943
|
+
* @ignore
|
|
10944
|
+
* @method
|
|
10945
|
+
* @description parses liquidation info from the exchange response
|
|
10946
|
+
* @param {object[]} liquidations each item describes an instance of a liquidation event
|
|
10947
|
+
* @param {object} market ccxt market
|
|
10948
|
+
* @param {int} [since] when defined, the response items are filtered to only include items after this timestamp
|
|
10949
|
+
* @param {int} [limit] limits the number of items in the response
|
|
10950
|
+
* @returns {object[]} an array of [liquidation structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#liquidation-structure}
|
|
10951
|
+
*/
|
|
10952
|
+
const result = [];
|
|
10953
|
+
for (let i = 0; i < liquidations.length; i++) {
|
|
10954
|
+
const entry = liquidations[i];
|
|
10955
|
+
const parsed = this.parseLiquidation(entry, market);
|
|
10956
|
+
result.push(parsed);
|
|
10957
|
+
}
|
|
10958
|
+
const sorted = this.sortBy(result, 'timestamp');
|
|
10959
|
+
const symbol = this.safeString(market, 'symbol');
|
|
10960
|
+
return this.filterBySymbolSinceLimit(sorted, symbol, since, limit);
|
|
10961
|
+
}
|
|
10929
10962
|
}
|
|
10930
10963
|
|
|
10931
10964
|
|
|
@@ -14606,6 +14639,7 @@ class bigone extends _abstract_bigone_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
14606
14639
|
'max': this.safeNumber(market, 'max_quote_value'),
|
|
14607
14640
|
},
|
|
14608
14641
|
},
|
|
14642
|
+
'created': undefined,
|
|
14609
14643
|
'info': market,
|
|
14610
14644
|
};
|
|
14611
14645
|
result.push(entry);
|
|
@@ -16056,9 +16090,11 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
16056
16090
|
'fetchLedger': true,
|
|
16057
16091
|
'fetchLeverage': false,
|
|
16058
16092
|
'fetchLeverageTiers': true,
|
|
16093
|
+
'fetchLiquidations': false,
|
|
16059
16094
|
'fetchMarketLeverageTiers': 'emulated',
|
|
16060
16095
|
'fetchMarkets': true,
|
|
16061
16096
|
'fetchMarkOHLCV': true,
|
|
16097
|
+
'fetchMyLiquidations': true,
|
|
16062
16098
|
'fetchMySettlementHistory': true,
|
|
16063
16099
|
'fetchMyTrades': true,
|
|
16064
16100
|
'fetchOHLCV': true,
|
|
@@ -16227,7 +16263,8 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
16227
16263
|
'margin/exchange-small-liability-history': 0.6667,
|
|
16228
16264
|
'margin/next-hourly-interest-rate': 0.6667,
|
|
16229
16265
|
'margin/capital-flow': 10,
|
|
16230
|
-
'margin/delist-schedule':
|
|
16266
|
+
'margin/delist-schedule': 10,
|
|
16267
|
+
'margin/available-inventory': 0.3334,
|
|
16231
16268
|
'loan/vip/loanable/data': 40,
|
|
16232
16269
|
'loan/vip/collateral/data': 40,
|
|
16233
16270
|
'loan/vip/request/data': 2.6668,
|
|
@@ -16618,7 +16655,8 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
16618
16655
|
'premiumIndexKlines': { 'cost': 1, 'byLimit': [[99, 1], [499, 2], [1000, 5], [10000, 10]] },
|
|
16619
16656
|
'ticker/24hr': { 'cost': 1, 'noSymbol': 40 },
|
|
16620
16657
|
'ticker/price': { 'cost': 1, 'noSymbol': 2 },
|
|
16621
|
-
'ticker/bookTicker': { 'cost':
|
|
16658
|
+
'ticker/bookTicker': { 'cost': 2, 'noSymbol': 5 },
|
|
16659
|
+
'constituents': 2,
|
|
16622
16660
|
'openInterest': 1,
|
|
16623
16661
|
},
|
|
16624
16662
|
},
|
|
@@ -16703,6 +16741,8 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
16703
16741
|
'ticker/bookTicker': { 'cost': 1, 'noSymbol': 2 },
|
|
16704
16742
|
'openInterest': 1,
|
|
16705
16743
|
'indexInfo': 1,
|
|
16744
|
+
'assetIndex': { 'cost': 1, 'noSymbol': 10 },
|
|
16745
|
+
'constituents': 2,
|
|
16706
16746
|
'apiTradingStatus': { 'cost': 1, 'noSymbol': 10 },
|
|
16707
16747
|
'lvtKlines': 1,
|
|
16708
16748
|
},
|
|
@@ -24240,13 +24280,15 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
24240
24280
|
let type = undefined;
|
|
24241
24281
|
let subType = undefined;
|
|
24242
24282
|
let currency = undefined;
|
|
24283
|
+
if (code !== undefined) {
|
|
24284
|
+
currency = this.currency(code);
|
|
24285
|
+
}
|
|
24243
24286
|
let method = undefined;
|
|
24244
24287
|
const request = {};
|
|
24245
24288
|
[type, params] = this.handleMarketTypeAndParams('fetchLedger', undefined, params);
|
|
24246
24289
|
[subType, params] = this.handleSubTypeAndParams('fetchLedger', undefined, params);
|
|
24247
24290
|
if (type === 'option') {
|
|
24248
24291
|
this.checkRequiredArgument('fetchLedger', code, 'code');
|
|
24249
|
-
currency = this.currency(code);
|
|
24250
24292
|
request['currency'] = currency['id'];
|
|
24251
24293
|
method = 'eapiPrivateGetBill';
|
|
24252
24294
|
}
|
|
@@ -25201,6 +25243,232 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
25201
25243
|
'info': interest,
|
|
25202
25244
|
}, market);
|
|
25203
25245
|
}
|
|
25246
|
+
async fetchMyLiquidations(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
25247
|
+
/**
|
|
25248
|
+
* @method
|
|
25249
|
+
* @name binance#fetchMyLiquidations
|
|
25250
|
+
* @description retrieves the users liquidated positions
|
|
25251
|
+
* @see https://binance-docs.github.io/apidocs/spot/en/#get-force-liquidation-record-user_data
|
|
25252
|
+
* @see https://binance-docs.github.io/apidocs/futures/en/#user-39-s-force-orders-user_data
|
|
25253
|
+
* @see https://binance-docs.github.io/apidocs/delivery/en/#user-39-s-force-orders-user_data
|
|
25254
|
+
* @param {string} [symbol] unified CCXT market symbol
|
|
25255
|
+
* @param {int} [since] the earliest time in ms to fetch liquidations for
|
|
25256
|
+
* @param {int} [limit] the maximum number of liquidation structures to retrieve
|
|
25257
|
+
* @param {object} [params] exchange specific parameters for the binance api endpoint
|
|
25258
|
+
* @param {int} [params.until] timestamp in ms of the latest liquidation
|
|
25259
|
+
* @param {boolean} [params.paginate] *spot only* default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
|
25260
|
+
* @returns {object} an array of [liquidation structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#liquidation-structure}
|
|
25261
|
+
*/
|
|
25262
|
+
await this.loadMarkets();
|
|
25263
|
+
let paginate = false;
|
|
25264
|
+
[paginate, params] = this.handleOptionAndParams(params, 'fetchMyLiquidations', 'paginate');
|
|
25265
|
+
if (paginate) {
|
|
25266
|
+
return await this.fetchPaginatedCallIncremental('fetchMyLiquidations', symbol, since, limit, params, 'current', 100);
|
|
25267
|
+
}
|
|
25268
|
+
let market = undefined;
|
|
25269
|
+
if (symbol !== undefined) {
|
|
25270
|
+
market = this.market(symbol);
|
|
25271
|
+
}
|
|
25272
|
+
let type = undefined;
|
|
25273
|
+
[type, params] = this.handleMarketTypeAndParams('fetchMyLiquidations', market, params);
|
|
25274
|
+
let subType = undefined;
|
|
25275
|
+
[subType, params] = this.handleSubTypeAndParams('fetchMyLiquidations', market, params, 'linear');
|
|
25276
|
+
let request = {};
|
|
25277
|
+
if (type !== 'spot') {
|
|
25278
|
+
request['autoCloseType'] = 'LIQUIDATION';
|
|
25279
|
+
}
|
|
25280
|
+
if (market !== undefined) {
|
|
25281
|
+
const symbolKey = market['spot'] ? 'isolatedSymbol' : 'symbol';
|
|
25282
|
+
request[symbolKey] = market['id'];
|
|
25283
|
+
}
|
|
25284
|
+
if (since !== undefined) {
|
|
25285
|
+
request['startTime'] = since;
|
|
25286
|
+
}
|
|
25287
|
+
if (limit !== undefined) {
|
|
25288
|
+
if (type === 'spot') {
|
|
25289
|
+
request['size'] = limit;
|
|
25290
|
+
}
|
|
25291
|
+
else {
|
|
25292
|
+
request['limit'] = limit;
|
|
25293
|
+
}
|
|
25294
|
+
}
|
|
25295
|
+
[request, params] = this.handleUntilOption('endTime', request, params);
|
|
25296
|
+
let response = undefined;
|
|
25297
|
+
if (type === 'spot') {
|
|
25298
|
+
response = await this.sapiGetMarginForceLiquidationRec(this.extend(request, params));
|
|
25299
|
+
}
|
|
25300
|
+
else if (subType === 'linear') {
|
|
25301
|
+
response = await this.fapiPrivateGetForceOrders(this.extend(request, params));
|
|
25302
|
+
}
|
|
25303
|
+
else if (subType === 'inverse') {
|
|
25304
|
+
response = await this.dapiPrivateGetForceOrders(this.extend(request, params));
|
|
25305
|
+
}
|
|
25306
|
+
else {
|
|
25307
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported(this.id + ' fetchMyLiquidations() does not support ' + market['type'] + ' markets');
|
|
25308
|
+
}
|
|
25309
|
+
//
|
|
25310
|
+
// margin
|
|
25311
|
+
//
|
|
25312
|
+
// {
|
|
25313
|
+
// "rows": [
|
|
25314
|
+
// {
|
|
25315
|
+
// "avgPrice": "0.00388359",
|
|
25316
|
+
// "executedQty": "31.39000000",
|
|
25317
|
+
// "orderId": 180015097,
|
|
25318
|
+
// "price": "0.00388110",
|
|
25319
|
+
// "qty": "31.39000000",
|
|
25320
|
+
// "side": "SELL",
|
|
25321
|
+
// "symbol": "BNBBTC",
|
|
25322
|
+
// "timeInForce": "GTC",
|
|
25323
|
+
// "isIsolated": true,
|
|
25324
|
+
// "updatedTime": 1558941374745
|
|
25325
|
+
// }
|
|
25326
|
+
// ],
|
|
25327
|
+
// "total": 1
|
|
25328
|
+
// }
|
|
25329
|
+
//
|
|
25330
|
+
// linear
|
|
25331
|
+
//
|
|
25332
|
+
// [
|
|
25333
|
+
// {
|
|
25334
|
+
// "orderId": 6071832819,
|
|
25335
|
+
// "symbol": "BTCUSDT",
|
|
25336
|
+
// "status": "FILLED",
|
|
25337
|
+
// "clientOrderId": "autoclose-1596107620040000020",
|
|
25338
|
+
// "price": "10871.09",
|
|
25339
|
+
// "avgPrice": "10913.21000",
|
|
25340
|
+
// "origQty": "0.001",
|
|
25341
|
+
// "executedQty": "0.001",
|
|
25342
|
+
// "cumQuote": "10.91321",
|
|
25343
|
+
// "timeInForce": "IOC",
|
|
25344
|
+
// "type": "LIMIT",
|
|
25345
|
+
// "reduceOnly": false,
|
|
25346
|
+
// "closePosition": false,
|
|
25347
|
+
// "side": "SELL",
|
|
25348
|
+
// "positionSide": "BOTH",
|
|
25349
|
+
// "stopPrice": "0",
|
|
25350
|
+
// "workingType": "CONTRACT_PRICE",
|
|
25351
|
+
// "origType": "LIMIT",
|
|
25352
|
+
// "time": 1596107620044,
|
|
25353
|
+
// "updateTime": 1596107620087
|
|
25354
|
+
// },
|
|
25355
|
+
// ]
|
|
25356
|
+
//
|
|
25357
|
+
// inverse
|
|
25358
|
+
//
|
|
25359
|
+
// [
|
|
25360
|
+
// {
|
|
25361
|
+
// "orderId": 165123080,
|
|
25362
|
+
// "symbol": "BTCUSD_200925",
|
|
25363
|
+
// "pair": "BTCUSD",
|
|
25364
|
+
// "status": "FILLED",
|
|
25365
|
+
// "clientOrderId": "autoclose-1596542005017000006",
|
|
25366
|
+
// "price": "11326.9",
|
|
25367
|
+
// "avgPrice": "11326.9",
|
|
25368
|
+
// "origQty": "1",
|
|
25369
|
+
// "executedQty": "1",
|
|
25370
|
+
// "cumBase": "0.00882854",
|
|
25371
|
+
// "timeInForce": "IOC",
|
|
25372
|
+
// "type": "LIMIT",
|
|
25373
|
+
// "reduceOnly": false,
|
|
25374
|
+
// "closePosition": false,
|
|
25375
|
+
// "side": "SELL",
|
|
25376
|
+
// "positionSide": "BOTH",
|
|
25377
|
+
// "stopPrice": "0",
|
|
25378
|
+
// "workingType": "CONTRACT_PRICE",
|
|
25379
|
+
// "priceProtect": false,
|
|
25380
|
+
// "origType": "LIMIT",
|
|
25381
|
+
// "time": 1596542005019,
|
|
25382
|
+
// "updateTime": 1596542005050
|
|
25383
|
+
// },
|
|
25384
|
+
// ]
|
|
25385
|
+
//
|
|
25386
|
+
const liquidations = this.safeValue(response, 'rows', response);
|
|
25387
|
+
return this.parseLiquidations(liquidations, market, since, limit);
|
|
25388
|
+
}
|
|
25389
|
+
parseLiquidation(liquidation, market = undefined) {
|
|
25390
|
+
//
|
|
25391
|
+
// margin
|
|
25392
|
+
//
|
|
25393
|
+
// {
|
|
25394
|
+
// "avgPrice": "0.00388359",
|
|
25395
|
+
// "executedQty": "31.39000000",
|
|
25396
|
+
// "orderId": 180015097,
|
|
25397
|
+
// "price": "0.00388110",
|
|
25398
|
+
// "qty": "31.39000000",
|
|
25399
|
+
// "side": "SELL",
|
|
25400
|
+
// "symbol": "BNBBTC",
|
|
25401
|
+
// "timeInForce": "GTC",
|
|
25402
|
+
// "isIsolated": true,
|
|
25403
|
+
// "updatedTime": 1558941374745
|
|
25404
|
+
// }
|
|
25405
|
+
//
|
|
25406
|
+
// linear
|
|
25407
|
+
//
|
|
25408
|
+
// {
|
|
25409
|
+
// "orderId": 6071832819,
|
|
25410
|
+
// "symbol": "BTCUSDT",
|
|
25411
|
+
// "status": "FILLED",
|
|
25412
|
+
// "clientOrderId": "autoclose-1596107620040000020",
|
|
25413
|
+
// "price": "10871.09",
|
|
25414
|
+
// "avgPrice": "10913.21000",
|
|
25415
|
+
// "origQty": "0.001",
|
|
25416
|
+
// "executedQty": "0.001",
|
|
25417
|
+
// "cumQuote": "10.91321",
|
|
25418
|
+
// "timeInForce": "IOC",
|
|
25419
|
+
// "type": "LIMIT",
|
|
25420
|
+
// "reduceOnly": false,
|
|
25421
|
+
// "closePosition": false,
|
|
25422
|
+
// "side": "SELL",
|
|
25423
|
+
// "positionSide": "BOTH",
|
|
25424
|
+
// "stopPrice": "0",
|
|
25425
|
+
// "workingType": "CONTRACT_PRICE",
|
|
25426
|
+
// "origType": "LIMIT",
|
|
25427
|
+
// "time": 1596107620044,
|
|
25428
|
+
// "updateTime": 1596107620087
|
|
25429
|
+
// }
|
|
25430
|
+
//
|
|
25431
|
+
// inverse
|
|
25432
|
+
//
|
|
25433
|
+
// {
|
|
25434
|
+
// "orderId": 165123080,
|
|
25435
|
+
// "symbol": "BTCUSD_200925",
|
|
25436
|
+
// "pair": "BTCUSD",
|
|
25437
|
+
// "status": "FILLED",
|
|
25438
|
+
// "clientOrderId": "autoclose-1596542005017000006",
|
|
25439
|
+
// "price": "11326.9",
|
|
25440
|
+
// "avgPrice": "11326.9",
|
|
25441
|
+
// "origQty": "1",
|
|
25442
|
+
// "executedQty": "1",
|
|
25443
|
+
// "cumBase": "0.00882854",
|
|
25444
|
+
// "timeInForce": "IOC",
|
|
25445
|
+
// "type": "LIMIT",
|
|
25446
|
+
// "reduceOnly": false,
|
|
25447
|
+
// "closePosition": false,
|
|
25448
|
+
// "side": "SELL",
|
|
25449
|
+
// "positionSide": "BOTH",
|
|
25450
|
+
// "stopPrice": "0",
|
|
25451
|
+
// "workingType": "CONTRACT_PRICE",
|
|
25452
|
+
// "priceProtect": false,
|
|
25453
|
+
// "origType": "LIMIT",
|
|
25454
|
+
// "time": 1596542005019,
|
|
25455
|
+
// "updateTime": 1596542005050
|
|
25456
|
+
// }
|
|
25457
|
+
//
|
|
25458
|
+
const marketId = this.safeString(liquidation, 'symbol');
|
|
25459
|
+
const timestamp = this.safeInteger2(liquidation, 'updatedTime', 'updateTime');
|
|
25460
|
+
return {
|
|
25461
|
+
'info': liquidation,
|
|
25462
|
+
'symbol': this.safeSymbol(marketId, market),
|
|
25463
|
+
'contracts': this.safeNumber(liquidation, 'executedQty'),
|
|
25464
|
+
'contractSize': this.safeNumber(market, 'contractSize'),
|
|
25465
|
+
'price': this.safeNumber(liquidation, 'avgPrice'),
|
|
25466
|
+
'baseValue': this.safeNumber(liquidation, 'cumBase'),
|
|
25467
|
+
'quoteValue': this.safeNumber(liquidation, 'cumQuote'),
|
|
25468
|
+
'timestamp': timestamp,
|
|
25469
|
+
'datetime': this.iso8601(timestamp),
|
|
25470
|
+
};
|
|
25471
|
+
}
|
|
25204
25472
|
}
|
|
25205
25473
|
|
|
25206
25474
|
|
|
@@ -26002,6 +26270,7 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
26002
26270
|
'max': this.safeNumber(market, 'maxNotional'),
|
|
26003
26271
|
},
|
|
26004
26272
|
},
|
|
26273
|
+
'created': undefined,
|
|
26005
26274
|
'info': market,
|
|
26006
26275
|
};
|
|
26007
26276
|
return entry;
|
|
@@ -28088,8 +28357,10 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
28088
28357
|
const network = this.safeString(transaction, 'network');
|
|
28089
28358
|
const currencyId = this.safeString(transaction, 'coin');
|
|
28090
28359
|
let code = this.safeCurrencyCode(currencyId, currency);
|
|
28091
|
-
if (code !== undefined && code.indexOf(network) >= 0) {
|
|
28092
|
-
|
|
28360
|
+
if ((code !== undefined) && (code !== network) && code.indexOf(network) >= 0) {
|
|
28361
|
+
if (network !== undefined) {
|
|
28362
|
+
code = code.replace(network, '');
|
|
28363
|
+
}
|
|
28093
28364
|
}
|
|
28094
28365
|
const rawType = this.safeString(transaction, 'transferType');
|
|
28095
28366
|
const type = (rawType === '0') ? 'deposit' : 'withdrawal';
|
|
@@ -29707,6 +29978,7 @@ class bitbank extends _abstract_bitbank_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
29707
29978
|
'max': undefined,
|
|
29708
29979
|
},
|
|
29709
29980
|
},
|
|
29981
|
+
'created': undefined,
|
|
29710
29982
|
'info': entry,
|
|
29711
29983
|
});
|
|
29712
29984
|
}
|
|
@@ -30765,6 +31037,7 @@ class bitbns extends _abstract_bitbns_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
30765
31037
|
'max': this.safeNumber(costLimits, 'max'),
|
|
30766
31038
|
},
|
|
30767
31039
|
},
|
|
31040
|
+
'created': undefined,
|
|
30768
31041
|
'info': market,
|
|
30769
31042
|
});
|
|
30770
31043
|
}
|
|
@@ -32395,6 +32668,7 @@ class bitfinex extends _abstract_bitfinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
32395
32668
|
'max': undefined,
|
|
32396
32669
|
},
|
|
32397
32670
|
},
|
|
32671
|
+
'created': undefined,
|
|
32398
32672
|
'info': market,
|
|
32399
32673
|
});
|
|
32400
32674
|
}
|
|
@@ -33994,6 +34268,7 @@ class bitfinex2 extends _abstract_bitfinex2_js__WEBPACK_IMPORTED_MODULE_0__/* ["
|
|
|
33994
34268
|
'max': undefined,
|
|
33995
34269
|
},
|
|
33996
34270
|
},
|
|
34271
|
+
'created': undefined,
|
|
33997
34272
|
'info': market,
|
|
33998
34273
|
});
|
|
33999
34274
|
}
|
|
@@ -36709,6 +36984,7 @@ class bitflyer extends _abstract_bitflyer_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
36709
36984
|
'max': undefined,
|
|
36710
36985
|
},
|
|
36711
36986
|
},
|
|
36987
|
+
'created': undefined,
|
|
36712
36988
|
'info': market,
|
|
36713
36989
|
});
|
|
36714
36990
|
}
|
|
@@ -37699,6 +37975,7 @@ class bitforex extends _abstract_bitforex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
37699
37975
|
'max': undefined,
|
|
37700
37976
|
},
|
|
37701
37977
|
},
|
|
37978
|
+
'created': undefined,
|
|
37702
37979
|
'info': market,
|
|
37703
37980
|
});
|
|
37704
37981
|
}
|
|
@@ -38327,11 +38604,12 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
38327
38604
|
'has': {
|
|
38328
38605
|
'CORS': undefined,
|
|
38329
38606
|
'spot': true,
|
|
38330
|
-
'margin':
|
|
38607
|
+
'margin': undefined,
|
|
38331
38608
|
'swap': true,
|
|
38332
38609
|
'future': true,
|
|
38333
38610
|
'option': false,
|
|
38334
38611
|
'addMargin': true,
|
|
38612
|
+
'borrowMargin': true,
|
|
38335
38613
|
'cancelAllOrders': true,
|
|
38336
38614
|
'cancelOrder': true,
|
|
38337
38615
|
'cancelOrders': true,
|
|
@@ -38390,6 +38668,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
38390
38668
|
'fetchWithdrawal': false,
|
|
38391
38669
|
'fetchWithdrawals': true,
|
|
38392
38670
|
'reduceMargin': true,
|
|
38671
|
+
'repayMargin': true,
|
|
38393
38672
|
'setLeverage': true,
|
|
38394
38673
|
'setMarginMode': true,
|
|
38395
38674
|
'setPositionMode': true,
|
|
@@ -39594,6 +39873,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
39594
39873
|
'max': undefined,
|
|
39595
39874
|
},
|
|
39596
39875
|
},
|
|
39876
|
+
'created': undefined,
|
|
39597
39877
|
'info': market,
|
|
39598
39878
|
};
|
|
39599
39879
|
}
|
|
@@ -39776,6 +40056,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
39776
40056
|
'max': undefined,
|
|
39777
40057
|
},
|
|
39778
40058
|
},
|
|
40059
|
+
'created': undefined,
|
|
39779
40060
|
};
|
|
39780
40061
|
}
|
|
39781
40062
|
return result;
|
|
@@ -42184,8 +42465,16 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
42184
42465
|
//
|
|
42185
42466
|
const data = this.safeValue(response, 'data');
|
|
42186
42467
|
if (data !== undefined) {
|
|
42187
|
-
|
|
42188
|
-
|
|
42468
|
+
if ('orderList' in data) {
|
|
42469
|
+
const orderList = this.safeValue(data, 'orderList');
|
|
42470
|
+
if (!orderList) {
|
|
42471
|
+
return [];
|
|
42472
|
+
}
|
|
42473
|
+
return this.addPaginationCursorToResult(data, orderList);
|
|
42474
|
+
}
|
|
42475
|
+
else {
|
|
42476
|
+
return this.addPaginationCursorToResult(response, data);
|
|
42477
|
+
}
|
|
42189
42478
|
}
|
|
42190
42479
|
const parsedData = JSON.parse(response);
|
|
42191
42480
|
return this.safeValue(parsedData, 'data', []);
|
|
@@ -43491,6 +43780,194 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
43491
43780
|
'info': interest,
|
|
43492
43781
|
}, market);
|
|
43493
43782
|
}
|
|
43783
|
+
async borrowMargin(code, amount, symbol = undefined, params = {}) {
|
|
43784
|
+
/**
|
|
43785
|
+
* @method
|
|
43786
|
+
* @name bitget#borrowMargin
|
|
43787
|
+
* @description create a loan to borrow margin
|
|
43788
|
+
* @see https://bitgetlimited.github.io/apidoc/en/margin/#cross-borrow
|
|
43789
|
+
* @see https://bitgetlimited.github.io/apidoc/en/margin/#isolated-borrow
|
|
43790
|
+
* @param {string} code unified currency code of the currency to borrow
|
|
43791
|
+
* @param {string} amount the amount to borrow
|
|
43792
|
+
* @param {string} [symbol] unified market symbol
|
|
43793
|
+
* @param {object} [params] extra parameters specific to the bitget api endpoint
|
|
43794
|
+
* @param {string} [params.marginMode] 'isolated' or 'cross', symbol is required for 'isolated'
|
|
43795
|
+
* @returns {object} a [margin loan structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#margin-loan-structure}
|
|
43796
|
+
*/
|
|
43797
|
+
await this.loadMarkets();
|
|
43798
|
+
const currency = this.currency(code);
|
|
43799
|
+
const request = {
|
|
43800
|
+
'coin': currency['info']['coinName'],
|
|
43801
|
+
'borrowAmount': this.currencyToPrecision(code, amount),
|
|
43802
|
+
};
|
|
43803
|
+
let response = undefined;
|
|
43804
|
+
let marginMode = undefined;
|
|
43805
|
+
[marginMode, params] = this.handleMarginModeAndParams('borrowMargin', params);
|
|
43806
|
+
if ((symbol !== undefined) || (marginMode === 'isolated')) {
|
|
43807
|
+
this.checkRequiredSymbol('borrowMargin', symbol);
|
|
43808
|
+
const market = this.market(symbol);
|
|
43809
|
+
const marketId = market['id'];
|
|
43810
|
+
const parts = marketId.split('_');
|
|
43811
|
+
const marginMarketId = this.safeStringUpper(parts, 0);
|
|
43812
|
+
request['symbol'] = marginMarketId;
|
|
43813
|
+
response = await this.privateMarginPostIsolatedAccountBorrow(this.extend(request, params));
|
|
43814
|
+
}
|
|
43815
|
+
else {
|
|
43816
|
+
response = await this.privateMarginPostCrossAccountBorrow(this.extend(request, params));
|
|
43817
|
+
}
|
|
43818
|
+
//
|
|
43819
|
+
// isolated
|
|
43820
|
+
//
|
|
43821
|
+
// {
|
|
43822
|
+
// "code": "00000",
|
|
43823
|
+
// "msg": "success",
|
|
43824
|
+
// "requestTime": 1697250952516,
|
|
43825
|
+
// "data": {
|
|
43826
|
+
// "clientOid": null,
|
|
43827
|
+
// "symbol": "BTCUSDT",
|
|
43828
|
+
// "coin": "BTC",
|
|
43829
|
+
// "borrowAmount": "0.001"
|
|
43830
|
+
// }
|
|
43831
|
+
// }
|
|
43832
|
+
//
|
|
43833
|
+
// cross
|
|
43834
|
+
//
|
|
43835
|
+
// {
|
|
43836
|
+
// "code": "00000",
|
|
43837
|
+
// "msg": "success",
|
|
43838
|
+
// "requestTime": 1697251314271,
|
|
43839
|
+
// "data": {
|
|
43840
|
+
// "clientOid": null,
|
|
43841
|
+
// "coin": "BTC",
|
|
43842
|
+
// "borrowAmount": "0.0001"
|
|
43843
|
+
// }
|
|
43844
|
+
// }
|
|
43845
|
+
//
|
|
43846
|
+
const data = this.safeValue(response, 'data', {});
|
|
43847
|
+
return this.parseMarginLoan(data, currency);
|
|
43848
|
+
}
|
|
43849
|
+
async repayMargin(code, amount, symbol = undefined, params = {}) {
|
|
43850
|
+
/**
|
|
43851
|
+
* @method
|
|
43852
|
+
* @name bitget#repayMargin
|
|
43853
|
+
* @description repay borrowed margin and interest
|
|
43854
|
+
* @see https://bitgetlimited.github.io/apidoc/en/margin/#cross-repay
|
|
43855
|
+
* @see https://bitgetlimited.github.io/apidoc/en/margin/#isolated-repay
|
|
43856
|
+
* @param {string} code unified currency code of the currency to repay
|
|
43857
|
+
* @param {string} amount the amount to repay
|
|
43858
|
+
* @param {string} [symbol] unified market symbol
|
|
43859
|
+
* @param {object} [params] extra parameters specific to the bitget api endpoint
|
|
43860
|
+
* @param {string} [params.marginMode] 'isolated' or 'cross', symbol is required for 'isolated'
|
|
43861
|
+
* @returns {object} a [margin loan structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#margin-loan-structure}
|
|
43862
|
+
*/
|
|
43863
|
+
await this.loadMarkets();
|
|
43864
|
+
const currency = this.currency(code);
|
|
43865
|
+
const request = {
|
|
43866
|
+
'coin': currency['info']['coinName'],
|
|
43867
|
+
'repayAmount': this.currencyToPrecision(code, amount),
|
|
43868
|
+
};
|
|
43869
|
+
let response = undefined;
|
|
43870
|
+
let marginMode = undefined;
|
|
43871
|
+
[marginMode, params] = this.handleMarginModeAndParams('repayMargin', params);
|
|
43872
|
+
if ((symbol !== undefined) || (marginMode === 'isolated')) {
|
|
43873
|
+
this.checkRequiredSymbol('repayMargin', symbol);
|
|
43874
|
+
const market = this.market(symbol);
|
|
43875
|
+
const marketId = market['id'];
|
|
43876
|
+
const parts = marketId.split('_');
|
|
43877
|
+
const marginMarketId = this.safeStringUpper(parts, 0);
|
|
43878
|
+
request['symbol'] = marginMarketId;
|
|
43879
|
+
response = await this.privateMarginPostIsolatedAccountRepay(this.extend(request, params));
|
|
43880
|
+
}
|
|
43881
|
+
else {
|
|
43882
|
+
response = await this.privateMarginPostCrossAccountRepay(this.extend(request, params));
|
|
43883
|
+
}
|
|
43884
|
+
//
|
|
43885
|
+
// isolated
|
|
43886
|
+
//
|
|
43887
|
+
// {
|
|
43888
|
+
// "code": "00000",
|
|
43889
|
+
// "msg": "success",
|
|
43890
|
+
// "requestTime": 1697251988593,
|
|
43891
|
+
// "data": {
|
|
43892
|
+
// "remainDebtAmount": "0",
|
|
43893
|
+
// "clientOid": null,
|
|
43894
|
+
// "symbol": "BTCUSDT",
|
|
43895
|
+
// "coin": "BTC",
|
|
43896
|
+
// "repayAmount": "0.00100001"
|
|
43897
|
+
// }
|
|
43898
|
+
// }
|
|
43899
|
+
//
|
|
43900
|
+
// cross
|
|
43901
|
+
//
|
|
43902
|
+
// {
|
|
43903
|
+
// "code": "00000",
|
|
43904
|
+
// "msg": "success",
|
|
43905
|
+
// "requestTime": 1697252151042,
|
|
43906
|
+
// "data": {
|
|
43907
|
+
// "remainDebtAmount": "0",
|
|
43908
|
+
// "clientOid": null,
|
|
43909
|
+
// "coin": "BTC",
|
|
43910
|
+
// "repayAmount": "0.00010001"
|
|
43911
|
+
// }
|
|
43912
|
+
// }
|
|
43913
|
+
//
|
|
43914
|
+
const data = this.safeValue(response, 'data', {});
|
|
43915
|
+
return this.parseMarginLoan(data, currency);
|
|
43916
|
+
}
|
|
43917
|
+
parseMarginLoan(info, currency = undefined) {
|
|
43918
|
+
//
|
|
43919
|
+
// isolated: borrowMargin
|
|
43920
|
+
//
|
|
43921
|
+
// {
|
|
43922
|
+
// "clientOid": null,
|
|
43923
|
+
// "symbol": "BTCUSDT",
|
|
43924
|
+
// "coin": "BTC",
|
|
43925
|
+
// "borrowAmount": "0.001"
|
|
43926
|
+
// }
|
|
43927
|
+
//
|
|
43928
|
+
// cross: borrowMargin
|
|
43929
|
+
//
|
|
43930
|
+
// {
|
|
43931
|
+
// "clientOid": null,
|
|
43932
|
+
// "coin": "BTC",
|
|
43933
|
+
// "borrowAmount": "0.0001"
|
|
43934
|
+
// }
|
|
43935
|
+
//
|
|
43936
|
+
// isolated: repayMargin
|
|
43937
|
+
//
|
|
43938
|
+
// {
|
|
43939
|
+
// "remainDebtAmount": "0",
|
|
43940
|
+
// "clientOid": null,
|
|
43941
|
+
// "symbol": "BTCUSDT",
|
|
43942
|
+
// "coin": "BTC",
|
|
43943
|
+
// "repayAmount": "0.00100001"
|
|
43944
|
+
// }
|
|
43945
|
+
//
|
|
43946
|
+
// cross: repayMargin
|
|
43947
|
+
//
|
|
43948
|
+
// {
|
|
43949
|
+
// "remainDebtAmount": "0",
|
|
43950
|
+
// "clientOid": null,
|
|
43951
|
+
// "coin": "BTC",
|
|
43952
|
+
// "repayAmount": "0.00010001"
|
|
43953
|
+
// }
|
|
43954
|
+
//
|
|
43955
|
+
const currencyId = this.safeString(info, 'coin');
|
|
43956
|
+
const marketId = this.safeString(info, 'symbol');
|
|
43957
|
+
let symbol = undefined;
|
|
43958
|
+
if (marketId !== undefined) {
|
|
43959
|
+
symbol = this.safeSymbol(marketId);
|
|
43960
|
+
}
|
|
43961
|
+
return {
|
|
43962
|
+
'id': this.safeString(info, 'clientOid'),
|
|
43963
|
+
'currency': this.safeCurrencyCode(currencyId, currency),
|
|
43964
|
+
'amount': this.safeNumber2(info, 'borrowAmount', 'repayAmount'),
|
|
43965
|
+
'symbol': symbol,
|
|
43966
|
+
'timestamp': undefined,
|
|
43967
|
+
'datetime': undefined,
|
|
43968
|
+
'info': info,
|
|
43969
|
+
};
|
|
43970
|
+
}
|
|
43494
43971
|
handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
|
|
43495
43972
|
if (!response) {
|
|
43496
43973
|
return undefined; // fallback to default error handler
|
|
@@ -43872,6 +44349,7 @@ class bithumb extends _abstract_bithumb_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
43872
44349
|
},
|
|
43873
44350
|
'cost': {}, // set via options
|
|
43874
44351
|
},
|
|
44352
|
+
'created': undefined,
|
|
43875
44353
|
'info': market,
|
|
43876
44354
|
}, extension);
|
|
43877
44355
|
result.push(entry);
|
|
@@ -44769,8 +45247,10 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
44769
45247
|
'fetchFundingRate': true,
|
|
44770
45248
|
'fetchFundingRateHistory': false,
|
|
44771
45249
|
'fetchFundingRates': false,
|
|
45250
|
+
'fetchLiquidations': false,
|
|
44772
45251
|
'fetchMarginMode': false,
|
|
44773
45252
|
'fetchMarkets': true,
|
|
45253
|
+
'fetchMyLiquidations': true,
|
|
44774
45254
|
'fetchMyTrades': true,
|
|
44775
45255
|
'fetchOHLCV': true,
|
|
44776
45256
|
'fetchOpenInterest': true,
|
|
@@ -45464,6 +45944,7 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
45464
45944
|
'max': undefined,
|
|
45465
45945
|
},
|
|
45466
45946
|
},
|
|
45947
|
+
'created': undefined,
|
|
45467
45948
|
'info': market,
|
|
45468
45949
|
});
|
|
45469
45950
|
}
|
|
@@ -45570,6 +46051,7 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
45570
46051
|
'max': undefined,
|
|
45571
46052
|
},
|
|
45572
46053
|
},
|
|
46054
|
+
'created': this.safeInteger(market, 'open_timestamp'),
|
|
45573
46055
|
'info': market,
|
|
45574
46056
|
});
|
|
45575
46057
|
}
|
|
@@ -48643,6 +49125,107 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
48643
49125
|
'takeProfitPrice': undefined,
|
|
48644
49126
|
});
|
|
48645
49127
|
}
|
|
49128
|
+
async fetchMyLiquidations(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
49129
|
+
/**
|
|
49130
|
+
* @method
|
|
49131
|
+
* @name bitmart#fetchMyLiquidations
|
|
49132
|
+
* @description retrieves the users liquidated positions
|
|
49133
|
+
* @see https://developer-pro.bitmart.com/en/futures/#get-order-history-keyed
|
|
49134
|
+
* @param {string} symbol unified CCXT market symbol
|
|
49135
|
+
* @param {int} [since] the earliest time in ms to fetch liquidations for
|
|
49136
|
+
* @param {int} [limit] the maximum number of liquidation structures to retrieve
|
|
49137
|
+
* @param {object} [params] exchange specific parameters for the bitmart api endpoint
|
|
49138
|
+
* @param {int} [params.until] timestamp in ms of the latest liquidation
|
|
49139
|
+
* @returns {object} an array of [liquidation structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#liquidation-structure}
|
|
49140
|
+
*/
|
|
49141
|
+
this.checkRequiredSymbol('fetchMyLiquidations', symbol);
|
|
49142
|
+
await this.loadMarkets();
|
|
49143
|
+
const market = this.market(symbol);
|
|
49144
|
+
if (!market['swap']) {
|
|
49145
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported(this.id + ' fetchMyLiquidations() supports swap markets only');
|
|
49146
|
+
}
|
|
49147
|
+
let request = {
|
|
49148
|
+
'symbol': market['id'],
|
|
49149
|
+
};
|
|
49150
|
+
if (since !== undefined) {
|
|
49151
|
+
request['start_time'] = since;
|
|
49152
|
+
}
|
|
49153
|
+
[request, params] = this.handleUntilOption('end_time', request, params);
|
|
49154
|
+
const response = await this.privateGetContractPrivateOrderHistory(this.extend(request, params));
|
|
49155
|
+
//
|
|
49156
|
+
// {
|
|
49157
|
+
// "code": 1000,
|
|
49158
|
+
// "message": "Ok",
|
|
49159
|
+
// "data": [
|
|
49160
|
+
// {
|
|
49161
|
+
// "order_id": "231007865458273",
|
|
49162
|
+
// "client_order_id": "",
|
|
49163
|
+
// "price": "27407.9",
|
|
49164
|
+
// "size": "1",
|
|
49165
|
+
// "symbol": "BTCUSDT",
|
|
49166
|
+
// "state": 4,
|
|
49167
|
+
// "side": 3,
|
|
49168
|
+
// "type": "liquidate",
|
|
49169
|
+
// "leverage": "10",
|
|
49170
|
+
// "open_type": "isolated",
|
|
49171
|
+
// "deal_avg_price": "27422.6",
|
|
49172
|
+
// "deal_size": "1",
|
|
49173
|
+
// "create_time": 1696405864011,
|
|
49174
|
+
// "update_time": 1696405864045
|
|
49175
|
+
// },
|
|
49176
|
+
// ],
|
|
49177
|
+
// "trace": "4cad855074664097ac6ba4257c47305d.71.16965658195443021"
|
|
49178
|
+
// }
|
|
49179
|
+
//
|
|
49180
|
+
const data = this.safeValue(response, 'data', []);
|
|
49181
|
+
const result = [];
|
|
49182
|
+
for (let i = 0; i < data.length; i++) {
|
|
49183
|
+
const entry = data[i];
|
|
49184
|
+
const checkLiquidation = this.safeString(entry, 'type');
|
|
49185
|
+
if (checkLiquidation === 'liquidate') {
|
|
49186
|
+
result.push(entry);
|
|
49187
|
+
}
|
|
49188
|
+
}
|
|
49189
|
+
return this.parseLiquidations(result, market, since, limit);
|
|
49190
|
+
}
|
|
49191
|
+
parseLiquidation(liquidation, market = undefined) {
|
|
49192
|
+
//
|
|
49193
|
+
// {
|
|
49194
|
+
// "order_id": "231007865458273",
|
|
49195
|
+
// "client_order_id": "",
|
|
49196
|
+
// "price": "27407.9",
|
|
49197
|
+
// "size": "1",
|
|
49198
|
+
// "symbol": "BTCUSDT",
|
|
49199
|
+
// "state": 4,
|
|
49200
|
+
// "side": 3,
|
|
49201
|
+
// "type": "market",
|
|
49202
|
+
// "leverage": "10",
|
|
49203
|
+
// "open_type": "isolated",
|
|
49204
|
+
// "deal_avg_price": "27422.6",
|
|
49205
|
+
// "deal_size": "1",
|
|
49206
|
+
// "create_time": 1696405864011,
|
|
49207
|
+
// "update_time": 1696405864045
|
|
49208
|
+
// }
|
|
49209
|
+
//
|
|
49210
|
+
const marketId = this.safeString(liquidation, 'symbol');
|
|
49211
|
+
const timestamp = this.safeInteger(liquidation, 'update_time');
|
|
49212
|
+
const contractsString = this.safeString(liquidation, 'deal_size');
|
|
49213
|
+
const contractSizeString = this.safeString(market, 'contractSize');
|
|
49214
|
+
const priceString = this.safeString(liquidation, 'deal_avg_price');
|
|
49215
|
+
const baseValueString = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringMul */ .O.stringMul(contractsString, contractSizeString);
|
|
49216
|
+
const quoteValueString = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringMul */ .O.stringMul(baseValueString, priceString);
|
|
49217
|
+
return {
|
|
49218
|
+
'info': liquidation,
|
|
49219
|
+
'symbol': this.safeSymbol(marketId, market),
|
|
49220
|
+
'contracts': this.parseNumber(contractsString),
|
|
49221
|
+
'contractSize': this.parseNumber(contractSizeString),
|
|
49222
|
+
'price': this.parseNumber(priceString),
|
|
49223
|
+
'baseValue': this.parseNumber(baseValueString),
|
|
49224
|
+
'quoteValue': this.parseNumber(quoteValueString),
|
|
49225
|
+
'timestamp': timestamp,
|
|
49226
|
+
'datetime': this.iso8601(timestamp),
|
|
49227
|
+
};
|
|
49228
|
+
}
|
|
48646
49229
|
nonce() {
|
|
48647
49230
|
return this.milliseconds();
|
|
48648
49231
|
}
|
|
@@ -48779,9 +49362,11 @@ class bitmex extends _abstract_bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
48779
49362
|
'fetchLedger': true,
|
|
48780
49363
|
'fetchLeverage': false,
|
|
48781
49364
|
'fetchLeverageTiers': false,
|
|
49365
|
+
'fetchLiquidations': true,
|
|
48782
49366
|
'fetchMarketLeverageTiers': false,
|
|
48783
49367
|
'fetchMarkets': true,
|
|
48784
49368
|
'fetchMarkOHLCV': false,
|
|
49369
|
+
'fetchMyLiquidations': false,
|
|
48785
49370
|
'fetchMyTrades': true,
|
|
48786
49371
|
'fetchOHLCV': true,
|
|
48787
49372
|
'fetchOpenOrders': true,
|
|
@@ -51369,6 +51954,74 @@ class bitmex extends _abstract_bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
51369
51954
|
}
|
|
51370
51955
|
return cost;
|
|
51371
51956
|
}
|
|
51957
|
+
async fetchLiquidations(symbol, since = undefined, limit = undefined, params = {}) {
|
|
51958
|
+
/**
|
|
51959
|
+
* @method
|
|
51960
|
+
* @name bitmex#fetchLiquidations
|
|
51961
|
+
* @description retrieves the public liquidations of a trading pair
|
|
51962
|
+
* @see https://www.bitmex.com/api/explorer/#!/Liquidation/Liquidation_get
|
|
51963
|
+
* @param {string} symbol unified CCXT market symbol
|
|
51964
|
+
* @param {int} [since] the earliest time in ms to fetch liquidations for
|
|
51965
|
+
* @param {int} [limit] the maximum number of liquidation structures to retrieve
|
|
51966
|
+
* @param {object} [params] exchange specific parameters for the bitmex api endpoint
|
|
51967
|
+
* @param {int} [params.until] timestamp in ms of the latest liquidation
|
|
51968
|
+
* @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
|
51969
|
+
* @returns {object} an array of [liquidation structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#liquidation-structure}
|
|
51970
|
+
*/
|
|
51971
|
+
await this.loadMarkets();
|
|
51972
|
+
let paginate = false;
|
|
51973
|
+
[paginate, params] = this.handleOptionAndParams(params, 'fetchLiquidations', 'paginate');
|
|
51974
|
+
if (paginate) {
|
|
51975
|
+
return await this.fetchPaginatedCallDynamic('fetchLiquidations', symbol, since, limit, params);
|
|
51976
|
+
}
|
|
51977
|
+
const market = this.market(symbol);
|
|
51978
|
+
let request = {
|
|
51979
|
+
'symbol': market['id'],
|
|
51980
|
+
};
|
|
51981
|
+
if (since !== undefined) {
|
|
51982
|
+
request['startTime'] = since;
|
|
51983
|
+
}
|
|
51984
|
+
if (limit !== undefined) {
|
|
51985
|
+
request['count'] = limit;
|
|
51986
|
+
}
|
|
51987
|
+
[request, params] = this.handleUntilOption('endTime', request, params);
|
|
51988
|
+
const response = await this.publicGetLiquidation(this.extend(request, params));
|
|
51989
|
+
//
|
|
51990
|
+
// [
|
|
51991
|
+
// {
|
|
51992
|
+
// "orderID": "string",
|
|
51993
|
+
// "symbol": "string",
|
|
51994
|
+
// "side": "string",
|
|
51995
|
+
// "price": 0,
|
|
51996
|
+
// "leavesQty": 0
|
|
51997
|
+
// }
|
|
51998
|
+
// ]
|
|
51999
|
+
//
|
|
52000
|
+
return this.parseLiquidations(response, market, since, limit);
|
|
52001
|
+
}
|
|
52002
|
+
parseLiquidation(liquidation, market = undefined) {
|
|
52003
|
+
//
|
|
52004
|
+
// {
|
|
52005
|
+
// "orderID": "string",
|
|
52006
|
+
// "symbol": "string",
|
|
52007
|
+
// "side": "string",
|
|
52008
|
+
// "price": 0,
|
|
52009
|
+
// "leavesQty": 0
|
|
52010
|
+
// }
|
|
52011
|
+
//
|
|
52012
|
+
const marketId = this.safeString(liquidation, 'symbol');
|
|
52013
|
+
return {
|
|
52014
|
+
'info': liquidation,
|
|
52015
|
+
'symbol': this.safeSymbol(marketId, market),
|
|
52016
|
+
'contracts': undefined,
|
|
52017
|
+
'contractSize': this.safeNumber(market, 'contractSize'),
|
|
52018
|
+
'price': this.safeNumber(liquidation, 'price'),
|
|
52019
|
+
'baseValue': undefined,
|
|
52020
|
+
'quoteValue': undefined,
|
|
52021
|
+
'timestamp': undefined,
|
|
52022
|
+
'datetime': undefined,
|
|
52023
|
+
};
|
|
52024
|
+
}
|
|
51372
52025
|
handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
|
|
51373
52026
|
if (response === undefined) {
|
|
51374
52027
|
return undefined;
|
|
@@ -51803,6 +52456,7 @@ class bitopro extends _abstract_bitopro_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
51803
52456
|
'amount': this.parseNumber(this.parsePrecision(this.safeString(market, 'basePrecision'))),
|
|
51804
52457
|
},
|
|
51805
52458
|
'active': active,
|
|
52459
|
+
'created': undefined,
|
|
51806
52460
|
'info': market,
|
|
51807
52461
|
});
|
|
51808
52462
|
}
|
|
@@ -53582,6 +54236,7 @@ class bitpanda extends _abstract_bitpanda_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
53582
54236
|
'max': undefined,
|
|
53583
54237
|
},
|
|
53584
54238
|
},
|
|
54239
|
+
'created': undefined,
|
|
53585
54240
|
'info': market,
|
|
53586
54241
|
});
|
|
53587
54242
|
}
|
|
@@ -55862,6 +56517,7 @@ class bitrue extends _abstract_bitrue_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
55862
56517
|
'max': undefined,
|
|
55863
56518
|
},
|
|
55864
56519
|
},
|
|
56520
|
+
'created': undefined,
|
|
55865
56521
|
'info': market,
|
|
55866
56522
|
};
|
|
55867
56523
|
result.push(entry);
|
|
@@ -57700,6 +58356,7 @@ class bitso extends _abstract_bitso_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
57700
58356
|
'max': this.safeNumber(market, 'maximum_value'),
|
|
57701
58357
|
},
|
|
57702
58358
|
},
|
|
58359
|
+
'created': undefined,
|
|
57703
58360
|
'info': market,
|
|
57704
58361
|
}, fee));
|
|
57705
58362
|
}
|
|
@@ -59495,6 +60152,7 @@ class bitstamp extends _abstract_bitstamp_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
59495
60152
|
'max': undefined,
|
|
59496
60153
|
},
|
|
59497
60154
|
},
|
|
60155
|
+
'created': undefined,
|
|
59498
60156
|
'info': market,
|
|
59499
60157
|
});
|
|
59500
60158
|
}
|
|
@@ -62490,8 +63148,14 @@ class bittrex extends _abstract_bittrex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
62490
63148
|
* @param {int} [since] timestamp in ms of the earliest candle to fetch
|
|
62491
63149
|
* @param {int} [limit] the maximum amount of candles to fetch
|
|
62492
63150
|
* @param {object} [params] extra parameters specific to the bittrex api endpoint
|
|
63151
|
+
* @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
|
62493
63152
|
* @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
|
|
62494
63153
|
*/
|
|
63154
|
+
let paginate = false;
|
|
63155
|
+
[paginate, params] = this.handleOptionAndParams(params, 'fetchOHLCV', 'paginate', false);
|
|
63156
|
+
if (paginate) {
|
|
63157
|
+
return await this.fetchPaginatedCallDeterministic('fetchOHLCV', symbol, since, limit, timeframe, params, 1440);
|
|
63158
|
+
}
|
|
62495
63159
|
await this.loadMarkets();
|
|
62496
63160
|
const market = this.market(symbol);
|
|
62497
63161
|
const reverseId = market['baseId'] + '-' + market['quoteId'];
|
|
@@ -64278,6 +64942,7 @@ class bitvavo extends _abstract_bitvavo_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
64278
64942
|
'max': undefined,
|
|
64279
64943
|
},
|
|
64280
64944
|
},
|
|
64945
|
+
'created': undefined,
|
|
64281
64946
|
'info': market,
|
|
64282
64947
|
});
|
|
64283
64948
|
}
|
|
@@ -66581,6 +67246,7 @@ class blockchaincom extends _abstract_blockchaincom_js__WEBPACK_IMPORTED_MODULE_
|
|
|
66581
67246
|
'max': undefined,
|
|
66582
67247
|
},
|
|
66583
67248
|
},
|
|
67249
|
+
'created': undefined,
|
|
66584
67250
|
});
|
|
66585
67251
|
}
|
|
66586
67252
|
return result;
|
|
@@ -67671,6 +68337,7 @@ class btcalpha extends _abstract_btcalpha_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
67671
68337
|
'max': undefined,
|
|
67672
68338
|
},
|
|
67673
68339
|
},
|
|
68340
|
+
'created': undefined,
|
|
67674
68341
|
'info': market,
|
|
67675
68342
|
});
|
|
67676
68343
|
}
|
|
@@ -69385,6 +70052,7 @@ class btcmarkets extends _abstract_btcmarkets_js__WEBPACK_IMPORTED_MODULE_0__/*
|
|
|
69385
70052
|
'max': undefined,
|
|
69386
70053
|
},
|
|
69387
70054
|
},
|
|
70055
|
+
'created': undefined,
|
|
69388
70056
|
'info': market,
|
|
69389
70057
|
});
|
|
69390
70058
|
}
|
|
@@ -71040,6 +71708,7 @@ class btcturk extends _abstract_btcturk_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
71040
71708
|
'max': undefined,
|
|
71041
71709
|
},
|
|
71042
71710
|
},
|
|
71711
|
+
'created': undefined,
|
|
71043
71712
|
'info': entry,
|
|
71044
71713
|
});
|
|
71045
71714
|
}
|
|
@@ -74490,7 +75159,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
74490
75159
|
const feeToken = this.safeString(trade, 'feeTokenId');
|
|
74491
75160
|
const feeCurrency = this.safeCurrencyCode(feeToken);
|
|
74492
75161
|
fee = {
|
|
74493
|
-
'cost': feeCost,
|
|
75162
|
+
'cost': _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringAbs */ .O.stringAbs(feeCost),
|
|
74494
75163
|
'currency': feeCurrency,
|
|
74495
75164
|
};
|
|
74496
75165
|
}
|
|
@@ -74656,7 +75325,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
74656
75325
|
feeCurrencyCode = market['inverse'] ? market['base'] : market['settle'];
|
|
74657
75326
|
}
|
|
74658
75327
|
fee = {
|
|
74659
|
-
'cost': feeCostString,
|
|
75328
|
+
'cost': _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringAbs */ .O.stringAbs(feeCostString),
|
|
74660
75329
|
'currency': feeCurrencyCode,
|
|
74661
75330
|
};
|
|
74662
75331
|
}
|
|
@@ -77256,7 +77925,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
77256
77925
|
'referenceAccount': undefined,
|
|
77257
77926
|
'referenceId': referenceId,
|
|
77258
77927
|
'status': undefined,
|
|
77259
|
-
'amount': this.parseNumber(amount),
|
|
77928
|
+
'amount': this.parseNumber(_base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringAbs */ .O.stringAbs(amount)),
|
|
77260
77929
|
'before': this.parseNumber(before),
|
|
77261
77930
|
'after': this.parseNumber(after),
|
|
77262
77931
|
'fee': this.parseNumber(this.safeString(item, 'fee')),
|
|
@@ -79706,6 +80375,7 @@ class cex extends _abstract_cex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
79706
80375
|
'max': undefined,
|
|
79707
80376
|
},
|
|
79708
80377
|
},
|
|
80378
|
+
'created': undefined,
|
|
79709
80379
|
'info': market,
|
|
79710
80380
|
});
|
|
79711
80381
|
}
|
|
@@ -81968,6 +82638,7 @@ class coinbase extends _abstract_coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
81968
82638
|
'max': this.safeNumber(market, 'quote_max_size'),
|
|
81969
82639
|
},
|
|
81970
82640
|
},
|
|
82641
|
+
'created': undefined,
|
|
81971
82642
|
'info': market,
|
|
81972
82643
|
});
|
|
81973
82644
|
}
|
|
@@ -84356,6 +85027,7 @@ class coinbasepro extends _abstract_coinbasepro_js__WEBPACK_IMPORTED_MODULE_0__/
|
|
|
84356
85027
|
'max': undefined,
|
|
84357
85028
|
},
|
|
84358
85029
|
},
|
|
85030
|
+
'created': undefined,
|
|
84359
85031
|
'info': market,
|
|
84360
85032
|
}));
|
|
84361
85033
|
}
|
|
@@ -87228,6 +87900,7 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
87228
87900
|
'max': undefined,
|
|
87229
87901
|
},
|
|
87230
87902
|
},
|
|
87903
|
+
'created': undefined,
|
|
87231
87904
|
'info': market,
|
|
87232
87905
|
});
|
|
87233
87906
|
}
|
|
@@ -87324,6 +87997,7 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
87324
87997
|
'max': undefined,
|
|
87325
87998
|
},
|
|
87326
87999
|
},
|
|
88000
|
+
'created': undefined,
|
|
87327
88001
|
'info': entry,
|
|
87328
88002
|
});
|
|
87329
88003
|
}
|
|
@@ -91775,6 +92449,7 @@ class coinfalcon extends _abstract_coinfalcon_js__WEBPACK_IMPORTED_MODULE_0__/*
|
|
|
91775
92449
|
'max': undefined,
|
|
91776
92450
|
},
|
|
91777
92451
|
},
|
|
92452
|
+
'created': undefined,
|
|
91778
92453
|
'info': market,
|
|
91779
92454
|
});
|
|
91780
92455
|
}
|
|
@@ -92873,6 +93548,7 @@ class coinmate extends _abstract_coinmate_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
92873
93548
|
'max': undefined,
|
|
92874
93549
|
},
|
|
92875
93550
|
},
|
|
93551
|
+
'created': undefined,
|
|
92876
93552
|
'info': market,
|
|
92877
93553
|
});
|
|
92878
93554
|
}
|
|
@@ -93808,6 +94484,7 @@ class coinone extends _abstract_coinone_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
93808
94484
|
'max': undefined,
|
|
93809
94485
|
},
|
|
93810
94486
|
},
|
|
94487
|
+
'created': undefined,
|
|
93811
94488
|
'info': ticker,
|
|
93812
94489
|
});
|
|
93813
94490
|
}
|
|
@@ -94465,7 +95142,7 @@ class coinone extends _abstract_coinone_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
94465
95142
|
const payload = this.stringToBase64(json);
|
|
94466
95143
|
body = payload;
|
|
94467
95144
|
const secret = this.secret.toUpperCase();
|
|
94468
|
-
const signature = this.hmac(payload, this.encode(secret), _static_dependencies_noble_hashes_sha512_js__WEBPACK_IMPORTED_MODULE_4__/* .sha512 */ .o);
|
|
95145
|
+
const signature = this.hmac(this.encode(payload), this.encode(secret), _static_dependencies_noble_hashes_sha512_js__WEBPACK_IMPORTED_MODULE_4__/* .sha512 */ .o);
|
|
94469
95146
|
headers = {
|
|
94470
95147
|
'Content-Type': 'application/json',
|
|
94471
95148
|
'X-COINONE-PAYLOAD': payload,
|
|
@@ -97044,11 +97721,11 @@ class cryptocom extends _abstract_cryptocom_js__WEBPACK_IMPORTED_MODULE_0__/* ["
|
|
|
97044
97721
|
'fetchAccounts': true,
|
|
97045
97722
|
'fetchBalance': true,
|
|
97046
97723
|
'fetchBidsAsks': false,
|
|
97047
|
-
'fetchBorrowInterest':
|
|
97724
|
+
'fetchBorrowInterest': false,
|
|
97048
97725
|
'fetchBorrowRate': false,
|
|
97049
97726
|
'fetchBorrowRateHistories': false,
|
|
97050
97727
|
'fetchBorrowRateHistory': false,
|
|
97051
|
-
'fetchBorrowRates':
|
|
97728
|
+
'fetchBorrowRates': false,
|
|
97052
97729
|
'fetchClosedOrders': 'emulated',
|
|
97053
97730
|
'fetchCurrencies': false,
|
|
97054
97731
|
'fetchDepositAddress': true,
|
|
@@ -97342,6 +98019,7 @@ class cryptocom extends _abstract_cryptocom_js__WEBPACK_IMPORTED_MODULE_0__/* ["
|
|
|
97342
98019
|
'precisionMode': _base_functions_number_js__WEBPACK_IMPORTED_MODULE_1__/* .TICK_SIZE */ .sh,
|
|
97343
98020
|
'exceptions': {
|
|
97344
98021
|
'exact': {
|
|
98022
|
+
'219': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
|
|
97345
98023
|
'10001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
|
|
97346
98024
|
'10002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
|
|
97347
98025
|
'10003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
|
|
@@ -97571,6 +98249,7 @@ class cryptocom extends _abstract_cryptocom_js__WEBPACK_IMPORTED_MODULE_0__/* ["
|
|
|
97571
98249
|
'max': undefined,
|
|
97572
98250
|
},
|
|
97573
98251
|
},
|
|
98252
|
+
'created': undefined,
|
|
97574
98253
|
'info': market,
|
|
97575
98254
|
});
|
|
97576
98255
|
}
|
|
@@ -98063,7 +98742,7 @@ class cryptocom extends _abstract_cryptocom_js__WEBPACK_IMPORTED_MODULE_0__/* ["
|
|
|
98063
98742
|
}
|
|
98064
98743
|
const postOnly = this.safeValue(params, 'postOnly', false);
|
|
98065
98744
|
if ((postOnly) || (timeInForce === 'PO')) {
|
|
98066
|
-
request['exec_inst'] = 'POST_ONLY';
|
|
98745
|
+
request['exec_inst'] = ['POST_ONLY'];
|
|
98067
98746
|
request['time_in_force'] = 'GOOD_TILL_CANCEL';
|
|
98068
98747
|
}
|
|
98069
98748
|
const triggerPrice = this.safeStringN(params, ['stopPrice', 'triggerPrice', 'ref_price']);
|
|
@@ -98871,8 +99550,8 @@ class cryptocom extends _abstract_cryptocom_js__WEBPACK_IMPORTED_MODULE_0__/* ["
|
|
|
98871
99550
|
'close': last,
|
|
98872
99551
|
'last': last,
|
|
98873
99552
|
'previousClose': undefined,
|
|
98874
|
-
'change':
|
|
98875
|
-
'percentage':
|
|
99553
|
+
'change': undefined,
|
|
99554
|
+
'percentage': this.safeString(ticker, 'c'),
|
|
98876
99555
|
'average': undefined,
|
|
98877
99556
|
'baseVolume': this.safeString(ticker, 'v'),
|
|
98878
99557
|
'quoteVolume': this.safeString(ticker, 'vv'),
|
|
@@ -99016,10 +99695,16 @@ class cryptocom extends _abstract_cryptocom_js__WEBPACK_IMPORTED_MODULE_0__/* ["
|
|
|
99016
99695
|
const created = this.safeInteger(order, 'create_time');
|
|
99017
99696
|
const marketId = this.safeString(order, 'instrument_name');
|
|
99018
99697
|
const symbol = this.safeSymbol(marketId, market);
|
|
99019
|
-
const execInst = this.
|
|
99020
|
-
let postOnly =
|
|
99698
|
+
const execInst = this.safeValue(order, 'exec_inst');
|
|
99699
|
+
let postOnly = false;
|
|
99021
99700
|
if (execInst !== undefined) {
|
|
99022
|
-
|
|
99701
|
+
for (let i = 0; i < execInst.length; i++) {
|
|
99702
|
+
const inst = execInst[i];
|
|
99703
|
+
if (inst === 'POST_ONLY') {
|
|
99704
|
+
postOnly = true;
|
|
99705
|
+
break;
|
|
99706
|
+
}
|
|
99707
|
+
}
|
|
99023
99708
|
}
|
|
99024
99709
|
const feeCurrency = this.safeString(order, 'fee_instrument_name');
|
|
99025
99710
|
return this.safeOrder({
|
|
@@ -99252,52 +99937,6 @@ class cryptocom extends _abstract_cryptocom_js__WEBPACK_IMPORTED_MODULE_0__/* ["
|
|
|
99252
99937
|
'info': info,
|
|
99253
99938
|
};
|
|
99254
99939
|
}
|
|
99255
|
-
async fetchBorrowInterest(code = undefined, symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
99256
|
-
await this.loadMarkets();
|
|
99257
|
-
const request = {};
|
|
99258
|
-
let market = undefined;
|
|
99259
|
-
let currency = undefined;
|
|
99260
|
-
if (symbol !== undefined) {
|
|
99261
|
-
market = this.market(symbol);
|
|
99262
|
-
}
|
|
99263
|
-
if (code !== undefined) {
|
|
99264
|
-
currency = this.currency(code);
|
|
99265
|
-
request['currency'] = currency['id'];
|
|
99266
|
-
}
|
|
99267
|
-
if (since !== undefined) {
|
|
99268
|
-
request['start_ts'] = since;
|
|
99269
|
-
}
|
|
99270
|
-
if (limit !== undefined) {
|
|
99271
|
-
request['page_size'] = limit;
|
|
99272
|
-
}
|
|
99273
|
-
const response = await this.v2PrivatePostPrivateMarginGetInterestHistory(this.extend(request, params));
|
|
99274
|
-
//
|
|
99275
|
-
// {
|
|
99276
|
-
// "id": 1656705829020,
|
|
99277
|
-
// "method": "private/margin/get-interest-history",
|
|
99278
|
-
// "code": 0,
|
|
99279
|
-
// "result": {
|
|
99280
|
-
// "list": [
|
|
99281
|
-
// {
|
|
99282
|
-
// "loan_id": "2643528867803765921",
|
|
99283
|
-
// "currency": "USDT",
|
|
99284
|
-
// "interest": 0.00000004,
|
|
99285
|
-
// "time": 1656702899559,
|
|
99286
|
-
// "stake_amount": 6,
|
|
99287
|
-
// "interest_rate": 0.000025
|
|
99288
|
-
// },
|
|
99289
|
-
// ]
|
|
99290
|
-
// }
|
|
99291
|
-
// }
|
|
99292
|
-
//
|
|
99293
|
-
const data = this.safeValue(response, 'result', {});
|
|
99294
|
-
const rows = this.safeValue(data, 'list', []);
|
|
99295
|
-
let interest = undefined;
|
|
99296
|
-
for (let i = 0; i < rows.length; i++) {
|
|
99297
|
-
interest = this.parseBorrowInterests(rows, market);
|
|
99298
|
-
}
|
|
99299
|
-
return this.filterByCurrencySinceLimit(interest, code, since, limit);
|
|
99300
|
-
}
|
|
99301
99940
|
parseBorrowInterest(info, market = undefined) {
|
|
99302
99941
|
//
|
|
99303
99942
|
// {
|
|
@@ -99326,38 +99965,6 @@ class cryptocom extends _abstract_cryptocom_js__WEBPACK_IMPORTED_MODULE_0__/* ["
|
|
|
99326
99965
|
'info': info,
|
|
99327
99966
|
};
|
|
99328
99967
|
}
|
|
99329
|
-
async fetchBorrowRates(params = {}) {
|
|
99330
|
-
/**
|
|
99331
|
-
* @method
|
|
99332
|
-
* @name cryptocom#fetchBorrowRates
|
|
99333
|
-
* @description fetch the borrow interest rates of all currencies
|
|
99334
|
-
* @param {object} [params] extra parameters specific to the cryptocom api endpoint
|
|
99335
|
-
* @returns {object} a list of [borrow rate structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#borrow-rate-structure}
|
|
99336
|
-
*/
|
|
99337
|
-
await this.loadMarkets();
|
|
99338
|
-
const response = await this.v2PrivatePostPrivateMarginGetUserConfig(params);
|
|
99339
|
-
//
|
|
99340
|
-
// {
|
|
99341
|
-
// "id": 1656707947456,
|
|
99342
|
-
// "method": "private/margin/get-user-config",
|
|
99343
|
-
// "code": 0,
|
|
99344
|
-
// "result": {
|
|
99345
|
-
// "stake_amount": 6,
|
|
99346
|
-
// "currency_configs": [
|
|
99347
|
-
// {
|
|
99348
|
-
// "currency": "AGLD",
|
|
99349
|
-
// "hourly_rate": 0.00003334,
|
|
99350
|
-
// "max_borrow_limit": 342.4032393,
|
|
99351
|
-
// "min_borrow_limit": 30
|
|
99352
|
-
// },
|
|
99353
|
-
// ]
|
|
99354
|
-
// }
|
|
99355
|
-
// }
|
|
99356
|
-
//
|
|
99357
|
-
const data = this.safeValue(response, 'result', {});
|
|
99358
|
-
const rates = this.safeValue(data, 'currency_configs', []);
|
|
99359
|
-
return this.parseBorrowRates(rates, 'currency');
|
|
99360
|
-
}
|
|
99361
99968
|
parseBorrowRates(info, codeKey) {
|
|
99362
99969
|
//
|
|
99363
99970
|
// {
|
|
@@ -100030,7 +100637,15 @@ class cryptocom extends _abstract_cryptocom_js__WEBPACK_IMPORTED_MODULE_0__/* ["
|
|
|
100030
100637
|
const paramsKeys = Object.keys(keysorted);
|
|
100031
100638
|
let strSortKey = '';
|
|
100032
100639
|
for (let i = 0; i < paramsKeys.length; i++) {
|
|
100033
|
-
|
|
100640
|
+
const key = paramsKeys[i].toString();
|
|
100641
|
+
let value = requestParams[paramsKeys[i]];
|
|
100642
|
+
if (Array.isArray(value)) {
|
|
100643
|
+
value = value.join(',');
|
|
100644
|
+
}
|
|
100645
|
+
else {
|
|
100646
|
+
value = value.toString();
|
|
100647
|
+
}
|
|
100648
|
+
strSortKey = strSortKey + key + value;
|
|
100034
100649
|
}
|
|
100035
100650
|
const payload = path + nonce + this.apiKey + strSortKey + nonce;
|
|
100036
100651
|
const signature = this.hmac(this.encode(payload), this.encode(this.secret), _static_dependencies_noble_hashes_sha256_js__WEBPACK_IMPORTED_MODULE_4__/* .sha256 */ .J);
|
|
@@ -100650,6 +101265,7 @@ class currencycom extends _abstract_currencycom_js__WEBPACK_IMPORTED_MODULE_0__/
|
|
|
100650
101265
|
'max': undefined,
|
|
100651
101266
|
},
|
|
100652
101267
|
},
|
|
101268
|
+
'created': undefined,
|
|
100653
101269
|
'info': market,
|
|
100654
101270
|
});
|
|
100655
101271
|
}
|
|
@@ -102911,6 +103527,7 @@ class delta extends _abstract_delta_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
102911
103527
|
'max': undefined,
|
|
102912
103528
|
},
|
|
102913
103529
|
},
|
|
103530
|
+
'created': this.parse8601(this.safeString(market, 'launch_time')),
|
|
102914
103531
|
'info': market,
|
|
102915
103532
|
});
|
|
102916
103533
|
}
|
|
@@ -105236,9 +105853,11 @@ class deribit extends _abstract_deribit_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
105236
105853
|
'fetchFundingRateHistory': true,
|
|
105237
105854
|
'fetchIndexOHLCV': false,
|
|
105238
105855
|
'fetchLeverageTiers': false,
|
|
105856
|
+
'fetchLiquidations': true,
|
|
105239
105857
|
'fetchMarginMode': false,
|
|
105240
105858
|
'fetchMarkets': true,
|
|
105241
105859
|
'fetchMarkOHLCV': false,
|
|
105860
|
+
'fetchMyLiquidations': true,
|
|
105242
105861
|
'fetchMySettlementHistory': false,
|
|
105243
105862
|
'fetchMyTrades': true,
|
|
105244
105863
|
'fetchOHLCV': true,
|
|
@@ -105987,6 +106606,7 @@ class deribit extends _abstract_deribit_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
105987
106606
|
'max': undefined,
|
|
105988
106607
|
},
|
|
105989
106608
|
},
|
|
106609
|
+
'created': this.safeInteger(market, 'creation_timestamp'),
|
|
105990
106610
|
'info': market,
|
|
105991
106611
|
});
|
|
105992
106612
|
}
|
|
@@ -108092,6 +108712,167 @@ class deribit extends _abstract_deribit_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
108092
108712
|
'previousFundingDatetime': undefined,
|
|
108093
108713
|
};
|
|
108094
108714
|
}
|
|
108715
|
+
async fetchLiquidations(symbol, since = undefined, limit = undefined, params = {}) {
|
|
108716
|
+
/**
|
|
108717
|
+
* @method
|
|
108718
|
+
* @name deribit#fetchLiquidations
|
|
108719
|
+
* @description retrieves the public liquidations of a trading pair
|
|
108720
|
+
* @see https://docs.deribit.com/#public-get_last_settlements_by_currency
|
|
108721
|
+
* @param {string} symbol unified CCXT market symbol
|
|
108722
|
+
* @param {int} [since] the earliest time in ms to fetch liquidations for
|
|
108723
|
+
* @param {int} [limit] the maximum number of liquidation structures to retrieve
|
|
108724
|
+
* @param {object} [params] exchange specific parameters for the deribit api endpoint
|
|
108725
|
+
* @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
|
108726
|
+
* @returns {object} an array of [liquidation structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#liquidation-structure}
|
|
108727
|
+
*/
|
|
108728
|
+
await this.loadMarkets();
|
|
108729
|
+
let paginate = false;
|
|
108730
|
+
[paginate, params] = this.handleOptionAndParams(params, 'fetchLiquidations', 'paginate');
|
|
108731
|
+
if (paginate) {
|
|
108732
|
+
return await this.fetchPaginatedCallCursor('fetchLiquidations', symbol, since, limit, params, 'continuation', 'continuation', undefined);
|
|
108733
|
+
}
|
|
108734
|
+
const market = this.market(symbol);
|
|
108735
|
+
if (market['spot']) {
|
|
108736
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.NotSupported(this.id + ' fetchLiquidations() does not support ' + market['type'] + ' markets');
|
|
108737
|
+
}
|
|
108738
|
+
const request = {
|
|
108739
|
+
'instrument_name': market['id'],
|
|
108740
|
+
'type': 'bankruptcy',
|
|
108741
|
+
};
|
|
108742
|
+
if (since !== undefined) {
|
|
108743
|
+
request['search_start_timestamp'] = since;
|
|
108744
|
+
}
|
|
108745
|
+
if (limit !== undefined) {
|
|
108746
|
+
request['count'] = limit;
|
|
108747
|
+
}
|
|
108748
|
+
const response = await this.publicGetGetLastSettlementsByInstrument(this.extend(request, params));
|
|
108749
|
+
//
|
|
108750
|
+
// {
|
|
108751
|
+
// "jsonrpc": "2.0",
|
|
108752
|
+
// "result": {
|
|
108753
|
+
// "settlements": [
|
|
108754
|
+
// {
|
|
108755
|
+
// "type": "bankruptcy",
|
|
108756
|
+
// "timestamp": 1696579200041,
|
|
108757
|
+
// "funded": 10000.0,
|
|
108758
|
+
// "session_bankrupcy": 10000.0
|
|
108759
|
+
// "session_profit_loss": 112951.68715857354,
|
|
108760
|
+
// "session_tax": 0.15,
|
|
108761
|
+
// "session_tax_rate": 0.0015,
|
|
108762
|
+
// "socialized": 0.001,
|
|
108763
|
+
// },
|
|
108764
|
+
// ],
|
|
108765
|
+
// "continuation": "5dHzoGyD8Hs8KURoUhfgXgHpJTA5oyapoudSmNeAfEftqRbjNE6jNNUpo2oCu1khnZL9ao"
|
|
108766
|
+
// },
|
|
108767
|
+
// "usIn": 1696652052254890,
|
|
108768
|
+
// "usOut": 1696652052255733,
|
|
108769
|
+
// "usDiff": 843,
|
|
108770
|
+
// "testnet": false
|
|
108771
|
+
// }
|
|
108772
|
+
//
|
|
108773
|
+
const result = this.safeValue(response, 'result', {});
|
|
108774
|
+
const cursor = this.safeString(result, 'continuation');
|
|
108775
|
+
const settlements = this.safeValue(result, 'settlements', []);
|
|
108776
|
+
const settlementsWithCursor = this.addPaginationCursorToResult(cursor, settlements);
|
|
108777
|
+
return this.parseLiquidations(settlementsWithCursor, market, since, limit);
|
|
108778
|
+
}
|
|
108779
|
+
addPaginationCursorToResult(cursor, data) {
|
|
108780
|
+
if (cursor !== undefined) {
|
|
108781
|
+
const dataLength = data.length;
|
|
108782
|
+
if (dataLength > 0) {
|
|
108783
|
+
const first = data[0];
|
|
108784
|
+
const last = data[dataLength - 1];
|
|
108785
|
+
first['continuation'] = cursor;
|
|
108786
|
+
last['continuation'] = cursor;
|
|
108787
|
+
data[0] = first;
|
|
108788
|
+
data[dataLength - 1] = last;
|
|
108789
|
+
}
|
|
108790
|
+
}
|
|
108791
|
+
return data;
|
|
108792
|
+
}
|
|
108793
|
+
async fetchMyLiquidations(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
108794
|
+
/**
|
|
108795
|
+
* @method
|
|
108796
|
+
* @name deribit#fetchMyLiquidations
|
|
108797
|
+
* @description retrieves the users liquidated positions
|
|
108798
|
+
* @see https://docs.deribit.com/#private-get_settlement_history_by_instrument
|
|
108799
|
+
* @param {string} symbol unified CCXT market symbol
|
|
108800
|
+
* @param {int} [since] the earliest time in ms to fetch liquidations for
|
|
108801
|
+
* @param {int} [limit] the maximum number of liquidation structures to retrieve
|
|
108802
|
+
* @param {object} [params] exchange specific parameters for the deribit api endpoint
|
|
108803
|
+
* @returns {object} an array of [liquidation structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#liquidation-structure}
|
|
108804
|
+
*/
|
|
108805
|
+
this.checkRequiredSymbol('fetchMyLiquidations', symbol);
|
|
108806
|
+
await this.loadMarkets();
|
|
108807
|
+
const market = this.market(symbol);
|
|
108808
|
+
if (market['spot']) {
|
|
108809
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.NotSupported(this.id + ' fetchMyLiquidations() does not support ' + market['type'] + ' markets');
|
|
108810
|
+
}
|
|
108811
|
+
const request = {
|
|
108812
|
+
'instrument_name': market['id'],
|
|
108813
|
+
'type': 'bankruptcy',
|
|
108814
|
+
};
|
|
108815
|
+
if (since !== undefined) {
|
|
108816
|
+
request['search_start_timestamp'] = since;
|
|
108817
|
+
}
|
|
108818
|
+
if (limit !== undefined) {
|
|
108819
|
+
request['count'] = limit;
|
|
108820
|
+
}
|
|
108821
|
+
const response = await this.privateGetGetSettlementHistoryByInstrument(this.extend(request, params));
|
|
108822
|
+
//
|
|
108823
|
+
// {
|
|
108824
|
+
// "jsonrpc": "2.0",
|
|
108825
|
+
// "result": {
|
|
108826
|
+
// "settlements": [
|
|
108827
|
+
// {
|
|
108828
|
+
// "type": "bankruptcy",
|
|
108829
|
+
// "timestamp": 1696579200041,
|
|
108830
|
+
// "funded": 10000.0,
|
|
108831
|
+
// "session_bankrupcy": 10000.0
|
|
108832
|
+
// "session_profit_loss": 112951.68715857354,
|
|
108833
|
+
// "session_tax": 0.15,
|
|
108834
|
+
// "session_tax_rate": 0.0015,
|
|
108835
|
+
// "socialized": 0.001,
|
|
108836
|
+
// },
|
|
108837
|
+
// ],
|
|
108838
|
+
// "continuation": "5dHzoGyD8Hs8KURoUhfgXgHpJTA5oyapoudSmNeAfEftqRbjNE6jNNUpo2oCu1khnZL9ao"
|
|
108839
|
+
// },
|
|
108840
|
+
// "usIn": 1696652052254890,
|
|
108841
|
+
// "usOut": 1696652052255733,
|
|
108842
|
+
// "usDiff": 843,
|
|
108843
|
+
// "testnet": false
|
|
108844
|
+
// }
|
|
108845
|
+
//
|
|
108846
|
+
const result = this.safeValue(response, 'result', {});
|
|
108847
|
+
const settlements = this.safeValue(result, 'settlements', []);
|
|
108848
|
+
return this.parseLiquidations(settlements, market, since, limit);
|
|
108849
|
+
}
|
|
108850
|
+
parseLiquidation(liquidation, market = undefined) {
|
|
108851
|
+
//
|
|
108852
|
+
// {
|
|
108853
|
+
// "type": "bankruptcy",
|
|
108854
|
+
// "timestamp": 1696579200041,
|
|
108855
|
+
// "funded": 1,
|
|
108856
|
+
// "session_bankrupcy": 0.001,
|
|
108857
|
+
// "session_profit_loss": 0.001,
|
|
108858
|
+
// "session_tax": 0.0015,
|
|
108859
|
+
// "session_tax_rate": 0.0015,
|
|
108860
|
+
// "socialized": 0.001,
|
|
108861
|
+
// }
|
|
108862
|
+
//
|
|
108863
|
+
const timestamp = this.safeInteger(liquidation, 'timestamp');
|
|
108864
|
+
return {
|
|
108865
|
+
'info': liquidation,
|
|
108866
|
+
'symbol': this.safeSymbol(undefined, market),
|
|
108867
|
+
'contracts': undefined,
|
|
108868
|
+
'contractSize': this.safeNumber(market, 'contractSize'),
|
|
108869
|
+
'price': undefined,
|
|
108870
|
+
'baseValue': this.safeNumber(liquidation, 'session_bankrupcy'),
|
|
108871
|
+
'quoteValue': undefined,
|
|
108872
|
+
'timestamp': timestamp,
|
|
108873
|
+
'datetime': this.iso8601(timestamp),
|
|
108874
|
+
};
|
|
108875
|
+
}
|
|
108095
108876
|
nonce() {
|
|
108096
108877
|
return this.milliseconds();
|
|
108097
108878
|
}
|
|
@@ -108815,6 +109596,7 @@ class digifinex extends _abstract_digifinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["
|
|
|
108815
109596
|
'max': undefined,
|
|
108816
109597
|
},
|
|
108817
109598
|
},
|
|
109599
|
+
'created': undefined,
|
|
108818
109600
|
'info': market,
|
|
108819
109601
|
});
|
|
108820
109602
|
}
|
|
@@ -112885,6 +113667,7 @@ class exmo extends _abstract_exmo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
112885
113667
|
'max': this.safeNumber(market, 'max_amount'),
|
|
112886
113668
|
},
|
|
112887
113669
|
},
|
|
113670
|
+
'created': undefined,
|
|
112888
113671
|
'info': market,
|
|
112889
113672
|
});
|
|
112890
113673
|
}
|
|
@@ -114853,10 +115636,12 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
114853
115636
|
'fetchLedger': true,
|
|
114854
115637
|
'fetchLeverage': false,
|
|
114855
115638
|
'fetchLeverageTiers': true,
|
|
115639
|
+
'fetchLiquidations': true,
|
|
114856
115640
|
'fetchMarginMode': false,
|
|
114857
115641
|
'fetchMarketLeverageTiers': 'emulated',
|
|
114858
115642
|
'fetchMarkets': true,
|
|
114859
115643
|
'fetchMarkOHLCV': true,
|
|
115644
|
+
'fetchMyLiquidations': true,
|
|
114860
115645
|
'fetchMySettlementHistory': true,
|
|
114861
115646
|
'fetchMyTrades': true,
|
|
114862
115647
|
'fetchNetworkDepositAddress': true,
|
|
@@ -115841,6 +116626,7 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
115841
116626
|
'max': margin ? this.safeNumber(market, 'max_quote_amount') : undefined,
|
|
115842
116627
|
},
|
|
115843
116628
|
},
|
|
116629
|
+
'created': undefined,
|
|
115844
116630
|
'info': market,
|
|
115845
116631
|
});
|
|
115846
116632
|
}
|
|
@@ -116038,6 +116824,7 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
116038
116824
|
'max': undefined,
|
|
116039
116825
|
},
|
|
116040
116826
|
},
|
|
116827
|
+
'created': undefined,
|
|
116041
116828
|
'info': market,
|
|
116042
116829
|
};
|
|
116043
116830
|
}
|
|
@@ -116158,6 +116945,7 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
116158
116945
|
'max': undefined,
|
|
116159
116946
|
},
|
|
116160
116947
|
},
|
|
116948
|
+
'created': this.safeIntegerProduct(market, 'create_time', 1000),
|
|
116161
116949
|
'info': market,
|
|
116162
116950
|
});
|
|
116163
116951
|
}
|
|
@@ -121074,6 +121862,193 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
121074
121862
|
}
|
|
121075
121863
|
return underlyings;
|
|
121076
121864
|
}
|
|
121865
|
+
async fetchLiquidations(symbol, since = undefined, limit = undefined, params = {}) {
|
|
121866
|
+
/**
|
|
121867
|
+
* @method
|
|
121868
|
+
* @name gate#fetchLiquidations
|
|
121869
|
+
* @description retrieves the public liquidations of a trading pair
|
|
121870
|
+
* @see https://www.gate.io/docs/developers/apiv4/en/#retrieve-liquidation-history
|
|
121871
|
+
* @param {string} symbol unified CCXT market symbol
|
|
121872
|
+
* @param {int} [since] the earliest time in ms to fetch liquidations for
|
|
121873
|
+
* @param {int} [limit] the maximum number of liquidation structures to retrieve
|
|
121874
|
+
* @param {object} [params] exchange specific parameters for the gate api endpoint
|
|
121875
|
+
* @param {int} [params.until] timestamp in ms of the latest liquidation
|
|
121876
|
+
* @returns {object} an array of [liquidation structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#liquidation-structure}
|
|
121877
|
+
*/
|
|
121878
|
+
await this.loadMarkets();
|
|
121879
|
+
const market = this.market(symbol);
|
|
121880
|
+
if (!market['swap']) {
|
|
121881
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported(this.id + ' fetchLiquidations() supports swap markets only');
|
|
121882
|
+
}
|
|
121883
|
+
let request = {
|
|
121884
|
+
'settle': market['settleId'],
|
|
121885
|
+
'contract': market['id'],
|
|
121886
|
+
};
|
|
121887
|
+
if (since !== undefined) {
|
|
121888
|
+
request['from'] = since;
|
|
121889
|
+
}
|
|
121890
|
+
if (limit !== undefined) {
|
|
121891
|
+
request['limit'] = limit;
|
|
121892
|
+
}
|
|
121893
|
+
[request, params] = this.handleUntilOption('to', request, params);
|
|
121894
|
+
const response = await this.publicFuturesGetSettleLiqOrders(this.extend(request, params));
|
|
121895
|
+
//
|
|
121896
|
+
// [
|
|
121897
|
+
// {
|
|
121898
|
+
// "contract": "BTC_USDT",
|
|
121899
|
+
// "left": 0,
|
|
121900
|
+
// "size": -165,
|
|
121901
|
+
// "fill_price": "28070",
|
|
121902
|
+
// "order_price": "28225",
|
|
121903
|
+
// "time": 1696736132
|
|
121904
|
+
// },
|
|
121905
|
+
// ]
|
|
121906
|
+
//
|
|
121907
|
+
return this.parseLiquidations(response, market, since, limit);
|
|
121908
|
+
}
|
|
121909
|
+
async fetchMyLiquidations(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
121910
|
+
/**
|
|
121911
|
+
* @method
|
|
121912
|
+
* @name gate#fetchMyLiquidations
|
|
121913
|
+
* @description retrieves the users liquidated positions
|
|
121914
|
+
* @see https://www.gate.io/docs/developers/apiv4/en/#list-liquidation-history
|
|
121915
|
+
* @see https://www.gate.io/docs/developers/apiv4/en/#list-liquidation-history-2
|
|
121916
|
+
* @see https://www.gate.io/docs/developers/apiv4/en/#list-user-s-liquidation-history-of-specified-underlying
|
|
121917
|
+
* @param {string} symbol unified CCXT market symbol
|
|
121918
|
+
* @param {int} [since] the earliest time in ms to fetch liquidations for
|
|
121919
|
+
* @param {int} [limit] the maximum number of liquidation structures to retrieve
|
|
121920
|
+
* @param {object} [params] exchange specific parameters for the gate api endpoint
|
|
121921
|
+
* @returns {object} an array of [liquidation structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#liquidation-structure}
|
|
121922
|
+
*/
|
|
121923
|
+
this.checkRequiredSymbol('fetchMyLiquidations', symbol);
|
|
121924
|
+
await this.loadMarkets();
|
|
121925
|
+
const market = this.market(symbol);
|
|
121926
|
+
const request = {
|
|
121927
|
+
'contract': market['id'],
|
|
121928
|
+
};
|
|
121929
|
+
let response = undefined;
|
|
121930
|
+
if ((market['swap']) || (market['future'])) {
|
|
121931
|
+
if (limit !== undefined) {
|
|
121932
|
+
request['limit'] = limit;
|
|
121933
|
+
}
|
|
121934
|
+
request['settle'] = market['settleId'];
|
|
121935
|
+
}
|
|
121936
|
+
else if (market['option']) {
|
|
121937
|
+
const marketId = market['id'];
|
|
121938
|
+
const optionParts = marketId.split('-');
|
|
121939
|
+
request['underlying'] = this.safeString(optionParts, 0);
|
|
121940
|
+
}
|
|
121941
|
+
if (market['swap']) {
|
|
121942
|
+
response = await this.privateFuturesGetSettleLiquidates(this.extend(request, params));
|
|
121943
|
+
}
|
|
121944
|
+
else if (market['future']) {
|
|
121945
|
+
response = await this.privateDeliveryGetSettleLiquidates(this.extend(request, params));
|
|
121946
|
+
}
|
|
121947
|
+
else if (market['option']) {
|
|
121948
|
+
response = await this.privateOptionsGetPositionClose(this.extend(request, params));
|
|
121949
|
+
}
|
|
121950
|
+
else {
|
|
121951
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported(this.id + ' fetchMyLiquidations() does not support ' + market['type'] + ' orders');
|
|
121952
|
+
}
|
|
121953
|
+
//
|
|
121954
|
+
// swap and future
|
|
121955
|
+
//
|
|
121956
|
+
// [
|
|
121957
|
+
// {
|
|
121958
|
+
// "time": 1548654951,
|
|
121959
|
+
// "contract": "BTC_USDT",
|
|
121960
|
+
// "size": 600,
|
|
121961
|
+
// "leverage": "25",
|
|
121962
|
+
// "margin": "0.006705256878",
|
|
121963
|
+
// "entry_price": "3536.123",
|
|
121964
|
+
// "liq_price": "3421.54",
|
|
121965
|
+
// "mark_price": "3420.27",
|
|
121966
|
+
// "order_id": 317393847,
|
|
121967
|
+
// "order_price": "3405",
|
|
121968
|
+
// "fill_price": "3424",
|
|
121969
|
+
// "left": 0
|
|
121970
|
+
// }
|
|
121971
|
+
// ]
|
|
121972
|
+
//
|
|
121973
|
+
// option
|
|
121974
|
+
//
|
|
121975
|
+
// [
|
|
121976
|
+
// {
|
|
121977
|
+
// "time": 1631764800,
|
|
121978
|
+
// "pnl": "-42914.291",
|
|
121979
|
+
// "settle_size": "-10001",
|
|
121980
|
+
// "side": "short",
|
|
121981
|
+
// "contract": "BTC_USDT-20210916-5000-C",
|
|
121982
|
+
// "text": "settled"
|
|
121983
|
+
// }
|
|
121984
|
+
// ]
|
|
121985
|
+
//
|
|
121986
|
+
return this.parseLiquidations(response, market, since, limit);
|
|
121987
|
+
}
|
|
121988
|
+
parseLiquidation(liquidation, market = undefined) {
|
|
121989
|
+
//
|
|
121990
|
+
// fetchLiquidations
|
|
121991
|
+
//
|
|
121992
|
+
// {
|
|
121993
|
+
// "contract": "BTC_USDT",
|
|
121994
|
+
// "left": 0,
|
|
121995
|
+
// "size": -165,
|
|
121996
|
+
// "fill_price": "28070",
|
|
121997
|
+
// "order_price": "28225",
|
|
121998
|
+
// "time": 1696736132
|
|
121999
|
+
// }
|
|
122000
|
+
//
|
|
122001
|
+
// swap and future: fetchMyLiquidations
|
|
122002
|
+
//
|
|
122003
|
+
// {
|
|
122004
|
+
// "time": 1548654951,
|
|
122005
|
+
// "contract": "BTC_USDT",
|
|
122006
|
+
// "size": 600,
|
|
122007
|
+
// "leverage": "25",
|
|
122008
|
+
// "margin": "0.006705256878",
|
|
122009
|
+
// "entry_price": "3536.123",
|
|
122010
|
+
// "liq_price": "3421.54",
|
|
122011
|
+
// "mark_price": "3420.27",
|
|
122012
|
+
// "order_id": 317393847,
|
|
122013
|
+
// "order_price": "3405",
|
|
122014
|
+
// "fill_price": "3424",
|
|
122015
|
+
// "left": 0
|
|
122016
|
+
// }
|
|
122017
|
+
//
|
|
122018
|
+
// option: fetchMyLiquidations
|
|
122019
|
+
//
|
|
122020
|
+
// {
|
|
122021
|
+
// "time": 1631764800,
|
|
122022
|
+
// "pnl": "-42914.291",
|
|
122023
|
+
// "settle_size": "-10001",
|
|
122024
|
+
// "side": "short",
|
|
122025
|
+
// "contract": "BTC_USDT-20210916-5000-C",
|
|
122026
|
+
// "text": "settled"
|
|
122027
|
+
// }
|
|
122028
|
+
//
|
|
122029
|
+
const marketId = this.safeString(liquidation, 'contract');
|
|
122030
|
+
const timestamp = this.safeTimestamp(liquidation, 'time');
|
|
122031
|
+
const contractsStringRaw = this.safeString2(liquidation, 'size', 'settle_size');
|
|
122032
|
+
const contractsString = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringAbs */ .O.stringAbs(contractsStringRaw);
|
|
122033
|
+
const contractSizeString = this.safeString(market, 'contractSize');
|
|
122034
|
+
const priceString = this.safeString2(liquidation, 'liq_price', 'fill_price');
|
|
122035
|
+
const baseValueString = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringMul */ .O.stringMul(contractsString, contractSizeString);
|
|
122036
|
+
let quoteValueString = this.safeString(liquidation, 'pnl');
|
|
122037
|
+
if (quoteValueString === undefined) {
|
|
122038
|
+
quoteValueString = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringMul */ .O.stringMul(baseValueString, priceString);
|
|
122039
|
+
}
|
|
122040
|
+
return {
|
|
122041
|
+
'info': liquidation,
|
|
122042
|
+
'symbol': this.safeSymbol(marketId, market),
|
|
122043
|
+
'contracts': this.parseNumber(contractsString),
|
|
122044
|
+
'contractSize': this.parseNumber(contractSizeString),
|
|
122045
|
+
'price': this.parseNumber(priceString),
|
|
122046
|
+
'baseValue': this.parseNumber(baseValueString),
|
|
122047
|
+
'quoteValue': this.parseNumber(_base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringAbs */ .O.stringAbs(quoteValueString)),
|
|
122048
|
+
'timestamp': timestamp,
|
|
122049
|
+
'datetime': this.iso8601(timestamp),
|
|
122050
|
+
};
|
|
122051
|
+
}
|
|
121077
122052
|
handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
|
|
121078
122053
|
if (response === undefined) {
|
|
121079
122054
|
return undefined;
|
|
@@ -121772,6 +122747,7 @@ class gemini extends _abstract_gemini_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
121772
122747
|
'max': undefined,
|
|
121773
122748
|
},
|
|
121774
122749
|
},
|
|
122750
|
+
'created': undefined,
|
|
121775
122751
|
'info': response,
|
|
121776
122752
|
};
|
|
121777
122753
|
}
|
|
@@ -123660,6 +124636,7 @@ class hitbtc extends _abstract_hitbtc_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
123660
124636
|
'max': undefined,
|
|
123661
124637
|
},
|
|
123662
124638
|
},
|
|
124639
|
+
'created': undefined,
|
|
123663
124640
|
'info': market,
|
|
123664
124641
|
});
|
|
123665
124642
|
}
|
|
@@ -126399,6 +127376,7 @@ class hollaex extends _abstract_hollaex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
126399
127376
|
'max': undefined,
|
|
126400
127377
|
},
|
|
126401
127378
|
},
|
|
127379
|
+
'created': this.parse8601(this.safeString(market, 'created_at')),
|
|
126402
127380
|
'info': market,
|
|
126403
127381
|
});
|
|
126404
127382
|
}
|
|
@@ -128047,9 +129025,11 @@ class huobi extends _abstract_huobi_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
128047
129025
|
'fetchLedgerEntry': undefined,
|
|
128048
129026
|
'fetchLeverage': false,
|
|
128049
129027
|
'fetchLeverageTiers': true,
|
|
129028
|
+
'fetchLiquidations': true,
|
|
128050
129029
|
'fetchMarketLeverageTiers': true,
|
|
128051
129030
|
'fetchMarkets': true,
|
|
128052
129031
|
'fetchMarkOHLCV': true,
|
|
129032
|
+
'fetchMyLiquidations': false,
|
|
128053
129033
|
'fetchMyTrades': true,
|
|
128054
129034
|
'fetchOHLCV': true,
|
|
128055
129035
|
'fetchOpenInterest': true,
|
|
@@ -136202,6 +137182,106 @@ class huobi extends _abstract_huobi_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
136202
137182
|
'datetime': this.iso8601(timestamp),
|
|
136203
137183
|
};
|
|
136204
137184
|
}
|
|
137185
|
+
async fetchLiquidations(symbol, since = undefined, limit = undefined, params = {}) {
|
|
137186
|
+
/**
|
|
137187
|
+
* @method
|
|
137188
|
+
* @name huobi#fetchLiquidations
|
|
137189
|
+
* @description retrieves the public liquidations of a trading pair
|
|
137190
|
+
* @see https://huobiapi.github.io/docs/usdt_swap/v1/en/#general-query-liquidation-orders-new
|
|
137191
|
+
* @see https://huobiapi.github.io/docs/coin_margined_swap/v1/en/#query-liquidation-orders-new
|
|
137192
|
+
* @see https://huobiapi.github.io/docs/dm/v1/en/#query-liquidation-order-information-new
|
|
137193
|
+
* @param {string} symbol unified CCXT market symbol
|
|
137194
|
+
* @param {int} [since] the earliest time in ms to fetch liquidations for
|
|
137195
|
+
* @param {int} [limit] the maximum number of liquidation structures to retrieve
|
|
137196
|
+
* @param {object} [params] exchange specific parameters for the huobi api endpoint
|
|
137197
|
+
* @param {int} [params.until] timestamp in ms of the latest liquidation
|
|
137198
|
+
* @param {int} [params.tradeType] default 0, linear swap 0: all liquidated orders, 5: liquidated longs; 6: liquidated shorts, inverse swap and future 0: filled liquidated orders, 5: liquidated close orders, 6: liquidated open orders
|
|
137199
|
+
* @returns {object} an array of [liquidation structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#liquidation-structure}
|
|
137200
|
+
*/
|
|
137201
|
+
await this.loadMarkets();
|
|
137202
|
+
const market = this.market(symbol);
|
|
137203
|
+
const tradeType = this.safeInteger(params, 'trade_type', 0);
|
|
137204
|
+
let request = {
|
|
137205
|
+
'trade_type': tradeType,
|
|
137206
|
+
};
|
|
137207
|
+
if (since !== undefined) {
|
|
137208
|
+
request['start_time'] = since;
|
|
137209
|
+
}
|
|
137210
|
+
[request, params] = this.handleUntilOption('end_time', request, params);
|
|
137211
|
+
let response = undefined;
|
|
137212
|
+
if (market['swap']) {
|
|
137213
|
+
request['contract'] = market['id'];
|
|
137214
|
+
if (market['linear']) {
|
|
137215
|
+
response = await this.contractPublicGetLinearSwapApiV3SwapLiquidationOrders(this.extend(request, params));
|
|
137216
|
+
}
|
|
137217
|
+
else {
|
|
137218
|
+
response = await this.contractPublicGetSwapApiV3SwapLiquidationOrders(this.extend(request, params));
|
|
137219
|
+
}
|
|
137220
|
+
}
|
|
137221
|
+
else if (market['future']) {
|
|
137222
|
+
request['symbol'] = market['id'];
|
|
137223
|
+
response = await this.contractPublicGetApiV3ContractLiquidationOrders(this.extend(request, params));
|
|
137224
|
+
}
|
|
137225
|
+
else {
|
|
137226
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.NotSupported(this.id + ' fetchLiquidations() does not support ' + market['type'] + ' orders');
|
|
137227
|
+
}
|
|
137228
|
+
//
|
|
137229
|
+
// {
|
|
137230
|
+
// "code": 200,
|
|
137231
|
+
// "msg": "",
|
|
137232
|
+
// "data": [
|
|
137233
|
+
// {
|
|
137234
|
+
// "query_id": 452057,
|
|
137235
|
+
// "contract_code": "BTC-USDT-211210",
|
|
137236
|
+
// "symbol": "USDT",
|
|
137237
|
+
// "direction": "sell",
|
|
137238
|
+
// "offset": "close",
|
|
137239
|
+
// "volume": 479.000000000000000000,
|
|
137240
|
+
// "price": 51441.700000000000000000,
|
|
137241
|
+
// "created_at": 1638593647864,
|
|
137242
|
+
// "amount": 0.479000000000000000,
|
|
137243
|
+
// "trade_turnover": 24640.574300000000000000,
|
|
137244
|
+
// "business_type": "futures",
|
|
137245
|
+
// "pair": "BTC-USDT"
|
|
137246
|
+
// }
|
|
137247
|
+
// ],
|
|
137248
|
+
// "ts": 1604312615051
|
|
137249
|
+
// }
|
|
137250
|
+
//
|
|
137251
|
+
const data = this.safeValue(response, 'data', []);
|
|
137252
|
+
return this.parseLiquidations(data, market, since, limit);
|
|
137253
|
+
}
|
|
137254
|
+
parseLiquidation(liquidation, market = undefined) {
|
|
137255
|
+
//
|
|
137256
|
+
// {
|
|
137257
|
+
// "query_id": 452057,
|
|
137258
|
+
// "contract_code": "BTC-USDT-211210",
|
|
137259
|
+
// "symbol": "USDT",
|
|
137260
|
+
// "direction": "sell",
|
|
137261
|
+
// "offset": "close",
|
|
137262
|
+
// "volume": 479.000000000000000000,
|
|
137263
|
+
// "price": 51441.700000000000000000,
|
|
137264
|
+
// "created_at": 1638593647864,
|
|
137265
|
+
// "amount": 0.479000000000000000,
|
|
137266
|
+
// "trade_turnover": 24640.574300000000000000,
|
|
137267
|
+
// "business_type": "futures",
|
|
137268
|
+
// "pair": "BTC-USDT"
|
|
137269
|
+
// }
|
|
137270
|
+
//
|
|
137271
|
+
const marketId = this.safeString(liquidation, 'contract_code');
|
|
137272
|
+
const timestamp = this.safeInteger(liquidation, 'created_at');
|
|
137273
|
+
return {
|
|
137274
|
+
'info': liquidation,
|
|
137275
|
+
'symbol': this.safeSymbol(marketId, market),
|
|
137276
|
+
'contracts': this.safeNumber(liquidation, 'volume'),
|
|
137277
|
+
'contractSize': this.safeNumber(market, 'contractSize'),
|
|
137278
|
+
'price': this.safeNumber(liquidation, 'price'),
|
|
137279
|
+
'baseValue': this.safeNumber(liquidation, 'amount'),
|
|
137280
|
+
'quoteValue': this.safeNumber(liquidation, 'trade_turnover'),
|
|
137281
|
+
'timestamp': timestamp,
|
|
137282
|
+
'datetime': this.iso8601(timestamp),
|
|
137283
|
+
};
|
|
137284
|
+
}
|
|
136205
137285
|
}
|
|
136206
137286
|
|
|
136207
137287
|
|
|
@@ -136731,6 +137811,7 @@ class huobijp extends _abstract_huobijp_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
136731
137811
|
'max': undefined,
|
|
136732
137812
|
},
|
|
136733
137813
|
},
|
|
137814
|
+
'created': undefined,
|
|
136734
137815
|
'info': market,
|
|
136735
137816
|
});
|
|
136736
137817
|
}
|
|
@@ -138452,6 +139533,7 @@ class idex extends _abstract_idex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
138452
139533
|
'max': undefined,
|
|
138453
139534
|
},
|
|
138454
139535
|
},
|
|
139536
|
+
'created': undefined,
|
|
138455
139537
|
'info': entry,
|
|
138456
139538
|
});
|
|
138457
139539
|
}
|
|
@@ -140118,6 +141200,7 @@ class independentreserve extends _abstract_independentreserve_js__WEBPACK_IMPORT
|
|
|
140118
141200
|
'max': undefined,
|
|
140119
141201
|
},
|
|
140120
141202
|
},
|
|
141203
|
+
'created': undefined,
|
|
140121
141204
|
'info': id,
|
|
140122
141205
|
});
|
|
140123
141206
|
}
|
|
@@ -140950,6 +142033,7 @@ class indodax extends _abstract_indodax_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
140950
142033
|
'max': undefined,
|
|
140951
142034
|
},
|
|
140952
142035
|
},
|
|
142036
|
+
'created': undefined,
|
|
140953
142037
|
'info': market,
|
|
140954
142038
|
});
|
|
140955
142039
|
}
|
|
@@ -141901,6 +142985,7 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
141901
142985
|
'Depth': 1,
|
|
141902
142986
|
'OHLC': 1,
|
|
141903
142987
|
'Spread': 1,
|
|
142988
|
+
'SystemStatus': 1,
|
|
141904
142989
|
'Ticker': 1,
|
|
141905
142990
|
'Time': 1,
|
|
141906
142991
|
'Trades': 1,
|
|
@@ -141913,6 +142998,7 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
141913
142998
|
'AddExport': 3,
|
|
141914
142999
|
'Balance': 3,
|
|
141915
143000
|
'CancelAll': 3,
|
|
143001
|
+
'CancelAllOrdersAfter': 3,
|
|
141916
143002
|
'CancelOrder': 0,
|
|
141917
143003
|
'CancelOrderBatch': 0,
|
|
141918
143004
|
'ClosedOrders': 6,
|
|
@@ -141948,6 +143034,13 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
141948
143034
|
// sub accounts
|
|
141949
143035
|
'CreateSubaccount': 3,
|
|
141950
143036
|
'AccountTransfer': 3,
|
|
143037
|
+
// earn
|
|
143038
|
+
'Earn/Allocate': 3,
|
|
143039
|
+
'Earn/Deallocate': 3,
|
|
143040
|
+
'Earn/AllocateStatus': 3,
|
|
143041
|
+
'Earn/DeallocateStatus': 3,
|
|
143042
|
+
'Earn/Strategies': 3,
|
|
143043
|
+
'Earn/Allocations': 3,
|
|
141951
143044
|
},
|
|
141952
143045
|
},
|
|
141953
143046
|
},
|
|
@@ -144822,6 +145915,7 @@ class krakenfutures extends _abstract_krakenfutures_js__WEBPACK_IMPORTED_MODULE_
|
|
|
144822
145915
|
'max': undefined,
|
|
144823
145916
|
},
|
|
144824
145917
|
},
|
|
145918
|
+
'created': this.parse8601(this.safeString(market, 'openingDate')),
|
|
144825
145919
|
'info': market,
|
|
144826
145920
|
});
|
|
144827
145921
|
}
|
|
@@ -147817,6 +148911,7 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
147817
148911
|
'id': accountId,
|
|
147818
148912
|
'type': type,
|
|
147819
148913
|
'currency': code,
|
|
148914
|
+
'code': code,
|
|
147820
148915
|
'info': account,
|
|
147821
148916
|
});
|
|
147822
148917
|
}
|
|
@@ -151903,7 +152998,7 @@ class kucoinfutures extends _abstract_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_
|
|
|
151903
152998
|
//
|
|
151904
152999
|
const symbol = this.safeString(position, 'symbol');
|
|
151905
153000
|
market = this.safeMarket(symbol, market);
|
|
151906
|
-
const timestamp = this.
|
|
153001
|
+
const timestamp = this.safeInteger(position, 'currentTimestamp');
|
|
151907
153002
|
const size = this.safeString(position, 'currentQty');
|
|
151908
153003
|
let side = undefined;
|
|
151909
153004
|
if (_base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringGt */ .O.stringGt(size, '0')) {
|
|
@@ -154646,6 +155741,7 @@ class latoken extends _abstract_latoken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
154646
155741
|
'max': this.safeNumber(market, 'maxOrderCost' + capitalizedQuote),
|
|
154647
155742
|
},
|
|
154648
155743
|
},
|
|
155744
|
+
'created': this.safeInteger(market, 'created'),
|
|
154649
155745
|
'info': market,
|
|
154650
155746
|
});
|
|
154651
155747
|
}
|
|
@@ -178442,6 +179538,7 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
178442
179538
|
'type': type,
|
|
178443
179539
|
'currency': undefined,
|
|
178444
179540
|
'info': account,
|
|
179541
|
+
'code': undefined,
|
|
178445
179542
|
});
|
|
178446
179543
|
}
|
|
178447
179544
|
return result;
|
|
@@ -189271,39 +190368,51 @@ class poloniex extends _abstract_poloniex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
189271
190368
|
'markets/{symbol}': 1,
|
|
189272
190369
|
'currencies': 20,
|
|
189273
190370
|
'currencies/{currency}': 20,
|
|
190371
|
+
'v2/currencies': 20,
|
|
190372
|
+
'v2/currencies/{currency}': 20,
|
|
189274
190373
|
'timestamp': 1,
|
|
189275
190374
|
'markets/price': 1,
|
|
189276
190375
|
'markets/{symbol}/price': 1,
|
|
190376
|
+
'markets/markPrice': 1,
|
|
190377
|
+
'markets/{symbol}/markPrice': 1,
|
|
190378
|
+
'markets/{symbol}/markPriceComponents': 1,
|
|
189277
190379
|
'markets/{symbol}/orderBook': 1,
|
|
189278
190380
|
'markets/{symbol}/candles': 1,
|
|
189279
190381
|
'markets/{symbol}/trades': 20,
|
|
189280
190382
|
'markets/ticker24h': 20,
|
|
189281
190383
|
'markets/{symbol}/ticker24h': 20,
|
|
190384
|
+
'markets/collateralInfo': 1,
|
|
190385
|
+
'markets/{currency}/collateralInfo': 1,
|
|
190386
|
+
'markets/borrowRatesInfo': 1,
|
|
189282
190387
|
},
|
|
189283
190388
|
},
|
|
189284
190389
|
'private': {
|
|
189285
190390
|
'get': {
|
|
189286
190391
|
'accounts': 4,
|
|
189287
|
-
'accounts/activity': 4,
|
|
189288
190392
|
'accounts/balances': 4,
|
|
189289
190393
|
'accounts/{id}/balances': 4,
|
|
190394
|
+
'accounts/activity': 20,
|
|
189290
190395
|
'accounts/transfer': 20,
|
|
189291
190396
|
'accounts/transfer/{id}': 4,
|
|
190397
|
+
'feeinfo': 20,
|
|
190398
|
+
'accounts/interest/history': 1,
|
|
189292
190399
|
'subaccounts': 4,
|
|
189293
190400
|
'subaccounts/balances': 20,
|
|
189294
190401
|
'subaccounts/{id}/balances': 4,
|
|
189295
190402
|
'subaccounts/transfer': 20,
|
|
189296
190403
|
'subaccounts/transfer/{id}': 4,
|
|
189297
|
-
'feeinfo': 20,
|
|
189298
190404
|
'wallets/addresses': 20,
|
|
189299
|
-
'wallets/activity': 20,
|
|
189300
190405
|
'wallets/addresses/{currency}': 20,
|
|
190406
|
+
'wallets/activity': 20,
|
|
190407
|
+
'margin/accountMargin': 4,
|
|
190408
|
+
'margin/borrowStatus': 4,
|
|
190409
|
+
'margin/maxSize': 4,
|
|
189301
190410
|
'orders': 20,
|
|
189302
190411
|
'orders/{id}': 4,
|
|
189303
|
-
'orders/history': 20,
|
|
189304
190412
|
'orders/killSwitchStatus': 4,
|
|
189305
190413
|
'smartorders': 20,
|
|
189306
190414
|
'smartorders/{id}': 4,
|
|
190415
|
+
'orders/history': 20,
|
|
189307
190416
|
'smartorders/history': 20,
|
|
189308
190417
|
'trades': 20,
|
|
189309
190418
|
'orders/{id}/trades': 4,
|
|
@@ -189313,9 +190422,10 @@ class poloniex extends _abstract_poloniex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
189313
190422
|
'subaccounts/transfer': 20,
|
|
189314
190423
|
'wallets/address': 20,
|
|
189315
190424
|
'wallets/withdraw': 20,
|
|
190425
|
+
'v2/wallets/withdraw': 20,
|
|
189316
190426
|
'orders': 4,
|
|
189317
|
-
'orders/killSwitch': 4,
|
|
189318
190427
|
'orders/batch': 20,
|
|
190428
|
+
'orders/killSwitch': 4,
|
|
189319
190429
|
'smartorders': 4,
|
|
189320
190430
|
},
|
|
189321
190431
|
'delete': {
|
|
@@ -189327,8 +190437,8 @@ class poloniex extends _abstract_poloniex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
189327
190437
|
'smartorders': 20,
|
|
189328
190438
|
},
|
|
189329
190439
|
'put': {
|
|
189330
|
-
'orders/{id}':
|
|
189331
|
-
'smartorders/{id}':
|
|
190440
|
+
'orders/{id}': 20,
|
|
190441
|
+
'smartorders/{id}': 20,
|
|
189332
190442
|
},
|
|
189333
190443
|
},
|
|
189334
190444
|
},
|
|
@@ -189706,6 +190816,7 @@ class poloniex extends _abstract_poloniex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
189706
190816
|
'max': undefined,
|
|
189707
190817
|
},
|
|
189708
190818
|
},
|
|
190819
|
+
'created': this.safeInteger(market, 'tradableStartTime'),
|
|
189709
190820
|
'info': market,
|
|
189710
190821
|
});
|
|
189711
190822
|
}
|
|
@@ -191593,22 +192704,27 @@ class poloniexfutures extends _abstract_poloniexfutures_js__WEBPACK_IMPORTED_MOD
|
|
|
191593
192704
|
'get': {
|
|
191594
192705
|
'account-overview': 1,
|
|
191595
192706
|
'transaction-history': 1,
|
|
192707
|
+
'maxActiveOrders': 1,
|
|
192708
|
+
'maxRiskLimit': 1,
|
|
192709
|
+
'userFeeRate': 1,
|
|
192710
|
+
'marginType/query': 1,
|
|
191596
192711
|
'orders': 1,
|
|
191597
192712
|
'stopOrders': 1,
|
|
191598
192713
|
'recentDoneOrders': 1,
|
|
191599
192714
|
'orders/{order-id}': 1,
|
|
192715
|
+
'clientOrderId/{clientOid}': 1,
|
|
191600
192716
|
'fills': 1,
|
|
191601
192717
|
'openOrderStatistics': 1,
|
|
191602
192718
|
'position': 1.5,
|
|
191603
192719
|
'positions': 1.5,
|
|
191604
192720
|
'funding-history': 1,
|
|
191605
|
-
'marginType/query': 1,
|
|
191606
192721
|
},
|
|
191607
192722
|
'post': {
|
|
191608
192723
|
'orders': 1.5,
|
|
191609
192724
|
'batchOrders': 1.5,
|
|
191610
192725
|
'position/margin/auto-deposit-status': 1.5,
|
|
191611
192726
|
'position/margin/deposit-margin': 1.5,
|
|
192727
|
+
'position/margin/withdraw-margin': 1.5,
|
|
191612
192728
|
'bullet-private': 1,
|
|
191613
192729
|
'marginType/change': 1,
|
|
191614
192730
|
},
|
|
@@ -191825,6 +192941,7 @@ class poloniexfutures extends _abstract_poloniexfutures_js__WEBPACK_IMPORTED_MOD
|
|
|
191825
192941
|
'max': undefined,
|
|
191826
192942
|
},
|
|
191827
192943
|
},
|
|
192944
|
+
'created': this.safeInteger(market, 'firstOpenDate'),
|
|
191828
192945
|
'info': market,
|
|
191829
192946
|
});
|
|
191830
192947
|
}
|
|
@@ -192749,7 +193866,7 @@ class poloniexfutures extends _abstract_poloniexfutures_js__WEBPACK_IMPORTED_MOD
|
|
|
192749
193866
|
}
|
|
192750
193867
|
const request = {};
|
|
192751
193868
|
if (!stop) {
|
|
192752
|
-
request['status'] = status === 'open' ? 'active' : 'done';
|
|
193869
|
+
request['status'] = (status === 'open') ? 'active' : 'done';
|
|
192753
193870
|
}
|
|
192754
193871
|
else if (status !== 'open') {
|
|
192755
193872
|
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest(this.id + ' fetchOrdersByStatus() can only fetch untriggered stop orders');
|
|
@@ -226584,6 +227701,9 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
|
|
|
226584
227701
|
};
|
|
226585
227702
|
const marketIds = [];
|
|
226586
227703
|
let messageHash = name;
|
|
227704
|
+
if (symbols === undefined) {
|
|
227705
|
+
symbols = [];
|
|
227706
|
+
}
|
|
226587
227707
|
for (let i = 0; i < symbols.length; i++) {
|
|
226588
227708
|
const symbol = symbols[i];
|
|
226589
227709
|
marketIds.push(this.marketId(symbol));
|
|
@@ -226649,6 +227769,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
|
|
|
226649
227769
|
const method = this.safeString(this.options, 'watchTickerMethod', 'ticker'); // or ticker_lite
|
|
226650
227770
|
const name = this.safeString2(params, 'method', 'watchTickerMethod', method);
|
|
226651
227771
|
params = this.omit(params, ['watchTickerMethod', 'method']);
|
|
227772
|
+
symbols = this.marketSymbols(symbols, undefined, false);
|
|
226652
227773
|
return await this.subscribePublic(name, symbols, params);
|
|
226653
227774
|
}
|
|
226654
227775
|
async watchTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
@@ -226800,7 +227921,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
|
|
|
226800
227921
|
// }
|
|
226801
227922
|
//
|
|
226802
227923
|
const channel = this.safeString(message, 'feed');
|
|
226803
|
-
const marketId = this.
|
|
227924
|
+
const marketId = this.safeString(message, 'product_id');
|
|
226804
227925
|
if (marketId !== undefined) {
|
|
226805
227926
|
const market = this.market(marketId);
|
|
226806
227927
|
const symbol = market['symbol'];
|
|
@@ -226841,7 +227962,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
|
|
|
226841
227962
|
// "price": 34893
|
|
226842
227963
|
// }
|
|
226843
227964
|
//
|
|
226844
|
-
const marketId = this.
|
|
227965
|
+
const marketId = this.safeString(trade, 'product_id');
|
|
226845
227966
|
market = this.safeMarket(marketId, market);
|
|
226846
227967
|
const timestamp = this.safeInteger(trade, 'time');
|
|
226847
227968
|
return this.safeTrade({
|
|
@@ -226894,7 +228015,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
|
|
|
226894
228015
|
// }
|
|
226895
228016
|
//
|
|
226896
228017
|
const timestamp = this.safeInteger(trade, 'tradeTime');
|
|
226897
|
-
const marketId = this.
|
|
228018
|
+
const marketId = this.safeString(trade, 'symbol');
|
|
226898
228019
|
return this.safeTrade({
|
|
226899
228020
|
'info': trade,
|
|
226900
228021
|
'id': this.safeString(trade, 'tradeId'),
|
|
@@ -226973,7 +228094,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
|
|
|
226973
228094
|
}
|
|
226974
228095
|
const order = this.safeValue(message, 'order');
|
|
226975
228096
|
if (order !== undefined) {
|
|
226976
|
-
const marketId = this.
|
|
228097
|
+
const marketId = this.safeString(order, 'instrument');
|
|
226977
228098
|
const messageHash = 'orders';
|
|
226978
228099
|
const symbol = this.safeSymbol(marketId);
|
|
226979
228100
|
const orderId = this.safeString(order, 'order_id');
|
|
@@ -227166,7 +228287,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
|
|
|
227166
228287
|
status = 'cancelled';
|
|
227167
228288
|
}
|
|
227168
228289
|
}
|
|
227169
|
-
const marketId = this.
|
|
228290
|
+
const marketId = this.safeString(unparsedOrder, 'instrument');
|
|
227170
228291
|
const timestamp = this.safeString(unparsedOrder, 'time');
|
|
227171
228292
|
const direction = this.safeInteger(unparsedOrder, 'direction');
|
|
227172
228293
|
return this.safeOrder({
|
|
@@ -227247,7 +228368,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
|
|
|
227247
228368
|
// "volumeQuote": 6899673.0
|
|
227248
228369
|
// }
|
|
227249
228370
|
//
|
|
227250
|
-
const marketId = this.
|
|
228371
|
+
const marketId = this.safeString(message, 'product_id');
|
|
227251
228372
|
const feed = this.safeString(message, 'feed');
|
|
227252
228373
|
if (marketId !== undefined) {
|
|
227253
228374
|
const ticker = this.parseWsTicker(message);
|
|
@@ -227308,7 +228429,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
|
|
|
227308
228429
|
// "volumeQuote": 6899673.0
|
|
227309
228430
|
// }
|
|
227310
228431
|
//
|
|
227311
|
-
const marketId = this.
|
|
228432
|
+
const marketId = this.safeString(ticker, 'product_id');
|
|
227312
228433
|
market = this.safeMarket(marketId, market);
|
|
227313
228434
|
const symbol = market['symbol'];
|
|
227314
228435
|
const timestamp = this.parse8601(this.safeString(ticker, 'lastTime'));
|
|
@@ -227366,7 +228487,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
|
|
|
227366
228487
|
// ]
|
|
227367
228488
|
// }
|
|
227368
228489
|
//
|
|
227369
|
-
const marketId = this.
|
|
228490
|
+
const marketId = this.safeString(message, 'product_id');
|
|
227370
228491
|
const market = this.safeMarket(marketId);
|
|
227371
228492
|
const symbol = market['symbol'];
|
|
227372
228493
|
const messageHash = 'book:' + symbol;
|
|
@@ -227406,7 +228527,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
|
|
|
227406
228527
|
// "timestamp": 1612269953629
|
|
227407
228528
|
// }
|
|
227408
228529
|
//
|
|
227409
|
-
const marketId = this.
|
|
228530
|
+
const marketId = this.safeString(message, 'product_id');
|
|
227410
228531
|
const market = this.safeMarket(marketId);
|
|
227411
228532
|
const symbol = market['symbol'];
|
|
227412
228533
|
const messageHash = 'book:' + symbol;
|
|
@@ -227710,7 +228831,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
|
|
|
227710
228831
|
// }
|
|
227711
228832
|
//
|
|
227712
228833
|
const timestamp = this.safeInteger(trade, 'time');
|
|
227713
|
-
const marketId = this.
|
|
228834
|
+
const marketId = this.safeString(trade, 'instrument');
|
|
227714
228835
|
market = this.safeMarket(marketId, market);
|
|
227715
228836
|
const isBuy = this.safeValue(trade, 'buy');
|
|
227716
228837
|
const feeCurrencyId = this.safeString(trade, 'fee_currency');
|
|
@@ -264864,6 +265985,7 @@ class woo extends _abstract_woo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
264864
265985
|
'max': undefined,
|
|
264865
265986
|
},
|
|
264866
265987
|
},
|
|
265988
|
+
'created': this.safeIntegerProduct(market, 'created_time', 1000),
|
|
264867
265989
|
'info': market,
|
|
264868
265990
|
});
|
|
264869
265991
|
}
|
|
@@ -276613,7 +277735,7 @@ SOFTWARE.
|
|
|
276613
277735
|
|
|
276614
277736
|
//-----------------------------------------------------------------------------
|
|
276615
277737
|
// this is updated by vss.js when building
|
|
276616
|
-
const version = '4.1.
|
|
277738
|
+
const version = '4.1.14';
|
|
276617
277739
|
_src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange.ccxtVersion */ .e.ccxtVersion = version;
|
|
276618
277740
|
//-----------------------------------------------------------------------------
|
|
276619
277741
|
|