ccxt 4.2.26 → 4.2.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -5
- package/dist/ccxt.browser.js +2382 -337
- package/dist/ccxt.browser.min.js +7 -7
- package/dist/cjs/ccxt.js +4 -1
- package/dist/cjs/src/abstract/coinmetro.js +9 -0
- package/dist/cjs/src/base/Exchange.js +3 -0
- package/dist/cjs/src/bingx.js +4 -0
- package/dist/cjs/src/bit2c.js +1 -0
- package/dist/cjs/src/bitbank.js +1 -0
- package/dist/cjs/src/bitbns.js +1 -0
- package/dist/cjs/src/bitfinex2.js +49 -1
- package/dist/cjs/src/bitflyer.js +1 -0
- package/dist/cjs/src/bitforex.js +29 -0
- package/dist/cjs/src/coinbase.js +6 -1
- package/dist/cjs/src/coinmetro.js +1909 -0
- package/dist/cjs/src/kucoinfutures.js +4 -0
- package/dist/cjs/src/upbit.js +21 -11
- package/js/ccxt.d.ts +5 -2
- package/js/ccxt.js +4 -2
- package/js/src/abstract/coinmetro.d.ts +36 -0
- package/js/src/abstract/coinmetro.js +11 -0
- package/js/src/base/Exchange.js +3 -0
- package/js/src/bingx.d.ts +4 -0
- package/js/src/bingx.js +4 -0
- package/js/src/bit2c.js +1 -0
- package/js/src/bitbank.js +1 -0
- package/js/src/bitbns.js +1 -0
- package/js/src/bitfinex2.d.ts +16 -0
- package/js/src/bitfinex2.js +49 -1
- package/js/src/bitflyer.js +1 -0
- package/js/src/bitforex.d.ts +1 -0
- package/js/src/bitforex.js +29 -0
- package/js/src/coinbase.js +6 -1
- package/js/src/coinmetro.d.ts +79 -0
- package/js/src/coinmetro.js +1910 -0
- package/js/src/kucoinfutures.d.ts +4 -0
- package/js/src/kucoinfutures.js +4 -0
- package/js/src/upbit.d.ts +3 -3
- package/js/src/upbit.js +21 -11
- package/package.json +1 -1
- package/skip-tests.json +7 -0
package/dist/ccxt.browser.js
CHANGED
|
@@ -592,6 +592,22 @@ class Exchange extends _base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchang
|
|
|
592
592
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Exchange);
|
|
593
593
|
|
|
594
594
|
|
|
595
|
+
/***/ }),
|
|
596
|
+
|
|
597
|
+
/***/ 488:
|
|
598
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
599
|
+
|
|
600
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
601
|
+
/* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
602
|
+
/* harmony export */ });
|
|
603
|
+
/* harmony import */ var _base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3043);
|
|
604
|
+
// -------------------------------------------------------------------------------
|
|
605
|
+
|
|
606
|
+
class Exchange extends _base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e {
|
|
607
|
+
}
|
|
608
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Exchange);
|
|
609
|
+
|
|
610
|
+
|
|
595
611
|
/***/ }),
|
|
596
612
|
|
|
597
613
|
/***/ 3767:
|
|
@@ -11074,6 +11090,9 @@ class Exchange {
|
|
|
11074
11090
|
return this.cancelOrder(this.safeValue(order, 'id'), this.safeValue(order, 'symbol'), params);
|
|
11075
11091
|
}
|
|
11076
11092
|
async fetchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
11093
|
+
if (this.has['fetchOpenOrders'] && this.has['fetchClosedOrders']) {
|
|
11094
|
+
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' fetchOrders() is not supported yet, consider using fetchOpenOrders() and fetchClosedOrders() instead');
|
|
11095
|
+
}
|
|
11077
11096
|
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' fetchOrders() is not supported yet');
|
|
11078
11097
|
}
|
|
11079
11098
|
async fetchOrdersWs(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
@@ -27972,6 +27991,10 @@ class binanceusdm extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
27972
27991
|
|
|
27973
27992
|
|
|
27974
27993
|
// ---------------------------------------------------------------------------
|
|
27994
|
+
/**
|
|
27995
|
+
* @class bingx
|
|
27996
|
+
* @augments Exchange
|
|
27997
|
+
*/
|
|
27975
27998
|
class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
27976
27999
|
describe() {
|
|
27977
28000
|
return this.deepExtend(super.describe(), {
|
|
@@ -31915,6 +31938,7 @@ class bit2c extends _abstract_bit2c_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
31915
31938
|
'future': false,
|
|
31916
31939
|
'option': false,
|
|
31917
31940
|
'addMargin': false,
|
|
31941
|
+
'cancelAllOrders': false,
|
|
31918
31942
|
'cancelOrder': true,
|
|
31919
31943
|
'closeAllPositions': false,
|
|
31920
31944
|
'closePosition': false,
|
|
@@ -32838,6 +32862,7 @@ class bitbank extends _abstract_bitbank_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
32838
32862
|
'future': false,
|
|
32839
32863
|
'option': false,
|
|
32840
32864
|
'addMargin': false,
|
|
32865
|
+
'cancelAllOrders': false,
|
|
32841
32866
|
'cancelOrder': true,
|
|
32842
32867
|
'closeAllPositions': false,
|
|
32843
32868
|
'closePosition': false,
|
|
@@ -33874,6 +33899,7 @@ class bitbns extends _abstract_bitbns_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
33874
33899
|
'swap': false,
|
|
33875
33900
|
'future': false,
|
|
33876
33901
|
'option': undefined,
|
|
33902
|
+
'cancelAllOrders': false,
|
|
33877
33903
|
'cancelOrder': true,
|
|
33878
33904
|
'createOrder': true,
|
|
33879
33905
|
'fetchBalance': true,
|
|
@@ -36847,6 +36873,7 @@ class bitfinex2 extends _abstract_bitfinex2_js__WEBPACK_IMPORTED_MODULE_0__/* ["
|
|
|
36847
36873
|
'fetchTradingFees': true,
|
|
36848
36874
|
'fetchTransactionFees': undefined,
|
|
36849
36875
|
'fetchTransactions': 'emulated',
|
|
36876
|
+
'setMargin': true,
|
|
36850
36877
|
'withdraw': true,
|
|
36851
36878
|
},
|
|
36852
36879
|
'timeframes': {
|
|
@@ -37597,6 +37624,11 @@ class bitfinex2 extends _abstract_bitfinex2_js__WEBPACK_IMPORTED_MODULE_0__/* ["
|
|
|
37597
37624
|
const result = { 'info': response };
|
|
37598
37625
|
for (let i = 0; i < response.length; i++) {
|
|
37599
37626
|
const balance = response[i];
|
|
37627
|
+
const account = this.account();
|
|
37628
|
+
const interest = this.safeString(balance, 3);
|
|
37629
|
+
if (interest !== '0') {
|
|
37630
|
+
account['debt'] = interest;
|
|
37631
|
+
}
|
|
37600
37632
|
const type = this.safeString(balance, 0);
|
|
37601
37633
|
const currencyId = this.safeStringLower(balance, 1, '');
|
|
37602
37634
|
const start = currencyId.length - 2;
|
|
@@ -37605,7 +37637,6 @@ class bitfinex2 extends _abstract_bitfinex2_js__WEBPACK_IMPORTED_MODULE_0__/* ["
|
|
|
37605
37637
|
const derivativeCondition = (!isDerivative || isDerivativeCode);
|
|
37606
37638
|
if ((accountType === type) && derivativeCondition) {
|
|
37607
37639
|
const code = this.safeCurrencyCode(currencyId);
|
|
37608
|
-
const account = this.account();
|
|
37609
37640
|
account['total'] = this.safeString(balance, 2);
|
|
37610
37641
|
account['free'] = this.safeString(balance, 4);
|
|
37611
37642
|
result[code] = account;
|
|
@@ -40040,6 +40071,49 @@ class bitfinex2 extends _abstract_bitfinex2_js__WEBPACK_IMPORTED_MODULE_0__/* ["
|
|
|
40040
40071
|
'datetime': this.iso8601(timestamp),
|
|
40041
40072
|
});
|
|
40042
40073
|
}
|
|
40074
|
+
async setMargin(symbol, amount, params = {}) {
|
|
40075
|
+
/**
|
|
40076
|
+
* @method
|
|
40077
|
+
* @name bitfinex2#setMargin
|
|
40078
|
+
* @description either adds or reduces margin in a swap position in order to set the margin to a specific value
|
|
40079
|
+
* @see https://docs.bitfinex.com/reference/rest-auth-deriv-pos-collateral-set
|
|
40080
|
+
* @param {string} symbol unified market symbol of the market to set margin in
|
|
40081
|
+
* @param {float} amount the amount to set the margin to
|
|
40082
|
+
* @param {object} [params] parameters specific to the exchange API endpoint
|
|
40083
|
+
* @returns {object} A [margin structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#add-margin-structure}
|
|
40084
|
+
*/
|
|
40085
|
+
await this.loadMarkets();
|
|
40086
|
+
const market = this.market(symbol);
|
|
40087
|
+
if (!market['swap']) {
|
|
40088
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported(this.id + ' setMargin() only support swap markets');
|
|
40089
|
+
}
|
|
40090
|
+
const request = {
|
|
40091
|
+
'symbol': market['id'],
|
|
40092
|
+
'collateral': this.parseToNumeric(amount),
|
|
40093
|
+
};
|
|
40094
|
+
const response = await this.privatePostAuthWDerivCollateralSet(this.extend(request, params));
|
|
40095
|
+
//
|
|
40096
|
+
// [
|
|
40097
|
+
// [
|
|
40098
|
+
// 1
|
|
40099
|
+
// ]
|
|
40100
|
+
// ]
|
|
40101
|
+
//
|
|
40102
|
+
const data = this.safeValue(response, 0);
|
|
40103
|
+
return this.parseMarginModification(data, market);
|
|
40104
|
+
}
|
|
40105
|
+
parseMarginModification(data, market = undefined) {
|
|
40106
|
+
const marginStatusRaw = data[0];
|
|
40107
|
+
const marginStatus = (marginStatusRaw === 1) ? 'ok' : 'failed';
|
|
40108
|
+
return {
|
|
40109
|
+
'info': data,
|
|
40110
|
+
'type': undefined,
|
|
40111
|
+
'amount': undefined,
|
|
40112
|
+
'code': undefined,
|
|
40113
|
+
'symbol': market['symbol'],
|
|
40114
|
+
'status': marginStatus,
|
|
40115
|
+
};
|
|
40116
|
+
}
|
|
40043
40117
|
}
|
|
40044
40118
|
|
|
40045
40119
|
|
|
@@ -40083,6 +40157,7 @@ class bitflyer extends _abstract_bitflyer_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
40083
40157
|
'swap': undefined,
|
|
40084
40158
|
'future': undefined,
|
|
40085
40159
|
'option': false,
|
|
40160
|
+
'cancelAllOrders': undefined,
|
|
40086
40161
|
'cancelOrder': true,
|
|
40087
40162
|
'createOrder': true,
|
|
40088
40163
|
'fetchBalance': true,
|
|
@@ -41136,6 +41211,7 @@ class bitforex extends _abstract_bitforex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
41136
41211
|
'future': false,
|
|
41137
41212
|
'option': false,
|
|
41138
41213
|
'addMargin': false,
|
|
41214
|
+
'cancelAllOrders': true,
|
|
41139
41215
|
'cancelOrder': true,
|
|
41140
41216
|
'createOrder': true,
|
|
41141
41217
|
'createReduceOnlyOrder': false,
|
|
@@ -41789,6 +41865,34 @@ class bitforex extends _abstract_bitforex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
41789
41865
|
'trades': undefined,
|
|
41790
41866
|
}, market);
|
|
41791
41867
|
}
|
|
41868
|
+
async cancelAllOrders(symbol = undefined, params = {}) {
|
|
41869
|
+
/**
|
|
41870
|
+
* @method
|
|
41871
|
+
* @name bitforex#cancelAllOrders
|
|
41872
|
+
* @see https://github.com/githubdev2020/API_Doc_en/wiki/Cancle-all-orders
|
|
41873
|
+
* @description cancel all open orders in a market
|
|
41874
|
+
* @param {string} symbol unified market symbol of the market to cancel orders in
|
|
41875
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
41876
|
+
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
41877
|
+
*/
|
|
41878
|
+
if (symbol === undefined) {
|
|
41879
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' cancelAllOrders () requires a symbol argument');
|
|
41880
|
+
}
|
|
41881
|
+
await this.loadMarkets();
|
|
41882
|
+
const market = this.market(symbol);
|
|
41883
|
+
const request = {
|
|
41884
|
+
'symbol': market['id'],
|
|
41885
|
+
};
|
|
41886
|
+
const response = await this.privatePostApiV1TradeCancelAllOrder(this.extend(request, params));
|
|
41887
|
+
//
|
|
41888
|
+
// {
|
|
41889
|
+
// 'data': True,
|
|
41890
|
+
// 'success': True,
|
|
41891
|
+
// 'time': '1706542995252'
|
|
41892
|
+
// }
|
|
41893
|
+
//
|
|
41894
|
+
return response;
|
|
41895
|
+
}
|
|
41792
41896
|
async fetchOrder(id, symbol = undefined, params = {}) {
|
|
41793
41897
|
/**
|
|
41794
41898
|
* @method
|
|
@@ -90164,11 +90268,16 @@ class coinbase extends _abstract_coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
90164
90268
|
'Content-Type': 'application/json',
|
|
90165
90269
|
};
|
|
90166
90270
|
}
|
|
90167
|
-
else if (this.token) {
|
|
90271
|
+
else if (this.token && !this.checkRequiredCredentials(false)) {
|
|
90168
90272
|
headers = {
|
|
90169
90273
|
'Authorization': 'Bearer ' + this.token,
|
|
90170
90274
|
'Content-Type': 'application/json',
|
|
90171
90275
|
};
|
|
90276
|
+
if (method !== 'GET') {
|
|
90277
|
+
if (Object.keys(query).length) {
|
|
90278
|
+
body = this.json(query);
|
|
90279
|
+
}
|
|
90280
|
+
}
|
|
90172
90281
|
}
|
|
90173
90282
|
else {
|
|
90174
90283
|
this.checkRequiredCredentials();
|
|
@@ -101799,6 +101908,1924 @@ class coinmate extends _abstract_coinmate_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
101799
101908
|
}
|
|
101800
101909
|
|
|
101801
101910
|
|
|
101911
|
+
/***/ }),
|
|
101912
|
+
|
|
101913
|
+
/***/ 4759:
|
|
101914
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
101915
|
+
|
|
101916
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
101917
|
+
/* harmony export */ Z: () => (/* binding */ coinmetro)
|
|
101918
|
+
/* harmony export */ });
|
|
101919
|
+
/* harmony import */ var _abstract_coinmetro_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(488);
|
|
101920
|
+
/* harmony import */ var _base_errors_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6689);
|
|
101921
|
+
/* harmony import */ var _base_functions_number_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9292);
|
|
101922
|
+
/* harmony import */ var _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2194);
|
|
101923
|
+
// ---------------------------------------------------------------------------
|
|
101924
|
+
|
|
101925
|
+
|
|
101926
|
+
|
|
101927
|
+
|
|
101928
|
+
// ---------------------------------------------------------------------------
|
|
101929
|
+
/**
|
|
101930
|
+
* @class coinmetro
|
|
101931
|
+
* @augments Exchange
|
|
101932
|
+
*/
|
|
101933
|
+
class coinmetro extends _abstract_coinmetro_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
101934
|
+
describe() {
|
|
101935
|
+
return this.deepExtend(super.describe(), {
|
|
101936
|
+
'id': 'coinmetro',
|
|
101937
|
+
'name': 'Coinmetro',
|
|
101938
|
+
'countries': ['EE'],
|
|
101939
|
+
'version': 'v1',
|
|
101940
|
+
'rateLimit': 200,
|
|
101941
|
+
'certified': false,
|
|
101942
|
+
'pro': false,
|
|
101943
|
+
'has': {
|
|
101944
|
+
'CORS': undefined,
|
|
101945
|
+
'spot': true,
|
|
101946
|
+
'margin': true,
|
|
101947
|
+
'swap': false,
|
|
101948
|
+
'future': false,
|
|
101949
|
+
'option': false,
|
|
101950
|
+
'addMargin': false,
|
|
101951
|
+
'borrowCrossMargin': true,
|
|
101952
|
+
'borrowIsolatedMargin': false,
|
|
101953
|
+
'cancelAllOrders': false,
|
|
101954
|
+
'cancelOrder': true,
|
|
101955
|
+
'cancelOrders': false,
|
|
101956
|
+
'closeAllPositions': false,
|
|
101957
|
+
'closePosition': true,
|
|
101958
|
+
'createDepositAddress': false,
|
|
101959
|
+
'createOrder': true,
|
|
101960
|
+
'createPostOnlyOrder': false,
|
|
101961
|
+
'createReduceOnlyOrder': false,
|
|
101962
|
+
'createStopLimitOrder': true,
|
|
101963
|
+
'createStopMarketOrder': true,
|
|
101964
|
+
'createStopOrder': true,
|
|
101965
|
+
'deposit': false,
|
|
101966
|
+
'editOrder': false,
|
|
101967
|
+
'fetchAccounts': false,
|
|
101968
|
+
'fetchBalance': true,
|
|
101969
|
+
'fetchBidsAsks': true,
|
|
101970
|
+
'fetchBorrowInterest': false,
|
|
101971
|
+
'fetchBorrowRateHistories': false,
|
|
101972
|
+
'fetchBorrowRateHistory': false,
|
|
101973
|
+
'fetchCanceledAndClosedOrders': true,
|
|
101974
|
+
'fetchCanceledOrders': false,
|
|
101975
|
+
'fetchClosedOrder': false,
|
|
101976
|
+
'fetchClosedOrders': false,
|
|
101977
|
+
'fetchCrossBorrowRate': false,
|
|
101978
|
+
'fetchCrossBorrowRates': false,
|
|
101979
|
+
'fetchCurrencies': true,
|
|
101980
|
+
'fetchDeposit': false,
|
|
101981
|
+
'fetchDepositAddress': false,
|
|
101982
|
+
'fetchDepositAddresses': false,
|
|
101983
|
+
'fetchDepositAddressesByNetwork': false,
|
|
101984
|
+
'fetchDeposits': false,
|
|
101985
|
+
'fetchDepositsWithdrawals': false,
|
|
101986
|
+
'fetchDepositWithdrawFee': false,
|
|
101987
|
+
'fetchDepositWithdrawFees': false,
|
|
101988
|
+
'fetchFundingHistory': false,
|
|
101989
|
+
'fetchFundingRate': false,
|
|
101990
|
+
'fetchFundingRateHistory': false,
|
|
101991
|
+
'fetchFundingRates': false,
|
|
101992
|
+
'fetchIndexOHLCV': false,
|
|
101993
|
+
'fetchIsolatedBorrowRate': false,
|
|
101994
|
+
'fetchIsolatedBorrowRates': false,
|
|
101995
|
+
'fetchL3OrderBook': false,
|
|
101996
|
+
'fetchLedger': true,
|
|
101997
|
+
'fetchLeverage': false,
|
|
101998
|
+
'fetchLeverageTiers': false,
|
|
101999
|
+
'fetchMarketLeverageTiers': false,
|
|
102000
|
+
'fetchMarkets': true,
|
|
102001
|
+
'fetchMarkOHLCV': false,
|
|
102002
|
+
'fetchMyTrades': true,
|
|
102003
|
+
'fetchOHLCV': true,
|
|
102004
|
+
'fetchOpenInterestHistory': false,
|
|
102005
|
+
'fetchOpenOrder': false,
|
|
102006
|
+
'fetchOpenOrders': true,
|
|
102007
|
+
'fetchOrder': true,
|
|
102008
|
+
'fetchOrderBook': true,
|
|
102009
|
+
'fetchOrderBooks': false,
|
|
102010
|
+
'fetchOrders': false,
|
|
102011
|
+
'fetchOrderTrades': false,
|
|
102012
|
+
'fetchPosition': false,
|
|
102013
|
+
'fetchPositions': false,
|
|
102014
|
+
'fetchPositionsRisk': false,
|
|
102015
|
+
'fetchPremiumIndexOHLCV': false,
|
|
102016
|
+
'fetchStatus': false,
|
|
102017
|
+
'fetchTicker': false,
|
|
102018
|
+
'fetchTickers': true,
|
|
102019
|
+
'fetchTime': false,
|
|
102020
|
+
'fetchTrades': true,
|
|
102021
|
+
'fetchTradingFee': false,
|
|
102022
|
+
'fetchTradingFees': false,
|
|
102023
|
+
'fetchTradingLimits': false,
|
|
102024
|
+
'fetchTransactionFee': false,
|
|
102025
|
+
'fetchTransactionFees': false,
|
|
102026
|
+
'fetchTransactions': false,
|
|
102027
|
+
'fetchTransfers': false,
|
|
102028
|
+
'fetchWithdrawal': false,
|
|
102029
|
+
'fetchWithdrawals': false,
|
|
102030
|
+
'fetchWithdrawalWhitelist': false,
|
|
102031
|
+
'reduceMargin': false,
|
|
102032
|
+
'repayCrossMargin': false,
|
|
102033
|
+
'repayIsolatedMargin': false,
|
|
102034
|
+
'setLeverage': false,
|
|
102035
|
+
'setMargin': false,
|
|
102036
|
+
'setMarginMode': false,
|
|
102037
|
+
'setPositionMode': false,
|
|
102038
|
+
'signIn': false,
|
|
102039
|
+
'transfer': false,
|
|
102040
|
+
'withdraw': false,
|
|
102041
|
+
'ws': false,
|
|
102042
|
+
},
|
|
102043
|
+
'timeframes': {
|
|
102044
|
+
'1m': '60000',
|
|
102045
|
+
'5m': '300000',
|
|
102046
|
+
'30m': '1800000',
|
|
102047
|
+
'4h': '14400000',
|
|
102048
|
+
'1d': '86400000',
|
|
102049
|
+
},
|
|
102050
|
+
'urls': {
|
|
102051
|
+
'logo': 'https://github.com/ccxt/ccxt/assets/43336371/e86f87ec-6ba3-4410-962b-f7988c5db539',
|
|
102052
|
+
'api': {
|
|
102053
|
+
'public': 'https://api.coinmetro.com',
|
|
102054
|
+
'private': 'https://api.coinmetro.com',
|
|
102055
|
+
},
|
|
102056
|
+
'test': {
|
|
102057
|
+
'public': 'https://api.coinmetro.com',
|
|
102058
|
+
'private': 'https://api.coinmetro.com/open',
|
|
102059
|
+
},
|
|
102060
|
+
'www': 'https://coinmetro.com/',
|
|
102061
|
+
'doc': [
|
|
102062
|
+
'https://documenter.getpostman.com/view/3653795/SVfWN6KS',
|
|
102063
|
+
],
|
|
102064
|
+
'fees': 'https://help.coinmetro.com/hc/en-gb/articles/6844007317789-What-are-the-fees-on-Coinmetro-',
|
|
102065
|
+
'referral': 'https://go.coinmetro.com/?ref=crypto24',
|
|
102066
|
+
},
|
|
102067
|
+
'api': {
|
|
102068
|
+
'public': {
|
|
102069
|
+
'get': {
|
|
102070
|
+
'demo/temp': 1,
|
|
102071
|
+
'exchange/candles/{pair}/{timeframe}/{from}/{to}': 3,
|
|
102072
|
+
'exchange/prices': 1,
|
|
102073
|
+
'exchange/ticks/{pair}/{from}': 3,
|
|
102074
|
+
'assets': 1,
|
|
102075
|
+
'markets': 1,
|
|
102076
|
+
'exchange/book/{pair}': 3,
|
|
102077
|
+
'exchange/bookUpdates/{pair}/{from}': 1, // not unified
|
|
102078
|
+
},
|
|
102079
|
+
},
|
|
102080
|
+
'private': {
|
|
102081
|
+
'get': {
|
|
102082
|
+
'users/balances': 1,
|
|
102083
|
+
'users/wallets/history/{since}': 1.67,
|
|
102084
|
+
'exchange/orders/status/{orderID}': 1,
|
|
102085
|
+
'exchange/orders/active': 1,
|
|
102086
|
+
'exchange/orders/history/{since}': 1.67,
|
|
102087
|
+
'exchange/fills/{since}': 1.67,
|
|
102088
|
+
'exchange/margin': 1, // not unified
|
|
102089
|
+
},
|
|
102090
|
+
'post': {
|
|
102091
|
+
'jwt': 1,
|
|
102092
|
+
'jwtDevice': 1,
|
|
102093
|
+
'devices': 1,
|
|
102094
|
+
'jwt-read-only': 1,
|
|
102095
|
+
'exchange/orders/create': 1,
|
|
102096
|
+
'exchange/orders/modify/{orderID}': 1,
|
|
102097
|
+
'exchange/swap': 1,
|
|
102098
|
+
'exchange/swap/confirm/{swapId}': 1,
|
|
102099
|
+
'exchange/orders/close/{orderID}': 1,
|
|
102100
|
+
'exchange/orders/hedge': 1, // not unified
|
|
102101
|
+
},
|
|
102102
|
+
'put': {
|
|
102103
|
+
'jwt': 1,
|
|
102104
|
+
'exchange/orders/cancel/{orderID}': 1,
|
|
102105
|
+
'users/margin/collateral': 1,
|
|
102106
|
+
'users/margin/primary/{currency}': 1, // not unified
|
|
102107
|
+
},
|
|
102108
|
+
},
|
|
102109
|
+
},
|
|
102110
|
+
'requiredCredentials': {
|
|
102111
|
+
'apiKey': false,
|
|
102112
|
+
'secret': false,
|
|
102113
|
+
'uid': true,
|
|
102114
|
+
'token': true,
|
|
102115
|
+
},
|
|
102116
|
+
'fees': {
|
|
102117
|
+
'trading': {
|
|
102118
|
+
'feeSide': 'get',
|
|
102119
|
+
'tierBased': false,
|
|
102120
|
+
'percentage': true,
|
|
102121
|
+
'taker': this.parseNumber('0.001'),
|
|
102122
|
+
'maker': this.parseNumber('0'),
|
|
102123
|
+
},
|
|
102124
|
+
},
|
|
102125
|
+
'precisionMode': _base_functions_number_js__WEBPACK_IMPORTED_MODULE_1__/* .DECIMAL_PLACES */ .nr,
|
|
102126
|
+
// exchange-specific options
|
|
102127
|
+
'options': {
|
|
102128
|
+
'currenciesByIdForParseMarket': undefined,
|
|
102129
|
+
'currencyIdsListForParseMarket': undefined,
|
|
102130
|
+
},
|
|
102131
|
+
'exceptions': {
|
|
102132
|
+
// https://trade-docs.coinmetro.co/?javascript--nodejs#message-codes
|
|
102133
|
+
'exact': {
|
|
102134
|
+
'Both buyingCurrency and sellingCurrency are required': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
|
|
102135
|
+
'One and only one of buyingQty and sellingQty is required': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
|
|
102136
|
+
'Invalid buyingCurrency': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
|
|
102137
|
+
'Invalid \'from\'': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
|
|
102138
|
+
'Invalid sellingCurrency': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
|
|
102139
|
+
'Invalid buyingQty': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
|
|
102140
|
+
'Invalid sellingQty': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
|
|
102141
|
+
'Insufficient balance': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
|
|
102142
|
+
'Expiration date is in the past or too near in the future': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
|
|
102143
|
+
'Forbidden': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
|
|
102144
|
+
'Order Not Found': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFound,
|
|
102145
|
+
'since must be a millisecond timestamp': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
|
|
102146
|
+
'This pair is disabled on margin': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol, // 422 Unprocessable Entity {"message":"This pair is disabled on margin"}
|
|
102147
|
+
},
|
|
102148
|
+
'broad': {
|
|
102149
|
+
'accessing from a new IP': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
|
|
102150
|
+
'available to allocate as collateral': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
|
|
102151
|
+
'At least': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
|
|
102152
|
+
'collateral is not allowed': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
|
|
102153
|
+
'Insufficient liquidity': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
|
|
102154
|
+
'Insufficient order size': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
|
|
102155
|
+
'Invalid quantity': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
|
|
102156
|
+
'Invalid Stop Loss': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
|
|
102157
|
+
'Invalid stop price!': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
|
|
102158
|
+
'Not enough balance': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
|
|
102159
|
+
'Not enough margin': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
|
|
102160
|
+
'orderType missing': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
|
|
102161
|
+
'Server Timeout': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
|
|
102162
|
+
'Time in force has to be IOC or FOK for market orders': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
|
|
102163
|
+
'Too many attempts': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RateLimitExceeded, // 429 Too Many Requests {"message":"Too many attempts. Try again in 3 seconds"}
|
|
102164
|
+
},
|
|
102165
|
+
},
|
|
102166
|
+
});
|
|
102167
|
+
}
|
|
102168
|
+
async fetchCurrencies(params = {}) {
|
|
102169
|
+
/**
|
|
102170
|
+
* @method
|
|
102171
|
+
* @name coinmetro#fetchCurrencies
|
|
102172
|
+
* @description fetches all available currencies on an exchange
|
|
102173
|
+
* @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#d5876d43-a3fe-4479-8c58-24d0f044edfb
|
|
102174
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
102175
|
+
* @returns {object} an associative dictionary of currencies
|
|
102176
|
+
*/
|
|
102177
|
+
const response = await this.publicGetAssets(params);
|
|
102178
|
+
//
|
|
102179
|
+
// [
|
|
102180
|
+
// {
|
|
102181
|
+
// "symbol": "BTC",
|
|
102182
|
+
// "name": "Bitcoin",
|
|
102183
|
+
// "color": "#FFA500",
|
|
102184
|
+
// "type": "coin",
|
|
102185
|
+
// "canDeposit": true,
|
|
102186
|
+
// "canWithdraw": true,
|
|
102187
|
+
// "canTrade": true,
|
|
102188
|
+
// "notabeneDecimals": 8,
|
|
102189
|
+
// "canMarket": true,
|
|
102190
|
+
// "maxSwap": 10000,
|
|
102191
|
+
// "digits": 6,
|
|
102192
|
+
// "multiplier": 1000000,
|
|
102193
|
+
// "bookDigits": 8,
|
|
102194
|
+
// "bookMultiplier": 100000000,
|
|
102195
|
+
// "sentimentData": {
|
|
102196
|
+
// "sentiment": 51.59555555555555,
|
|
102197
|
+
// "interest": 1.127511216044664
|
|
102198
|
+
// },
|
|
102199
|
+
// "minQty": 0.0001
|
|
102200
|
+
// },
|
|
102201
|
+
// {
|
|
102202
|
+
// "symbol": "EUR",
|
|
102203
|
+
// "name": "Euro",
|
|
102204
|
+
// "color": "#1246FF",
|
|
102205
|
+
// "type": "fiat",
|
|
102206
|
+
// "canDeposit": true,
|
|
102207
|
+
// "canWithdraw": true,
|
|
102208
|
+
// "canTrade": true,
|
|
102209
|
+
// "canMarket": true,
|
|
102210
|
+
// "maxSwap": 10000,
|
|
102211
|
+
// "digits": 2,
|
|
102212
|
+
// "multiplier": 100,
|
|
102213
|
+
// "bookDigits": 3,
|
|
102214
|
+
// "bookMultiplier": 1000,
|
|
102215
|
+
// "minQty": 5
|
|
102216
|
+
// }
|
|
102217
|
+
// ...
|
|
102218
|
+
// ]
|
|
102219
|
+
//
|
|
102220
|
+
const result = {};
|
|
102221
|
+
for (let i = 0; i < response.length; i++) {
|
|
102222
|
+
const currency = response[i];
|
|
102223
|
+
const id = this.safeString(currency, 'symbol');
|
|
102224
|
+
const code = this.safeCurrencyCode(id);
|
|
102225
|
+
const withdraw = this.safeValue(currency, 'canWithdraw');
|
|
102226
|
+
const deposit = this.safeValue(currency, 'canDeposit');
|
|
102227
|
+
const canTrade = this.safeValue(currency, 'canTrade');
|
|
102228
|
+
const active = canTrade ? withdraw : true;
|
|
102229
|
+
const precision = this.safeInteger(currency, 'digits');
|
|
102230
|
+
const minAmount = this.safeNumber(currency, 'minQty');
|
|
102231
|
+
result[code] = this.safeCurrencyStructure({
|
|
102232
|
+
'id': id,
|
|
102233
|
+
'code': code,
|
|
102234
|
+
'name': code,
|
|
102235
|
+
'info': currency,
|
|
102236
|
+
'active': active,
|
|
102237
|
+
'deposit': deposit,
|
|
102238
|
+
'withdraw': withdraw,
|
|
102239
|
+
'fee': undefined,
|
|
102240
|
+
'precision': precision,
|
|
102241
|
+
'limits': {
|
|
102242
|
+
'amount': { 'min': minAmount, 'max': undefined },
|
|
102243
|
+
'withdraw': { 'min': undefined, 'max': undefined },
|
|
102244
|
+
},
|
|
102245
|
+
'networks': {},
|
|
102246
|
+
});
|
|
102247
|
+
}
|
|
102248
|
+
if (this.safeValue(this.options, 'currenciesByIdForParseMarket') === undefined) {
|
|
102249
|
+
const currenciesById = this.indexBy(result, 'id');
|
|
102250
|
+
this.options['currenciesByIdForParseMarket'] = currenciesById;
|
|
102251
|
+
this.options['currencyIdsListForParseMarket'] = Object.keys(currenciesById);
|
|
102252
|
+
}
|
|
102253
|
+
return result;
|
|
102254
|
+
}
|
|
102255
|
+
async fetchMarkets(params = {}) {
|
|
102256
|
+
/**
|
|
102257
|
+
* @method
|
|
102258
|
+
* @name coinmetro#fetchMarkets
|
|
102259
|
+
* @description retrieves data on all markets for coinmetro
|
|
102260
|
+
* @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#9fd18008-338e-4863-b07d-722878a46832
|
|
102261
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
102262
|
+
* @returns {object[]} an array of objects representing market data
|
|
102263
|
+
*/
|
|
102264
|
+
const response = await this.publicGetMarkets(params);
|
|
102265
|
+
if (this.safeValue(this.options, 'currenciesByIdForParseMarket') === undefined) {
|
|
102266
|
+
await this.fetchCurrencies();
|
|
102267
|
+
}
|
|
102268
|
+
//
|
|
102269
|
+
// [
|
|
102270
|
+
// {
|
|
102271
|
+
// "pair": "PERPEUR",
|
|
102272
|
+
// "precision": 5,
|
|
102273
|
+
// "margin": false
|
|
102274
|
+
// },
|
|
102275
|
+
// {
|
|
102276
|
+
// "pair": "PERPUSD",
|
|
102277
|
+
// "precision": 5,
|
|
102278
|
+
// "margin": false
|
|
102279
|
+
// },
|
|
102280
|
+
// {
|
|
102281
|
+
// "pair": "YFIEUR",
|
|
102282
|
+
// "precision": 5,
|
|
102283
|
+
// "margin": false
|
|
102284
|
+
// },
|
|
102285
|
+
// ...
|
|
102286
|
+
// ]
|
|
102287
|
+
//
|
|
102288
|
+
return this.parseMarkets(response);
|
|
102289
|
+
}
|
|
102290
|
+
parseMarket(market) {
|
|
102291
|
+
const id = this.safeString(market, 'pair');
|
|
102292
|
+
const parsedMarketId = this.parseMarketId(id);
|
|
102293
|
+
const baseId = this.safeString(parsedMarketId, 'baseId');
|
|
102294
|
+
const quoteId = this.safeString(parsedMarketId, 'quoteId');
|
|
102295
|
+
const base = this.safeCurrencyCode(baseId);
|
|
102296
|
+
const quote = this.safeCurrencyCode(quoteId);
|
|
102297
|
+
const basePrecisionAndLimits = this.parseMarketPrecisionAndLimits(baseId);
|
|
102298
|
+
const quotePrecisionAndLimits = this.parseMarketPrecisionAndLimits(quoteId);
|
|
102299
|
+
const margin = this.safeValue(market, 'margin', false);
|
|
102300
|
+
const tradingFees = this.safeValue(this.fees, 'trading', {});
|
|
102301
|
+
return this.safeMarketStructure({
|
|
102302
|
+
'id': id,
|
|
102303
|
+
'symbol': base + '/' + quote,
|
|
102304
|
+
'base': base,
|
|
102305
|
+
'quote': quote,
|
|
102306
|
+
'settle': undefined,
|
|
102307
|
+
'baseId': baseId,
|
|
102308
|
+
'quoteId': quoteId,
|
|
102309
|
+
'settleId': undefined,
|
|
102310
|
+
'type': 'spot',
|
|
102311
|
+
'spot': true,
|
|
102312
|
+
'margin': margin,
|
|
102313
|
+
'swap': false,
|
|
102314
|
+
'future': false,
|
|
102315
|
+
'option': false,
|
|
102316
|
+
'active': true,
|
|
102317
|
+
'contract': false,
|
|
102318
|
+
'linear': undefined,
|
|
102319
|
+
'inverse': undefined,
|
|
102320
|
+
'taker': this.safeNumber(tradingFees, 'taker'),
|
|
102321
|
+
'maker': this.safeNumber(tradingFees, 'maker'),
|
|
102322
|
+
'contractSize': undefined,
|
|
102323
|
+
'expiry': undefined,
|
|
102324
|
+
'expiryDatetime': undefined,
|
|
102325
|
+
'strike': undefined,
|
|
102326
|
+
'optionType': undefined,
|
|
102327
|
+
'precision': {
|
|
102328
|
+
'amount': basePrecisionAndLimits['precision'],
|
|
102329
|
+
'price': quotePrecisionAndLimits['precision'],
|
|
102330
|
+
'base': basePrecisionAndLimits['precision'],
|
|
102331
|
+
'quote': quotePrecisionAndLimits['precision'],
|
|
102332
|
+
},
|
|
102333
|
+
'limits': {
|
|
102334
|
+
'leverage': {
|
|
102335
|
+
'min': undefined,
|
|
102336
|
+
'max': undefined,
|
|
102337
|
+
},
|
|
102338
|
+
'amount': {
|
|
102339
|
+
'min': basePrecisionAndLimits['minLimit'],
|
|
102340
|
+
'max': undefined,
|
|
102341
|
+
},
|
|
102342
|
+
'price': {
|
|
102343
|
+
'min': undefined,
|
|
102344
|
+
'max': undefined,
|
|
102345
|
+
},
|
|
102346
|
+
'cost': {
|
|
102347
|
+
'min': quotePrecisionAndLimits['minLimit'],
|
|
102348
|
+
'max': undefined,
|
|
102349
|
+
},
|
|
102350
|
+
},
|
|
102351
|
+
'created': undefined,
|
|
102352
|
+
'info': market,
|
|
102353
|
+
});
|
|
102354
|
+
}
|
|
102355
|
+
parseMarketId(marketId) {
|
|
102356
|
+
let baseId = undefined;
|
|
102357
|
+
let quoteId = undefined;
|
|
102358
|
+
const currencyIds = this.safeValue(this.options, 'currencyIdsListForParseMarket', []);
|
|
102359
|
+
for (let i = 0; i < currencyIds.length; i++) {
|
|
102360
|
+
const currencyId = currencyIds[i];
|
|
102361
|
+
const entryIndex = marketId.indexOf(currencyId);
|
|
102362
|
+
if (entryIndex !== -1) {
|
|
102363
|
+
const restId = marketId.replace(currencyId, '');
|
|
102364
|
+
if (this.inArray(restId, currencyIds)) {
|
|
102365
|
+
if (entryIndex === 0) {
|
|
102366
|
+
baseId = currencyId;
|
|
102367
|
+
quoteId = restId;
|
|
102368
|
+
}
|
|
102369
|
+
else {
|
|
102370
|
+
baseId = restId;
|
|
102371
|
+
quoteId = currencyId;
|
|
102372
|
+
}
|
|
102373
|
+
break;
|
|
102374
|
+
}
|
|
102375
|
+
}
|
|
102376
|
+
}
|
|
102377
|
+
const result = {
|
|
102378
|
+
'baseId': baseId,
|
|
102379
|
+
'quoteId': quoteId,
|
|
102380
|
+
};
|
|
102381
|
+
return result;
|
|
102382
|
+
}
|
|
102383
|
+
parseMarketPrecisionAndLimits(currencyId) {
|
|
102384
|
+
const currencies = this.safeValue(this.options, 'currenciesByIdForParseMarket', {});
|
|
102385
|
+
const currency = this.safeValue(currencies, currencyId, {});
|
|
102386
|
+
const precision = this.safeInteger(currency, 'precision');
|
|
102387
|
+
const limits = this.safeValue(currency, 'limits', {});
|
|
102388
|
+
const amountLimits = this.safeValue(limits, 'amount', {});
|
|
102389
|
+
const minLimit = this.safeNumber(amountLimits, 'min');
|
|
102390
|
+
const result = {
|
|
102391
|
+
'precision': precision,
|
|
102392
|
+
'minLimit': minLimit,
|
|
102393
|
+
};
|
|
102394
|
+
return result;
|
|
102395
|
+
}
|
|
102396
|
+
async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
|
|
102397
|
+
/**
|
|
102398
|
+
* @method
|
|
102399
|
+
* @name coinmetro#fetchOHLCV
|
|
102400
|
+
* @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
|
102401
|
+
* @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#13cfb5bc-7bfb-4847-85e1-e0f35dfb3573
|
|
102402
|
+
* @param {string} symbol unified symbol of the market to fetch OHLCV data for
|
|
102403
|
+
* @param {string} timeframe the length of time each candle represents
|
|
102404
|
+
* @param {int} [since] timestamp in ms of the earliest candle to fetch
|
|
102405
|
+
* @param {int} [limit] the maximum amount of candles to fetch
|
|
102406
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
102407
|
+
* @param {int} [params.until] the latest time in ms to fetch entries for
|
|
102408
|
+
* @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
|
|
102409
|
+
*/
|
|
102410
|
+
await this.loadMarkets();
|
|
102411
|
+
const market = this.market(symbol);
|
|
102412
|
+
const request = {
|
|
102413
|
+
'pair': market['id'],
|
|
102414
|
+
'timeframe': this.safeString(this.timeframes, timeframe, timeframe),
|
|
102415
|
+
};
|
|
102416
|
+
let until = undefined;
|
|
102417
|
+
if (since !== undefined) {
|
|
102418
|
+
request['from'] = since;
|
|
102419
|
+
if (limit !== undefined) {
|
|
102420
|
+
const duration = this.parseTimeframe(timeframe) * 1000;
|
|
102421
|
+
until = this.sum(since, duration * (limit));
|
|
102422
|
+
}
|
|
102423
|
+
}
|
|
102424
|
+
else {
|
|
102425
|
+
request['from'] = ':from'; // this endpoint doesn't accept empty from and to params (setting them into the value described in the documentation)
|
|
102426
|
+
}
|
|
102427
|
+
until = this.safeInteger2(params, 'till', 'until', until);
|
|
102428
|
+
if (until !== undefined) {
|
|
102429
|
+
params = this.omit(params, ['till', 'until']);
|
|
102430
|
+
request['to'] = until;
|
|
102431
|
+
}
|
|
102432
|
+
else {
|
|
102433
|
+
request['to'] = ':to';
|
|
102434
|
+
}
|
|
102435
|
+
const response = await this.publicGetExchangeCandlesPairTimeframeFromTo(this.extend(request, params));
|
|
102436
|
+
//
|
|
102437
|
+
// {
|
|
102438
|
+
// "candleHistory": [
|
|
102439
|
+
// {
|
|
102440
|
+
// "pair": "ETHUSDT",
|
|
102441
|
+
// "timeframe": 86400000,
|
|
102442
|
+
// "timestamp": 1697673600000,
|
|
102443
|
+
// "c": 1567.4409353098604,
|
|
102444
|
+
// "h": 1566.7514068472303,
|
|
102445
|
+
// "l": 1549.4563666936847,
|
|
102446
|
+
// "o": 1563.4490341395904,
|
|
102447
|
+
// "v": 0
|
|
102448
|
+
// },
|
|
102449
|
+
// {
|
|
102450
|
+
// "pair": "ETHUSDT",
|
|
102451
|
+
// "timeframe": 86400000,
|
|
102452
|
+
// "timestamp": 1697760000000,
|
|
102453
|
+
// "c": 1603.7831363339324,
|
|
102454
|
+
// "h": 1625.0356823666407,
|
|
102455
|
+
// "l": 1565.4629390011505,
|
|
102456
|
+
// "o": 1566.8387619426028,
|
|
102457
|
+
// "v": 0
|
|
102458
|
+
// },
|
|
102459
|
+
// ...
|
|
102460
|
+
// ]
|
|
102461
|
+
// }
|
|
102462
|
+
//
|
|
102463
|
+
const candleHistory = this.safeValue(response, 'candleHistory', []);
|
|
102464
|
+
return this.parseOHLCVs(candleHistory, market, timeframe, since, limit);
|
|
102465
|
+
}
|
|
102466
|
+
parseOHLCV(ohlcv, market = undefined) {
|
|
102467
|
+
return [
|
|
102468
|
+
this.safeInteger(ohlcv, 'timestamp'),
|
|
102469
|
+
this.safeNumber(ohlcv, 'o'),
|
|
102470
|
+
this.safeNumber(ohlcv, 'h'),
|
|
102471
|
+
this.safeNumber(ohlcv, 'l'),
|
|
102472
|
+
this.safeNumber(ohlcv, 'c'),
|
|
102473
|
+
this.safeNumber(ohlcv, 'v'),
|
|
102474
|
+
];
|
|
102475
|
+
}
|
|
102476
|
+
async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
|
|
102477
|
+
/**
|
|
102478
|
+
* @method
|
|
102479
|
+
* @name coinmetro#fetchTrades
|
|
102480
|
+
* @description get the list of most recent trades for a particular symbol
|
|
102481
|
+
* @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#6ee5d698-06da-4570-8c84-914185e05065
|
|
102482
|
+
* @param {string} symbol unified symbol of the market to fetch trades for
|
|
102483
|
+
* @param {int} [since] timestamp in ms of the earliest trade to fetch
|
|
102484
|
+
* @param {int} [limit] the maximum amount of trades to fetch (default 200, max 500)
|
|
102485
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
102486
|
+
* @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
|
|
102487
|
+
*/
|
|
102488
|
+
await this.loadMarkets();
|
|
102489
|
+
const market = this.market(symbol);
|
|
102490
|
+
const request = {
|
|
102491
|
+
'pair': market['id'],
|
|
102492
|
+
};
|
|
102493
|
+
if (since !== undefined) {
|
|
102494
|
+
request['from'] = since;
|
|
102495
|
+
}
|
|
102496
|
+
else {
|
|
102497
|
+
// this endpoint accepts empty from param
|
|
102498
|
+
request['from'] = '';
|
|
102499
|
+
}
|
|
102500
|
+
const response = await this.publicGetExchangeTicksPairFrom(this.extend(request, params));
|
|
102501
|
+
//
|
|
102502
|
+
// {
|
|
102503
|
+
// "tickHistory": [
|
|
102504
|
+
// {
|
|
102505
|
+
// "pair": "ETHUSDT",
|
|
102506
|
+
// "price": 2077.5623,
|
|
102507
|
+
// "qty": 0.002888,
|
|
102508
|
+
// "timestamp": 1700684689420,
|
|
102509
|
+
// "seqNum": 10644554718
|
|
102510
|
+
// },
|
|
102511
|
+
// {
|
|
102512
|
+
// "pair": "ETHUSDT",
|
|
102513
|
+
// "price": 2078.3848,
|
|
102514
|
+
// "qty": 0.003368,
|
|
102515
|
+
// "timestamp": 1700684738410,
|
|
102516
|
+
// "seqNum": 10644559561
|
|
102517
|
+
// },
|
|
102518
|
+
// {
|
|
102519
|
+
// "pair": "ETHUSDT",
|
|
102520
|
+
// "price": 2077.1513,
|
|
102521
|
+
// "qty": 0.00337,
|
|
102522
|
+
// "timestamp": 1700684816853,
|
|
102523
|
+
// "seqNum": 10644567113
|
|
102524
|
+
// },
|
|
102525
|
+
// ...
|
|
102526
|
+
// ]
|
|
102527
|
+
// }
|
|
102528
|
+
//
|
|
102529
|
+
const tickHistory = this.safeValue(response, 'tickHistory', []);
|
|
102530
|
+
return this.parseTrades(tickHistory, market, since, limit);
|
|
102531
|
+
}
|
|
102532
|
+
async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
102533
|
+
/**
|
|
102534
|
+
* @method
|
|
102535
|
+
* @name coinmetro#fetchMyTrades
|
|
102536
|
+
* @description fetch all trades made by the user
|
|
102537
|
+
* @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#4d48ae69-8ee2-44d1-a268-71f84e557b7b
|
|
102538
|
+
* @param {string} symbol unified market symbol
|
|
102539
|
+
* @param {int} [since] the earliest time in ms to fetch trades for
|
|
102540
|
+
* @param {int} [limit] the maximum number of trades structures to retrieve (default 500, max 1000)
|
|
102541
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
102542
|
+
* @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
|
|
102543
|
+
*/
|
|
102544
|
+
await this.loadMarkets();
|
|
102545
|
+
let market = undefined;
|
|
102546
|
+
if (symbol !== undefined) {
|
|
102547
|
+
market = this.market(symbol);
|
|
102548
|
+
}
|
|
102549
|
+
const request = {};
|
|
102550
|
+
if (since !== undefined) {
|
|
102551
|
+
request['since'] = since;
|
|
102552
|
+
}
|
|
102553
|
+
else {
|
|
102554
|
+
// the exchange requires a value for the since param
|
|
102555
|
+
request['since'] = 0;
|
|
102556
|
+
}
|
|
102557
|
+
const response = await this.privateGetExchangeFillsSince(this.extend(request, params));
|
|
102558
|
+
//
|
|
102559
|
+
// [
|
|
102560
|
+
// {
|
|
102561
|
+
// "pair": "ETHUSDC",
|
|
102562
|
+
// "seqNumber": 10873722343,
|
|
102563
|
+
// "timestamp": 1702570610747,
|
|
102564
|
+
// "qty": 0.002,
|
|
102565
|
+
// "price": 2282,
|
|
102566
|
+
// "side": "buy",
|
|
102567
|
+
// "orderID": "65671262d93d9525ac009e36170257061073952c6423a8c5b4d6c"
|
|
102568
|
+
// },
|
|
102569
|
+
// ...
|
|
102570
|
+
// ]
|
|
102571
|
+
//
|
|
102572
|
+
return this.parseTrades(response, market, since, limit);
|
|
102573
|
+
}
|
|
102574
|
+
parseTrade(trade, market = undefined) {
|
|
102575
|
+
//
|
|
102576
|
+
// fetchTrades
|
|
102577
|
+
// {
|
|
102578
|
+
// "pair": "ETHUSDT",
|
|
102579
|
+
// "price": 2077.1513,
|
|
102580
|
+
// "qty": 0.00337,
|
|
102581
|
+
// "timestamp": 1700684816853,
|
|
102582
|
+
// "seqNum": 10644567113
|
|
102583
|
+
// },
|
|
102584
|
+
//
|
|
102585
|
+
// fetchMyTrades
|
|
102586
|
+
// {
|
|
102587
|
+
// "pair": "ETHUSDC",
|
|
102588
|
+
// "seqNumber": 10873722343,
|
|
102589
|
+
// "timestamp": 1702570610747,
|
|
102590
|
+
// "qty": 0.002,
|
|
102591
|
+
// "price": 2282,
|
|
102592
|
+
// "side": "buy",
|
|
102593
|
+
// "orderID": "65671262d93d9525ac009e36170257061073952c6423a8c5b4d6c"
|
|
102594
|
+
// }
|
|
102595
|
+
//
|
|
102596
|
+
// fetchOrders
|
|
102597
|
+
// {
|
|
102598
|
+
// "_id": "657b31d360a9542449381bdc",
|
|
102599
|
+
// "seqNumber": 10873722343,
|
|
102600
|
+
// "timestamp": 1702570610747,
|
|
102601
|
+
// "qty": 0.002,
|
|
102602
|
+
// "price": 2282,
|
|
102603
|
+
// "side": "buy"
|
|
102604
|
+
// }
|
|
102605
|
+
//
|
|
102606
|
+
// {
|
|
102607
|
+
// "pair":"ETHUSDC",
|
|
102608
|
+
// "seqNumber":"10873722343",
|
|
102609
|
+
// "timestamp":"1702570610747",
|
|
102610
|
+
// "qty":"0.002",
|
|
102611
|
+
// "price":"2282",
|
|
102612
|
+
// "side":"buy",
|
|
102613
|
+
// "orderID":"65671262d93d9525ac009e36170257061073952c6423a8c5b4d6c",
|
|
102614
|
+
// "userID":"65671262d93d9525ac009e36"
|
|
102615
|
+
// }
|
|
102616
|
+
//
|
|
102617
|
+
const marketId = this.safeString2(trade, 'symbol', 'pair');
|
|
102618
|
+
market = this.safeMarket(marketId, market);
|
|
102619
|
+
const symbol = market['symbol'];
|
|
102620
|
+
const id = this.safeStringN(trade, ['_id', 'seqNum', 'seqNumber']);
|
|
102621
|
+
const timestamp = this.safeInteger(trade, 'timestamp');
|
|
102622
|
+
const priceString = this.safeString(trade, 'price');
|
|
102623
|
+
const amountString = this.safeString(trade, 'qty');
|
|
102624
|
+
const order = this.safeString(trade, 'orderID');
|
|
102625
|
+
const side = this.safeString(trade, 'side');
|
|
102626
|
+
return this.safeTrade({
|
|
102627
|
+
'id': id,
|
|
102628
|
+
'order': order,
|
|
102629
|
+
'timestamp': timestamp,
|
|
102630
|
+
'datetime': this.iso8601(timestamp),
|
|
102631
|
+
'symbol': symbol,
|
|
102632
|
+
'type': undefined,
|
|
102633
|
+
'side': side,
|
|
102634
|
+
'takerOrMaker': undefined,
|
|
102635
|
+
'price': priceString,
|
|
102636
|
+
'amount': amountString,
|
|
102637
|
+
'cost': undefined,
|
|
102638
|
+
'fee': undefined,
|
|
102639
|
+
'info': trade,
|
|
102640
|
+
}, market);
|
|
102641
|
+
}
|
|
102642
|
+
async fetchOrderBook(symbol, limit = undefined, params = {}) {
|
|
102643
|
+
/**
|
|
102644
|
+
* @method
|
|
102645
|
+
* @name coinmetro#fetchOrderBook
|
|
102646
|
+
* @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
|
|
102647
|
+
* @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#26ad80d7-8c46-41b5-9208-386f439a8b87
|
|
102648
|
+
* @param {string} symbol unified symbol of the market to fetch the order book for
|
|
102649
|
+
* @param {int} [limit] the maximum amount of order book entries to return (default 100, max 200)
|
|
102650
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
102651
|
+
* @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
|
|
102652
|
+
*/
|
|
102653
|
+
await this.loadMarkets();
|
|
102654
|
+
const market = this.market(symbol);
|
|
102655
|
+
const request = {
|
|
102656
|
+
'pair': market['id'],
|
|
102657
|
+
};
|
|
102658
|
+
const response = await this.publicGetExchangeBookPair(this.extend(request, params));
|
|
102659
|
+
//
|
|
102660
|
+
// {
|
|
102661
|
+
// "book": {
|
|
102662
|
+
// "pair": "ETHUSDT",
|
|
102663
|
+
// "seqNumber": 10800409239,
|
|
102664
|
+
// "ask": {
|
|
102665
|
+
// "2354.2861": 3.75,
|
|
102666
|
+
// "2354.3138": 19,
|
|
102667
|
+
// "2354.7538": 80,
|
|
102668
|
+
// "2355.5430": 260,
|
|
102669
|
+
// "2356.4611": 950,
|
|
102670
|
+
// "2361.7150": 1500,
|
|
102671
|
+
// "206194.0000": 0.01
|
|
102672
|
+
// },
|
|
102673
|
+
// "bid": {
|
|
102674
|
+
// "2352.6339": 3.75,
|
|
102675
|
+
// "2352.6002": 19,
|
|
102676
|
+
// "2352.2402": 80,
|
|
102677
|
+
// "2351.4582": 260,
|
|
102678
|
+
// "2349.3111": 950,
|
|
102679
|
+
// "2343.8601": 1500,
|
|
102680
|
+
// "1.0000": 5
|
|
102681
|
+
// },
|
|
102682
|
+
// "checksum": 2108177337
|
|
102683
|
+
// }
|
|
102684
|
+
// }
|
|
102685
|
+
//
|
|
102686
|
+
const book = this.safeValue(response, 'book', {});
|
|
102687
|
+
const rawBids = this.safeValue(book, 'bid', {});
|
|
102688
|
+
const rawAsks = this.safeValue(book, 'ask', {});
|
|
102689
|
+
const rawOrderbook = {
|
|
102690
|
+
'bids': rawBids,
|
|
102691
|
+
'asks': rawAsks,
|
|
102692
|
+
};
|
|
102693
|
+
const orderbook = this.parseOrderBook(rawOrderbook, symbol);
|
|
102694
|
+
orderbook['nonce'] = this.safeInteger(book, 'seqNumber');
|
|
102695
|
+
return orderbook;
|
|
102696
|
+
}
|
|
102697
|
+
parseBidsAsks(bidasks, priceKey = 0, amountKey = 1, countOrIdKey = 2) {
|
|
102698
|
+
const prices = Object.keys(bidasks);
|
|
102699
|
+
const result = [];
|
|
102700
|
+
for (let i = 0; i < prices.length; i++) {
|
|
102701
|
+
const priceString = this.safeString(prices, i);
|
|
102702
|
+
const price = this.safeNumber(prices, i);
|
|
102703
|
+
const volume = this.safeNumber(bidasks, priceString);
|
|
102704
|
+
result.push([price, volume]);
|
|
102705
|
+
}
|
|
102706
|
+
return result;
|
|
102707
|
+
}
|
|
102708
|
+
async fetchTickers(symbols = undefined, params = {}) {
|
|
102709
|
+
/**
|
|
102710
|
+
* @method
|
|
102711
|
+
* @name coinmetro#fetchTickers
|
|
102712
|
+
* @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
|
102713
|
+
* @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#6ecd1cd1-f162-45a3-8b3b-de690332a485
|
|
102714
|
+
* @param {string[]} [symbols] unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
|
102715
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
102716
|
+
* @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
102717
|
+
*/
|
|
102718
|
+
await this.loadMarkets();
|
|
102719
|
+
const response = await this.publicGetExchangePrices(params);
|
|
102720
|
+
//
|
|
102721
|
+
// {
|
|
102722
|
+
// "latestPrices": [
|
|
102723
|
+
// {
|
|
102724
|
+
// "pair": "PERPEUR",
|
|
102725
|
+
// "timestamp": 1702549840393,
|
|
102726
|
+
// "price": 0.7899997816001223,
|
|
102727
|
+
// "qty": 1e-12,
|
|
102728
|
+
// "ask": 0.8,
|
|
102729
|
+
// "bid": 0.7799995632002446
|
|
102730
|
+
// },
|
|
102731
|
+
// {
|
|
102732
|
+
// "pair": "PERPUSD",
|
|
102733
|
+
// "timestamp": 1702549841973,
|
|
102734
|
+
// "price": 0.8615317721366659,
|
|
102735
|
+
// "qty": 1e-12,
|
|
102736
|
+
// "ask": 0.8742333599999257,
|
|
102737
|
+
// "bid": 0.8490376365388491
|
|
102738
|
+
// },
|
|
102739
|
+
// ...
|
|
102740
|
+
// ],
|
|
102741
|
+
// "24hInfo": [
|
|
102742
|
+
// {
|
|
102743
|
+
// "delta": 0.25396444229149906,
|
|
102744
|
+
// "h": 0.78999978160012,
|
|
102745
|
+
// "l": 0.630001740844,
|
|
102746
|
+
// "v": 54.910000002833996,
|
|
102747
|
+
// "pair": "PERPEUR",
|
|
102748
|
+
// "sentimentData": {
|
|
102749
|
+
// "sentiment": 36.71333333333333,
|
|
102750
|
+
// "interest": 0.47430830039525695
|
|
102751
|
+
// }
|
|
102752
|
+
// },
|
|
102753
|
+
// {
|
|
102754
|
+
// "delta": 0.26915154078134096,
|
|
102755
|
+
// "h": 0.86220315458898,
|
|
102756
|
+
// "l": 0.67866757035154,
|
|
102757
|
+
// "v": 2.835000000000001e-9,
|
|
102758
|
+
// "pair": "PERPUSD",
|
|
102759
|
+
// "sentimentData": {
|
|
102760
|
+
// "sentiment": 36.71333333333333,
|
|
102761
|
+
// "interest": 0.47430830039525695
|
|
102762
|
+
// }
|
|
102763
|
+
// },
|
|
102764
|
+
// ...
|
|
102765
|
+
// ]
|
|
102766
|
+
// }
|
|
102767
|
+
//
|
|
102768
|
+
const latestPrices = this.safeValue(response, 'latestPrices', []);
|
|
102769
|
+
const twentyFourHInfos = this.safeValue(response, '24hInfo', []);
|
|
102770
|
+
const tickersObject = {};
|
|
102771
|
+
// merging info from two lists into one
|
|
102772
|
+
for (let i = 0; i < latestPrices.length; i++) {
|
|
102773
|
+
const latestPrice = latestPrices[i];
|
|
102774
|
+
const marketId = this.safeString(latestPrice, 'pair');
|
|
102775
|
+
if (marketId !== undefined) {
|
|
102776
|
+
tickersObject[marketId] = latestPrice;
|
|
102777
|
+
}
|
|
102778
|
+
}
|
|
102779
|
+
for (let i = 0; i < twentyFourHInfos.length; i++) {
|
|
102780
|
+
const twentyFourHInfo = twentyFourHInfos[i];
|
|
102781
|
+
const marketId = this.safeString(twentyFourHInfo, 'pair');
|
|
102782
|
+
if (marketId !== undefined) {
|
|
102783
|
+
const latestPrice = this.safeValue(tickersObject, marketId, {});
|
|
102784
|
+
tickersObject[marketId] = this.extend(twentyFourHInfo, latestPrice);
|
|
102785
|
+
}
|
|
102786
|
+
}
|
|
102787
|
+
const tickers = Object.values(tickersObject);
|
|
102788
|
+
return this.parseTickers(tickers, symbols);
|
|
102789
|
+
}
|
|
102790
|
+
async fetchBidsAsks(symbols = undefined, params = {}) {
|
|
102791
|
+
/**
|
|
102792
|
+
* @method
|
|
102793
|
+
* @name coinmetro#fetchBidsAsks
|
|
102794
|
+
* @description fetches the bid and ask price and volume for multiple markets
|
|
102795
|
+
* @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#6ecd1cd1-f162-45a3-8b3b-de690332a485
|
|
102796
|
+
* @param {string[]} [symbols] unified symbols of the markets to fetch the bids and asks for, all markets are returned if not assigned
|
|
102797
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
102798
|
+
* @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
102799
|
+
*/
|
|
102800
|
+
await this.loadMarkets();
|
|
102801
|
+
const response = await this.publicGetExchangePrices(params);
|
|
102802
|
+
const latestPrices = this.safeValue(response, 'latestPrices', []);
|
|
102803
|
+
return this.parseTickers(latestPrices, symbols);
|
|
102804
|
+
}
|
|
102805
|
+
parseTicker(ticker, market = undefined) {
|
|
102806
|
+
//
|
|
102807
|
+
// {
|
|
102808
|
+
// "pair": "PERPUSD",
|
|
102809
|
+
// "timestamp": 1702549841973,
|
|
102810
|
+
// "price": 0.8615317721366659,
|
|
102811
|
+
// "qty": 1e-12,
|
|
102812
|
+
// "ask": 0.8742333599999257,
|
|
102813
|
+
// "bid": 0.8490376365388491
|
|
102814
|
+
// "delta": 0.26915154078134096,
|
|
102815
|
+
// "h": 0.86220315458898,
|
|
102816
|
+
// "l": 0.67866757035154,
|
|
102817
|
+
// "v": 2.835000000000001e-9,
|
|
102818
|
+
// "sentimentData": {
|
|
102819
|
+
// "sentiment": 36.71333333333333,
|
|
102820
|
+
// "interest": 0.47430830039525695
|
|
102821
|
+
// }
|
|
102822
|
+
// }
|
|
102823
|
+
//
|
|
102824
|
+
const marketId = this.safeString(ticker, 'pair');
|
|
102825
|
+
market = this.safeMarket(marketId, market);
|
|
102826
|
+
const timestamp = this.safeInteger(ticker, 'timestamp');
|
|
102827
|
+
const bid = this.safeString(ticker, 'bid');
|
|
102828
|
+
const ask = this.safeString(ticker, 'ask');
|
|
102829
|
+
const high = this.safeString(ticker, 'h');
|
|
102830
|
+
const low = this.safeString(ticker, 'l');
|
|
102831
|
+
const last = this.safeString(ticker, 'price');
|
|
102832
|
+
const baseVolume = this.safeString(ticker, 'v');
|
|
102833
|
+
const delta = this.safeString(ticker, 'delta');
|
|
102834
|
+
const percentage = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringMul(delta, '100');
|
|
102835
|
+
return this.safeTicker({
|
|
102836
|
+
'symbol': market['symbol'],
|
|
102837
|
+
'timestamp': timestamp,
|
|
102838
|
+
'datetime': this.iso8601(timestamp),
|
|
102839
|
+
'open': undefined,
|
|
102840
|
+
'high': high,
|
|
102841
|
+
'low': low,
|
|
102842
|
+
'close': undefined,
|
|
102843
|
+
'last': last,
|
|
102844
|
+
'bid': bid,
|
|
102845
|
+
'bidVolume': undefined,
|
|
102846
|
+
'ask': ask,
|
|
102847
|
+
'askVolume': undefined,
|
|
102848
|
+
'vwap': undefined,
|
|
102849
|
+
'previousClose': undefined,
|
|
102850
|
+
'change': undefined,
|
|
102851
|
+
'percentage': percentage,
|
|
102852
|
+
'average': undefined,
|
|
102853
|
+
'baseVolume': baseVolume,
|
|
102854
|
+
'quoteVolume': undefined,
|
|
102855
|
+
'info': ticker,
|
|
102856
|
+
}, market);
|
|
102857
|
+
}
|
|
102858
|
+
async fetchBalance(params = {}) {
|
|
102859
|
+
/**
|
|
102860
|
+
* @method
|
|
102861
|
+
* @name coinmetro#fetchBalance
|
|
102862
|
+
* @description query for balance and get the amount of funds available for trading or funds locked in orders
|
|
102863
|
+
* @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#698ae067-43dd-4e19-a0ac-d9ba91381816
|
|
102864
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
102865
|
+
* @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
|
|
102866
|
+
*/
|
|
102867
|
+
await this.loadMarkets();
|
|
102868
|
+
const response = await this.privateGetUsersBalances(params);
|
|
102869
|
+
return this.parseBalance(response);
|
|
102870
|
+
}
|
|
102871
|
+
parseBalance(response) {
|
|
102872
|
+
//
|
|
102873
|
+
// {
|
|
102874
|
+
// "USDC": {
|
|
102875
|
+
// "USDC": 99,
|
|
102876
|
+
// "EUR": 91.16,
|
|
102877
|
+
// "BTC": 0.002334
|
|
102878
|
+
// },
|
|
102879
|
+
// "XCM": {
|
|
102880
|
+
// "XCM": 0,
|
|
102881
|
+
// "EUR": 0,
|
|
102882
|
+
// "BTC": 0
|
|
102883
|
+
// },
|
|
102884
|
+
// "TOTAL": {
|
|
102885
|
+
// "EUR": 91.16,
|
|
102886
|
+
// "BTC": 0.002334
|
|
102887
|
+
// },
|
|
102888
|
+
// "REF": {
|
|
102889
|
+
// "XCM": 0,
|
|
102890
|
+
// "EUR": 0,
|
|
102891
|
+
// "BTC": 0
|
|
102892
|
+
// }
|
|
102893
|
+
// }
|
|
102894
|
+
//
|
|
102895
|
+
const result = {
|
|
102896
|
+
'info': response,
|
|
102897
|
+
};
|
|
102898
|
+
const balances = this.omit(response, ['TOTAL', 'REF']);
|
|
102899
|
+
const currencyIds = Object.keys(balances);
|
|
102900
|
+
for (let i = 0; i < currencyIds.length; i++) {
|
|
102901
|
+
const currencyId = currencyIds[i];
|
|
102902
|
+
const code = this.safeCurrencyCode(currencyId);
|
|
102903
|
+
const account = this.account();
|
|
102904
|
+
const currency = this.safeValue(balances, currencyId, {});
|
|
102905
|
+
account['total'] = this.safeString(currency, currencyId);
|
|
102906
|
+
result[code] = account;
|
|
102907
|
+
}
|
|
102908
|
+
return this.safeBalance(result);
|
|
102909
|
+
}
|
|
102910
|
+
async fetchLedger(code = undefined, since = undefined, limit = undefined, params = {}) {
|
|
102911
|
+
/**
|
|
102912
|
+
* @method
|
|
102913
|
+
* @name coinmetro#fetchLedger
|
|
102914
|
+
* @description fetch the history of changes, actions done by the user or operations that altered balance of the user
|
|
102915
|
+
* @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#4e7831f7-a0e7-4c3e-9336-1d0e5dcb15cf
|
|
102916
|
+
* @param {string} code unified currency code, default is undefined
|
|
102917
|
+
* @param {int} [since] timestamp in ms of the earliest ledger entry, default is undefined
|
|
102918
|
+
* @param {int} [limit] max number of ledger entrys to return (default 200, max 500)
|
|
102919
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
102920
|
+
* @param {int} [params.until] the latest time in ms to fetch entries for
|
|
102921
|
+
* @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger-structure}
|
|
102922
|
+
*/
|
|
102923
|
+
await this.loadMarkets();
|
|
102924
|
+
const request = {};
|
|
102925
|
+
if (since !== undefined) {
|
|
102926
|
+
request['since'] = since;
|
|
102927
|
+
}
|
|
102928
|
+
else {
|
|
102929
|
+
// this endpoint accepts empty since param
|
|
102930
|
+
request['since'] = '';
|
|
102931
|
+
}
|
|
102932
|
+
let currency = undefined;
|
|
102933
|
+
if (code !== undefined) {
|
|
102934
|
+
currency = this.currency(code);
|
|
102935
|
+
}
|
|
102936
|
+
const response = await this.privateGetUsersWalletsHistorySince(this.extend(request, params));
|
|
102937
|
+
//
|
|
102938
|
+
// {
|
|
102939
|
+
// "list": [
|
|
102940
|
+
// {
|
|
102941
|
+
// "currency": "USDC",
|
|
102942
|
+
// "label": "USDC",
|
|
102943
|
+
// "userId": "65671262d93d9525ac009e36",
|
|
102944
|
+
// "balance": 0,
|
|
102945
|
+
// "disabled": false,
|
|
102946
|
+
// "balanceHistory": [
|
|
102947
|
+
// {
|
|
102948
|
+
// "description": "Deposit - 657973a9b6eadf0f33d70100",
|
|
102949
|
+
// "JSONdata": {
|
|
102950
|
+
// "fees": 0,
|
|
102951
|
+
// "notes": "Via Crypto",
|
|
102952
|
+
// "txHash": "0x2e4875185b0f312d8e24b2d26d46bf9877db798b608ad2ff97b2b8bc7d8134e5",
|
|
102953
|
+
// "last4Digits": null,
|
|
102954
|
+
// "IBAN": null,
|
|
102955
|
+
// "alternativeChain": "polygon",
|
|
102956
|
+
// "referenceId": "657973a9b6eadf0f33d70100",
|
|
102957
|
+
// "status": "completed",
|
|
102958
|
+
// "tracked": true
|
|
102959
|
+
// },
|
|
102960
|
+
// "amount": 99,
|
|
102961
|
+
// "timestamp": "2023-12-13T09:04:51.270Z",
|
|
102962
|
+
// "amountEUR": 91.79310117335974
|
|
102963
|
+
// },
|
|
102964
|
+
// {
|
|
102965
|
+
// "description": "Order 65671262d93d9525ac009e36170257061073952c6423a8c5b4d6c SeqNum 10873722342",
|
|
102966
|
+
// "JSONdata": {
|
|
102967
|
+
// "price": "2282.00 ETH/USDC",
|
|
102968
|
+
// "fees": 0,
|
|
102969
|
+
// "notes": "Order 3a8c5b4d6c"
|
|
102970
|
+
// },
|
|
102971
|
+
// "amount": -4.564,
|
|
102972
|
+
// "timestamp": "2023-12-14T16:16:50.760Z",
|
|
102973
|
+
// "amountEUR": -4.150043849187587
|
|
102974
|
+
// },
|
|
102975
|
+
// ...
|
|
102976
|
+
// ]
|
|
102977
|
+
// },
|
|
102978
|
+
// {
|
|
102979
|
+
// "currency": "ETH",
|
|
102980
|
+
// "label": "ETH",
|
|
102981
|
+
// "userId": "65671262d93d9525ac009e36",
|
|
102982
|
+
// "balance": 0,
|
|
102983
|
+
// "disabled": false,
|
|
102984
|
+
// "balanceHistory": [
|
|
102985
|
+
// {
|
|
102986
|
+
// "description": "Order 65671262d93d9525ac009e36170257061073952c6423a8c5b4d6c SeqNum 10873722342",
|
|
102987
|
+
// "JSONdata": {
|
|
102988
|
+
// "price": "2282.00 ETH/USDC",
|
|
102989
|
+
// "fees": 0.000002,
|
|
102990
|
+
// "notes": "Order 3a8c5b4d6c"
|
|
102991
|
+
// },
|
|
102992
|
+
// "amount": 0.001998,
|
|
102993
|
+
// "timestamp": "2023-12-14T16:16:50.761Z",
|
|
102994
|
+
// "amountEUR": 4.144849415806856
|
|
102995
|
+
// },
|
|
102996
|
+
// ...
|
|
102997
|
+
// ]
|
|
102998
|
+
// },
|
|
102999
|
+
// {
|
|
103000
|
+
// "currency": "DOGE",
|
|
103001
|
+
// "label": "DOGE",
|
|
103002
|
+
// "userId": "65671262d93d9525ac009e36",
|
|
103003
|
+
// "balance": 0,
|
|
103004
|
+
// "disabled": false,
|
|
103005
|
+
// "balanceHistory": [
|
|
103006
|
+
// {
|
|
103007
|
+
// "description": "Order 65671262d93d9525ac009e361702905785319b5d9016dc20736034d13ca6a - Swap",
|
|
103008
|
+
// "JSONdata": {
|
|
103009
|
+
// "swap": true,
|
|
103010
|
+
// "subtype": "swap",
|
|
103011
|
+
// "fees": 0,
|
|
103012
|
+
// "price": "0.0905469 DOGE/USDC",
|
|
103013
|
+
// "notes": "Swap 034d13ca6a"
|
|
103014
|
+
// },
|
|
103015
|
+
// "amount": 70,
|
|
103016
|
+
// "timestamp": "2023-12-18T13:23:05.836Z",
|
|
103017
|
+
// "amountEUR": 5.643627624549227
|
|
103018
|
+
// }
|
|
103019
|
+
// ]
|
|
103020
|
+
// },
|
|
103021
|
+
// ...
|
|
103022
|
+
// ]
|
|
103023
|
+
// }
|
|
103024
|
+
//
|
|
103025
|
+
const ledgerByCurrencies = this.safeValue(response, 'list', []);
|
|
103026
|
+
const ledger = [];
|
|
103027
|
+
for (let i = 0; i < ledgerByCurrencies.length; i++) {
|
|
103028
|
+
const currencyLedger = ledgerByCurrencies[i];
|
|
103029
|
+
const currencyId = this.safeString(currencyLedger, 'currency');
|
|
103030
|
+
const balanceHistory = this.safeValue(currencyLedger, 'balanceHistory', []);
|
|
103031
|
+
for (let j = 0; j < balanceHistory.length; j++) {
|
|
103032
|
+
const rawLedgerEntry = balanceHistory[j];
|
|
103033
|
+
rawLedgerEntry['currencyId'] = currencyId;
|
|
103034
|
+
ledger.push(rawLedgerEntry);
|
|
103035
|
+
}
|
|
103036
|
+
}
|
|
103037
|
+
return this.parseLedger(ledger, currency, since, limit);
|
|
103038
|
+
}
|
|
103039
|
+
parseLedgerEntry(item, currency = undefined) {
|
|
103040
|
+
const datetime = this.safeString(item, 'timestamp');
|
|
103041
|
+
const currencyId = this.safeString(item, 'currencyId');
|
|
103042
|
+
item = this.omit(item, 'currencyId');
|
|
103043
|
+
currency = this.safeCurrency(currencyId, currency);
|
|
103044
|
+
const description = this.safeString(item, 'description', '');
|
|
103045
|
+
const [type, referenceId] = this.parseLedgerEntryDescription(description);
|
|
103046
|
+
const JSONdata = this.safeValue(item, 'JSONdata', {});
|
|
103047
|
+
const feeCost = this.safeString(JSONdata, 'fees');
|
|
103048
|
+
const fee = {
|
|
103049
|
+
'cost': feeCost,
|
|
103050
|
+
'currency': undefined,
|
|
103051
|
+
};
|
|
103052
|
+
let amount = this.safeString(item, 'amount');
|
|
103053
|
+
let direction = undefined;
|
|
103054
|
+
if (amount !== undefined) {
|
|
103055
|
+
if (_base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringLt(amount, '0')) {
|
|
103056
|
+
direction = 'out';
|
|
103057
|
+
amount = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringAbs(amount);
|
|
103058
|
+
}
|
|
103059
|
+
else if (_base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringGt(amount, '0')) {
|
|
103060
|
+
direction = 'in';
|
|
103061
|
+
}
|
|
103062
|
+
}
|
|
103063
|
+
return this.safeLedgerEntry({
|
|
103064
|
+
'info': item,
|
|
103065
|
+
'id': undefined,
|
|
103066
|
+
'timestamp': this.parse8601(datetime),
|
|
103067
|
+
'datetime': datetime,
|
|
103068
|
+
'direction': direction,
|
|
103069
|
+
'account': undefined,
|
|
103070
|
+
'referenceId': referenceId,
|
|
103071
|
+
'referenceAccount': undefined,
|
|
103072
|
+
'type': type,
|
|
103073
|
+
'currency': currency,
|
|
103074
|
+
'amount': amount,
|
|
103075
|
+
'before': undefined,
|
|
103076
|
+
'after': undefined,
|
|
103077
|
+
'status': undefined,
|
|
103078
|
+
'fee': fee,
|
|
103079
|
+
}, currency);
|
|
103080
|
+
}
|
|
103081
|
+
parseLedgerEntryDescription(description) {
|
|
103082
|
+
let descriptionArray = [];
|
|
103083
|
+
if (description !== undefined) {
|
|
103084
|
+
descriptionArray = description.split(' ');
|
|
103085
|
+
}
|
|
103086
|
+
let type = undefined;
|
|
103087
|
+
let referenceId = undefined;
|
|
103088
|
+
if (descriptionArray.length > 1) {
|
|
103089
|
+
type = this.parseLedgerEntryType(descriptionArray[0]);
|
|
103090
|
+
if (descriptionArray[1] !== '-') {
|
|
103091
|
+
referenceId = descriptionArray[1];
|
|
103092
|
+
}
|
|
103093
|
+
else {
|
|
103094
|
+
referenceId = this.safeString(descriptionArray, 2);
|
|
103095
|
+
}
|
|
103096
|
+
}
|
|
103097
|
+
return [type, referenceId];
|
|
103098
|
+
}
|
|
103099
|
+
parseLedgerEntryType(type) {
|
|
103100
|
+
const types = {
|
|
103101
|
+
'Deposit': 'transaction',
|
|
103102
|
+
'Withdraw': 'transaction',
|
|
103103
|
+
'Order': 'trade',
|
|
103104
|
+
};
|
|
103105
|
+
return this.safeString(types, type, type);
|
|
103106
|
+
}
|
|
103107
|
+
async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
|
|
103108
|
+
/**
|
|
103109
|
+
* @method
|
|
103110
|
+
* @name coinmetro#createOrder
|
|
103111
|
+
* @description create a trade order
|
|
103112
|
+
* @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#a4895a1d-3f50-40ae-8231-6962ef06c771
|
|
103113
|
+
* @param {string} symbol unified symbol of the market to create an order in
|
|
103114
|
+
* @param {string} type 'market' or 'limit'
|
|
103115
|
+
* @param {string} side 'buy' or 'sell'
|
|
103116
|
+
* @param {float} amount how much of currency you want to trade in units of base currency
|
|
103117
|
+
* @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
|
|
103118
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
103119
|
+
* @param {float} [params.cost] the quote quantity that can be used as an alternative for the amount in market orders
|
|
103120
|
+
* @param {string} [params.timeInForce] "GTC", "IOC", "FOK", "GTD"
|
|
103121
|
+
* @param {number} [params.expirationTime] timestamp in millisecond, for GTD orders only
|
|
103122
|
+
* @param {float} [params.triggerPrice] the price at which a trigger order is triggered at
|
|
103123
|
+
* @param {float} [params.stopLossPrice] *margin only* The price at which a stop loss order is triggered at
|
|
103124
|
+
* @param {float} [params.takeProfitPrice] *margin only* The price at which a take profit order is triggered at
|
|
103125
|
+
* @param {bool} [params.margin] true for creating a margin order
|
|
103126
|
+
* @param {string} [params.fillStyle] fill style of the limit order: "sell" fulfills selling quantity "buy" fulfills buying quantity "base" fulfills base currency quantity "quote" fulfills quote currency quantity
|
|
103127
|
+
* @param {string} [params.clientOrderId] client's comment
|
|
103128
|
+
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
103129
|
+
*/
|
|
103130
|
+
await this.loadMarkets();
|
|
103131
|
+
const market = this.market(symbol);
|
|
103132
|
+
let request = {};
|
|
103133
|
+
request['orderType'] = type;
|
|
103134
|
+
let precisedAmount = undefined;
|
|
103135
|
+
if (amount !== undefined) {
|
|
103136
|
+
precisedAmount = this.amountToPrecision(symbol, amount);
|
|
103137
|
+
}
|
|
103138
|
+
let cost = this.safeValue(params, 'cost');
|
|
103139
|
+
params = this.omit(params, 'cost');
|
|
103140
|
+
if (type === 'limit') {
|
|
103141
|
+
if ((price === undefined) && (cost === undefined)) {
|
|
103142
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' createOrder() requires a price or params.cost argument for a ' + type + ' order');
|
|
103143
|
+
}
|
|
103144
|
+
else if ((price !== undefined) && (amount !== undefined)) {
|
|
103145
|
+
const costString = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringMul(this.numberToString(price), this.numberToString(precisedAmount));
|
|
103146
|
+
cost = this.parseToNumeric(costString);
|
|
103147
|
+
}
|
|
103148
|
+
}
|
|
103149
|
+
let precisedCost = undefined;
|
|
103150
|
+
if (cost !== undefined) {
|
|
103151
|
+
precisedCost = this.costToPrecision(symbol, cost);
|
|
103152
|
+
}
|
|
103153
|
+
if (side === 'sell') {
|
|
103154
|
+
request = this.handleCreateOrderSide(market['baseId'], market['quoteId'], precisedAmount, precisedCost, request);
|
|
103155
|
+
}
|
|
103156
|
+
else if (side === 'buy') {
|
|
103157
|
+
request = this.handleCreateOrderSide(market['quoteId'], market['baseId'], precisedCost, precisedAmount, request);
|
|
103158
|
+
}
|
|
103159
|
+
const timeInForce = this.safeValue(params, 'timeInForce');
|
|
103160
|
+
if (timeInForce !== undefined) {
|
|
103161
|
+
params = this.omit(params, 'timeInForce');
|
|
103162
|
+
request['timeInForce'] = this.encodeOrderTimeInForce(timeInForce);
|
|
103163
|
+
}
|
|
103164
|
+
const stopPrice = this.safeString2(params, 'triggerPrice', 'stopPrice');
|
|
103165
|
+
if (stopPrice !== undefined) {
|
|
103166
|
+
params = this.omit(params, ['triggerPrice']);
|
|
103167
|
+
request['stopPrice'] = this.priceToPrecision(symbol, stopPrice);
|
|
103168
|
+
}
|
|
103169
|
+
const userData = this.safeValue(params, 'userData', {});
|
|
103170
|
+
const comment = this.safeString2(params, 'clientOrderId', 'comment');
|
|
103171
|
+
if (comment !== undefined) {
|
|
103172
|
+
params = this.omit(params, ['clientOrderId']);
|
|
103173
|
+
userData['comment'] = comment;
|
|
103174
|
+
}
|
|
103175
|
+
const stopLossPrice = this.safeString(params, 'stopLossPrice');
|
|
103176
|
+
if (stopLossPrice !== undefined) {
|
|
103177
|
+
params = this.omit(params, 'stopLossPrice');
|
|
103178
|
+
userData['stopLoss'] = this.priceToPrecision(symbol, stopLossPrice);
|
|
103179
|
+
}
|
|
103180
|
+
const takeProfitPrice = this.safeString(params, 'takeProfitPrice');
|
|
103181
|
+
if (takeProfitPrice !== undefined) {
|
|
103182
|
+
params = this.omit(params, 'takeProfitPrice');
|
|
103183
|
+
userData['takeProfit'] = this.priceToPrecision(symbol, takeProfitPrice);
|
|
103184
|
+
}
|
|
103185
|
+
if (!this.isEmpty(userData)) {
|
|
103186
|
+
request['userData'] = userData;
|
|
103187
|
+
}
|
|
103188
|
+
const response = await this.privatePostExchangeOrdersCreate(this.extend(request, params));
|
|
103189
|
+
//
|
|
103190
|
+
// {
|
|
103191
|
+
// "userID": "65671262d93d9525ac009e36",
|
|
103192
|
+
// "orderID": "65671262d93d9525ac009e36170257448481749b7ee2893bafec2",
|
|
103193
|
+
// "orderType": "market",
|
|
103194
|
+
// "buyingCurrency": "ETH",
|
|
103195
|
+
// "sellingCurrency": "USDC",
|
|
103196
|
+
// "buyingQty": 0.002,
|
|
103197
|
+
// "timeInForce": 4,
|
|
103198
|
+
// "boughtQty": 0.002,
|
|
103199
|
+
// "soldQty": 4.587,
|
|
103200
|
+
// "creationTime": 1702574484829,
|
|
103201
|
+
// "seqNumber": 10874285330,
|
|
103202
|
+
// "firstFillTime": 1702574484831,
|
|
103203
|
+
// "lastFillTime": 1702574484831,
|
|
103204
|
+
// "fills": [
|
|
103205
|
+
// {
|
|
103206
|
+
// "seqNumber": 10874285329,
|
|
103207
|
+
// "timestamp": 1702574484831,
|
|
103208
|
+
// "qty": 0.002,
|
|
103209
|
+
// "price": 2293.5,
|
|
103210
|
+
// "side": "buy"
|
|
103211
|
+
// }
|
|
103212
|
+
// ],
|
|
103213
|
+
// "completionTime": 1702574484831,
|
|
103214
|
+
// "takerQty": 0.002
|
|
103215
|
+
// }
|
|
103216
|
+
//
|
|
103217
|
+
return this.parseOrder(response, market);
|
|
103218
|
+
}
|
|
103219
|
+
handleCreateOrderSide(sellingCurrency, buyingCurrency, sellingQty, buyingQty, request = {}) {
|
|
103220
|
+
request['sellingCurrency'] = sellingCurrency;
|
|
103221
|
+
request['buyingCurrency'] = buyingCurrency;
|
|
103222
|
+
if (sellingQty !== undefined) {
|
|
103223
|
+
request['sellingQty'] = sellingQty;
|
|
103224
|
+
}
|
|
103225
|
+
if (buyingQty !== undefined) {
|
|
103226
|
+
request['buyingQty'] = buyingQty;
|
|
103227
|
+
}
|
|
103228
|
+
return request;
|
|
103229
|
+
}
|
|
103230
|
+
encodeOrderTimeInForce(timeInForce) {
|
|
103231
|
+
const timeInForceTypes = {
|
|
103232
|
+
'GTC': 1,
|
|
103233
|
+
'IOC': 2,
|
|
103234
|
+
'GTD': 3,
|
|
103235
|
+
'FOK': 4,
|
|
103236
|
+
};
|
|
103237
|
+
return this.safeValue(timeInForceTypes, timeInForce, timeInForce);
|
|
103238
|
+
}
|
|
103239
|
+
async cancelOrder(id, symbol = undefined, params = {}) {
|
|
103240
|
+
/**
|
|
103241
|
+
* @method
|
|
103242
|
+
* @name coinmetro#cancelOrder
|
|
103243
|
+
* @description cancels an open order
|
|
103244
|
+
* @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#eaea86da-16ca-4c56-9f00-5b1cb2ad89f8
|
|
103245
|
+
* @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#47f913fb-8cab-49f4-bc78-d980e6ced316
|
|
103246
|
+
* @param {string} id order id
|
|
103247
|
+
* @param {string} symbol not used by coinmetro cancelOrder ()
|
|
103248
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
103249
|
+
* @param {string} [params.margin] true for cancelling a margin order
|
|
103250
|
+
* @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
103251
|
+
*/
|
|
103252
|
+
await this.loadMarkets();
|
|
103253
|
+
const request = {
|
|
103254
|
+
'orderID': id,
|
|
103255
|
+
};
|
|
103256
|
+
const marginMode = undefined;
|
|
103257
|
+
[params, params] = this.handleMarginModeAndParams('cancelOrder', params);
|
|
103258
|
+
const isMargin = this.safeValue(params, 'margin', false);
|
|
103259
|
+
params = this.omit(params, 'margin');
|
|
103260
|
+
let response = undefined;
|
|
103261
|
+
if (isMargin || (marginMode !== undefined)) {
|
|
103262
|
+
response = await this.privatePostExchangeOrdersCloseOrderID(this.extend(request, params));
|
|
103263
|
+
}
|
|
103264
|
+
else {
|
|
103265
|
+
response = await this.privatePutExchangeOrdersCancelOrderID(this.extend(request, params));
|
|
103266
|
+
}
|
|
103267
|
+
//
|
|
103268
|
+
// {
|
|
103269
|
+
// "userID": "65671262d93d9525ac009e36",
|
|
103270
|
+
// "orderID": "65671262d93d9525ac009e3617026635256739c996fe17d7cd5d4",
|
|
103271
|
+
// "orderType": "limit",
|
|
103272
|
+
// "buyingCurrency": "ETH",
|
|
103273
|
+
// "sellingCurrency": "USDC",
|
|
103274
|
+
// "fillStyle": "sell",
|
|
103275
|
+
// "orderPlatform": "trade-v3",
|
|
103276
|
+
// "timeInForce": 1,
|
|
103277
|
+
// "buyingQty": 0.005655,
|
|
103278
|
+
// "sellingQty": 11.31,
|
|
103279
|
+
// "boughtQty": 0,
|
|
103280
|
+
// "soldQty": 0,
|
|
103281
|
+
// "creationTime": 1702663525713,
|
|
103282
|
+
// "seqNumber": 10915220048,
|
|
103283
|
+
// "completionTime": 1702928369053
|
|
103284
|
+
// }
|
|
103285
|
+
//
|
|
103286
|
+
return this.parseOrder(response);
|
|
103287
|
+
}
|
|
103288
|
+
async closePosition(symbol, side = undefined, params = {}) {
|
|
103289
|
+
/**
|
|
103290
|
+
* @method
|
|
103291
|
+
* @name coinmetro#cancelOrder
|
|
103292
|
+
* @description closes an open position
|
|
103293
|
+
* @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#47f913fb-8cab-49f4-bc78-d980e6ced316
|
|
103294
|
+
* @param {string} symbol not used by coinmetro closePosition ()
|
|
103295
|
+
* @param {string} [side] not used by coinmetro closePosition ()
|
|
103296
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
103297
|
+
* @param {string} [params.orderID] order id
|
|
103298
|
+
* @param {number} [params.fraction] fraction of order to close, between 0 and 1 (defaults to 1)
|
|
103299
|
+
* @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
103300
|
+
*/
|
|
103301
|
+
await this.loadMarkets();
|
|
103302
|
+
const orderId = this.safeString(params, 'orderId');
|
|
103303
|
+
if (orderId === undefined) {
|
|
103304
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' closePosition() requires a orderId parameter');
|
|
103305
|
+
}
|
|
103306
|
+
const request = {
|
|
103307
|
+
'orderID': orderId,
|
|
103308
|
+
};
|
|
103309
|
+
const response = await this.privatePostExchangeOrdersCloseOrderID(this.extend(request, params));
|
|
103310
|
+
//
|
|
103311
|
+
// {
|
|
103312
|
+
// "userID": "65671262d93d9525ac009e36",
|
|
103313
|
+
// "orderID": "65671262d93d9525ac009e3617030152811996e5b352556d3d7d8_CL",
|
|
103314
|
+
// "orderType": "market",
|
|
103315
|
+
// "buyingCurrency": "ETH",
|
|
103316
|
+
// "sellingCurrency": "EUR",
|
|
103317
|
+
// "margin": true,
|
|
103318
|
+
// "buyingQty": 0.03,
|
|
103319
|
+
// "timeInForce": 4,
|
|
103320
|
+
// "boughtQty": 0.03,
|
|
103321
|
+
// "soldQty": 59.375,
|
|
103322
|
+
// "creationTime": 1703015488482,
|
|
103323
|
+
// "seqNumber": 10925321179,
|
|
103324
|
+
// "firstFillTime": 1703015488483,
|
|
103325
|
+
// "lastFillTime": 1703015488483,
|
|
103326
|
+
// "fills": [
|
|
103327
|
+
// {
|
|
103328
|
+
// "seqNumber": 10925321178,
|
|
103329
|
+
// "timestamp": 1703015488483,
|
|
103330
|
+
// "qty": 0.03,
|
|
103331
|
+
// "price": 1979.1666666666667,
|
|
103332
|
+
// "side": "buy"
|
|
103333
|
+
// }
|
|
103334
|
+
// ],
|
|
103335
|
+
// "completionTime": 1703015488483,
|
|
103336
|
+
// "takerQty": 0.03
|
|
103337
|
+
// }
|
|
103338
|
+
//
|
|
103339
|
+
return this.parseOrder(response);
|
|
103340
|
+
}
|
|
103341
|
+
async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
103342
|
+
/**
|
|
103343
|
+
* @method
|
|
103344
|
+
* @name coinmetro#fetchOpenOrders
|
|
103345
|
+
* @description fetch all unfilled currently open orders
|
|
103346
|
+
* @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#518afd7a-4338-439c-a651-d4fdaa964138
|
|
103347
|
+
* @param {string} symbol unified market symbol
|
|
103348
|
+
* @param {int} [since] the earliest time in ms to fetch open orders for
|
|
103349
|
+
* @param {int} [limit] the maximum number of open order structures to retrieve
|
|
103350
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
103351
|
+
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
103352
|
+
*/
|
|
103353
|
+
await this.loadMarkets();
|
|
103354
|
+
let market = undefined;
|
|
103355
|
+
if (symbol !== undefined) {
|
|
103356
|
+
market = this.market(symbol);
|
|
103357
|
+
}
|
|
103358
|
+
const response = await this.privateGetExchangeOrdersActive(params);
|
|
103359
|
+
const orders = this.parseOrders(response, market, since, limit);
|
|
103360
|
+
for (let i = 0; i < orders.length; i++) {
|
|
103361
|
+
const order = orders[i];
|
|
103362
|
+
order['status'] = 'open';
|
|
103363
|
+
}
|
|
103364
|
+
return orders;
|
|
103365
|
+
}
|
|
103366
|
+
async fetchCanceledAndClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
103367
|
+
/**
|
|
103368
|
+
* @method
|
|
103369
|
+
* @name coinmetro#fetchCanceledAndClosedOrders
|
|
103370
|
+
* @description fetches information on multiple canceled and closed orders made by the user
|
|
103371
|
+
* @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#4d48ae69-8ee2-44d1-a268-71f84e557b7b
|
|
103372
|
+
* @param {string} symbol unified market symbol of the market orders were made in
|
|
103373
|
+
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
103374
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
103375
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
103376
|
+
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
103377
|
+
*/
|
|
103378
|
+
await this.loadMarkets();
|
|
103379
|
+
let market = undefined;
|
|
103380
|
+
if (symbol !== undefined) {
|
|
103381
|
+
market = this.market(symbol);
|
|
103382
|
+
}
|
|
103383
|
+
const request = {};
|
|
103384
|
+
if (since !== undefined) {
|
|
103385
|
+
request['since'] = since;
|
|
103386
|
+
}
|
|
103387
|
+
const response = await this.privateGetExchangeOrdersHistorySince(this.extend(request, params));
|
|
103388
|
+
return this.parseOrders(response, market, since, limit);
|
|
103389
|
+
}
|
|
103390
|
+
async fetchOrder(id, symbol = undefined, params = {}) {
|
|
103391
|
+
/**
|
|
103392
|
+
* @method
|
|
103393
|
+
* @name coinmetro#fetchOrder
|
|
103394
|
+
* @description fetches information on an order made by the user
|
|
103395
|
+
* @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#95bbed87-db1c-47a7-a03e-aa247e91d5a6
|
|
103396
|
+
* @param {int|string} id order id
|
|
103397
|
+
* @param {string} symbol not used by coinmetro fetchOrder ()
|
|
103398
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
103399
|
+
* @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
103400
|
+
*/
|
|
103401
|
+
await this.loadMarkets();
|
|
103402
|
+
const request = {
|
|
103403
|
+
'orderID': id,
|
|
103404
|
+
};
|
|
103405
|
+
const response = await this.privateGetExchangeOrdersStatusOrderID(this.extend(request, params));
|
|
103406
|
+
//
|
|
103407
|
+
// {
|
|
103408
|
+
// "_id": "657b4e6d60a954244939ac6f",
|
|
103409
|
+
// "userID": "65671262d93d9525ac009e36",
|
|
103410
|
+
// "orderID": "65671262d93d9525ac009e361702576531985b78465468b9cc544",
|
|
103411
|
+
// "orderType": "market",
|
|
103412
|
+
// "buyingCurrency": "ETH",
|
|
103413
|
+
// "sellingCurrency": "USDC",
|
|
103414
|
+
// "buyingQty": 0.004,
|
|
103415
|
+
// "timeInForce": 4,
|
|
103416
|
+
// "boughtQty": 0.004,
|
|
103417
|
+
// "soldQty": 9.236,
|
|
103418
|
+
// "creationTime": 1702576531995,
|
|
103419
|
+
// "seqNumber": 10874644062,
|
|
103420
|
+
// "firstFillTime": 1702576531995,
|
|
103421
|
+
// "lastFillTime": 1702576531995,
|
|
103422
|
+
// "fills": [
|
|
103423
|
+
// {
|
|
103424
|
+
// "_id": "657b4e6d60a954244939ac70",
|
|
103425
|
+
// "seqNumber": 10874644061,
|
|
103426
|
+
// "timestamp": 1702576531995,
|
|
103427
|
+
// "qty": 0.004,
|
|
103428
|
+
// "price": 2309,
|
|
103429
|
+
// "side": "buy"
|
|
103430
|
+
// }
|
|
103431
|
+
// ],
|
|
103432
|
+
// "completionTime": 1702576531995,
|
|
103433
|
+
// "takerQty": 0.004,
|
|
103434
|
+
// "fees": 0.000004,
|
|
103435
|
+
// "isAncillary": false,
|
|
103436
|
+
// "margin": false,
|
|
103437
|
+
// "trade": false,
|
|
103438
|
+
// "canceled": false
|
|
103439
|
+
// }
|
|
103440
|
+
//
|
|
103441
|
+
return this.parseOrder(response);
|
|
103442
|
+
}
|
|
103443
|
+
parseOrder(order, market = undefined) {
|
|
103444
|
+
//
|
|
103445
|
+
// createOrder market
|
|
103446
|
+
// {
|
|
103447
|
+
// "userID": "65671262d93d9525ac009e36",
|
|
103448
|
+
// "orderID": "65671262d93d9525ac009e36170257448481749b7ee2893bafec2",
|
|
103449
|
+
// "orderType": "market",
|
|
103450
|
+
// "buyingCurrency": "ETH",
|
|
103451
|
+
// "sellingCurrency": "USDC",
|
|
103452
|
+
// "buyingQty": 0.002,
|
|
103453
|
+
// "timeInForce": 4,
|
|
103454
|
+
// "boughtQty": 0.002,
|
|
103455
|
+
// "soldQty": 4.587,
|
|
103456
|
+
// "creationTime": 1702574484829,
|
|
103457
|
+
// "seqNumber": 10874285330,
|
|
103458
|
+
// "firstFillTime": 1702574484831,
|
|
103459
|
+
// "lastFillTime": 1702574484831,
|
|
103460
|
+
// "fills": [
|
|
103461
|
+
// {
|
|
103462
|
+
// "seqNumber": 10874285329,
|
|
103463
|
+
// "timestamp": 1702574484831,
|
|
103464
|
+
// "qty": 0.002,
|
|
103465
|
+
// "price": 2293.5,
|
|
103466
|
+
// "side": "buy"
|
|
103467
|
+
// }
|
|
103468
|
+
// ],
|
|
103469
|
+
// "completionTime": 1702574484831,
|
|
103470
|
+
// "takerQty": 0.002
|
|
103471
|
+
// }
|
|
103472
|
+
//
|
|
103473
|
+
// createOrder limit
|
|
103474
|
+
// {
|
|
103475
|
+
// "userID": "65671262d93d9525ac009e36",
|
|
103476
|
+
// "orderID": "65671262d93d9525ac009e3617026635256739c996fe17d7cd5d4",
|
|
103477
|
+
// "orderType": "limit",
|
|
103478
|
+
// "buyingCurrency": "ETH",
|
|
103479
|
+
// "sellingCurrency": "USDC",
|
|
103480
|
+
// "fillStyle": "sell",
|
|
103481
|
+
// "orderPlatform": "trade-v3",
|
|
103482
|
+
// "timeInForce": 1,
|
|
103483
|
+
// "buyingQty": 0.005655,
|
|
103484
|
+
// "sellingQty": 11.31,
|
|
103485
|
+
// "boughtQty": 0,
|
|
103486
|
+
// "soldQty": 0,
|
|
103487
|
+
// "creationTime": 1702663525713,
|
|
103488
|
+
// "seqNumber": 10885528683,
|
|
103489
|
+
// "fees": 0,
|
|
103490
|
+
// "fills": [],
|
|
103491
|
+
// "isAncillary": false,
|
|
103492
|
+
// "margin": false,
|
|
103493
|
+
// "trade": false
|
|
103494
|
+
// }
|
|
103495
|
+
//
|
|
103496
|
+
// fetchOrders market
|
|
103497
|
+
// {
|
|
103498
|
+
// "userID": "65671262d93d9525ac009e36",
|
|
103499
|
+
// "orderID": "65671262d93d9525ac009e36170257061073952c6423a8c5b4d6c",
|
|
103500
|
+
// "orderType": "market",
|
|
103501
|
+
// "buyingCurrency": "ETH",
|
|
103502
|
+
// "sellingCurrency": "USDC",
|
|
103503
|
+
// "buyingQty": 0.002,
|
|
103504
|
+
// "timeInForce": 4,
|
|
103505
|
+
// "boughtQty": 0.002,
|
|
103506
|
+
// "soldQty": 4.564,
|
|
103507
|
+
// "creationTime": 1702570610746,
|
|
103508
|
+
// "seqNumber": 10873722344,
|
|
103509
|
+
// "firstFillTime": 1702570610747,
|
|
103510
|
+
// "lastFillTime": 1702570610747,
|
|
103511
|
+
// "fills": [
|
|
103512
|
+
// {
|
|
103513
|
+
// "_id": "657b31d360a9542449381bdc",
|
|
103514
|
+
// "seqNumber": 10873722343,
|
|
103515
|
+
// "timestamp": 1702570610747,
|
|
103516
|
+
// "qty": 0.002,
|
|
103517
|
+
// "price": 2282,
|
|
103518
|
+
// "side": "buy"
|
|
103519
|
+
// }
|
|
103520
|
+
// ],
|
|
103521
|
+
// "completionTime": 1702570610747,
|
|
103522
|
+
// "takerQty": 0.002,
|
|
103523
|
+
// "fees": 0.000002,
|
|
103524
|
+
// "isAncillary": false,
|
|
103525
|
+
// "margin": false,
|
|
103526
|
+
// "trade": false,
|
|
103527
|
+
// "canceled": false,
|
|
103528
|
+
// "__v": 0
|
|
103529
|
+
// }
|
|
103530
|
+
//
|
|
103531
|
+
// fetchOrders margin
|
|
103532
|
+
// {
|
|
103533
|
+
// "userData": {
|
|
103534
|
+
// "takeProfit": 1700,
|
|
103535
|
+
// "stopLoss": 2100
|
|
103536
|
+
// },
|
|
103537
|
+
// "_id": "658201d060a95424499394a2",
|
|
103538
|
+
// "seqNumber": 10925300213,
|
|
103539
|
+
// "orderType": "limit",
|
|
103540
|
+
// "buyingCurrency": "EUR",
|
|
103541
|
+
// "sellingCurrency": "ETH",
|
|
103542
|
+
// "userID": "65671262d93d9525ac009e36",
|
|
103543
|
+
// "closedQty": 0.03,
|
|
103544
|
+
// "sellingQty": 0.03,
|
|
103545
|
+
// "buyingQty": 58.8,
|
|
103546
|
+
// "creationTime": 1703015281205,
|
|
103547
|
+
// "margin": true,
|
|
103548
|
+
// "timeInForce": 1,
|
|
103549
|
+
// "boughtQty": 59.31,
|
|
103550
|
+
// "orderID": "65671262d93d9525ac009e3617030152811996e5b352556d3d7d8",
|
|
103551
|
+
// "lastFillTime": 1703015281206,
|
|
103552
|
+
// "soldQty": 0.03,
|
|
103553
|
+
// "closedTime": 1703015488488,
|
|
103554
|
+
// "closedVal": 59.375,
|
|
103555
|
+
// "trade": true,
|
|
103556
|
+
// "takerQty": 59.31,
|
|
103557
|
+
// "firstFillTime": 1703015281206,
|
|
103558
|
+
// "completionTime": 1703015281206,
|
|
103559
|
+
// "fills": [
|
|
103560
|
+
// {
|
|
103561
|
+
// "_id": "658201d060a95424499394a3",
|
|
103562
|
+
// "seqNumber": 10925300212,
|
|
103563
|
+
// "side": "sell",
|
|
103564
|
+
// "price": 1977,
|
|
103565
|
+
// "qty": 0.03,
|
|
103566
|
+
// "timestamp": 1703015281206
|
|
103567
|
+
// },
|
|
103568
|
+
// {
|
|
103569
|
+
// "_id": "658201d060a95424499394a4",
|
|
103570
|
+
// "seqNumber": 10925321178,
|
|
103571
|
+
// "timestamp": 1703015488483,
|
|
103572
|
+
// "qty": 0.03,
|
|
103573
|
+
// "price": 1979.1666666666667,
|
|
103574
|
+
// "side": "buy"
|
|
103575
|
+
// }
|
|
103576
|
+
// ],
|
|
103577
|
+
// "fees": 0.11875000200000001,
|
|
103578
|
+
// "settledQtys": {
|
|
103579
|
+
// "ETH": -0.000092842104710025
|
|
103580
|
+
// },
|
|
103581
|
+
// "isAncillary": false,
|
|
103582
|
+
// "canceled": false
|
|
103583
|
+
// }
|
|
103584
|
+
//
|
|
103585
|
+
// fetchOrder
|
|
103586
|
+
// {
|
|
103587
|
+
// "_id": "657b4e6d60a954244939ac6f",
|
|
103588
|
+
// "userID": "65671262d93d9525ac009e36",
|
|
103589
|
+
// "orderID": "65671262d93d9525ac009e361702576531985b78465468b9cc544",
|
|
103590
|
+
// "orderType": "market",
|
|
103591
|
+
// "buyingCurrency": "ETH",
|
|
103592
|
+
// "sellingCurrency": "USDC",
|
|
103593
|
+
// "buyingQty": 0.004,
|
|
103594
|
+
// "timeInForce": 4,
|
|
103595
|
+
// "boughtQty": 0.004,
|
|
103596
|
+
// "soldQty": 9.236,
|
|
103597
|
+
// "creationTime": 1702576531995,
|
|
103598
|
+
// "seqNumber": 10874644062,
|
|
103599
|
+
// "firstFillTime": 1702576531995,
|
|
103600
|
+
// "lastFillTime": 1702576531995,
|
|
103601
|
+
// "fills": [
|
|
103602
|
+
// {
|
|
103603
|
+
// "_id": "657b4e6d60a954244939ac70",
|
|
103604
|
+
// "seqNumber": 10874644061,
|
|
103605
|
+
// "timestamp": 1702576531995,
|
|
103606
|
+
// "qty": 0.004,
|
|
103607
|
+
// "price": 2309,
|
|
103608
|
+
// "side": "buy"
|
|
103609
|
+
// }
|
|
103610
|
+
// ],
|
|
103611
|
+
// "completionTime": 1702576531995,
|
|
103612
|
+
// "takerQty": 0.004,
|
|
103613
|
+
// "fees": 0.000004,
|
|
103614
|
+
// "isAncillary": false,
|
|
103615
|
+
// "margin": false,
|
|
103616
|
+
// "trade": false,
|
|
103617
|
+
// "canceled": false
|
|
103618
|
+
// }
|
|
103619
|
+
//
|
|
103620
|
+
let timestamp = this.safeInteger(order, 'creationTime');
|
|
103621
|
+
const isCanceled = this.safeValue(order, 'canceled');
|
|
103622
|
+
let status = undefined;
|
|
103623
|
+
if (isCanceled === true) {
|
|
103624
|
+
if (timestamp === undefined) {
|
|
103625
|
+
timestamp = this.safeInteger(order, 'completionTime'); // market orders with bad price gain IOC - we mark them as 'rejected'?
|
|
103626
|
+
status = 'rejected'; // these orders don't have the 'creationTime` param and have 'canceled': true
|
|
103627
|
+
}
|
|
103628
|
+
else {
|
|
103629
|
+
status = 'canceled';
|
|
103630
|
+
}
|
|
103631
|
+
}
|
|
103632
|
+
else {
|
|
103633
|
+
status = this.safeString(order, 'status');
|
|
103634
|
+
order = this.omit(order, 'status'); // we mark orders from fetchOpenOrders with param 'status': 'open'
|
|
103635
|
+
}
|
|
103636
|
+
const type = this.safeString(order, 'orderType');
|
|
103637
|
+
let buyingQty = this.safeString(order, 'buyingQty');
|
|
103638
|
+
let sellingQty = this.safeString(order, 'sellingQty');
|
|
103639
|
+
const boughtQty = this.safeString(order, 'boughtQty');
|
|
103640
|
+
const soldQty = this.safeString(order, 'soldQty');
|
|
103641
|
+
if (type === 'market') {
|
|
103642
|
+
if ((buyingQty === undefined) && (boughtQty !== undefined) && (boughtQty !== '0')) {
|
|
103643
|
+
buyingQty = boughtQty;
|
|
103644
|
+
}
|
|
103645
|
+
if ((sellingQty === undefined) && (soldQty !== undefined) && (soldQty !== '0')) {
|
|
103646
|
+
sellingQty = soldQty;
|
|
103647
|
+
}
|
|
103648
|
+
}
|
|
103649
|
+
const buyingCurrencyId = this.safeString(order, 'buyingCurrency', '');
|
|
103650
|
+
const sellingCurrencyId = this.safeString(order, 'sellingCurrency', '');
|
|
103651
|
+
const byuingIdPlusSellingId = buyingCurrencyId + sellingCurrencyId;
|
|
103652
|
+
const sellingIdPlusBuyingId = sellingCurrencyId + buyingCurrencyId;
|
|
103653
|
+
let side = undefined;
|
|
103654
|
+
let marketId = undefined;
|
|
103655
|
+
let baseAmount = buyingQty;
|
|
103656
|
+
let quoteAmount = buyingQty;
|
|
103657
|
+
let filled = undefined;
|
|
103658
|
+
let cost = undefined;
|
|
103659
|
+
let feeInBaseOrQuote = undefined;
|
|
103660
|
+
const marketsById = this.indexBy(this.markets, 'id');
|
|
103661
|
+
if (this.safeValue(marketsById, byuingIdPlusSellingId) !== undefined) {
|
|
103662
|
+
side = 'buy';
|
|
103663
|
+
marketId = byuingIdPlusSellingId;
|
|
103664
|
+
quoteAmount = sellingQty;
|
|
103665
|
+
filled = boughtQty;
|
|
103666
|
+
cost = soldQty;
|
|
103667
|
+
feeInBaseOrQuote = 'base';
|
|
103668
|
+
}
|
|
103669
|
+
else if (this.safeValue(marketsById, sellingIdPlusBuyingId) !== undefined) {
|
|
103670
|
+
side = 'sell';
|
|
103671
|
+
marketId = sellingIdPlusBuyingId;
|
|
103672
|
+
baseAmount = sellingQty;
|
|
103673
|
+
filled = soldQty;
|
|
103674
|
+
cost = boughtQty;
|
|
103675
|
+
feeInBaseOrQuote = 'quote';
|
|
103676
|
+
}
|
|
103677
|
+
let price = undefined;
|
|
103678
|
+
if ((baseAmount !== undefined) && (quoteAmount !== undefined)) {
|
|
103679
|
+
price = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringDiv(quoteAmount, baseAmount);
|
|
103680
|
+
}
|
|
103681
|
+
market = this.safeMarket(marketId, market);
|
|
103682
|
+
let fee = undefined;
|
|
103683
|
+
const feeCost = this.safeString(order, 'fees');
|
|
103684
|
+
if ((feeCost !== undefined) && (feeInBaseOrQuote !== undefined)) {
|
|
103685
|
+
fee = {
|
|
103686
|
+
'currency': market[feeInBaseOrQuote],
|
|
103687
|
+
'cost': feeCost,
|
|
103688
|
+
'rate': undefined,
|
|
103689
|
+
};
|
|
103690
|
+
}
|
|
103691
|
+
const trades = this.safeValue(order, 'fills', []);
|
|
103692
|
+
const userData = this.safeValue(order, 'userData', {});
|
|
103693
|
+
const triggerPrice = this.safeString(order, 'stopPrice');
|
|
103694
|
+
const clientOrderId = this.safeString(userData, 'comment');
|
|
103695
|
+
const takeProfitPrice = this.safeString(userData, 'takeProfit');
|
|
103696
|
+
const stopLossPrice = this.safeString(userData, 'stopLoss');
|
|
103697
|
+
return this.safeOrder({
|
|
103698
|
+
'id': this.safeString(order, 'orderID'),
|
|
103699
|
+
'clientOrderId': clientOrderId,
|
|
103700
|
+
'timestamp': timestamp,
|
|
103701
|
+
'datetime': this.iso8601(timestamp),
|
|
103702
|
+
'lastTradeTimestamp': this.safeInteger(order, 'lastFillTime'),
|
|
103703
|
+
'status': status,
|
|
103704
|
+
'symbol': market['symbol'],
|
|
103705
|
+
'type': type,
|
|
103706
|
+
'timeInForce': this.parseOrderTimeInForce(this.safeInteger(order, 'timeInForce')),
|
|
103707
|
+
'side': side,
|
|
103708
|
+
'price': price,
|
|
103709
|
+
'triggerPrice': triggerPrice,
|
|
103710
|
+
'takeProfitPrice': takeProfitPrice,
|
|
103711
|
+
'stopLossPrice': stopLossPrice,
|
|
103712
|
+
'average': undefined,
|
|
103713
|
+
'amount': baseAmount,
|
|
103714
|
+
'cost': cost,
|
|
103715
|
+
'filled': filled,
|
|
103716
|
+
'remaining': undefined,
|
|
103717
|
+
'fee': fee,
|
|
103718
|
+
'fees': undefined,
|
|
103719
|
+
'trades': trades,
|
|
103720
|
+
'info': order,
|
|
103721
|
+
}, market);
|
|
103722
|
+
}
|
|
103723
|
+
parseOrderTimeInForce(timeInForce) {
|
|
103724
|
+
const timeInForceTypes = [
|
|
103725
|
+
undefined,
|
|
103726
|
+
'GTC',
|
|
103727
|
+
'IOC',
|
|
103728
|
+
'GTD',
|
|
103729
|
+
'FOK',
|
|
103730
|
+
];
|
|
103731
|
+
return this.safeValue(timeInForceTypes, timeInForce, timeInForce);
|
|
103732
|
+
}
|
|
103733
|
+
async borrowCrossMargin(code, amount, params = {}) {
|
|
103734
|
+
/**
|
|
103735
|
+
* @method
|
|
103736
|
+
* @name coinmetro#borrowCrossMargin
|
|
103737
|
+
* @description create a loan to borrow margin
|
|
103738
|
+
* @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#5b90b3b9-e5db-4d07-ac9d-d680a06fd110
|
|
103739
|
+
* @param {string} code unified currency code of the currency to borrow
|
|
103740
|
+
* @param {float} amount the amount to borrow
|
|
103741
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
103742
|
+
* @returns {object} a [margin loan structure]{@link https://docs.ccxt.com/#/?id=margin-loan-structure}
|
|
103743
|
+
*/
|
|
103744
|
+
await this.loadMarkets();
|
|
103745
|
+
const currency = this.currency(code);
|
|
103746
|
+
const currencyId = currency['id'];
|
|
103747
|
+
const request = {};
|
|
103748
|
+
request[currencyId] = this.currencyToPrecision(code, amount);
|
|
103749
|
+
const response = await this.privatePutUsersMarginCollateral(this.extend(request, params));
|
|
103750
|
+
//
|
|
103751
|
+
// { "message": "OK" }
|
|
103752
|
+
//
|
|
103753
|
+
const result = this.safeValue(response, 'result', {});
|
|
103754
|
+
const transaction = this.parseMarginLoan(result, currency);
|
|
103755
|
+
return this.extend(transaction, {
|
|
103756
|
+
'amount': amount,
|
|
103757
|
+
});
|
|
103758
|
+
}
|
|
103759
|
+
parseMarginLoan(info, currency = undefined) {
|
|
103760
|
+
const currencyId = this.safeString(info, 'coin');
|
|
103761
|
+
return {
|
|
103762
|
+
'id': undefined,
|
|
103763
|
+
'currency': this.safeCurrencyCode(currencyId, currency),
|
|
103764
|
+
'amount': undefined,
|
|
103765
|
+
'symbol': undefined,
|
|
103766
|
+
'timestamp': undefined,
|
|
103767
|
+
'datetime': undefined,
|
|
103768
|
+
'info': info,
|
|
103769
|
+
};
|
|
103770
|
+
}
|
|
103771
|
+
sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
|
|
103772
|
+
const request = this.omit(params, this.extractParams(path));
|
|
103773
|
+
const endpoint = '/' + this.implodeParams(path, params);
|
|
103774
|
+
let url = this.urls['api'][api] + endpoint;
|
|
103775
|
+
const query = this.urlencode(request);
|
|
103776
|
+
if (api === 'private') {
|
|
103777
|
+
if (headers === undefined) {
|
|
103778
|
+
headers = {};
|
|
103779
|
+
}
|
|
103780
|
+
headers['CCXT'] = true;
|
|
103781
|
+
if (url === 'https://api.coinmetro.com/jwt') { // handle with headers for login endpoint
|
|
103782
|
+
headers['X-Device-Id'] = 'bypass';
|
|
103783
|
+
if (this.twofa !== undefined) {
|
|
103784
|
+
headers['X-OTP'] = this.twofa;
|
|
103785
|
+
}
|
|
103786
|
+
}
|
|
103787
|
+
else if (url === 'https://api.coinmetro.com/jwtDevice') { // handle with headers for long lived token login endpoint
|
|
103788
|
+
headers['X-Device-Id'] = this.uid;
|
|
103789
|
+
if (this.twofa !== undefined) {
|
|
103790
|
+
headers['X-OTP'] = this.twofa;
|
|
103791
|
+
}
|
|
103792
|
+
}
|
|
103793
|
+
else {
|
|
103794
|
+
headers['Authorization'] = 'Bearer ' + this.token;
|
|
103795
|
+
if (!url.startsWith('https://api.coinmetro.com/open')) { // if not sandbox endpoint
|
|
103796
|
+
this.checkRequiredCredentials();
|
|
103797
|
+
headers['X-Device-Id'] = this.uid;
|
|
103798
|
+
}
|
|
103799
|
+
}
|
|
103800
|
+
if ((method === 'POST') || (method === 'PUT')) {
|
|
103801
|
+
headers['Content-Type'] = 'application/x-www-form-urlencoded';
|
|
103802
|
+
body = this.urlencode(request);
|
|
103803
|
+
}
|
|
103804
|
+
}
|
|
103805
|
+
else if (query.length !== 0) {
|
|
103806
|
+
url += '?' + query;
|
|
103807
|
+
}
|
|
103808
|
+
while (url.endsWith('/')) {
|
|
103809
|
+
url = url.slice(0, url.length - 1);
|
|
103810
|
+
}
|
|
103811
|
+
return { 'url': url, 'method': method, 'body': body, 'headers': headers };
|
|
103812
|
+
}
|
|
103813
|
+
handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
|
|
103814
|
+
if (response === undefined) {
|
|
103815
|
+
return undefined;
|
|
103816
|
+
}
|
|
103817
|
+
if ((code !== 200) && (code !== 201) && (code !== 202)) {
|
|
103818
|
+
const feedback = this.id + ' ' + body;
|
|
103819
|
+
const message = this.safeString(response, 'message');
|
|
103820
|
+
this.throwBroadlyMatchedException(this.exceptions['broad'], message, feedback);
|
|
103821
|
+
this.throwExactlyMatchedException(this.exceptions['exact'], message, feedback);
|
|
103822
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError(feedback);
|
|
103823
|
+
}
|
|
103824
|
+
return undefined;
|
|
103825
|
+
}
|
|
103826
|
+
}
|
|
103827
|
+
|
|
103828
|
+
|
|
101802
103829
|
/***/ }),
|
|
101803
103830
|
|
|
101804
103831
|
/***/ 7811:
|
|
@@ -163387,6 +165414,10 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
163387
165414
|
|
|
163388
165415
|
|
|
163389
165416
|
// ---------------------------------------------------------------------------
|
|
165417
|
+
/**
|
|
165418
|
+
* @class kucoinfutures
|
|
165419
|
+
* @augments Exchange
|
|
165420
|
+
*/
|
|
163390
165421
|
class kucoinfutures extends _abstract_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
163391
165422
|
describe() {
|
|
163392
165423
|
return this.deepExtend(super.describe(), {
|
|
@@ -278984,22 +281015,24 @@ class upbit extends _abstract_upbit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
278984
281015
|
}
|
|
278985
281016
|
parseDepositAddress(depositAddress, currency = undefined) {
|
|
278986
281017
|
//
|
|
278987
|
-
//
|
|
278988
|
-
//
|
|
278989
|
-
//
|
|
278990
|
-
//
|
|
278991
|
-
//
|
|
281018
|
+
// {
|
|
281019
|
+
// currency: 'XRP',
|
|
281020
|
+
// net_type: 'XRP',
|
|
281021
|
+
// deposit_address: 'raQwCVAJVqjrVm1Nj5SFRcX8i22BhdC9WA',
|
|
281022
|
+
// secondary_address: '167029435'
|
|
281023
|
+
// }
|
|
278992
281024
|
//
|
|
278993
281025
|
const address = this.safeString(depositAddress, 'deposit_address');
|
|
278994
281026
|
const tag = this.safeString(depositAddress, 'secondary_address');
|
|
278995
281027
|
const currencyId = this.safeString(depositAddress, 'currency');
|
|
278996
281028
|
const code = this.safeCurrencyCode(currencyId);
|
|
281029
|
+
const networkId = this.safeString(depositAddress, 'net_type');
|
|
278997
281030
|
this.checkAddress(address);
|
|
278998
281031
|
return {
|
|
278999
281032
|
'currency': code,
|
|
279000
281033
|
'address': address,
|
|
279001
281034
|
'tag': tag,
|
|
279002
|
-
'network':
|
|
281035
|
+
'network': this.networkIdToCode(networkId),
|
|
279003
281036
|
'info': depositAddress,
|
|
279004
281037
|
};
|
|
279005
281038
|
}
|
|
@@ -279011,19 +281044,27 @@ class upbit extends _abstract_upbit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
279011
281044
|
* @description fetch the deposit address for a currency associated with this account
|
|
279012
281045
|
* @param {string} code unified currency code
|
|
279013
281046
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
281047
|
+
* @param {string} params.network deposit chain, can view all chains via this.publicGetWalletAssets, default is eth, unless the currency has a default chain within this.options['networks']
|
|
279014
281048
|
* @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
|
|
279015
281049
|
*/
|
|
279016
281050
|
await this.loadMarkets();
|
|
279017
281051
|
const currency = this.currency(code);
|
|
281052
|
+
let networkCode = undefined;
|
|
281053
|
+
[networkCode, params] = this.handleNetworkCodeAndParams(params);
|
|
281054
|
+
if (networkCode === undefined) {
|
|
281055
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' fetchDepositAddress requires params["network"]');
|
|
281056
|
+
}
|
|
279018
281057
|
const response = await this.privateGetDepositsCoinAddress(this.extend({
|
|
279019
281058
|
'currency': currency['id'],
|
|
281059
|
+
'net_type': this.networkCodeToId(networkCode, currency['code']),
|
|
279020
281060
|
}, params));
|
|
279021
281061
|
//
|
|
279022
|
-
//
|
|
279023
|
-
//
|
|
279024
|
-
//
|
|
279025
|
-
//
|
|
279026
|
-
//
|
|
281062
|
+
// {
|
|
281063
|
+
// currency: 'XRP',
|
|
281064
|
+
// net_type: 'XRP',
|
|
281065
|
+
// deposit_address: 'raQwCVAJVqjrVm1Nj5SFRcX8i22BhdC9WA',
|
|
281066
|
+
// secondary_address: '167029435'
|
|
281067
|
+
// }
|
|
279027
281068
|
//
|
|
279028
281069
|
return this.parseDepositAddress(response);
|
|
279029
281070
|
}
|
|
@@ -297058,39 +299099,39 @@ var __webpack_exports__ = {};
|
|
|
297058
299099
|
(() => {
|
|
297059
299100
|
__webpack_require__.r(__webpack_exports__);
|
|
297060
299101
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
297061
|
-
/* harmony export */ AccountNotEnabled: () => (/* reexport safe */
|
|
297062
|
-
/* harmony export */ AccountSuspended: () => (/* reexport safe */
|
|
297063
|
-
/* harmony export */ AddressPending: () => (/* reexport safe */
|
|
297064
|
-
/* harmony export */ ArgumentsRequired: () => (/* reexport safe */
|
|
297065
|
-
/* harmony export */ AuthenticationError: () => (/* reexport safe */
|
|
297066
|
-
/* harmony export */ BadRequest: () => (/* reexport safe */
|
|
297067
|
-
/* harmony export */ BadResponse: () => (/* reexport safe */
|
|
297068
|
-
/* harmony export */ BadSymbol: () => (/* reexport safe */
|
|
297069
|
-
/* harmony export */ BaseError: () => (/* reexport safe */
|
|
297070
|
-
/* harmony export */ CancelPending: () => (/* reexport safe */
|
|
297071
|
-
/* harmony export */ DDoSProtection: () => (/* reexport safe */
|
|
297072
|
-
/* harmony export */ DuplicateOrderId: () => (/* reexport safe */
|
|
299102
|
+
/* harmony export */ AccountNotEnabled: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.AccountNotEnabled),
|
|
299103
|
+
/* harmony export */ AccountSuspended: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.AccountSuspended),
|
|
299104
|
+
/* harmony export */ AddressPending: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.AddressPending),
|
|
299105
|
+
/* harmony export */ ArgumentsRequired: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.ArgumentsRequired),
|
|
299106
|
+
/* harmony export */ AuthenticationError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.AuthenticationError),
|
|
299107
|
+
/* harmony export */ BadRequest: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.BadRequest),
|
|
299108
|
+
/* harmony export */ BadResponse: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.BadResponse),
|
|
299109
|
+
/* harmony export */ BadSymbol: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.BadSymbol),
|
|
299110
|
+
/* harmony export */ BaseError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.BaseError),
|
|
299111
|
+
/* harmony export */ CancelPending: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.CancelPending),
|
|
299112
|
+
/* harmony export */ DDoSProtection: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.DDoSProtection),
|
|
299113
|
+
/* harmony export */ DuplicateOrderId: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.DuplicateOrderId),
|
|
297073
299114
|
/* harmony export */ Exchange: () => (/* reexport safe */ _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__.e),
|
|
297074
|
-
/* harmony export */ ExchangeError: () => (/* reexport safe */
|
|
297075
|
-
/* harmony export */ ExchangeNotAvailable: () => (/* reexport safe */
|
|
297076
|
-
/* harmony export */ InsufficientFunds: () => (/* reexport safe */
|
|
297077
|
-
/* harmony export */ InvalidAddress: () => (/* reexport safe */
|
|
297078
|
-
/* harmony export */ InvalidNonce: () => (/* reexport safe */
|
|
297079
|
-
/* harmony export */ InvalidOrder: () => (/* reexport safe */
|
|
297080
|
-
/* harmony export */ MarginModeAlreadySet: () => (/* reexport safe */
|
|
297081
|
-
/* harmony export */ NetworkError: () => (/* reexport safe */
|
|
297082
|
-
/* harmony export */ NoChange: () => (/* reexport safe */
|
|
297083
|
-
/* harmony export */ NotSupported: () => (/* reexport safe */
|
|
297084
|
-
/* harmony export */ NullResponse: () => (/* reexport safe */
|
|
297085
|
-
/* harmony export */ OnMaintenance: () => (/* reexport safe */
|
|
297086
|
-
/* harmony export */ OrderImmediatelyFillable: () => (/* reexport safe */
|
|
297087
|
-
/* harmony export */ OrderNotCached: () => (/* reexport safe */
|
|
297088
|
-
/* harmony export */ OrderNotFillable: () => (/* reexport safe */
|
|
297089
|
-
/* harmony export */ OrderNotFound: () => (/* reexport safe */
|
|
297090
|
-
/* harmony export */ PermissionDenied: () => (/* reexport safe */
|
|
297091
|
-
/* harmony export */ Precise: () => (/* reexport safe */
|
|
297092
|
-
/* harmony export */ RateLimitExceeded: () => (/* reexport safe */
|
|
297093
|
-
/* harmony export */ RequestTimeout: () => (/* reexport safe */
|
|
299115
|
+
/* harmony export */ ExchangeError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.ExchangeError),
|
|
299116
|
+
/* harmony export */ ExchangeNotAvailable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.ExchangeNotAvailable),
|
|
299117
|
+
/* harmony export */ InsufficientFunds: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.InsufficientFunds),
|
|
299118
|
+
/* harmony export */ InvalidAddress: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.InvalidAddress),
|
|
299119
|
+
/* harmony export */ InvalidNonce: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.InvalidNonce),
|
|
299120
|
+
/* harmony export */ InvalidOrder: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.InvalidOrder),
|
|
299121
|
+
/* harmony export */ MarginModeAlreadySet: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.MarginModeAlreadySet),
|
|
299122
|
+
/* harmony export */ NetworkError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.NetworkError),
|
|
299123
|
+
/* harmony export */ NoChange: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.NoChange),
|
|
299124
|
+
/* harmony export */ NotSupported: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.NotSupported),
|
|
299125
|
+
/* harmony export */ NullResponse: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.NullResponse),
|
|
299126
|
+
/* harmony export */ OnMaintenance: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.OnMaintenance),
|
|
299127
|
+
/* harmony export */ OrderImmediatelyFillable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.OrderImmediatelyFillable),
|
|
299128
|
+
/* harmony export */ OrderNotCached: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.OrderNotCached),
|
|
299129
|
+
/* harmony export */ OrderNotFillable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.OrderNotFillable),
|
|
299130
|
+
/* harmony export */ OrderNotFound: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.OrderNotFound),
|
|
299131
|
+
/* harmony export */ PermissionDenied: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.PermissionDenied),
|
|
299132
|
+
/* harmony export */ Precise: () => (/* reexport safe */ _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_161__.O),
|
|
299133
|
+
/* harmony export */ RateLimitExceeded: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.RateLimitExceeded),
|
|
299134
|
+
/* harmony export */ RequestTimeout: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.RequestTimeout),
|
|
297094
299135
|
/* harmony export */ ace: () => (/* reexport safe */ _src_ace_js__WEBPACK_IMPORTED_MODULE_1__.Z),
|
|
297095
299136
|
/* harmony export */ alpaca: () => (/* reexport safe */ _src_alpaca_js__WEBPACK_IMPORTED_MODULE_2__.Z),
|
|
297096
299137
|
/* harmony export */ ascendex: () => (/* reexport safe */ _src_ascendex_js__WEBPACK_IMPORTED_MODULE_3__.Z),
|
|
@@ -297135,72 +299176,73 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
297135
299176
|
/* harmony export */ coinex: () => (/* reexport safe */ _src_coinex_js__WEBPACK_IMPORTED_MODULE_42__.Z),
|
|
297136
299177
|
/* harmony export */ coinlist: () => (/* reexport safe */ _src_coinlist_js__WEBPACK_IMPORTED_MODULE_43__.Z),
|
|
297137
299178
|
/* harmony export */ coinmate: () => (/* reexport safe */ _src_coinmate_js__WEBPACK_IMPORTED_MODULE_44__.Z),
|
|
297138
|
-
/* harmony export */
|
|
297139
|
-
/* harmony export */
|
|
297140
|
-
/* harmony export */
|
|
297141
|
-
/* harmony export */
|
|
297142
|
-
/* harmony export */
|
|
299179
|
+
/* harmony export */ coinmetro: () => (/* reexport safe */ _src_coinmetro_js__WEBPACK_IMPORTED_MODULE_45__.Z),
|
|
299180
|
+
/* harmony export */ coinone: () => (/* reexport safe */ _src_coinone_js__WEBPACK_IMPORTED_MODULE_46__.Z),
|
|
299181
|
+
/* harmony export */ coinsph: () => (/* reexport safe */ _src_coinsph_js__WEBPACK_IMPORTED_MODULE_47__.Z),
|
|
299182
|
+
/* harmony export */ coinspot: () => (/* reexport safe */ _src_coinspot_js__WEBPACK_IMPORTED_MODULE_48__.Z),
|
|
299183
|
+
/* harmony export */ cryptocom: () => (/* reexport safe */ _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_49__.Z),
|
|
299184
|
+
/* harmony export */ currencycom: () => (/* reexport safe */ _src_currencycom_js__WEBPACK_IMPORTED_MODULE_50__.Z),
|
|
297143
299185
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
|
|
297144
|
-
/* harmony export */ delta: () => (/* reexport safe */
|
|
297145
|
-
/* harmony export */ deribit: () => (/* reexport safe */
|
|
297146
|
-
/* harmony export */ digifinex: () => (/* reexport safe */
|
|
297147
|
-
/* harmony export */ errors: () => (/* reexport module object */
|
|
299186
|
+
/* harmony export */ delta: () => (/* reexport safe */ _src_delta_js__WEBPACK_IMPORTED_MODULE_51__.Z),
|
|
299187
|
+
/* harmony export */ deribit: () => (/* reexport safe */ _src_deribit_js__WEBPACK_IMPORTED_MODULE_52__.Z),
|
|
299188
|
+
/* harmony export */ digifinex: () => (/* reexport safe */ _src_digifinex_js__WEBPACK_IMPORTED_MODULE_53__.Z),
|
|
299189
|
+
/* harmony export */ errors: () => (/* reexport module object */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__),
|
|
297148
299190
|
/* harmony export */ exchanges: () => (/* binding */ exchanges),
|
|
297149
|
-
/* harmony export */ exmo: () => (/* reexport safe */
|
|
297150
|
-
/* harmony export */ fmfwio: () => (/* reexport safe */
|
|
297151
|
-
/* harmony export */ functions: () => (/* reexport module object */
|
|
297152
|
-
/* harmony export */ gate: () => (/* reexport safe */
|
|
297153
|
-
/* harmony export */ gateio: () => (/* reexport safe */
|
|
297154
|
-
/* harmony export */ gemini: () => (/* reexport safe */
|
|
297155
|
-
/* harmony export */ hitbtc: () => (/* reexport safe */
|
|
297156
|
-
/* harmony export */ hitbtc3: () => (/* reexport safe */
|
|
297157
|
-
/* harmony export */ hollaex: () => (/* reexport safe */
|
|
297158
|
-
/* harmony export */ htx: () => (/* reexport safe */
|
|
297159
|
-
/* harmony export */ huobi: () => (/* reexport safe */
|
|
297160
|
-
/* harmony export */ huobijp: () => (/* reexport safe */
|
|
297161
|
-
/* harmony export */ idex: () => (/* reexport safe */
|
|
297162
|
-
/* harmony export */ independentreserve: () => (/* reexport safe */
|
|
297163
|
-
/* harmony export */ indodax: () => (/* reexport safe */
|
|
297164
|
-
/* harmony export */ kraken: () => (/* reexport safe */
|
|
297165
|
-
/* harmony export */ krakenfutures: () => (/* reexport safe */
|
|
297166
|
-
/* harmony export */ kucoin: () => (/* reexport safe */
|
|
297167
|
-
/* harmony export */ kucoinfutures: () => (/* reexport safe */
|
|
297168
|
-
/* harmony export */ kuna: () => (/* reexport safe */
|
|
297169
|
-
/* harmony export */ latoken: () => (/* reexport safe */
|
|
297170
|
-
/* harmony export */ lbank: () => (/* reexport safe */
|
|
297171
|
-
/* harmony export */ luno: () => (/* reexport safe */
|
|
297172
|
-
/* harmony export */ lykke: () => (/* reexport safe */
|
|
297173
|
-
/* harmony export */ mercado: () => (/* reexport safe */
|
|
297174
|
-
/* harmony export */ mexc: () => (/* reexport safe */
|
|
297175
|
-
/* harmony export */ ndax: () => (/* reexport safe */
|
|
297176
|
-
/* harmony export */ novadax: () => (/* reexport safe */
|
|
297177
|
-
/* harmony export */ oceanex: () => (/* reexport safe */
|
|
297178
|
-
/* harmony export */ okcoin: () => (/* reexport safe */
|
|
297179
|
-
/* harmony export */ okx: () => (/* reexport safe */
|
|
297180
|
-
/* harmony export */ onetrading: () => (/* reexport safe */
|
|
297181
|
-
/* harmony export */ p2b: () => (/* reexport safe */
|
|
297182
|
-
/* harmony export */ paymium: () => (/* reexport safe */
|
|
297183
|
-
/* harmony export */ phemex: () => (/* reexport safe */
|
|
297184
|
-
/* harmony export */ poloniex: () => (/* reexport safe */
|
|
297185
|
-
/* harmony export */ poloniexfutures: () => (/* reexport safe */
|
|
299191
|
+
/* harmony export */ exmo: () => (/* reexport safe */ _src_exmo_js__WEBPACK_IMPORTED_MODULE_54__.Z),
|
|
299192
|
+
/* harmony export */ fmfwio: () => (/* reexport safe */ _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_55__.Z),
|
|
299193
|
+
/* harmony export */ functions: () => (/* reexport module object */ _src_base_functions_js__WEBPACK_IMPORTED_MODULE_162__),
|
|
299194
|
+
/* harmony export */ gate: () => (/* reexport safe */ _src_gate_js__WEBPACK_IMPORTED_MODULE_56__.Z),
|
|
299195
|
+
/* harmony export */ gateio: () => (/* reexport safe */ _src_gateio_js__WEBPACK_IMPORTED_MODULE_57__.Z),
|
|
299196
|
+
/* harmony export */ gemini: () => (/* reexport safe */ _src_gemini_js__WEBPACK_IMPORTED_MODULE_58__.Z),
|
|
299197
|
+
/* harmony export */ hitbtc: () => (/* reexport safe */ _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_59__.Z),
|
|
299198
|
+
/* harmony export */ hitbtc3: () => (/* reexport safe */ _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_60__.Z),
|
|
299199
|
+
/* harmony export */ hollaex: () => (/* reexport safe */ _src_hollaex_js__WEBPACK_IMPORTED_MODULE_61__.Z),
|
|
299200
|
+
/* harmony export */ htx: () => (/* reexport safe */ _src_htx_js__WEBPACK_IMPORTED_MODULE_62__.Z),
|
|
299201
|
+
/* harmony export */ huobi: () => (/* reexport safe */ _src_huobi_js__WEBPACK_IMPORTED_MODULE_63__.Z),
|
|
299202
|
+
/* harmony export */ huobijp: () => (/* reexport safe */ _src_huobijp_js__WEBPACK_IMPORTED_MODULE_64__.Z),
|
|
299203
|
+
/* harmony export */ idex: () => (/* reexport safe */ _src_idex_js__WEBPACK_IMPORTED_MODULE_65__.Z),
|
|
299204
|
+
/* harmony export */ independentreserve: () => (/* reexport safe */ _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_66__.Z),
|
|
299205
|
+
/* harmony export */ indodax: () => (/* reexport safe */ _src_indodax_js__WEBPACK_IMPORTED_MODULE_67__.Z),
|
|
299206
|
+
/* harmony export */ kraken: () => (/* reexport safe */ _src_kraken_js__WEBPACK_IMPORTED_MODULE_68__.Z),
|
|
299207
|
+
/* harmony export */ krakenfutures: () => (/* reexport safe */ _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_69__.Z),
|
|
299208
|
+
/* harmony export */ kucoin: () => (/* reexport safe */ _src_kucoin_js__WEBPACK_IMPORTED_MODULE_70__.Z),
|
|
299209
|
+
/* harmony export */ kucoinfutures: () => (/* reexport safe */ _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_71__.Z),
|
|
299210
|
+
/* harmony export */ kuna: () => (/* reexport safe */ _src_kuna_js__WEBPACK_IMPORTED_MODULE_72__.Z),
|
|
299211
|
+
/* harmony export */ latoken: () => (/* reexport safe */ _src_latoken_js__WEBPACK_IMPORTED_MODULE_73__.Z),
|
|
299212
|
+
/* harmony export */ lbank: () => (/* reexport safe */ _src_lbank_js__WEBPACK_IMPORTED_MODULE_74__.Z),
|
|
299213
|
+
/* harmony export */ luno: () => (/* reexport safe */ _src_luno_js__WEBPACK_IMPORTED_MODULE_75__.Z),
|
|
299214
|
+
/* harmony export */ lykke: () => (/* reexport safe */ _src_lykke_js__WEBPACK_IMPORTED_MODULE_76__.Z),
|
|
299215
|
+
/* harmony export */ mercado: () => (/* reexport safe */ _src_mercado_js__WEBPACK_IMPORTED_MODULE_77__.Z),
|
|
299216
|
+
/* harmony export */ mexc: () => (/* reexport safe */ _src_mexc_js__WEBPACK_IMPORTED_MODULE_78__.Z),
|
|
299217
|
+
/* harmony export */ ndax: () => (/* reexport safe */ _src_ndax_js__WEBPACK_IMPORTED_MODULE_79__.Z),
|
|
299218
|
+
/* harmony export */ novadax: () => (/* reexport safe */ _src_novadax_js__WEBPACK_IMPORTED_MODULE_80__.Z),
|
|
299219
|
+
/* harmony export */ oceanex: () => (/* reexport safe */ _src_oceanex_js__WEBPACK_IMPORTED_MODULE_81__.Z),
|
|
299220
|
+
/* harmony export */ okcoin: () => (/* reexport safe */ _src_okcoin_js__WEBPACK_IMPORTED_MODULE_82__.Z),
|
|
299221
|
+
/* harmony export */ okx: () => (/* reexport safe */ _src_okx_js__WEBPACK_IMPORTED_MODULE_83__.Z),
|
|
299222
|
+
/* harmony export */ onetrading: () => (/* reexport safe */ _src_onetrading_js__WEBPACK_IMPORTED_MODULE_84__.Z),
|
|
299223
|
+
/* harmony export */ p2b: () => (/* reexport safe */ _src_p2b_js__WEBPACK_IMPORTED_MODULE_85__.Z),
|
|
299224
|
+
/* harmony export */ paymium: () => (/* reexport safe */ _src_paymium_js__WEBPACK_IMPORTED_MODULE_86__.Z),
|
|
299225
|
+
/* harmony export */ phemex: () => (/* reexport safe */ _src_phemex_js__WEBPACK_IMPORTED_MODULE_87__.Z),
|
|
299226
|
+
/* harmony export */ poloniex: () => (/* reexport safe */ _src_poloniex_js__WEBPACK_IMPORTED_MODULE_88__.Z),
|
|
299227
|
+
/* harmony export */ poloniexfutures: () => (/* reexport safe */ _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_89__.Z),
|
|
297186
299228
|
/* harmony export */ pro: () => (/* binding */ pro),
|
|
297187
|
-
/* harmony export */ probit: () => (/* reexport safe */
|
|
297188
|
-
/* harmony export */ timex: () => (/* reexport safe */
|
|
297189
|
-
/* harmony export */ tokocrypto: () => (/* reexport safe */
|
|
297190
|
-
/* harmony export */ upbit: () => (/* reexport safe */
|
|
299229
|
+
/* harmony export */ probit: () => (/* reexport safe */ _src_probit_js__WEBPACK_IMPORTED_MODULE_90__.Z),
|
|
299230
|
+
/* harmony export */ timex: () => (/* reexport safe */ _src_timex_js__WEBPACK_IMPORTED_MODULE_91__.Z),
|
|
299231
|
+
/* harmony export */ tokocrypto: () => (/* reexport safe */ _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_92__.Z),
|
|
299232
|
+
/* harmony export */ upbit: () => (/* reexport safe */ _src_upbit_js__WEBPACK_IMPORTED_MODULE_93__.Z),
|
|
297191
299233
|
/* harmony export */ version: () => (/* binding */ version),
|
|
297192
|
-
/* harmony export */ wavesexchange: () => (/* reexport safe */
|
|
297193
|
-
/* harmony export */ wazirx: () => (/* reexport safe */
|
|
297194
|
-
/* harmony export */ whitebit: () => (/* reexport safe */
|
|
297195
|
-
/* harmony export */ woo: () => (/* reexport safe */
|
|
297196
|
-
/* harmony export */ yobit: () => (/* reexport safe */
|
|
297197
|
-
/* harmony export */ zaif: () => (/* reexport safe */
|
|
297198
|
-
/* harmony export */ zonda: () => (/* reexport safe */
|
|
299234
|
+
/* harmony export */ wavesexchange: () => (/* reexport safe */ _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_94__.Z),
|
|
299235
|
+
/* harmony export */ wazirx: () => (/* reexport safe */ _src_wazirx_js__WEBPACK_IMPORTED_MODULE_95__.Z),
|
|
299236
|
+
/* harmony export */ whitebit: () => (/* reexport safe */ _src_whitebit_js__WEBPACK_IMPORTED_MODULE_96__.Z),
|
|
299237
|
+
/* harmony export */ woo: () => (/* reexport safe */ _src_woo_js__WEBPACK_IMPORTED_MODULE_97__.Z),
|
|
299238
|
+
/* harmony export */ yobit: () => (/* reexport safe */ _src_yobit_js__WEBPACK_IMPORTED_MODULE_98__.Z),
|
|
299239
|
+
/* harmony export */ zaif: () => (/* reexport safe */ _src_zaif_js__WEBPACK_IMPORTED_MODULE_99__.Z),
|
|
299240
|
+
/* harmony export */ zonda: () => (/* reexport safe */ _src_zonda_js__WEBPACK_IMPORTED_MODULE_100__.Z)
|
|
297199
299241
|
/* harmony export */ });
|
|
297200
299242
|
/* harmony import */ var _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3043);
|
|
297201
|
-
/* harmony import */ var
|
|
297202
|
-
/* harmony import */ var
|
|
297203
|
-
/* harmony import */ var
|
|
299243
|
+
/* harmony import */ var _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_161__ = __webpack_require__(2194);
|
|
299244
|
+
/* harmony import */ var _src_base_functions_js__WEBPACK_IMPORTED_MODULE_162__ = __webpack_require__(7100);
|
|
299245
|
+
/* harmony import */ var _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__ = __webpack_require__(6689);
|
|
297204
299246
|
/* harmony import */ var _src_ace_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9869);
|
|
297205
299247
|
/* harmony import */ var _src_alpaca_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5660);
|
|
297206
299248
|
/* harmony import */ var _src_ascendex_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9612);
|
|
@@ -297245,121 +299287,122 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
297245
299287
|
/* harmony import */ var _src_coinex_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(332);
|
|
297246
299288
|
/* harmony import */ var _src_coinlist_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(3623);
|
|
297247
299289
|
/* harmony import */ var _src_coinmate_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(9816);
|
|
297248
|
-
/* harmony import */ var
|
|
297249
|
-
/* harmony import */ var
|
|
297250
|
-
/* harmony import */ var
|
|
297251
|
-
/* harmony import */ var
|
|
297252
|
-
/* harmony import */ var
|
|
297253
|
-
/* harmony import */ var
|
|
297254
|
-
/* harmony import */ var
|
|
297255
|
-
/* harmony import */ var
|
|
297256
|
-
/* harmony import */ var
|
|
297257
|
-
/* harmony import */ var
|
|
297258
|
-
/* harmony import */ var
|
|
297259
|
-
/* harmony import */ var
|
|
297260
|
-
/* harmony import */ var
|
|
297261
|
-
/* harmony import */ var
|
|
297262
|
-
/* harmony import */ var
|
|
297263
|
-
/* harmony import */ var
|
|
297264
|
-
/* harmony import */ var
|
|
297265
|
-
/* harmony import */ var
|
|
297266
|
-
/* harmony import */ var
|
|
297267
|
-
/* harmony import */ var
|
|
297268
|
-
/* harmony import */ var
|
|
297269
|
-
/* harmony import */ var
|
|
297270
|
-
/* harmony import */ var
|
|
297271
|
-
/* harmony import */ var
|
|
297272
|
-
/* harmony import */ var
|
|
297273
|
-
/* harmony import */ var
|
|
297274
|
-
/* harmony import */ var
|
|
297275
|
-
/* harmony import */ var
|
|
297276
|
-
/* harmony import */ var
|
|
297277
|
-
/* harmony import */ var
|
|
297278
|
-
/* harmony import */ var
|
|
297279
|
-
/* harmony import */ var
|
|
297280
|
-
/* harmony import */ var
|
|
297281
|
-
/* harmony import */ var
|
|
297282
|
-
/* harmony import */ var
|
|
297283
|
-
/* harmony import */ var
|
|
297284
|
-
/* harmony import */ var
|
|
297285
|
-
/* harmony import */ var
|
|
297286
|
-
/* harmony import */ var
|
|
297287
|
-
/* harmony import */ var
|
|
297288
|
-
/* harmony import */ var
|
|
297289
|
-
/* harmony import */ var
|
|
297290
|
-
/* harmony import */ var
|
|
297291
|
-
/* harmony import */ var
|
|
297292
|
-
/* harmony import */ var
|
|
297293
|
-
/* harmony import */ var
|
|
297294
|
-
/* harmony import */ var
|
|
297295
|
-
/* harmony import */ var
|
|
297296
|
-
/* harmony import */ var
|
|
297297
|
-
/* harmony import */ var
|
|
297298
|
-
/* harmony import */ var
|
|
297299
|
-
/* harmony import */ var
|
|
297300
|
-
/* harmony import */ var
|
|
297301
|
-
/* harmony import */ var
|
|
297302
|
-
/* harmony import */ var
|
|
297303
|
-
/* harmony import */ var
|
|
297304
|
-
/* harmony import */ var
|
|
297305
|
-
/* harmony import */ var
|
|
297306
|
-
/* harmony import */ var
|
|
297307
|
-
/* harmony import */ var
|
|
297308
|
-
/* harmony import */ var
|
|
297309
|
-
/* harmony import */ var
|
|
297310
|
-
/* harmony import */ var
|
|
297311
|
-
/* harmony import */ var
|
|
297312
|
-
/* harmony import */ var
|
|
297313
|
-
/* harmony import */ var
|
|
297314
|
-
/* harmony import */ var
|
|
297315
|
-
/* harmony import */ var
|
|
297316
|
-
/* harmony import */ var
|
|
297317
|
-
/* harmony import */ var
|
|
297318
|
-
/* harmony import */ var
|
|
297319
|
-
/* harmony import */ var
|
|
297320
|
-
/* harmony import */ var
|
|
297321
|
-
/* harmony import */ var
|
|
297322
|
-
/* harmony import */ var
|
|
297323
|
-
/* harmony import */ var
|
|
297324
|
-
/* harmony import */ var
|
|
297325
|
-
/* harmony import */ var
|
|
297326
|
-
/* harmony import */ var
|
|
297327
|
-
/* harmony import */ var
|
|
297328
|
-
/* harmony import */ var
|
|
297329
|
-
/* harmony import */ var
|
|
297330
|
-
/* harmony import */ var
|
|
297331
|
-
/* harmony import */ var
|
|
297332
|
-
/* harmony import */ var
|
|
297333
|
-
/* harmony import */ var
|
|
297334
|
-
/* harmony import */ var
|
|
297335
|
-
/* harmony import */ var
|
|
297336
|
-
/* harmony import */ var
|
|
297337
|
-
/* harmony import */ var
|
|
297338
|
-
/* harmony import */ var
|
|
297339
|
-
/* harmony import */ var
|
|
297340
|
-
/* harmony import */ var
|
|
297341
|
-
/* harmony import */ var
|
|
297342
|
-
/* harmony import */ var
|
|
297343
|
-
/* harmony import */ var
|
|
297344
|
-
/* harmony import */ var
|
|
297345
|
-
/* harmony import */ var
|
|
297346
|
-
/* harmony import */ var
|
|
297347
|
-
/* harmony import */ var
|
|
297348
|
-
/* harmony import */ var
|
|
297349
|
-
/* harmony import */ var
|
|
297350
|
-
/* harmony import */ var
|
|
297351
|
-
/* harmony import */ var
|
|
297352
|
-
/* harmony import */ var
|
|
297353
|
-
/* harmony import */ var
|
|
297354
|
-
/* harmony import */ var
|
|
297355
|
-
/* harmony import */ var
|
|
297356
|
-
/* harmony import */ var
|
|
297357
|
-
/* harmony import */ var
|
|
297358
|
-
/* harmony import */ var
|
|
297359
|
-
/* harmony import */ var
|
|
297360
|
-
/* harmony import */ var
|
|
297361
|
-
/* harmony import */ var
|
|
297362
|
-
/* harmony import */ var
|
|
299290
|
+
/* harmony import */ var _src_coinmetro_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(4759);
|
|
299291
|
+
/* harmony import */ var _src_coinone_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(7811);
|
|
299292
|
+
/* harmony import */ var _src_coinsph_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(5782);
|
|
299293
|
+
/* harmony import */ var _src_coinspot_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(7794);
|
|
299294
|
+
/* harmony import */ var _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(9129);
|
|
299295
|
+
/* harmony import */ var _src_currencycom_js__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(3214);
|
|
299296
|
+
/* harmony import */ var _src_delta_js__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(1753);
|
|
299297
|
+
/* harmony import */ var _src_deribit_js__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(24);
|
|
299298
|
+
/* harmony import */ var _src_digifinex_js__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(8846);
|
|
299299
|
+
/* harmony import */ var _src_exmo_js__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(1729);
|
|
299300
|
+
/* harmony import */ var _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(5788);
|
|
299301
|
+
/* harmony import */ var _src_gate_js__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(7290);
|
|
299302
|
+
/* harmony import */ var _src_gateio_js__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(7036);
|
|
299303
|
+
/* harmony import */ var _src_gemini_js__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(6743);
|
|
299304
|
+
/* harmony import */ var _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(4714);
|
|
299305
|
+
/* harmony import */ var _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(4815);
|
|
299306
|
+
/* harmony import */ var _src_hollaex_js__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(8422);
|
|
299307
|
+
/* harmony import */ var _src_htx_js__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(5939);
|
|
299308
|
+
/* harmony import */ var _src_huobi_js__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(8146);
|
|
299309
|
+
/* harmony import */ var _src_huobijp_js__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(7034);
|
|
299310
|
+
/* harmony import */ var _src_idex_js__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(8232);
|
|
299311
|
+
/* harmony import */ var _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(9570);
|
|
299312
|
+
/* harmony import */ var _src_indodax_js__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(1605);
|
|
299313
|
+
/* harmony import */ var _src_kraken_js__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(9922);
|
|
299314
|
+
/* harmony import */ var _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(4470);
|
|
299315
|
+
/* harmony import */ var _src_kucoin_js__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(3583);
|
|
299316
|
+
/* harmony import */ var _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(1924);
|
|
299317
|
+
/* harmony import */ var _src_kuna_js__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(7732);
|
|
299318
|
+
/* harmony import */ var _src_latoken_js__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(2545);
|
|
299319
|
+
/* harmony import */ var _src_lbank_js__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(3944);
|
|
299320
|
+
/* harmony import */ var _src_luno_js__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(1758);
|
|
299321
|
+
/* harmony import */ var _src_lykke_js__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(3803);
|
|
299322
|
+
/* harmony import */ var _src_mercado_js__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(9013);
|
|
299323
|
+
/* harmony import */ var _src_mexc_js__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(6641);
|
|
299324
|
+
/* harmony import */ var _src_ndax_js__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(4531);
|
|
299325
|
+
/* harmony import */ var _src_novadax_js__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(2449);
|
|
299326
|
+
/* harmony import */ var _src_oceanex_js__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(6749);
|
|
299327
|
+
/* harmony import */ var _src_okcoin_js__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(3007);
|
|
299328
|
+
/* harmony import */ var _src_okx_js__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(4042);
|
|
299329
|
+
/* harmony import */ var _src_onetrading_js__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(6481);
|
|
299330
|
+
/* harmony import */ var _src_p2b_js__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(2466);
|
|
299331
|
+
/* harmony import */ var _src_paymium_js__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(7082);
|
|
299332
|
+
/* harmony import */ var _src_phemex_js__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(79);
|
|
299333
|
+
/* harmony import */ var _src_poloniex_js__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(8891);
|
|
299334
|
+
/* harmony import */ var _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(6877);
|
|
299335
|
+
/* harmony import */ var _src_probit_js__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(3657);
|
|
299336
|
+
/* harmony import */ var _src_timex_js__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(1067);
|
|
299337
|
+
/* harmony import */ var _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(5261);
|
|
299338
|
+
/* harmony import */ var _src_upbit_js__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(7584);
|
|
299339
|
+
/* harmony import */ var _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(3853);
|
|
299340
|
+
/* harmony import */ var _src_wazirx_js__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(6536);
|
|
299341
|
+
/* harmony import */ var _src_whitebit_js__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(5467);
|
|
299342
|
+
/* harmony import */ var _src_woo_js__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(517);
|
|
299343
|
+
/* harmony import */ var _src_yobit_js__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(3850);
|
|
299344
|
+
/* harmony import */ var _src_zaif_js__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(5934);
|
|
299345
|
+
/* harmony import */ var _src_zonda_js__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(5140);
|
|
299346
|
+
/* harmony import */ var _src_pro_alpaca_js__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(2467);
|
|
299347
|
+
/* harmony import */ var _src_pro_ascendex_js__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(2383);
|
|
299348
|
+
/* harmony import */ var _src_pro_bequant_js__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(8848);
|
|
299349
|
+
/* harmony import */ var _src_pro_binance_js__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(8764);
|
|
299350
|
+
/* harmony import */ var _src_pro_binancecoinm_js__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(5078);
|
|
299351
|
+
/* harmony import */ var _src_pro_binanceus_js__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(1326);
|
|
299352
|
+
/* harmony import */ var _src_pro_binanceusdm_js__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(1230);
|
|
299353
|
+
/* harmony import */ var _src_pro_bingx_js__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(6955);
|
|
299354
|
+
/* harmony import */ var _src_pro_bitcoincom_js__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(453);
|
|
299355
|
+
/* harmony import */ var _src_pro_bitfinex_js__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__(9772);
|
|
299356
|
+
/* harmony import */ var _src_pro_bitfinex2_js__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__(588);
|
|
299357
|
+
/* harmony import */ var _src_pro_bitget_js__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__(1885);
|
|
299358
|
+
/* harmony import */ var _src_pro_bitmart_js__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__(7504);
|
|
299359
|
+
/* harmony import */ var _src_pro_bitmex_js__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__(2302);
|
|
299360
|
+
/* harmony import */ var _src_pro_bitopro_js__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(2191);
|
|
299361
|
+
/* harmony import */ var _src_pro_bitpanda_js__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(1297);
|
|
299362
|
+
/* harmony import */ var _src_pro_bitrue_js__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(3005);
|
|
299363
|
+
/* harmony import */ var _src_pro_bitstamp_js__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(2317);
|
|
299364
|
+
/* harmony import */ var _src_pro_bitvavo_js__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(6977);
|
|
299365
|
+
/* harmony import */ var _src_pro_blockchaincom_js__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(2519);
|
|
299366
|
+
/* harmony import */ var _src_pro_bybit_js__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(5030);
|
|
299367
|
+
/* harmony import */ var _src_pro_cex_js__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(5272);
|
|
299368
|
+
/* harmony import */ var _src_pro_coinbase_js__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(3414);
|
|
299369
|
+
/* harmony import */ var _src_pro_coinbasepro_js__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(8368);
|
|
299370
|
+
/* harmony import */ var _src_pro_coincheck_js__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(7891);
|
|
299371
|
+
/* harmony import */ var _src_pro_coinex_js__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(204);
|
|
299372
|
+
/* harmony import */ var _src_pro_coinone_js__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(5208);
|
|
299373
|
+
/* harmony import */ var _src_pro_cryptocom_js__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(6820);
|
|
299374
|
+
/* harmony import */ var _src_pro_currencycom_js__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(2952);
|
|
299375
|
+
/* harmony import */ var _src_pro_deribit_js__WEBPACK_IMPORTED_MODULE_130__ = __webpack_require__(1788);
|
|
299376
|
+
/* harmony import */ var _src_pro_exmo_js__WEBPACK_IMPORTED_MODULE_131__ = __webpack_require__(9004);
|
|
299377
|
+
/* harmony import */ var _src_pro_gate_js__WEBPACK_IMPORTED_MODULE_132__ = __webpack_require__(8335);
|
|
299378
|
+
/* harmony import */ var _src_pro_gateio_js__WEBPACK_IMPORTED_MODULE_133__ = __webpack_require__(1465);
|
|
299379
|
+
/* harmony import */ var _src_pro_gemini_js__WEBPACK_IMPORTED_MODULE_134__ = __webpack_require__(9488);
|
|
299380
|
+
/* harmony import */ var _src_pro_hitbtc_js__WEBPACK_IMPORTED_MODULE_135__ = __webpack_require__(5189);
|
|
299381
|
+
/* harmony import */ var _src_pro_hollaex_js__WEBPACK_IMPORTED_MODULE_136__ = __webpack_require__(8559);
|
|
299382
|
+
/* harmony import */ var _src_pro_htx_js__WEBPACK_IMPORTED_MODULE_137__ = __webpack_require__(7474);
|
|
299383
|
+
/* harmony import */ var _src_pro_huobi_js__WEBPACK_IMPORTED_MODULE_138__ = __webpack_require__(8384);
|
|
299384
|
+
/* harmony import */ var _src_pro_huobijp_js__WEBPACK_IMPORTED_MODULE_139__ = __webpack_require__(9021);
|
|
299385
|
+
/* harmony import */ var _src_pro_idex_js__WEBPACK_IMPORTED_MODULE_140__ = __webpack_require__(3484);
|
|
299386
|
+
/* harmony import */ var _src_pro_independentreserve_js__WEBPACK_IMPORTED_MODULE_141__ = __webpack_require__(1311);
|
|
299387
|
+
/* harmony import */ var _src_pro_kraken_js__WEBPACK_IMPORTED_MODULE_142__ = __webpack_require__(736);
|
|
299388
|
+
/* harmony import */ var _src_pro_krakenfutures_js__WEBPACK_IMPORTED_MODULE_143__ = __webpack_require__(449);
|
|
299389
|
+
/* harmony import */ var _src_pro_kucoin_js__WEBPACK_IMPORTED_MODULE_144__ = __webpack_require__(2387);
|
|
299390
|
+
/* harmony import */ var _src_pro_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_145__ = __webpack_require__(7181);
|
|
299391
|
+
/* harmony import */ var _src_pro_lbank_js__WEBPACK_IMPORTED_MODULE_146__ = __webpack_require__(1267);
|
|
299392
|
+
/* harmony import */ var _src_pro_luno_js__WEBPACK_IMPORTED_MODULE_147__ = __webpack_require__(627);
|
|
299393
|
+
/* harmony import */ var _src_pro_mexc_js__WEBPACK_IMPORTED_MODULE_148__ = __webpack_require__(6484);
|
|
299394
|
+
/* harmony import */ var _src_pro_ndax_js__WEBPACK_IMPORTED_MODULE_149__ = __webpack_require__(8080);
|
|
299395
|
+
/* harmony import */ var _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__(7105);
|
|
299396
|
+
/* harmony import */ var _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__(2214);
|
|
299397
|
+
/* harmony import */ var _src_pro_onetrading_js__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__(9419);
|
|
299398
|
+
/* harmony import */ var _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_153__ = __webpack_require__(4360);
|
|
299399
|
+
/* harmony import */ var _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(7924);
|
|
299400
|
+
/* harmony import */ var _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(3541);
|
|
299401
|
+
/* harmony import */ var _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__(9782);
|
|
299402
|
+
/* harmony import */ var _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_157__ = __webpack_require__(7614);
|
|
299403
|
+
/* harmony import */ var _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_158__ = __webpack_require__(4828);
|
|
299404
|
+
/* harmony import */ var _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_159__ = __webpack_require__(5630);
|
|
299405
|
+
/* harmony import */ var _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_160__ = __webpack_require__(3910);
|
|
297363
299406
|
/*
|
|
297364
299407
|
|
|
297365
299408
|
MIT License
|
|
@@ -297394,7 +299437,7 @@ SOFTWARE.
|
|
|
297394
299437
|
|
|
297395
299438
|
//-----------------------------------------------------------------------------
|
|
297396
299439
|
// this is updated by vss.js when building
|
|
297397
|
-
const version = '4.2.
|
|
299440
|
+
const version = '4.2.28';
|
|
297398
299441
|
_src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion = version;
|
|
297399
299442
|
//-----------------------------------------------------------------------------
|
|
297400
299443
|
|
|
@@ -297494,6 +299537,7 @@ _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion
|
|
|
297494
299537
|
|
|
297495
299538
|
|
|
297496
299539
|
|
|
299540
|
+
|
|
297497
299541
|
|
|
297498
299542
|
|
|
297499
299543
|
// pro exchanges
|
|
@@ -297602,123 +299646,124 @@ const exchanges = {
|
|
|
297602
299646
|
'coinex': _src_coinex_js__WEBPACK_IMPORTED_MODULE_42__/* ["default"] */ .Z,
|
|
297603
299647
|
'coinlist': _src_coinlist_js__WEBPACK_IMPORTED_MODULE_43__/* ["default"] */ .Z,
|
|
297604
299648
|
'coinmate': _src_coinmate_js__WEBPACK_IMPORTED_MODULE_44__/* ["default"] */ .Z,
|
|
297605
|
-
'
|
|
297606
|
-
'
|
|
297607
|
-
'
|
|
297608
|
-
'
|
|
297609
|
-
'
|
|
297610
|
-
'
|
|
297611
|
-
'
|
|
297612
|
-
'
|
|
297613
|
-
'
|
|
297614
|
-
'
|
|
297615
|
-
'
|
|
297616
|
-
'
|
|
297617
|
-
'
|
|
297618
|
-
'
|
|
297619
|
-
'
|
|
297620
|
-
'
|
|
297621
|
-
'
|
|
297622
|
-
'
|
|
297623
|
-
'
|
|
297624
|
-
'
|
|
297625
|
-
'
|
|
297626
|
-
'
|
|
297627
|
-
'
|
|
297628
|
-
'
|
|
297629
|
-
'
|
|
297630
|
-
'
|
|
297631
|
-
'
|
|
297632
|
-
'
|
|
297633
|
-
'
|
|
297634
|
-
'
|
|
297635
|
-
'
|
|
297636
|
-
'
|
|
297637
|
-
'
|
|
297638
|
-
'
|
|
297639
|
-
'
|
|
297640
|
-
'
|
|
297641
|
-
'
|
|
297642
|
-
'
|
|
297643
|
-
'
|
|
297644
|
-
'
|
|
297645
|
-
'
|
|
297646
|
-
'
|
|
297647
|
-
'
|
|
297648
|
-
'
|
|
297649
|
-
'
|
|
297650
|
-
'
|
|
297651
|
-
'
|
|
297652
|
-
'
|
|
297653
|
-
'
|
|
297654
|
-
'
|
|
297655
|
-
'
|
|
297656
|
-
'
|
|
297657
|
-
'
|
|
297658
|
-
'
|
|
297659
|
-
'
|
|
299649
|
+
'coinmetro': _src_coinmetro_js__WEBPACK_IMPORTED_MODULE_45__/* ["default"] */ .Z,
|
|
299650
|
+
'coinone': _src_coinone_js__WEBPACK_IMPORTED_MODULE_46__/* ["default"] */ .Z,
|
|
299651
|
+
'coinsph': _src_coinsph_js__WEBPACK_IMPORTED_MODULE_47__/* ["default"] */ .Z,
|
|
299652
|
+
'coinspot': _src_coinspot_js__WEBPACK_IMPORTED_MODULE_48__/* ["default"] */ .Z,
|
|
299653
|
+
'cryptocom': _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_49__/* ["default"] */ .Z,
|
|
299654
|
+
'currencycom': _src_currencycom_js__WEBPACK_IMPORTED_MODULE_50__/* ["default"] */ .Z,
|
|
299655
|
+
'delta': _src_delta_js__WEBPACK_IMPORTED_MODULE_51__/* ["default"] */ .Z,
|
|
299656
|
+
'deribit': _src_deribit_js__WEBPACK_IMPORTED_MODULE_52__/* ["default"] */ .Z,
|
|
299657
|
+
'digifinex': _src_digifinex_js__WEBPACK_IMPORTED_MODULE_53__/* ["default"] */ .Z,
|
|
299658
|
+
'exmo': _src_exmo_js__WEBPACK_IMPORTED_MODULE_54__/* ["default"] */ .Z,
|
|
299659
|
+
'fmfwio': _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_55__/* ["default"] */ .Z,
|
|
299660
|
+
'gate': _src_gate_js__WEBPACK_IMPORTED_MODULE_56__/* ["default"] */ .Z,
|
|
299661
|
+
'gateio': _src_gateio_js__WEBPACK_IMPORTED_MODULE_57__/* ["default"] */ .Z,
|
|
299662
|
+
'gemini': _src_gemini_js__WEBPACK_IMPORTED_MODULE_58__/* ["default"] */ .Z,
|
|
299663
|
+
'hitbtc': _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_59__/* ["default"] */ .Z,
|
|
299664
|
+
'hitbtc3': _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_60__/* ["default"] */ .Z,
|
|
299665
|
+
'hollaex': _src_hollaex_js__WEBPACK_IMPORTED_MODULE_61__/* ["default"] */ .Z,
|
|
299666
|
+
'htx': _src_htx_js__WEBPACK_IMPORTED_MODULE_62__/* ["default"] */ .Z,
|
|
299667
|
+
'huobi': _src_huobi_js__WEBPACK_IMPORTED_MODULE_63__/* ["default"] */ .Z,
|
|
299668
|
+
'huobijp': _src_huobijp_js__WEBPACK_IMPORTED_MODULE_64__/* ["default"] */ .Z,
|
|
299669
|
+
'idex': _src_idex_js__WEBPACK_IMPORTED_MODULE_65__/* ["default"] */ .Z,
|
|
299670
|
+
'independentreserve': _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_66__/* ["default"] */ .Z,
|
|
299671
|
+
'indodax': _src_indodax_js__WEBPACK_IMPORTED_MODULE_67__/* ["default"] */ .Z,
|
|
299672
|
+
'kraken': _src_kraken_js__WEBPACK_IMPORTED_MODULE_68__/* ["default"] */ .Z,
|
|
299673
|
+
'krakenfutures': _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_69__/* ["default"] */ .Z,
|
|
299674
|
+
'kucoin': _src_kucoin_js__WEBPACK_IMPORTED_MODULE_70__/* ["default"] */ .Z,
|
|
299675
|
+
'kucoinfutures': _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_71__/* ["default"] */ .Z,
|
|
299676
|
+
'kuna': _src_kuna_js__WEBPACK_IMPORTED_MODULE_72__/* ["default"] */ .Z,
|
|
299677
|
+
'latoken': _src_latoken_js__WEBPACK_IMPORTED_MODULE_73__/* ["default"] */ .Z,
|
|
299678
|
+
'lbank': _src_lbank_js__WEBPACK_IMPORTED_MODULE_74__/* ["default"] */ .Z,
|
|
299679
|
+
'luno': _src_luno_js__WEBPACK_IMPORTED_MODULE_75__/* ["default"] */ .Z,
|
|
299680
|
+
'lykke': _src_lykke_js__WEBPACK_IMPORTED_MODULE_76__/* ["default"] */ .Z,
|
|
299681
|
+
'mercado': _src_mercado_js__WEBPACK_IMPORTED_MODULE_77__/* ["default"] */ .Z,
|
|
299682
|
+
'mexc': _src_mexc_js__WEBPACK_IMPORTED_MODULE_78__/* ["default"] */ .Z,
|
|
299683
|
+
'ndax': _src_ndax_js__WEBPACK_IMPORTED_MODULE_79__/* ["default"] */ .Z,
|
|
299684
|
+
'novadax': _src_novadax_js__WEBPACK_IMPORTED_MODULE_80__/* ["default"] */ .Z,
|
|
299685
|
+
'oceanex': _src_oceanex_js__WEBPACK_IMPORTED_MODULE_81__/* ["default"] */ .Z,
|
|
299686
|
+
'okcoin': _src_okcoin_js__WEBPACK_IMPORTED_MODULE_82__/* ["default"] */ .Z,
|
|
299687
|
+
'okx': _src_okx_js__WEBPACK_IMPORTED_MODULE_83__/* ["default"] */ .Z,
|
|
299688
|
+
'onetrading': _src_onetrading_js__WEBPACK_IMPORTED_MODULE_84__/* ["default"] */ .Z,
|
|
299689
|
+
'p2b': _src_p2b_js__WEBPACK_IMPORTED_MODULE_85__/* ["default"] */ .Z,
|
|
299690
|
+
'paymium': _src_paymium_js__WEBPACK_IMPORTED_MODULE_86__/* ["default"] */ .Z,
|
|
299691
|
+
'phemex': _src_phemex_js__WEBPACK_IMPORTED_MODULE_87__/* ["default"] */ .Z,
|
|
299692
|
+
'poloniex': _src_poloniex_js__WEBPACK_IMPORTED_MODULE_88__/* ["default"] */ .Z,
|
|
299693
|
+
'poloniexfutures': _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_89__/* ["default"] */ .Z,
|
|
299694
|
+
'probit': _src_probit_js__WEBPACK_IMPORTED_MODULE_90__/* ["default"] */ .Z,
|
|
299695
|
+
'timex': _src_timex_js__WEBPACK_IMPORTED_MODULE_91__/* ["default"] */ .Z,
|
|
299696
|
+
'tokocrypto': _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_92__/* ["default"] */ .Z,
|
|
299697
|
+
'upbit': _src_upbit_js__WEBPACK_IMPORTED_MODULE_93__/* ["default"] */ .Z,
|
|
299698
|
+
'wavesexchange': _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_94__/* ["default"] */ .Z,
|
|
299699
|
+
'wazirx': _src_wazirx_js__WEBPACK_IMPORTED_MODULE_95__/* ["default"] */ .Z,
|
|
299700
|
+
'whitebit': _src_whitebit_js__WEBPACK_IMPORTED_MODULE_96__/* ["default"] */ .Z,
|
|
299701
|
+
'woo': _src_woo_js__WEBPACK_IMPORTED_MODULE_97__/* ["default"] */ .Z,
|
|
299702
|
+
'yobit': _src_yobit_js__WEBPACK_IMPORTED_MODULE_98__/* ["default"] */ .Z,
|
|
299703
|
+
'zaif': _src_zaif_js__WEBPACK_IMPORTED_MODULE_99__/* ["default"] */ .Z,
|
|
299704
|
+
'zonda': _src_zonda_js__WEBPACK_IMPORTED_MODULE_100__/* ["default"] */ .Z,
|
|
297660
299705
|
};
|
|
297661
299706
|
const pro = {
|
|
297662
|
-
'alpaca':
|
|
297663
|
-
'ascendex':
|
|
297664
|
-
'bequant':
|
|
297665
|
-
'binance':
|
|
297666
|
-
'binancecoinm':
|
|
297667
|
-
'binanceus':
|
|
297668
|
-
'binanceusdm':
|
|
297669
|
-
'bingx':
|
|
297670
|
-
'bitcoincom':
|
|
297671
|
-
'bitfinex':
|
|
297672
|
-
'bitfinex2':
|
|
297673
|
-
'bitget':
|
|
297674
|
-
'bitmart':
|
|
297675
|
-
'bitmex':
|
|
297676
|
-
'bitopro':
|
|
297677
|
-
'bitpanda':
|
|
297678
|
-
'bitrue':
|
|
297679
|
-
'bitstamp':
|
|
297680
|
-
'bitvavo':
|
|
297681
|
-
'blockchaincom':
|
|
297682
|
-
'bybit':
|
|
297683
|
-
'cex':
|
|
297684
|
-
'coinbase':
|
|
297685
|
-
'coinbasepro':
|
|
297686
|
-
'coincheck':
|
|
297687
|
-
'coinex':
|
|
297688
|
-
'coinone':
|
|
297689
|
-
'cryptocom':
|
|
297690
|
-
'currencycom':
|
|
297691
|
-
'deribit':
|
|
297692
|
-
'exmo':
|
|
297693
|
-
'gate':
|
|
297694
|
-
'gateio':
|
|
297695
|
-
'gemini':
|
|
297696
|
-
'hitbtc':
|
|
297697
|
-
'hollaex':
|
|
297698
|
-
'htx':
|
|
297699
|
-
'huobi':
|
|
297700
|
-
'huobijp':
|
|
297701
|
-
'idex':
|
|
297702
|
-
'independentreserve':
|
|
297703
|
-
'kraken':
|
|
297704
|
-
'krakenfutures':
|
|
297705
|
-
'kucoin':
|
|
297706
|
-
'kucoinfutures':
|
|
297707
|
-
'lbank':
|
|
297708
|
-
'luno':
|
|
297709
|
-
'mexc':
|
|
297710
|
-
'ndax':
|
|
297711
|
-
'okcoin':
|
|
297712
|
-
'okx':
|
|
297713
|
-
'onetrading':
|
|
297714
|
-
'phemex':
|
|
297715
|
-
'poloniex':
|
|
297716
|
-
'poloniexfutures':
|
|
297717
|
-
'probit':
|
|
297718
|
-
'upbit':
|
|
297719
|
-
'wazirx':
|
|
297720
|
-
'whitebit':
|
|
297721
|
-
'woo':
|
|
299707
|
+
'alpaca': _src_pro_alpaca_js__WEBPACK_IMPORTED_MODULE_101__/* ["default"] */ .Z,
|
|
299708
|
+
'ascendex': _src_pro_ascendex_js__WEBPACK_IMPORTED_MODULE_102__/* ["default"] */ .Z,
|
|
299709
|
+
'bequant': _src_pro_bequant_js__WEBPACK_IMPORTED_MODULE_103__/* ["default"] */ .Z,
|
|
299710
|
+
'binance': _src_pro_binance_js__WEBPACK_IMPORTED_MODULE_104__/* ["default"] */ .Z,
|
|
299711
|
+
'binancecoinm': _src_pro_binancecoinm_js__WEBPACK_IMPORTED_MODULE_105__/* ["default"] */ .Z,
|
|
299712
|
+
'binanceus': _src_pro_binanceus_js__WEBPACK_IMPORTED_MODULE_106__/* ["default"] */ .Z,
|
|
299713
|
+
'binanceusdm': _src_pro_binanceusdm_js__WEBPACK_IMPORTED_MODULE_107__/* ["default"] */ .Z,
|
|
299714
|
+
'bingx': _src_pro_bingx_js__WEBPACK_IMPORTED_MODULE_108__/* ["default"] */ .Z,
|
|
299715
|
+
'bitcoincom': _src_pro_bitcoincom_js__WEBPACK_IMPORTED_MODULE_109__/* ["default"] */ .Z,
|
|
299716
|
+
'bitfinex': _src_pro_bitfinex_js__WEBPACK_IMPORTED_MODULE_110__/* ["default"] */ .Z,
|
|
299717
|
+
'bitfinex2': _src_pro_bitfinex2_js__WEBPACK_IMPORTED_MODULE_111__/* ["default"] */ .Z,
|
|
299718
|
+
'bitget': _src_pro_bitget_js__WEBPACK_IMPORTED_MODULE_112__/* ["default"] */ .Z,
|
|
299719
|
+
'bitmart': _src_pro_bitmart_js__WEBPACK_IMPORTED_MODULE_113__/* ["default"] */ .Z,
|
|
299720
|
+
'bitmex': _src_pro_bitmex_js__WEBPACK_IMPORTED_MODULE_114__/* ["default"] */ .Z,
|
|
299721
|
+
'bitopro': _src_pro_bitopro_js__WEBPACK_IMPORTED_MODULE_115__/* ["default"] */ .Z,
|
|
299722
|
+
'bitpanda': _src_pro_bitpanda_js__WEBPACK_IMPORTED_MODULE_116__/* ["default"] */ .Z,
|
|
299723
|
+
'bitrue': _src_pro_bitrue_js__WEBPACK_IMPORTED_MODULE_117__/* ["default"] */ .Z,
|
|
299724
|
+
'bitstamp': _src_pro_bitstamp_js__WEBPACK_IMPORTED_MODULE_118__/* ["default"] */ .Z,
|
|
299725
|
+
'bitvavo': _src_pro_bitvavo_js__WEBPACK_IMPORTED_MODULE_119__/* ["default"] */ .Z,
|
|
299726
|
+
'blockchaincom': _src_pro_blockchaincom_js__WEBPACK_IMPORTED_MODULE_120__/* ["default"] */ .Z,
|
|
299727
|
+
'bybit': _src_pro_bybit_js__WEBPACK_IMPORTED_MODULE_121__/* ["default"] */ .Z,
|
|
299728
|
+
'cex': _src_pro_cex_js__WEBPACK_IMPORTED_MODULE_122__/* ["default"] */ .Z,
|
|
299729
|
+
'coinbase': _src_pro_coinbase_js__WEBPACK_IMPORTED_MODULE_123__/* ["default"] */ .Z,
|
|
299730
|
+
'coinbasepro': _src_pro_coinbasepro_js__WEBPACK_IMPORTED_MODULE_124__/* ["default"] */ .Z,
|
|
299731
|
+
'coincheck': _src_pro_coincheck_js__WEBPACK_IMPORTED_MODULE_125__/* ["default"] */ .Z,
|
|
299732
|
+
'coinex': _src_pro_coinex_js__WEBPACK_IMPORTED_MODULE_126__/* ["default"] */ .Z,
|
|
299733
|
+
'coinone': _src_pro_coinone_js__WEBPACK_IMPORTED_MODULE_127__/* ["default"] */ .Z,
|
|
299734
|
+
'cryptocom': _src_pro_cryptocom_js__WEBPACK_IMPORTED_MODULE_128__/* ["default"] */ .Z,
|
|
299735
|
+
'currencycom': _src_pro_currencycom_js__WEBPACK_IMPORTED_MODULE_129__/* ["default"] */ .Z,
|
|
299736
|
+
'deribit': _src_pro_deribit_js__WEBPACK_IMPORTED_MODULE_130__/* ["default"] */ .Z,
|
|
299737
|
+
'exmo': _src_pro_exmo_js__WEBPACK_IMPORTED_MODULE_131__/* ["default"] */ .Z,
|
|
299738
|
+
'gate': _src_pro_gate_js__WEBPACK_IMPORTED_MODULE_132__/* ["default"] */ .Z,
|
|
299739
|
+
'gateio': _src_pro_gateio_js__WEBPACK_IMPORTED_MODULE_133__/* ["default"] */ .Z,
|
|
299740
|
+
'gemini': _src_pro_gemini_js__WEBPACK_IMPORTED_MODULE_134__/* ["default"] */ .Z,
|
|
299741
|
+
'hitbtc': _src_pro_hitbtc_js__WEBPACK_IMPORTED_MODULE_135__/* ["default"] */ .Z,
|
|
299742
|
+
'hollaex': _src_pro_hollaex_js__WEBPACK_IMPORTED_MODULE_136__/* ["default"] */ .Z,
|
|
299743
|
+
'htx': _src_pro_htx_js__WEBPACK_IMPORTED_MODULE_137__/* ["default"] */ .Z,
|
|
299744
|
+
'huobi': _src_pro_huobi_js__WEBPACK_IMPORTED_MODULE_138__/* ["default"] */ .Z,
|
|
299745
|
+
'huobijp': _src_pro_huobijp_js__WEBPACK_IMPORTED_MODULE_139__/* ["default"] */ .Z,
|
|
299746
|
+
'idex': _src_pro_idex_js__WEBPACK_IMPORTED_MODULE_140__/* ["default"] */ .Z,
|
|
299747
|
+
'independentreserve': _src_pro_independentreserve_js__WEBPACK_IMPORTED_MODULE_141__/* ["default"] */ .Z,
|
|
299748
|
+
'kraken': _src_pro_kraken_js__WEBPACK_IMPORTED_MODULE_142__/* ["default"] */ .Z,
|
|
299749
|
+
'krakenfutures': _src_pro_krakenfutures_js__WEBPACK_IMPORTED_MODULE_143__/* ["default"] */ .Z,
|
|
299750
|
+
'kucoin': _src_pro_kucoin_js__WEBPACK_IMPORTED_MODULE_144__/* ["default"] */ .Z,
|
|
299751
|
+
'kucoinfutures': _src_pro_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_145__/* ["default"] */ .Z,
|
|
299752
|
+
'lbank': _src_pro_lbank_js__WEBPACK_IMPORTED_MODULE_146__/* ["default"] */ .Z,
|
|
299753
|
+
'luno': _src_pro_luno_js__WEBPACK_IMPORTED_MODULE_147__/* ["default"] */ .Z,
|
|
299754
|
+
'mexc': _src_pro_mexc_js__WEBPACK_IMPORTED_MODULE_148__/* ["default"] */ .Z,
|
|
299755
|
+
'ndax': _src_pro_ndax_js__WEBPACK_IMPORTED_MODULE_149__/* ["default"] */ .Z,
|
|
299756
|
+
'okcoin': _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_150__/* ["default"] */ .Z,
|
|
299757
|
+
'okx': _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_151__/* ["default"] */ .Z,
|
|
299758
|
+
'onetrading': _src_pro_onetrading_js__WEBPACK_IMPORTED_MODULE_152__/* ["default"] */ .Z,
|
|
299759
|
+
'phemex': _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_153__/* ["default"] */ .Z,
|
|
299760
|
+
'poloniex': _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_154__/* ["default"] */ .Z,
|
|
299761
|
+
'poloniexfutures': _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_155__/* ["default"] */ .Z,
|
|
299762
|
+
'probit': _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_156__/* ["default"] */ .Z,
|
|
299763
|
+
'upbit': _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_157__/* ["default"] */ .Z,
|
|
299764
|
+
'wazirx': _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_158__/* ["default"] */ .Z,
|
|
299765
|
+
'whitebit': _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_159__/* ["default"] */ .Z,
|
|
299766
|
+
'woo': _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_160__/* ["default"] */ .Z,
|
|
297722
299767
|
};
|
|
297723
299768
|
for (const exchange in pro) {
|
|
297724
299769
|
// const ccxtExchange = exchanges[exchange]
|
|
@@ -297731,7 +299776,7 @@ for (const exchange in pro) {
|
|
|
297731
299776
|
pro.exchanges = Object.keys(pro);
|
|
297732
299777
|
pro['Exchange'] = _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e; // now the same for rest and ts
|
|
297733
299778
|
//-----------------------------------------------------------------------------
|
|
297734
|
-
const ccxt = Object.assign({ version, Exchange: _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e, Precise:
|
|
299779
|
+
const ccxt = Object.assign({ version, Exchange: _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e, Precise: _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_161__/* .Precise */ .O, 'exchanges': Object.keys(exchanges), 'pro': pro }, exchanges, _src_base_functions_js__WEBPACK_IMPORTED_MODULE_162__, _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__);
|
|
297735
299780
|
|
|
297736
299781
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ccxt);
|
|
297737
299782
|
//-----------------------------------------------------------------------------
|