ccxt 4.1.98 → 4.1.100
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 +101 -100
- package/dist/ccxt.browser.js +3162 -542
- package/dist/ccxt.browser.min.js +7 -7
- package/dist/cjs/ccxt.js +4 -1
- package/dist/cjs/src/abstract/bitteam.js +9 -0
- package/dist/cjs/src/base/Exchange.js +29 -0
- package/dist/cjs/src/bequant.js +1 -1
- package/dist/cjs/src/binance.js +84 -59
- package/dist/cjs/src/bingx.js +24 -7
- package/dist/cjs/src/bitget.js +98 -38
- package/dist/cjs/src/bitmart.js +71 -17
- package/dist/cjs/src/bitteam.js +2309 -0
- package/dist/cjs/src/bitvavo.js +52 -14
- package/dist/cjs/src/coinex.js +58 -21
- package/dist/cjs/src/kraken.js +21 -16
- package/dist/cjs/src/mexc.js +3 -3
- package/dist/cjs/src/okx.js +5 -4
- package/dist/cjs/src/pro/binance.js +1 -1
- package/dist/cjs/src/pro/bitget.js +1 -1
- package/dist/cjs/src/pro/bybit.js +1 -1
- package/dist/cjs/src/pro/kucoin.js +10 -2
- package/dist/cjs/src/pro/kucoinfutures.js +10 -2
- package/js/ccxt.d.ts +5 -2
- package/js/ccxt.js +4 -2
- package/js/src/abstract/binance.d.ts +16 -0
- package/js/src/abstract/binancecoinm.d.ts +16 -0
- package/js/src/abstract/binanceus.d.ts +16 -0
- package/js/src/abstract/binanceusdm.d.ts +16 -0
- package/js/src/abstract/bitteam.d.ts +32 -0
- package/js/src/abstract/bitteam.js +11 -0
- package/js/src/abstract/coinex.d.ts +14 -1
- package/js/src/base/Exchange.d.ts +4 -0
- package/js/src/base/Exchange.js +29 -0
- package/js/src/base/types.d.ts +1 -0
- package/js/src/bequant.js +1 -1
- package/js/src/binance.js +84 -59
- package/js/src/bingx.js +24 -7
- package/js/src/bitget.js +98 -38
- package/js/src/bitmart.js +71 -17
- package/js/src/bitteam.d.ts +46 -0
- package/js/src/bitteam.js +2310 -0
- package/js/src/bitvavo.js +52 -14
- package/js/src/coinex.js +58 -21
- package/js/src/kraken.js +21 -16
- package/js/src/mexc.js +3 -3
- package/js/src/okx.js +5 -4
- package/js/src/pro/binance.js +1 -1
- package/js/src/pro/bitget.js +1 -1
- package/js/src/pro/bybit.js +1 -1
- package/js/src/pro/kucoin.js +10 -2
- package/js/src/pro/kucoinfutures.js +10 -2
- package/package.json +1 -1
- package/skip-tests.json +13 -0
package/dist/ccxt.browser.js
CHANGED
|
@@ -352,6 +352,22 @@ class Exchange extends _base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchang
|
|
|
352
352
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Exchange);
|
|
353
353
|
|
|
354
354
|
|
|
355
|
+
/***/ }),
|
|
356
|
+
|
|
357
|
+
/***/ 133:
|
|
358
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
359
|
+
|
|
360
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
361
|
+
/* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
362
|
+
/* harmony export */ });
|
|
363
|
+
/* harmony import */ var _base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3043);
|
|
364
|
+
// -------------------------------------------------------------------------------
|
|
365
|
+
|
|
366
|
+
class Exchange extends _base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e {
|
|
367
|
+
}
|
|
368
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Exchange);
|
|
369
|
+
|
|
370
|
+
|
|
355
371
|
/***/ }),
|
|
356
372
|
|
|
357
373
|
/***/ 15:
|
|
@@ -7322,7 +7338,9 @@ class Exchange {
|
|
|
7322
7338
|
'createOrderWs': undefined,
|
|
7323
7339
|
'editOrderWs': undefined,
|
|
7324
7340
|
'fetchOpenOrdersWs': undefined,
|
|
7341
|
+
'fetchClosedOrdersWs': undefined,
|
|
7325
7342
|
'fetchOrderWs': undefined,
|
|
7343
|
+
'fetchOrdersWs': undefined,
|
|
7326
7344
|
'cancelOrderWs': undefined,
|
|
7327
7345
|
'cancelOrdersWs': undefined,
|
|
7328
7346
|
'cancelAllOrdersWs': undefined,
|
|
@@ -9238,6 +9256,11 @@ class Exchange {
|
|
|
9238
9256
|
if ('rate' in tradeFee) {
|
|
9239
9257
|
tradeFee['rate'] = this.safeNumber(tradeFee, 'rate');
|
|
9240
9258
|
}
|
|
9259
|
+
const entryFees = this.safeValue(entry, 'fees', []);
|
|
9260
|
+
for (let j = 0; j < entryFees.length; j++) {
|
|
9261
|
+
entryFees[j]['cost'] = this.safeNumber(entryFees[j], 'cost');
|
|
9262
|
+
}
|
|
9263
|
+
entry['fees'] = entryFees;
|
|
9241
9264
|
entry['fee'] = tradeFee;
|
|
9242
9265
|
}
|
|
9243
9266
|
let timeInForce = this.safeString(order, 'timeInForce');
|
|
@@ -10711,6 +10734,9 @@ class Exchange {
|
|
|
10711
10734
|
async fetchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
10712
10735
|
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' fetchOrders() is not supported yet');
|
|
10713
10736
|
}
|
|
10737
|
+
async fetchOrdersWs(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
10738
|
+
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' fetchOrdersWs() is not supported yet');
|
|
10739
|
+
}
|
|
10714
10740
|
async fetchOrderTrades(id, symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
10715
10741
|
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' fetchOrderTrades() is not supported yet');
|
|
10716
10742
|
}
|
|
@@ -10718,14 +10744,33 @@ class Exchange {
|
|
|
10718
10744
|
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' watchOrders() is not supported yet');
|
|
10719
10745
|
}
|
|
10720
10746
|
async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
10747
|
+
if (this.has['fetchOrders']) {
|
|
10748
|
+
const orders = await this.fetchOrders(symbol, since, limit, params);
|
|
10749
|
+
return this.filterBy(orders, 'status', 'open');
|
|
10750
|
+
}
|
|
10721
10751
|
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' fetchOpenOrders() is not supported yet');
|
|
10722
10752
|
}
|
|
10723
10753
|
async fetchOpenOrdersWs(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
10754
|
+
if (this.has['fetchOrdersWs']) {
|
|
10755
|
+
const orders = await this.fetchOrdersWs(symbol, since, limit, params);
|
|
10756
|
+
return this.filterBy(orders, 'status', 'open');
|
|
10757
|
+
}
|
|
10724
10758
|
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' fetchOpenOrdersWs() is not supported yet');
|
|
10725
10759
|
}
|
|
10726
10760
|
async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
10761
|
+
if (this.has['fetchOrders']) {
|
|
10762
|
+
const orders = await this.fetchOrders(symbol, since, limit, params);
|
|
10763
|
+
return this.filterBy(orders, 'status', 'closed');
|
|
10764
|
+
}
|
|
10727
10765
|
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' fetchClosedOrders() is not supported yet');
|
|
10728
10766
|
}
|
|
10767
|
+
async fetchClosedOrdersWs(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
10768
|
+
if (this.has['fetchOrdersWs']) {
|
|
10769
|
+
const orders = await this.fetchOrdersWs(symbol, since, limit, params);
|
|
10770
|
+
return this.filterBy(orders, 'status', 'closed');
|
|
10771
|
+
}
|
|
10772
|
+
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' fetchClosedOrdersWs() is not supported yet');
|
|
10773
|
+
}
|
|
10729
10774
|
async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
10730
10775
|
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' fetchMyTrades() is not supported yet');
|
|
10731
10776
|
}
|
|
@@ -15094,7 +15139,7 @@ class bequant extends _hitbtc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .
|
|
|
15094
15139
|
'fees': [
|
|
15095
15140
|
'https://bequant.io/fees-and-limits',
|
|
15096
15141
|
],
|
|
15097
|
-
'referral': 'https://bequant.io',
|
|
15142
|
+
'referral': 'https://bequant.io/referral/dd104e3bee7634ec',
|
|
15098
15143
|
},
|
|
15099
15144
|
});
|
|
15100
15145
|
}
|
|
@@ -17414,6 +17459,16 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
17414
17459
|
'lending/union/interestHistory': 0.1,
|
|
17415
17460
|
'lending/project/list': 0.1,
|
|
17416
17461
|
'lending/project/position/list': 0.1,
|
|
17462
|
+
// eth-staking
|
|
17463
|
+
'eth-staking/eth/history/stakingHistory': 15,
|
|
17464
|
+
'eth-staking/eth/history/redemptionHistory': 15,
|
|
17465
|
+
'eth-staking/eth/history/rewardsHistory': 15,
|
|
17466
|
+
'eth-staking/eth/quota': 15,
|
|
17467
|
+
'eth-staking/eth/history/rateHistory': 15,
|
|
17468
|
+
'eth-staking/account': 15,
|
|
17469
|
+
'eth-staking/wbeth/history/wrapHistory': 15,
|
|
17470
|
+
'eth-staking/wbeth/history/unwrapHistory': 15,
|
|
17471
|
+
'eth-staking/eth/history/wbethRewardsHistory': 15,
|
|
17417
17472
|
// mining endpoints
|
|
17418
17473
|
'mining/pub/algoList': 0.1,
|
|
17419
17474
|
'mining/pub/coinList': 0.1,
|
|
@@ -17615,6 +17670,13 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
17615
17670
|
'staking/purchase': 0.1,
|
|
17616
17671
|
'staking/redeem': 0.1,
|
|
17617
17672
|
'staking/setAutoStaking': 0.1,
|
|
17673
|
+
// eth-staking
|
|
17674
|
+
'eth-staking/eth/stake': 15,
|
|
17675
|
+
'eth-staking/eth/redeem': 15,
|
|
17676
|
+
'eth-staking/wbeth/wrap': 15,
|
|
17677
|
+
// mining endpoints
|
|
17678
|
+
'mining/hash-transfer/config': 0.5,
|
|
17679
|
+
'mining/hash-transfer/config/cancel': 0.5,
|
|
17618
17680
|
'portfolio/repay': 20.001,
|
|
17619
17681
|
'loan/vip/renew': 40.002,
|
|
17620
17682
|
'loan/vip/borrow': 40.002,
|
|
@@ -17668,11 +17730,13 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
17668
17730
|
},
|
|
17669
17731
|
'sapiV2': {
|
|
17670
17732
|
'get': {
|
|
17733
|
+
'eth-staking/account': 15,
|
|
17671
17734
|
'sub-account/futures/account': 0.1,
|
|
17672
17735
|
'sub-account/futures/accountSummary': 1,
|
|
17673
17736
|
'sub-account/futures/positionRisk': 0.1,
|
|
17674
17737
|
},
|
|
17675
17738
|
'post': {
|
|
17739
|
+
'eth-staking/eth/stake': 15,
|
|
17676
17740
|
'sub-account/subAccountApi/ipRestriction': 20.001, // Weight(UID): 3000 => cost = 0.006667 * 3000 = 20.001
|
|
17677
17741
|
},
|
|
17678
17742
|
},
|
|
@@ -20694,22 +20758,6 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
20694
20758
|
// 'endTime': 789, // Timestamp in ms to get aggregate trades until INCLUSIVE.
|
|
20695
20759
|
// 'limit': 500, // default = 500, maximum = 1000
|
|
20696
20760
|
};
|
|
20697
|
-
let method = this.safeString(this.options, 'fetchTradesMethod');
|
|
20698
|
-
method = this.safeString2(params, 'fetchTradesMethod', 'method', method);
|
|
20699
|
-
if (method === undefined) {
|
|
20700
|
-
if (market['option']) {
|
|
20701
|
-
method = 'eapiPublicGetTrades';
|
|
20702
|
-
}
|
|
20703
|
-
else if (market['linear']) {
|
|
20704
|
-
method = 'fapiPublicGetAggTrades';
|
|
20705
|
-
}
|
|
20706
|
-
else if (market['inverse']) {
|
|
20707
|
-
method = 'dapiPublicGetAggTrades';
|
|
20708
|
-
}
|
|
20709
|
-
else {
|
|
20710
|
-
method = 'publicGetAggTrades';
|
|
20711
|
-
}
|
|
20712
|
-
}
|
|
20713
20761
|
if (!market['option']) {
|
|
20714
20762
|
if (since !== undefined) {
|
|
20715
20763
|
request['startTime'] = since;
|
|
@@ -20726,7 +20774,22 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
20726
20774
|
const isFutureOrSwap = (market['swap'] || market['future']);
|
|
20727
20775
|
request['limit'] = isFutureOrSwap ? Math.min(limit, 1000) : limit; // default = 500, maximum = 1000
|
|
20728
20776
|
}
|
|
20777
|
+
let method = this.safeString(this.options, 'fetchTradesMethod');
|
|
20778
|
+
method = this.safeString2(params, 'fetchTradesMethod', 'method', method);
|
|
20729
20779
|
params = this.omit(params, ['until', 'fetchTradesMethod']);
|
|
20780
|
+
let response = undefined;
|
|
20781
|
+
if (market['option'] || method === 'eapiPublicGetTrades') {
|
|
20782
|
+
response = await this.eapiPublicGetTrades(this.extend(request, params));
|
|
20783
|
+
}
|
|
20784
|
+
else if (market['linear'] || method === 'fapiPublicGetAggTrades') {
|
|
20785
|
+
response = await this.fapiPublicGetAggTrades(this.extend(request, params));
|
|
20786
|
+
}
|
|
20787
|
+
else if (market['inverse'] || method === 'dapiPublicGetAggTrades') {
|
|
20788
|
+
response = await this.dapiPublicGetAggTrades(this.extend(request, params));
|
|
20789
|
+
}
|
|
20790
|
+
else {
|
|
20791
|
+
response = await this.publicGetAggTrades(this.extend(request, params));
|
|
20792
|
+
}
|
|
20730
20793
|
//
|
|
20731
20794
|
// Caveats:
|
|
20732
20795
|
// - default limit (500) applies only if no other parameters set, trades up
|
|
@@ -20736,7 +20799,6 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
20736
20799
|
// - "tradeId" accepted and returned by this method is "aggregate" trade id
|
|
20737
20800
|
// which is different from actual trade id
|
|
20738
20801
|
// - setting both fromId and time window results in error
|
|
20739
|
-
const response = await this[method](this.extend(request, params));
|
|
20740
20802
|
//
|
|
20741
20803
|
// aggregate trades
|
|
20742
20804
|
//
|
|
@@ -21335,6 +21397,15 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
21335
21397
|
}
|
|
21336
21398
|
const stopPriceString = this.safeString(order, 'stopPrice');
|
|
21337
21399
|
const stopPrice = this.parseNumber(this.omitZero(stopPriceString));
|
|
21400
|
+
const feeCost = this.safeNumber(order, 'fee');
|
|
21401
|
+
let fee = undefined;
|
|
21402
|
+
if (feeCost !== undefined) {
|
|
21403
|
+
fee = {
|
|
21404
|
+
'currency': this.safeString(order, 'quoteAsset'),
|
|
21405
|
+
'cost': feeCost,
|
|
21406
|
+
'rate': undefined,
|
|
21407
|
+
};
|
|
21408
|
+
}
|
|
21338
21409
|
return this.safeOrder({
|
|
21339
21410
|
'info': order,
|
|
21340
21411
|
'id': id,
|
|
@@ -21357,11 +21428,7 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
21357
21428
|
'filled': filled,
|
|
21358
21429
|
'remaining': undefined,
|
|
21359
21430
|
'status': status,
|
|
21360
|
-
'fee':
|
|
21361
|
-
'currency': this.safeString(order, 'quoteAsset'),
|
|
21362
|
-
'cost': this.safeNumber(order, 'fee'),
|
|
21363
|
-
'rate': undefined,
|
|
21364
|
-
},
|
|
21431
|
+
'fee': fee,
|
|
21365
21432
|
'trades': fills,
|
|
21366
21433
|
}, market);
|
|
21367
21434
|
}
|
|
@@ -24910,23 +24977,22 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
24910
24977
|
}
|
|
24911
24978
|
await this.loadMarkets();
|
|
24912
24979
|
await this.loadLeverageBrackets(false, params);
|
|
24913
|
-
let method = undefined;
|
|
24914
24980
|
const defaultType = this.safeString(this.options, 'defaultType', 'future');
|
|
24915
24981
|
const type = this.safeString(params, 'type', defaultType);
|
|
24916
24982
|
let query = this.omit(params, 'type');
|
|
24917
24983
|
let subType = undefined;
|
|
24918
24984
|
[subType, query] = this.handleSubTypeAndParams('fetchAccountPositions', undefined, params, 'linear');
|
|
24985
|
+
let response = undefined;
|
|
24919
24986
|
if (this.isLinear(type, subType)) {
|
|
24920
|
-
|
|
24987
|
+
response = await this.fapiPrivateV2GetAccount(query);
|
|
24921
24988
|
}
|
|
24922
24989
|
else if (this.isInverse(type, subType)) {
|
|
24923
|
-
|
|
24990
|
+
response = await this.dapiPrivateGetAccount(query);
|
|
24924
24991
|
}
|
|
24925
24992
|
else {
|
|
24926
24993
|
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported(this.id + ' fetchPositions() supports linear and inverse contracts only');
|
|
24927
24994
|
}
|
|
24928
|
-
const
|
|
24929
|
-
const result = this.parseAccountPositions(account);
|
|
24995
|
+
const result = this.parseAccountPositions(response);
|
|
24930
24996
|
symbols = this.marketSymbols(symbols);
|
|
24931
24997
|
return this.filterByArrayPositions(result, 'symbol', symbols, false);
|
|
24932
24998
|
}
|
|
@@ -24950,15 +25016,15 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
24950
25016
|
await this.loadMarkets();
|
|
24951
25017
|
await this.loadLeverageBrackets(false, params);
|
|
24952
25018
|
const request = {};
|
|
24953
|
-
let method = undefined;
|
|
24954
25019
|
let defaultType = 'future';
|
|
24955
25020
|
defaultType = this.safeString(this.options, 'defaultType', defaultType);
|
|
24956
25021
|
const type = this.safeString(params, 'type', defaultType);
|
|
24957
25022
|
let subType = undefined;
|
|
24958
25023
|
[subType, params] = this.handleSubTypeAndParams('fetchPositionsRisk', undefined, params, 'linear');
|
|
24959
25024
|
params = this.omit(params, 'type');
|
|
25025
|
+
let response = undefined;
|
|
24960
25026
|
if (this.isLinear(type, subType)) {
|
|
24961
|
-
|
|
25027
|
+
response = await this.fapiPrivateV2GetPositionRisk(this.extend(request, params));
|
|
24962
25028
|
// ### Response examples ###
|
|
24963
25029
|
//
|
|
24964
25030
|
// For One-way position mode:
|
|
@@ -25015,12 +25081,11 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
25015
25081
|
// ]
|
|
25016
25082
|
}
|
|
25017
25083
|
else if (this.isInverse(type, subType)) {
|
|
25018
|
-
|
|
25084
|
+
response = await this.dapiPrivateGetPositionRisk(this.extend(request, params));
|
|
25019
25085
|
}
|
|
25020
25086
|
else {
|
|
25021
25087
|
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported(this.id + ' fetchPositionsRisk() supports linear and inverse contracts only');
|
|
25022
25088
|
}
|
|
25023
|
-
const response = await this[method](this.extend(request, params));
|
|
25024
25089
|
const result = [];
|
|
25025
25090
|
for (let i = 0; i < response.length; i++) {
|
|
25026
25091
|
const parsed = this.parsePositionRisk(response[i]);
|
|
@@ -25198,6 +25263,8 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
25198
25263
|
const defaultType = this.safeString(this.options, 'defaultType', 'future');
|
|
25199
25264
|
const type = this.safeString(params, 'type', defaultType);
|
|
25200
25265
|
params = this.omit(params, ['type']);
|
|
25266
|
+
let subType = undefined;
|
|
25267
|
+
[subType, params] = this.handleSubTypeAndParams('setPositionMode', undefined, params);
|
|
25201
25268
|
let dualSidePosition = undefined;
|
|
25202
25269
|
if (hedged) {
|
|
25203
25270
|
dualSidePosition = 'true';
|
|
@@ -25208,13 +25275,13 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
25208
25275
|
const request = {
|
|
25209
25276
|
'dualSidePosition': dualSidePosition,
|
|
25210
25277
|
};
|
|
25211
|
-
let
|
|
25212
|
-
if (this.isInverse(type)) {
|
|
25213
|
-
|
|
25278
|
+
let response = undefined;
|
|
25279
|
+
if (this.isInverse(type, subType)) {
|
|
25280
|
+
response = await this.dapiPrivatePostPositionSideDual(this.extend(request, params));
|
|
25214
25281
|
}
|
|
25215
25282
|
else {
|
|
25216
25283
|
// default to future
|
|
25217
|
-
|
|
25284
|
+
response = await this.fapiPrivatePostPositionSideDual(this.extend(request, params));
|
|
25218
25285
|
}
|
|
25219
25286
|
//
|
|
25220
25287
|
// {
|
|
@@ -25222,7 +25289,7 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
25222
25289
|
// "msg": "success"
|
|
25223
25290
|
// }
|
|
25224
25291
|
//
|
|
25225
|
-
return
|
|
25292
|
+
return response;
|
|
25226
25293
|
}
|
|
25227
25294
|
async fetchSettlementHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
25228
25295
|
/**
|
|
@@ -25434,24 +25501,9 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
25434
25501
|
if (code !== undefined) {
|
|
25435
25502
|
currency = this.currency(code);
|
|
25436
25503
|
}
|
|
25437
|
-
let method = undefined;
|
|
25438
25504
|
const request = {};
|
|
25439
25505
|
[type, params] = this.handleMarketTypeAndParams('fetchLedger', undefined, params);
|
|
25440
25506
|
[subType, params] = this.handleSubTypeAndParams('fetchLedger', undefined, params);
|
|
25441
|
-
if (type === 'option') {
|
|
25442
|
-
this.checkRequiredArgument('fetchLedger', code, 'code');
|
|
25443
|
-
request['currency'] = currency['id'];
|
|
25444
|
-
method = 'eapiPrivateGetBill';
|
|
25445
|
-
}
|
|
25446
|
-
else if (this.isLinear(type, subType)) {
|
|
25447
|
-
method = 'fapiPrivateGetIncome';
|
|
25448
|
-
}
|
|
25449
|
-
else if (this.isInverse(type, subType)) {
|
|
25450
|
-
method = 'dapiPrivateGetIncome';
|
|
25451
|
-
}
|
|
25452
|
-
else {
|
|
25453
|
-
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported(this.id + ' fetchLedger() supports contract wallets only');
|
|
25454
|
-
}
|
|
25455
25507
|
if (since !== undefined) {
|
|
25456
25508
|
request['startTime'] = since;
|
|
25457
25509
|
}
|
|
@@ -25463,7 +25515,21 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
25463
25515
|
params = this.omit(params, 'until');
|
|
25464
25516
|
request['endTime'] = until;
|
|
25465
25517
|
}
|
|
25466
|
-
|
|
25518
|
+
let response = undefined;
|
|
25519
|
+
if (type === 'option') {
|
|
25520
|
+
this.checkRequiredArgument('fetchLedger', code, 'code');
|
|
25521
|
+
request['currency'] = currency['id'];
|
|
25522
|
+
response = await this.eapiPrivateGetBill(this.extend(request, params));
|
|
25523
|
+
}
|
|
25524
|
+
else if (this.isLinear(type, subType)) {
|
|
25525
|
+
response = await this.fapiPrivateGetIncome(this.extend(request, params));
|
|
25526
|
+
}
|
|
25527
|
+
else if (this.isInverse(type, subType)) {
|
|
25528
|
+
response = await this.dapiPrivateGetIncome(this.extend(request, params));
|
|
25529
|
+
}
|
|
25530
|
+
else {
|
|
25531
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported(this.id + ' fetchLedger() supports contract wallets only');
|
|
25532
|
+
}
|
|
25467
25533
|
//
|
|
25468
25534
|
// options (eapi)
|
|
25469
25535
|
//
|
|
@@ -26337,11 +26403,13 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
26337
26403
|
const duration = this.parseTimeframe(timeframe);
|
|
26338
26404
|
request['endTime'] = this.sum(since, duration * limit * 1000);
|
|
26339
26405
|
}
|
|
26340
|
-
let
|
|
26406
|
+
let response = undefined;
|
|
26341
26407
|
if (market['inverse']) {
|
|
26342
|
-
|
|
26408
|
+
response = await this.dapiDataGetOpenInterestHist(this.extend(request, params));
|
|
26409
|
+
}
|
|
26410
|
+
else {
|
|
26411
|
+
response = await this.fapiDataGetOpenInterestHist(this.extend(request, params));
|
|
26343
26412
|
}
|
|
26344
|
-
const response = await this[method](this.extend(request, params));
|
|
26345
26413
|
//
|
|
26346
26414
|
// [
|
|
26347
26415
|
// {
|
|
@@ -26377,14 +26445,16 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
26377
26445
|
else {
|
|
26378
26446
|
request['symbol'] = market['id'];
|
|
26379
26447
|
}
|
|
26380
|
-
let
|
|
26448
|
+
let response = undefined;
|
|
26381
26449
|
if (market['option']) {
|
|
26382
|
-
|
|
26450
|
+
response = await this.eapiPublicGetOpenInterest(this.extend(request, params));
|
|
26383
26451
|
}
|
|
26384
26452
|
else if (market['inverse']) {
|
|
26385
|
-
|
|
26453
|
+
response = await this.dapiPublicGetOpenInterest(this.extend(request, params));
|
|
26454
|
+
}
|
|
26455
|
+
else {
|
|
26456
|
+
response = await this.fapiPublicGetOpenInterest(this.extend(request, params));
|
|
26386
26457
|
}
|
|
26387
|
-
const response = await this[method](this.extend(request, params));
|
|
26388
26458
|
//
|
|
26389
26459
|
// futures (fapi)
|
|
26390
26460
|
//
|
|
@@ -28665,15 +28735,20 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
28665
28735
|
else if (timeInForce === 'FOK') {
|
|
28666
28736
|
request['timeInForce'] = 'FOK';
|
|
28667
28737
|
}
|
|
28668
|
-
|
|
28669
|
-
|
|
28670
|
-
|
|
28671
|
-
const
|
|
28672
|
-
const
|
|
28673
|
-
const takeProfitPrice = this.safeNumber(params, 'takeProfitPrice');
|
|
28738
|
+
const triggerPrice = this.safeString2(params, 'stopPrice', 'triggerPrice');
|
|
28739
|
+
const stopLossPrice = this.safeString(params, 'stopLossPrice');
|
|
28740
|
+
const takeProfitPrice = this.safeString(params, 'takeProfitPrice');
|
|
28741
|
+
const trailingAmount = this.safeString(params, 'trailingAmount');
|
|
28742
|
+
const trailingPercent = this.safeString2(params, 'trailingPercent', 'priceRate');
|
|
28674
28743
|
const isTriggerOrder = triggerPrice !== undefined;
|
|
28675
28744
|
const isStopLossPriceOrder = stopLossPrice !== undefined;
|
|
28676
28745
|
const isTakeProfitPriceOrder = takeProfitPrice !== undefined;
|
|
28746
|
+
const isTrailingAmountOrder = trailingAmount !== undefined;
|
|
28747
|
+
const isTrailingPercentOrder = trailingPercent !== undefined;
|
|
28748
|
+
const isTrailing = isTrailingAmountOrder || isTrailingPercentOrder;
|
|
28749
|
+
if (((type === 'LIMIT') || (type === 'TRIGGER_LIMIT') || (type === 'STOP') || (type === 'TAKE_PROFIT')) && !isTrailing) {
|
|
28750
|
+
request['price'] = this.parseToNumeric(this.priceToPrecision(symbol, price));
|
|
28751
|
+
}
|
|
28677
28752
|
let reduceOnly = this.safeValue(params, 'reduceOnly', false);
|
|
28678
28753
|
if (isTriggerOrder) {
|
|
28679
28754
|
request['stopPrice'] = this.parseToNumeric(this.priceToPrecision(symbol, triggerPrice));
|
|
@@ -28706,6 +28781,16 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
28706
28781
|
}
|
|
28707
28782
|
}
|
|
28708
28783
|
}
|
|
28784
|
+
else if (isTrailing) {
|
|
28785
|
+
request['type'] = 'TRAILING_STOP_MARKET';
|
|
28786
|
+
if (isTrailingAmountOrder) {
|
|
28787
|
+
request['price'] = this.parseToNumeric(trailingAmount);
|
|
28788
|
+
}
|
|
28789
|
+
else if (isTrailingPercentOrder) {
|
|
28790
|
+
const requestTrailingPercent = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringDiv(trailingPercent, '100');
|
|
28791
|
+
request['priceRate'] = this.parseToNumeric(requestTrailingPercent);
|
|
28792
|
+
}
|
|
28793
|
+
}
|
|
28709
28794
|
let positionSide = undefined;
|
|
28710
28795
|
if (reduceOnly) {
|
|
28711
28796
|
positionSide = (side === 'buy') ? 'SHORT' : 'LONG';
|
|
@@ -28715,7 +28800,7 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
28715
28800
|
}
|
|
28716
28801
|
request['positionSide'] = positionSide;
|
|
28717
28802
|
request['quantity'] = this.parseToNumeric(this.amountToPrecision(symbol, amount));
|
|
28718
|
-
params = this.omit(params, ['reduceOnly', 'triggerPrice', 'stopLossPrice', 'takeProfitPrice']);
|
|
28803
|
+
params = this.omit(params, ['reduceOnly', 'triggerPrice', 'stopLossPrice', 'takeProfitPrice', 'trailingAmount', 'trailingPercent']);
|
|
28719
28804
|
}
|
|
28720
28805
|
return this.extend(request, params);
|
|
28721
28806
|
}
|
|
@@ -28738,6 +28823,8 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
28738
28823
|
* @param {float} [params.stopLossPrice] *swap only* stop loss trigger price
|
|
28739
28824
|
* @param {float} [params.takeProfitPrice] *swap only* take profit trigger price
|
|
28740
28825
|
* @param {float} [params.cost] the quote quantity that can be used as an alternative for the amount
|
|
28826
|
+
* @param {float} [params.trailingAmount] *swap only* the quote amount to trail away from the current market price
|
|
28827
|
+
* @param {float} [params.trailingPercent] *swap only* the percent to trail away from the current market price
|
|
28741
28828
|
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
28742
28829
|
*/
|
|
28743
28830
|
await this.loadMarkets();
|
|
@@ -44346,6 +44433,9 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
44346
44433
|
* @param {float} [params.takeProfit.price] *swap only* the execution price for a take profit attached to a trigger order
|
|
44347
44434
|
* @param {string} [params.stopLoss.type] *swap only* the type for a stop loss attached to a trigger order, 'fill_price', 'index_price' or 'mark_price', default is 'mark_price'
|
|
44348
44435
|
* @param {string} [params.takeProfit.type] *swap only* the type for a take profit attached to a trigger order, 'fill_price', 'index_price' or 'mark_price', default is 'mark_price'
|
|
44436
|
+
* @param {string} [params.trailingPercent] *swap and future only* the percent to trail away from the current market price, rate can not be greater than 10
|
|
44437
|
+
* @param {string} [params.trailingTriggerPrice] *swap and future only* the price to trigger a trailing stop order, default uses the price argument
|
|
44438
|
+
* @param {string} [params.triggerType] *swap and future only* 'fill_price', 'mark_price' or 'index_price'
|
|
44349
44439
|
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
44350
44440
|
*/
|
|
44351
44441
|
await this.loadMarkets();
|
|
@@ -44355,6 +44445,8 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
44355
44445
|
const triggerPrice = this.safeValue2(params, 'stopPrice', 'triggerPrice');
|
|
44356
44446
|
const stopLossTriggerPrice = this.safeValue(params, 'stopLossPrice');
|
|
44357
44447
|
const takeProfitTriggerPrice = this.safeValue(params, 'takeProfitPrice');
|
|
44448
|
+
const trailingPercent = this.safeString2(params, 'trailingPercent', 'callbackRatio');
|
|
44449
|
+
const isTrailingPercentOrder = trailingPercent !== undefined;
|
|
44358
44450
|
const isTriggerOrder = triggerPrice !== undefined;
|
|
44359
44451
|
const isStopLossTriggerOrder = stopLossTriggerPrice !== undefined;
|
|
44360
44452
|
const isTakeProfitTriggerOrder = takeProfitTriggerPrice !== undefined;
|
|
@@ -44376,7 +44468,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
44376
44468
|
}
|
|
44377
44469
|
}
|
|
44378
44470
|
else {
|
|
44379
|
-
if (isTriggerOrder) {
|
|
44471
|
+
if (isTriggerOrder || isTrailingPercentOrder) {
|
|
44380
44472
|
response = await this.privateMixPostV2MixOrderPlacePlanOrder(request);
|
|
44381
44473
|
}
|
|
44382
44474
|
else if (isStopLossOrTakeProfitTrigger) {
|
|
@@ -44431,8 +44523,11 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
44431
44523
|
const isTakeProfit = takeProfit !== undefined;
|
|
44432
44524
|
const isStopLossOrTakeProfitTrigger = isStopLossTriggerOrder || isTakeProfitTriggerOrder;
|
|
44433
44525
|
const isStopLossOrTakeProfit = isStopLoss || isTakeProfit;
|
|
44434
|
-
|
|
44435
|
-
|
|
44526
|
+
const trailingTriggerPrice = this.safeString(params, 'trailingTriggerPrice', price);
|
|
44527
|
+
const trailingPercent = this.safeString2(params, 'trailingPercent', 'callbackRatio');
|
|
44528
|
+
const isTrailingPercentOrder = trailingPercent !== undefined;
|
|
44529
|
+
if (this.sum(isTriggerOrder, isStopLossTriggerOrder, isTakeProfitTriggerOrder, isTrailingPercentOrder) > 1) {
|
|
44530
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ExchangeError(this.id + ' createOrder() params can only contain one of triggerPrice, stopLossPrice, takeProfitPrice, trailingPercent');
|
|
44436
44531
|
}
|
|
44437
44532
|
if (type === 'limit') {
|
|
44438
44533
|
request['price'] = this.priceToPrecision(symbol, price);
|
|
@@ -44457,7 +44552,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
44457
44552
|
else if (timeInForce === 'IOC') {
|
|
44458
44553
|
request['force'] = 'IOC';
|
|
44459
44554
|
}
|
|
44460
|
-
params = this.omit(params, ['stopPrice', 'triggerType', 'stopLossPrice', 'takeProfitPrice', 'stopLoss', 'takeProfit', 'postOnly', 'reduceOnly', 'clientOrderId']);
|
|
44555
|
+
params = this.omit(params, ['stopPrice', 'triggerType', 'stopLossPrice', 'takeProfitPrice', 'stopLoss', 'takeProfit', 'postOnly', 'reduceOnly', 'clientOrderId', 'trailingPercent', 'trailingTriggerPrice']);
|
|
44461
44556
|
if ((marketType === 'swap') || (marketType === 'future')) {
|
|
44462
44557
|
request['marginCoin'] = market['settleId'];
|
|
44463
44558
|
request['size'] = this.amountToPrecision(symbol, amount);
|
|
@@ -44467,34 +44562,21 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
44467
44562
|
if (clientOrderId !== undefined) {
|
|
44468
44563
|
request['clientOid'] = clientOrderId;
|
|
44469
44564
|
}
|
|
44470
|
-
if (isTriggerOrder || isStopLossOrTakeProfitTrigger) {
|
|
44565
|
+
if (isTriggerOrder || isStopLossOrTakeProfitTrigger || isTrailingPercentOrder) {
|
|
44471
44566
|
request['triggerType'] = triggerType;
|
|
44472
44567
|
}
|
|
44473
|
-
if (
|
|
44568
|
+
if (isTrailingPercentOrder) {
|
|
44474
44569
|
if (!isMarketOrder) {
|
|
44475
|
-
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.
|
|
44570
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest(this.id + ' createOrder() bitget trailing orders must be market orders');
|
|
44476
44571
|
}
|
|
44477
|
-
|
|
44478
|
-
|
|
44479
|
-
else {
|
|
44480
|
-
if (marginMode === undefined) {
|
|
44481
|
-
marginMode = 'cross';
|
|
44482
|
-
}
|
|
44483
|
-
const marginModeRequest = (marginMode === 'cross') ? 'crossed' : 'isolated';
|
|
44484
|
-
request['marginMode'] = marginModeRequest;
|
|
44485
|
-
let requestSide = side;
|
|
44486
|
-
if (reduceOnly) {
|
|
44487
|
-
request['reduceOnly'] = 'YES';
|
|
44488
|
-
request['tradeSide'] = 'Close';
|
|
44489
|
-
// on bitget if the position is long the side is always buy, and if the position is short the side is always sell
|
|
44490
|
-
requestSide = (side === 'buy') ? 'sell' : 'buy';
|
|
44572
|
+
if (trailingTriggerPrice === undefined) {
|
|
44573
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ArgumentsRequired(this.id + ' createOrder() bitget trailing orders must have a trailingTriggerPrice param');
|
|
44491
44574
|
}
|
|
44492
|
-
|
|
44493
|
-
|
|
44494
|
-
|
|
44495
|
-
request['side'] = requestSide;
|
|
44575
|
+
request['planType'] = 'track_plan';
|
|
44576
|
+
request['triggerPrice'] = this.priceToPrecision(symbol, trailingTriggerPrice);
|
|
44577
|
+
request['callbackRatio'] = trailingPercent;
|
|
44496
44578
|
}
|
|
44497
|
-
if (isTriggerOrder) {
|
|
44579
|
+
else if (isTriggerOrder) {
|
|
44498
44580
|
request['planType'] = 'normal_plan';
|
|
44499
44581
|
request['triggerPrice'] = this.priceToPrecision(symbol, triggerPrice);
|
|
44500
44582
|
if (price !== undefined) {
|
|
@@ -44518,6 +44600,10 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
44518
44600
|
}
|
|
44519
44601
|
}
|
|
44520
44602
|
else if (isStopLossOrTakeProfitTrigger) {
|
|
44603
|
+
if (!isMarketOrder) {
|
|
44604
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ExchangeError(this.id + ' createOrder() bitget stopLoss or takeProfit orders must be market orders');
|
|
44605
|
+
}
|
|
44606
|
+
request['holdSide'] = (side === 'buy') ? 'long' : 'short';
|
|
44521
44607
|
if (isStopLossTriggerOrder) {
|
|
44522
44608
|
request['triggerPrice'] = this.priceToPrecision(symbol, stopLossTriggerPrice);
|
|
44523
44609
|
request['planType'] = 'pos_loss';
|
|
@@ -44537,6 +44623,24 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
44537
44623
|
request['presetStopSurplusPrice'] = this.priceToPrecision(symbol, tpTriggerPrice);
|
|
44538
44624
|
}
|
|
44539
44625
|
}
|
|
44626
|
+
if (!isStopLossOrTakeProfitTrigger) {
|
|
44627
|
+
if (marginMode === undefined) {
|
|
44628
|
+
marginMode = 'cross';
|
|
44629
|
+
}
|
|
44630
|
+
const marginModeRequest = (marginMode === 'cross') ? 'crossed' : 'isolated';
|
|
44631
|
+
request['marginMode'] = marginModeRequest;
|
|
44632
|
+
let requestSide = side;
|
|
44633
|
+
if (reduceOnly) {
|
|
44634
|
+
request['reduceOnly'] = 'YES';
|
|
44635
|
+
request['tradeSide'] = 'Close';
|
|
44636
|
+
// on bitget if the position is long the side is always buy, and if the position is short the side is always sell
|
|
44637
|
+
requestSide = (side === 'buy') ? 'sell' : 'buy';
|
|
44638
|
+
}
|
|
44639
|
+
else {
|
|
44640
|
+
request['tradeSide'] = 'Open';
|
|
44641
|
+
}
|
|
44642
|
+
request['side'] = requestSide;
|
|
44643
|
+
}
|
|
44540
44644
|
}
|
|
44541
44645
|
else if (marketType === 'spot') {
|
|
44542
44646
|
if (isStopLossOrTakeProfitTrigger || isStopLossOrTakeProfit) {
|
|
@@ -44743,6 +44847,9 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
44743
44847
|
* @param {float} [params.takeProfit.price] *swap only* the execution price for a take profit attached to a trigger order
|
|
44744
44848
|
* @param {string} [params.stopLoss.type] *swap only* the type for a stop loss attached to a trigger order, 'fill_price', 'index_price' or 'mark_price', default is 'mark_price'
|
|
44745
44849
|
* @param {string} [params.takeProfit.type] *swap only* the type for a take profit attached to a trigger order, 'fill_price', 'index_price' or 'mark_price', default is 'mark_price'
|
|
44850
|
+
* @param {string} [params.trailingPercent] *swap and future only* the percent to trail away from the current market price, rate can not be greater than 10
|
|
44851
|
+
* @param {string} [params.trailingTriggerPrice] *swap and future only* the price to trigger a trailing stop order, default uses the price argument
|
|
44852
|
+
* @param {string} [params.newTriggerType] *swap and future only* 'fill_price', 'mark_price' or 'index_price'
|
|
44746
44853
|
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
44747
44854
|
*/
|
|
44748
44855
|
await this.loadMarkets();
|
|
@@ -44769,14 +44876,17 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
44769
44876
|
const takeProfit = this.safeValue(params, 'takeProfit');
|
|
44770
44877
|
const isStopLoss = stopLoss !== undefined;
|
|
44771
44878
|
const isTakeProfit = takeProfit !== undefined;
|
|
44772
|
-
|
|
44773
|
-
|
|
44879
|
+
const trailingTriggerPrice = this.safeString(params, 'trailingTriggerPrice', price);
|
|
44880
|
+
const trailingPercent = this.safeString2(params, 'trailingPercent', 'newCallbackRatio');
|
|
44881
|
+
const isTrailingPercentOrder = trailingPercent !== undefined;
|
|
44882
|
+
if (this.sum(isTriggerOrder, isStopLossOrder, isTakeProfitOrder, isTrailingPercentOrder) > 1) {
|
|
44883
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ExchangeError(this.id + ' editOrder() params can only contain one of triggerPrice, stopLossPrice, takeProfitPrice, trailingPercent');
|
|
44774
44884
|
}
|
|
44775
44885
|
const clientOrderId = this.safeString2(params, 'clientOid', 'clientOrderId');
|
|
44776
44886
|
if (clientOrderId !== undefined) {
|
|
44777
44887
|
request['clientOid'] = clientOrderId;
|
|
44778
44888
|
}
|
|
44779
|
-
params = this.omit(params, ['stopPrice', 'triggerType', 'stopLossPrice', 'takeProfitPrice', 'stopLoss', 'takeProfit', 'clientOrderId']);
|
|
44889
|
+
params = this.omit(params, ['stopPrice', 'triggerType', 'stopLossPrice', 'takeProfitPrice', 'stopLoss', 'takeProfit', 'clientOrderId', 'trailingTriggerPrice', 'trailingPercent']);
|
|
44780
44890
|
let response = undefined;
|
|
44781
44891
|
if (market['spot']) {
|
|
44782
44892
|
const editMarketBuyOrderRequiresPrice = this.safeValue(this.options, 'editMarketBuyOrderRequiresPrice', true);
|
|
@@ -44809,11 +44919,21 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
44809
44919
|
request['productType'] = productType;
|
|
44810
44920
|
if (!isTakeProfitOrder && !isStopLossOrder) {
|
|
44811
44921
|
request['newSize'] = this.amountToPrecision(symbol, amount);
|
|
44812
|
-
if (price !== undefined) {
|
|
44922
|
+
if ((price !== undefined) && !isTrailingPercentOrder) {
|
|
44813
44923
|
request['newPrice'] = this.priceToPrecision(symbol, price);
|
|
44814
44924
|
}
|
|
44815
44925
|
}
|
|
44816
|
-
if (
|
|
44926
|
+
if (isTrailingPercentOrder) {
|
|
44927
|
+
if (!isMarketOrder) {
|
|
44928
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest(this.id + ' editOrder() bitget trailing orders must be market orders');
|
|
44929
|
+
}
|
|
44930
|
+
if (trailingTriggerPrice !== undefined) {
|
|
44931
|
+
request['newTriggerPrice'] = this.priceToPrecision(symbol, trailingTriggerPrice);
|
|
44932
|
+
}
|
|
44933
|
+
request['newCallbackRatio'] = trailingPercent;
|
|
44934
|
+
response = await this.privateMixPostV2MixOrderModifyPlanOrder(this.extend(request, params));
|
|
44935
|
+
}
|
|
44936
|
+
else if (isTakeProfitOrder || isStopLossOrder) {
|
|
44817
44937
|
request['marginCoin'] = market['settleId'];
|
|
44818
44938
|
request['size'] = this.amountToPrecision(symbol, amount);
|
|
44819
44939
|
request['executePrice'] = this.priceToPrecision(symbol, price);
|
|
@@ -44892,6 +45012,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
44892
45012
|
* @param {string} [params.marginMode] 'isolated' or 'cross' for spot margin trading
|
|
44893
45013
|
* @param {boolean} [params.stop] set to true for canceling trigger orders
|
|
44894
45014
|
* @param {string} [params.planType] *swap only* either profit_plan, loss_plan, normal_plan, pos_profit, pos_loss, moving_plan or track_plan
|
|
45015
|
+
* @param {boolean} [params.trailing] set to true if you want to cancel a trailing order
|
|
44895
45016
|
* @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
44896
45017
|
*/
|
|
44897
45018
|
if (symbol === undefined) {
|
|
@@ -44911,8 +45032,9 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
44911
45032
|
let response = undefined;
|
|
44912
45033
|
[marginMode, params] = this.handleMarginModeAndParams('cancelOrder', params);
|
|
44913
45034
|
const request = {};
|
|
44914
|
-
const
|
|
44915
|
-
|
|
45035
|
+
const trailing = this.safeValue(params, 'trailing');
|
|
45036
|
+
const stop = this.safeValue2(params, 'stop', 'trigger');
|
|
45037
|
+
params = this.omit(params, ['stop', 'trigger', 'trailing']);
|
|
44916
45038
|
if (!(market['spot'] && stop)) {
|
|
44917
45039
|
request['symbol'] = market['id'];
|
|
44918
45040
|
}
|
|
@@ -44923,13 +45045,20 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
44923
45045
|
let productType = undefined;
|
|
44924
45046
|
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
44925
45047
|
request['productType'] = productType;
|
|
44926
|
-
if (stop) {
|
|
45048
|
+
if (stop || trailing) {
|
|
44927
45049
|
const orderIdList = [];
|
|
44928
45050
|
const orderId = {
|
|
44929
45051
|
'orderId': id,
|
|
44930
45052
|
};
|
|
44931
45053
|
orderIdList.push(orderId);
|
|
44932
45054
|
request['orderIdList'] = orderIdList;
|
|
45055
|
+
}
|
|
45056
|
+
if (trailing) {
|
|
45057
|
+
const planType = this.safeString(params, 'planType', 'track_plan');
|
|
45058
|
+
request['planType'] = planType;
|
|
45059
|
+
response = await this.privateMixPostV2MixOrderCancelPlanOrder(this.extend(request, params));
|
|
45060
|
+
}
|
|
45061
|
+
else if (stop) {
|
|
44933
45062
|
response = await this.privateMixPostV2MixOrderCancelPlanOrder(this.extend(request, params));
|
|
44934
45063
|
}
|
|
44935
45064
|
else {
|
|
@@ -45321,6 +45450,9 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
45321
45450
|
// }
|
|
45322
45451
|
// }
|
|
45323
45452
|
//
|
|
45453
|
+
if (typeof response === 'string') {
|
|
45454
|
+
response = JSON.parse(response);
|
|
45455
|
+
}
|
|
45324
45456
|
const data = this.safeValue(response, 'data');
|
|
45325
45457
|
const first = this.safeValue(data, 0, data);
|
|
45326
45458
|
return this.parseOrder(first, market);
|
|
@@ -45345,6 +45477,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
45345
45477
|
* @param {boolean} [params.stop] set to true for fetching trigger orders
|
|
45346
45478
|
* @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
|
45347
45479
|
* @param {string} [params.isPlan] *swap only* 'plan' for stop orders and 'profit_loss' for tp/sl orders, default is 'plan'
|
|
45480
|
+
* @param {boolean} [params.trailing] set to true if you want to fetch trailing orders
|
|
45348
45481
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
45349
45482
|
*/
|
|
45350
45483
|
await this.loadMarkets();
|
|
@@ -45386,8 +45519,9 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
45386
45519
|
return await this.fetchPaginatedCallCursor('fetchOpenOrders', symbol, since, limit, params, cursorReceived, 'idLessThan');
|
|
45387
45520
|
}
|
|
45388
45521
|
let response = undefined;
|
|
45522
|
+
const trailing = this.safeValue(params, 'trailing');
|
|
45389
45523
|
const stop = this.safeValue2(params, 'stop', 'trigger');
|
|
45390
|
-
params = this.omit(params, ['stop', 'trigger']);
|
|
45524
|
+
params = this.omit(params, ['stop', 'trigger', 'trailing']);
|
|
45391
45525
|
[request, params] = this.handleUntilOption('endTime', request, params);
|
|
45392
45526
|
if (since !== undefined) {
|
|
45393
45527
|
request['startTime'] = since;
|
|
@@ -45430,7 +45564,12 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
45430
45564
|
let productType = undefined;
|
|
45431
45565
|
[productType, query] = this.handleProductTypeAndParams(market, query);
|
|
45432
45566
|
request['productType'] = productType;
|
|
45433
|
-
if (
|
|
45567
|
+
if (trailing) {
|
|
45568
|
+
const planType = this.safeString(params, 'planType', 'track_plan');
|
|
45569
|
+
request['planType'] = planType;
|
|
45570
|
+
response = await this.privateMixGetV2MixOrderOrdersPlanPending(this.extend(request, query));
|
|
45571
|
+
}
|
|
45572
|
+
else if (stop) {
|
|
45434
45573
|
const planType = this.safeString(query, 'planType', 'normal_plan');
|
|
45435
45574
|
request['planType'] = planType;
|
|
45436
45575
|
response = await this.privateMixGetV2MixOrderOrdersPlanPending(this.extend(request, query));
|
|
@@ -45646,6 +45785,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
45646
45785
|
* @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
|
45647
45786
|
* @param {string} [params.isPlan] *swap only* 'plan' for stop orders and 'profit_loss' for tp/sl orders, default is 'plan'
|
|
45648
45787
|
* @param {string} [params.productType] *contract only* 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
|
|
45788
|
+
* @param {boolean} [params.trailing] set to true if you want to fetch trailing orders
|
|
45649
45789
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
45650
45790
|
*/
|
|
45651
45791
|
await this.loadMarkets();
|
|
@@ -45683,6 +45823,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
45683
45823
|
* @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
|
45684
45824
|
* @param {string} [params.isPlan] *swap only* 'plan' for stop orders and 'profit_loss' for tp/sl orders, default is 'plan'
|
|
45685
45825
|
* @param {string} [params.productType] *contract only* 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
|
|
45826
|
+
* @param {boolean} [params.trailing] set to true if you want to fetch trailing orders
|
|
45686
45827
|
* @returns {object} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
45687
45828
|
*/
|
|
45688
45829
|
await this.loadMarkets();
|
|
@@ -45735,8 +45876,9 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
45735
45876
|
return await this.fetchPaginatedCallCursor('fetchCanceledAndClosedOrders', symbol, since, limit, params, cursorReceived, 'idLessThan');
|
|
45736
45877
|
}
|
|
45737
45878
|
let response = undefined;
|
|
45879
|
+
const trailing = this.safeValue(params, 'trailing');
|
|
45738
45880
|
const stop = this.safeValue2(params, 'stop', 'trigger');
|
|
45739
|
-
params = this.omit(params, ['stop', 'trigger']);
|
|
45881
|
+
params = this.omit(params, ['stop', 'trigger', 'trailing']);
|
|
45740
45882
|
[request, params] = this.handleUntilOption('endTime', request, params);
|
|
45741
45883
|
if (since !== undefined) {
|
|
45742
45884
|
request['startTime'] = since;
|
|
@@ -45790,7 +45932,12 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
45790
45932
|
let productType = undefined;
|
|
45791
45933
|
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
45792
45934
|
request['productType'] = productType;
|
|
45793
|
-
if (
|
|
45935
|
+
if (trailing) {
|
|
45936
|
+
const planType = this.safeString(params, 'planType', 'track_plan');
|
|
45937
|
+
request['planType'] = planType;
|
|
45938
|
+
response = await this.privateMixGetV2MixOrderOrdersPlanHistory(this.extend(request, params));
|
|
45939
|
+
}
|
|
45940
|
+
else if (stop) {
|
|
45794
45941
|
const planType = this.safeString(params, 'planType', 'normal_plan');
|
|
45795
45942
|
request['planType'] = planType;
|
|
45796
45943
|
response = await this.privateMixGetV2MixOrderOrdersPlanHistory(this.extend(request, params));
|
|
@@ -51778,7 +51925,7 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
51778
51925
|
if (priceString === 'market price') {
|
|
51779
51926
|
priceString = undefined;
|
|
51780
51927
|
}
|
|
51781
|
-
const
|
|
51928
|
+
const trailingActivationPrice = this.safeNumber(order, 'activation_price');
|
|
51782
51929
|
return this.safeOrder({
|
|
51783
51930
|
'id': id,
|
|
51784
51931
|
'clientOrderId': this.safeString(order, 'client_order_id'),
|
|
@@ -51792,8 +51939,8 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
51792
51939
|
'postOnly': postOnly,
|
|
51793
51940
|
'side': this.parseOrderSide(this.safeString(order, 'side')),
|
|
51794
51941
|
'price': this.omitZero(priceString),
|
|
51795
|
-
'stopPrice':
|
|
51796
|
-
'triggerPrice':
|
|
51942
|
+
'stopPrice': trailingActivationPrice,
|
|
51943
|
+
'triggerPrice': trailingActivationPrice,
|
|
51797
51944
|
'amount': this.omitZero(this.safeString(order, 'size')),
|
|
51798
51945
|
'cost': this.safeString2(order, 'filled_notional', 'filledNotional'),
|
|
51799
51946
|
'average': this.safeStringN(order, ['price_avg', 'priceAvg', 'deal_avg_price']),
|
|
@@ -51865,6 +52012,7 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
51865
52012
|
* @see https://developer-pro.bitmart.com/en/spot/#new-order-v2-signed
|
|
51866
52013
|
* @see https://developer-pro.bitmart.com/en/spot/#place-margin-order
|
|
51867
52014
|
* @see https://developer-pro.bitmart.com/en/futures/#submit-order-signed
|
|
52015
|
+
* @see https://developer-pro.bitmart.com/en/futures/#submit-plan-order-signed
|
|
51868
52016
|
* @param {string} symbol unified symbol of the market to create an order in
|
|
51869
52017
|
* @param {string} type 'market', 'limit' or 'trailing' for swap markets only
|
|
51870
52018
|
* @param {string} side 'buy' or 'sell'
|
|
@@ -51876,12 +52024,20 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
51876
52024
|
* @param {string} [params.clientOrderId] client order id of the order
|
|
51877
52025
|
* @param {boolean} [params.reduceOnly] *swap only* reduce only
|
|
51878
52026
|
* @param {boolean} [params.postOnly] make sure the order is posted to the order book and not matched immediately
|
|
52027
|
+
* @param {string} [params.triggerPrice] *swap only* the price to trigger a stop order
|
|
52028
|
+
* @param {int} [params.price_type] *swap only* 1: last price, 2: fair price, default is 1
|
|
52029
|
+
* @param {int} [params.price_way] *swap only* 1: price way long, 2: price way short
|
|
52030
|
+
* @param {int} [params.activation_price_type] *swap trailing order only* 1: last price, 2: fair price, default is 1
|
|
52031
|
+
* @param {string} [params.trailingPercent] *swap only* the percent to trail away from the current market price, min 0.1 max 5
|
|
52032
|
+
* @param {string} [params.trailingTriggerPrice] *swap only* the price to trigger a trailing order, default uses the price argument
|
|
51879
52033
|
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
51880
52034
|
*/
|
|
51881
52035
|
await this.loadMarkets();
|
|
51882
52036
|
const market = this.market(symbol);
|
|
51883
52037
|
const result = this.handleMarginModeAndParams('createOrder', params);
|
|
51884
52038
|
const marginMode = this.safeString(result, 0);
|
|
52039
|
+
const triggerPrice = this.safeStringN(params, ['triggerPrice', 'stopPrice', 'trigger_price']);
|
|
52040
|
+
const isTriggerOrder = triggerPrice !== undefined;
|
|
51885
52041
|
let response = undefined;
|
|
51886
52042
|
if (market['spot']) {
|
|
51887
52043
|
const spotRequest = this.createSpotOrderRequest(symbol, type, side, amount, price, params);
|
|
@@ -51894,7 +52050,12 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
51894
52050
|
}
|
|
51895
52051
|
else {
|
|
51896
52052
|
const swapRequest = this.createSwapOrderRequest(symbol, type, side, amount, price, params);
|
|
51897
|
-
|
|
52053
|
+
if (isTriggerOrder) {
|
|
52054
|
+
response = await this.privatePostContractPrivateSubmitPlanOrder(swapRequest);
|
|
52055
|
+
}
|
|
52056
|
+
else {
|
|
52057
|
+
response = await this.privatePostContractPrivateSubmitOrder(swapRequest);
|
|
52058
|
+
}
|
|
51898
52059
|
}
|
|
51899
52060
|
//
|
|
51900
52061
|
// spot and margin
|
|
@@ -51926,6 +52087,7 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
51926
52087
|
* @ignore
|
|
51927
52088
|
* @description create a trade order
|
|
51928
52089
|
* @see https://developer-pro.bitmart.com/en/futures/#submit-order-signed
|
|
52090
|
+
* @see https://developer-pro.bitmart.com/en/futures/#submit-plan-order-signed
|
|
51929
52091
|
* @param {string} symbol unified symbol of the market to create an order in
|
|
51930
52092
|
* @param {string} type 'market', 'limit' or 'trailing'
|
|
51931
52093
|
* @param {string} side 'buy' or 'sell'
|
|
@@ -51936,8 +52098,12 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
51936
52098
|
* @param {boolean} [params.reduceOnly] *swap only* reduce only
|
|
51937
52099
|
* @param {string} [params.marginMode] 'cross' or 'isolated', default is 'cross'
|
|
51938
52100
|
* @param {string} [params.clientOrderId] client order id of the order
|
|
52101
|
+
* @param {string} [params.triggerPrice] *swap only* the price to trigger a stop order
|
|
52102
|
+
* @param {int} [params.price_type] *swap only* 1: last price, 2: fair price, default is 1
|
|
52103
|
+
* @param {int} [params.price_way] *swap only* 1: price way long, 2: price way short
|
|
51939
52104
|
* @param {int} [params.activation_price_type] *swap trailing order only* 1: last price, 2: fair price, default is 1
|
|
51940
|
-
* @param {string} [params.
|
|
52105
|
+
* @param {string} [params.trailingPercent] *swap only* the percent to trail away from the current market price, min 0.1 max 5
|
|
52106
|
+
* @param {string} [params.trailingTriggerPrice] *swap only* the price to trigger a trailing order, default uses the price argument
|
|
51941
52107
|
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
51942
52108
|
*/
|
|
51943
52109
|
const market = this.market(symbol);
|
|
@@ -51950,10 +52116,9 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
51950
52116
|
const mode = this.safeInteger(params, 'mode'); // only for swap
|
|
51951
52117
|
const isMarketOrder = type === 'market';
|
|
51952
52118
|
let postOnly = undefined;
|
|
51953
|
-
|
|
52119
|
+
const reduceOnly = this.safeValue(params, 'reduceOnly');
|
|
51954
52120
|
const isExchangeSpecificPo = (mode === 4);
|
|
51955
52121
|
[postOnly, params] = this.handlePostOnly(isMarketOrder, isExchangeSpecificPo, params);
|
|
51956
|
-
params = this.omit(params, ['timeInForce', 'postOnly', 'reduceOnly']);
|
|
51957
52122
|
const ioc = ((timeInForce === 'IOC') || (mode === 3));
|
|
51958
52123
|
const isLimitOrder = (type === 'limit') || postOnly || ioc;
|
|
51959
52124
|
if (timeInForce === 'GTC') {
|
|
@@ -51968,14 +52133,39 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
51968
52133
|
if (postOnly) {
|
|
51969
52134
|
request['mode'] = 4;
|
|
51970
52135
|
}
|
|
52136
|
+
const triggerPrice = this.safeStringN(params, ['triggerPrice', 'stopPrice', 'trigger_price']);
|
|
52137
|
+
const isTriggerOrder = triggerPrice !== undefined;
|
|
52138
|
+
const trailingTriggerPrice = this.safeString2(params, 'trailingTriggerPrice', 'activation_price', price);
|
|
52139
|
+
const trailingPercent = this.safeString2(params, 'trailingPercent', 'callback_rate');
|
|
52140
|
+
const isTrailingPercentOrder = trailingPercent !== undefined;
|
|
51971
52141
|
if (isLimitOrder) {
|
|
51972
52142
|
request['price'] = this.priceToPrecision(symbol, price);
|
|
51973
52143
|
}
|
|
51974
|
-
else if (type === 'trailing') {
|
|
51975
|
-
|
|
51976
|
-
request['activation_price'] = this.priceToPrecision(symbol,
|
|
52144
|
+
else if (type === 'trailing' || isTrailingPercentOrder) {
|
|
52145
|
+
request['callback_rate'] = trailingPercent;
|
|
52146
|
+
request['activation_price'] = this.priceToPrecision(symbol, trailingTriggerPrice);
|
|
51977
52147
|
request['activation_price_type'] = this.safeInteger(params, 'activation_price_type', 1);
|
|
51978
|
-
|
|
52148
|
+
}
|
|
52149
|
+
if (isTriggerOrder) {
|
|
52150
|
+
request['executive_price'] = this.priceToPrecision(symbol, price);
|
|
52151
|
+
request['trigger_price'] = this.priceToPrecision(symbol, triggerPrice);
|
|
52152
|
+
request['price_type'] = this.safeInteger(params, 'price_type', 1);
|
|
52153
|
+
if (side === 'buy') {
|
|
52154
|
+
if (reduceOnly) {
|
|
52155
|
+
request['price_way'] = 2;
|
|
52156
|
+
}
|
|
52157
|
+
else {
|
|
52158
|
+
request['price_way'] = 1;
|
|
52159
|
+
}
|
|
52160
|
+
}
|
|
52161
|
+
else if (side === 'sell') {
|
|
52162
|
+
if (reduceOnly) {
|
|
52163
|
+
request['price_way'] = 1;
|
|
52164
|
+
}
|
|
52165
|
+
else {
|
|
52166
|
+
request['price_way'] = 2;
|
|
52167
|
+
}
|
|
52168
|
+
}
|
|
51979
52169
|
}
|
|
51980
52170
|
if (side === 'buy') {
|
|
51981
52171
|
if (reduceOnly) {
|
|
@@ -52002,7 +52192,7 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
52002
52192
|
request['client_order_id'] = clientOrderId;
|
|
52003
52193
|
}
|
|
52004
52194
|
const leverage = this.safeInteger(params, 'leverage', 1);
|
|
52005
|
-
params = this.omit(params, 'leverage');
|
|
52195
|
+
params = this.omit(params, ['timeInForce', 'postOnly', 'reduceOnly', 'leverage', 'trailingTriggerPrice', 'trailingPercent', 'triggerPrice', 'stopPrice']);
|
|
52006
52196
|
request['leverage'] = this.numberToString(leverage);
|
|
52007
52197
|
return this.extend(request, params);
|
|
52008
52198
|
}
|
|
@@ -52084,10 +52274,11 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
52084
52274
|
/**
|
|
52085
52275
|
* @method
|
|
52086
52276
|
* @name bitmart#cancelOrder
|
|
52277
|
+
* @description cancels an open order
|
|
52087
52278
|
* @see https://developer-pro.bitmart.com/en/futures/#cancel-order-signed
|
|
52088
52279
|
* @see https://developer-pro.bitmart.com/en/spot/#cancel-order-v3-signed
|
|
52089
52280
|
* @see https://developer-pro.bitmart.com/en/futures/#cancel-plan-order-signed
|
|
52090
|
-
* @
|
|
52281
|
+
* @see https://developer-pro.bitmart.com/en/futures/#cancel-plan-order-signed
|
|
52091
52282
|
* @param {string} id order id
|
|
52092
52283
|
* @param {string} symbol unified symbol of the market the order was made in
|
|
52093
52284
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
@@ -52297,6 +52488,7 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
52297
52488
|
* @param {string} [params.type] *swap* order type, 'limit' or 'market'
|
|
52298
52489
|
* @param {string} [params.order_state] *swap* the order state, 'all' or 'partially_filled', default is 'all'
|
|
52299
52490
|
* @param {string} [params.orderType] *swap only* 'limit', 'market', or 'trailing'
|
|
52491
|
+
* @param {boolean} [params.trailing] *swap only* set to true if you want to fetch trailing orders
|
|
52300
52492
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
52301
52493
|
*/
|
|
52302
52494
|
await this.loadMarkets();
|
|
@@ -52329,8 +52521,12 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
52329
52521
|
response = await this.privatePostSpotV4QueryOpenOrders(this.extend(request, params));
|
|
52330
52522
|
}
|
|
52331
52523
|
else if (type === 'swap') {
|
|
52332
|
-
const
|
|
52333
|
-
|
|
52524
|
+
const trailing = this.safeValue(params, 'trailing', false);
|
|
52525
|
+
let orderType = this.safeString(params, 'orderType');
|
|
52526
|
+
params = this.omit(params, ['orderType', 'trailing']);
|
|
52527
|
+
if (trailing) {
|
|
52528
|
+
orderType = 'trailing';
|
|
52529
|
+
}
|
|
52334
52530
|
if (orderType !== undefined) {
|
|
52335
52531
|
request['type'] = orderType;
|
|
52336
52532
|
}
|
|
@@ -52476,6 +52672,7 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
52476
52672
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
52477
52673
|
* @param {string} [params.clientOrderId] *spot* fetch the order by client order id instead of order id
|
|
52478
52674
|
* @param {string} [params.orderType] *swap only* 'limit', 'market', 'liquidate', 'bankruptcy', 'adl' or 'trailing'
|
|
52675
|
+
* @param {boolean} [params.trailing] *swap only* set to true if you want to fetch a trailing order
|
|
52479
52676
|
* @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
52480
52677
|
*/
|
|
52481
52678
|
await this.loadMarkets();
|
|
@@ -52503,8 +52700,12 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
52503
52700
|
if (symbol === undefined) {
|
|
52504
52701
|
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' fetchOrder() requires a symbol argument');
|
|
52505
52702
|
}
|
|
52506
|
-
const
|
|
52507
|
-
|
|
52703
|
+
const trailing = this.safeValue(params, 'trailing', false);
|
|
52704
|
+
let orderType = this.safeString(params, 'orderType');
|
|
52705
|
+
params = this.omit(params, ['orderType', 'trailing']);
|
|
52706
|
+
if (trailing) {
|
|
52707
|
+
orderType = 'trailing';
|
|
52708
|
+
}
|
|
52508
52709
|
if (orderType !== undefined) {
|
|
52509
52710
|
request['type'] = orderType;
|
|
52510
52711
|
}
|
|
@@ -67738,6 +67939,2324 @@ class bitstamp extends _abstract_bitstamp_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
67738
67939
|
}
|
|
67739
67940
|
|
|
67740
67941
|
|
|
67942
|
+
/***/ }),
|
|
67943
|
+
|
|
67944
|
+
/***/ 8994:
|
|
67945
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
67946
|
+
|
|
67947
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
67948
|
+
/* harmony export */ Z: () => (/* binding */ bitteam)
|
|
67949
|
+
/* harmony export */ });
|
|
67950
|
+
/* harmony import */ var _abstract_bitteam_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(133);
|
|
67951
|
+
/* harmony import */ var _base_errors_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6689);
|
|
67952
|
+
/* harmony import */ var _base_functions_number_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9292);
|
|
67953
|
+
/* harmony import */ var _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2194);
|
|
67954
|
+
// ---------------------------------------------------------------------------
|
|
67955
|
+
|
|
67956
|
+
|
|
67957
|
+
|
|
67958
|
+
|
|
67959
|
+
// ---------------------------------------------------------------------------
|
|
67960
|
+
/**
|
|
67961
|
+
* @class bitteam
|
|
67962
|
+
* @augments Exchange
|
|
67963
|
+
*/
|
|
67964
|
+
class bitteam extends _abstract_bitteam_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
67965
|
+
describe() {
|
|
67966
|
+
return this.deepExtend(super.describe(), {
|
|
67967
|
+
'id': 'bitteam',
|
|
67968
|
+
'name': 'BIT.TEAM',
|
|
67969
|
+
'countries': ['UK'],
|
|
67970
|
+
'version': 'v2.0.6',
|
|
67971
|
+
'rateLimit': 1,
|
|
67972
|
+
'certified': false,
|
|
67973
|
+
'pro': false,
|
|
67974
|
+
'has': {
|
|
67975
|
+
'CORS': undefined,
|
|
67976
|
+
'spot': true,
|
|
67977
|
+
'margin': false,
|
|
67978
|
+
'swap': false,
|
|
67979
|
+
'future': false,
|
|
67980
|
+
'option': false,
|
|
67981
|
+
'addMargin': false,
|
|
67982
|
+
'borrowMargin': false,
|
|
67983
|
+
'cancelAllOrders': true,
|
|
67984
|
+
'cancelOrder': true,
|
|
67985
|
+
'cancelOrders': false,
|
|
67986
|
+
'createDepositAddress': false,
|
|
67987
|
+
'createOrder': true,
|
|
67988
|
+
'createPostOnlyOrder': false,
|
|
67989
|
+
'createReduceOnlyOrder': false,
|
|
67990
|
+
'createStopLimitOrder': false,
|
|
67991
|
+
'createStopMarketOrder': false,
|
|
67992
|
+
'createStopOrder': false,
|
|
67993
|
+
'deposit': false,
|
|
67994
|
+
'editOrder': false,
|
|
67995
|
+
'fetchAccounts': false,
|
|
67996
|
+
'fetchBalance': true,
|
|
67997
|
+
'fetchBidsAsks': false,
|
|
67998
|
+
'fetchBorrowInterest': false,
|
|
67999
|
+
'fetchBorrowRateHistories': false,
|
|
68000
|
+
'fetchBorrowRateHistory': false,
|
|
68001
|
+
'fetchCanceledOrders': true,
|
|
68002
|
+
'fetchClosedOrder': false,
|
|
68003
|
+
'fetchClosedOrders': true,
|
|
68004
|
+
'fetchCrossBorrowRate': false,
|
|
68005
|
+
'fetchCrossBorrowRates': false,
|
|
68006
|
+
'fetchCurrencies': true,
|
|
68007
|
+
'fetchDeposit': false,
|
|
68008
|
+
'fetchDepositAddress': false,
|
|
68009
|
+
'fetchDepositAddresses': false,
|
|
68010
|
+
'fetchDepositAddressesByNetwork': false,
|
|
68011
|
+
'fetchDeposits': false,
|
|
68012
|
+
'fetchDepositsWithdrawals': true,
|
|
68013
|
+
'fetchDepositWithdrawFee': false,
|
|
68014
|
+
'fetchDepositWithdrawFees': false,
|
|
68015
|
+
'fetchFundingHistory': false,
|
|
68016
|
+
'fetchFundingRate': false,
|
|
68017
|
+
'fetchFundingRateHistory': false,
|
|
68018
|
+
'fetchFundingRates': false,
|
|
68019
|
+
'fetchIndexOHLCV': false,
|
|
68020
|
+
'fetchIsolatedBorrowRate': false,
|
|
68021
|
+
'fetchIsolatedBorrowRates': false,
|
|
68022
|
+
'fetchL3OrderBook': false,
|
|
68023
|
+
'fetchLedger': false,
|
|
68024
|
+
'fetchLeverage': false,
|
|
68025
|
+
'fetchLeverageTiers': false,
|
|
68026
|
+
'fetchMarketLeverageTiers': false,
|
|
68027
|
+
'fetchMarkets': true,
|
|
68028
|
+
'fetchMarkOHLCV': false,
|
|
68029
|
+
'fetchMyTrades': true,
|
|
68030
|
+
'fetchOHLCV': true,
|
|
68031
|
+
'fetchOpenInterestHistory': false,
|
|
68032
|
+
'fetchOpenOrder': false,
|
|
68033
|
+
'fetchOpenOrders': true,
|
|
68034
|
+
'fetchOrder': true,
|
|
68035
|
+
'fetchOrderBook': true,
|
|
68036
|
+
'fetchOrderBooks': false,
|
|
68037
|
+
'fetchOrders': true,
|
|
68038
|
+
'fetchOrderTrades': false,
|
|
68039
|
+
'fetchPosition': false,
|
|
68040
|
+
'fetchPositions': false,
|
|
68041
|
+
'fetchPositionsRisk': false,
|
|
68042
|
+
'fetchPremiumIndexOHLCV': false,
|
|
68043
|
+
'fetchStatus': false,
|
|
68044
|
+
'fetchTicker': true,
|
|
68045
|
+
'fetchTickers': true,
|
|
68046
|
+
'fetchTime': false,
|
|
68047
|
+
'fetchTrades': true,
|
|
68048
|
+
'fetchTradingFee': false,
|
|
68049
|
+
'fetchTradingFees': false,
|
|
68050
|
+
'fetchTradingLimits': false,
|
|
68051
|
+
'fetchTransactionFee': false,
|
|
68052
|
+
'fetchTransactionFees': false,
|
|
68053
|
+
'fetchTransactions': true,
|
|
68054
|
+
'fetchTransfers': false,
|
|
68055
|
+
'fetchWithdrawal': false,
|
|
68056
|
+
'fetchWithdrawals': false,
|
|
68057
|
+
'fetchWithdrawalWhitelist': false,
|
|
68058
|
+
'reduceMargin': false,
|
|
68059
|
+
'repayMargin': false,
|
|
68060
|
+
'setLeverage': false,
|
|
68061
|
+
'setMargin': false,
|
|
68062
|
+
'setMarginMode': false,
|
|
68063
|
+
'setPositionMode': false,
|
|
68064
|
+
'signIn': false,
|
|
68065
|
+
'transfer': false,
|
|
68066
|
+
'withdraw': false,
|
|
68067
|
+
'ws': false,
|
|
68068
|
+
},
|
|
68069
|
+
'timeframes': {
|
|
68070
|
+
'1m': '1',
|
|
68071
|
+
'5m': '5',
|
|
68072
|
+
'15m': '15',
|
|
68073
|
+
'1h': '60',
|
|
68074
|
+
'1d': '1D',
|
|
68075
|
+
},
|
|
68076
|
+
'urls': {
|
|
68077
|
+
'logo': 'https://private-user-images.githubusercontent.com/43336371/291263231-aa2e0d61-edba-44a8-b9bf-68797dc417bd.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MDMwOTE4NTYsIm5iZiI6MTcwMzA5MTU1NiwicGF0aCI6Ii80MzMzNjM3MS8yOTEyNjMyMzEtYWEyZTBkNjEtZWRiYS00NGE4LWI5YmYtNjg3OTdkYzQxN2JkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFJV05KWUFYNENTVkVINTNBJTJGMjAyMzEyMjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjMxMjIwVDE2NTkxNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTVkOGE5YmY3ZDMzMWY4YzVjODYzYWJjNjE1MGFkNTRkNzVlMDJmNWE1ZTgwNGQ2NzVkMzkyZTFhOTc4OTNjMWQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.B-ySU5Uo6vz53-iDe08tTQmJH6QOzUA9Jcbj-kZc2wg',
|
|
68078
|
+
'api': {
|
|
68079
|
+
'history': 'https://history.bit.team',
|
|
68080
|
+
'public': 'https://bit.team',
|
|
68081
|
+
'private': 'https://bit.team',
|
|
68082
|
+
},
|
|
68083
|
+
'www': 'https://bit.team/',
|
|
68084
|
+
'referral': 'https://bit.team/auth/sign-up?ref=bitboy2023',
|
|
68085
|
+
'doc': [
|
|
68086
|
+
'https://bit.team/trade/api/documentation',
|
|
68087
|
+
],
|
|
68088
|
+
},
|
|
68089
|
+
'api': {
|
|
68090
|
+
'history': {
|
|
68091
|
+
'get': {
|
|
68092
|
+
'api/tw/history/{pairName}/{resolution}': 1,
|
|
68093
|
+
},
|
|
68094
|
+
},
|
|
68095
|
+
'public': {
|
|
68096
|
+
'get': {
|
|
68097
|
+
'trade/api/asset': 1,
|
|
68098
|
+
'trade/api/currencies': 1,
|
|
68099
|
+
'trade/api/orderbooks/{symbol}': 1,
|
|
68100
|
+
'trade/api/orders': 1,
|
|
68101
|
+
'trade/api/pair/{name}': 1,
|
|
68102
|
+
'trade/api/pairs': 1,
|
|
68103
|
+
'trade/api/pairs/precisions': 1,
|
|
68104
|
+
'trade/api/rates': 1,
|
|
68105
|
+
'trade/api/trade/{id}': 1,
|
|
68106
|
+
'trade/api/trades': 1,
|
|
68107
|
+
'trade/api/ccxt/pairs': 1,
|
|
68108
|
+
'trade/api/cmc/assets': 1,
|
|
68109
|
+
'trade/api/cmc/orderbook/{pair}': 1,
|
|
68110
|
+
'trade/api/cmc/summary': 1,
|
|
68111
|
+
'trade/api/cmc/ticker': 1,
|
|
68112
|
+
'trade/api/cmc/trades/{pair}': 1,
|
|
68113
|
+
},
|
|
68114
|
+
},
|
|
68115
|
+
'private': {
|
|
68116
|
+
'get': {
|
|
68117
|
+
'trade/api/ccxt/balance': 1,
|
|
68118
|
+
'trade/api/ccxt/order/{id}': 1,
|
|
68119
|
+
'trade/api/ccxt/ordersOfUser': 1,
|
|
68120
|
+
'trade/api/ccxt/tradesOfUser': 1,
|
|
68121
|
+
'trade/api/transactionsOfUser': 1,
|
|
68122
|
+
},
|
|
68123
|
+
'post': {
|
|
68124
|
+
'trade/api/ccxt/cancel-all-order': 1,
|
|
68125
|
+
'trade/api/ccxt/cancelorder': 1,
|
|
68126
|
+
'trade/api/ccxt/ordercreate': 1,
|
|
68127
|
+
},
|
|
68128
|
+
},
|
|
68129
|
+
},
|
|
68130
|
+
'fees': {
|
|
68131
|
+
'trading': {
|
|
68132
|
+
'feeSide': 'get',
|
|
68133
|
+
'tierBased': false,
|
|
68134
|
+
'percentage': true,
|
|
68135
|
+
'taker': this.parseNumber('0.002'),
|
|
68136
|
+
'maker': this.parseNumber('0.002'),
|
|
68137
|
+
},
|
|
68138
|
+
},
|
|
68139
|
+
'precisionMode': _base_functions_number_js__WEBPACK_IMPORTED_MODULE_1__/* .DECIMAL_PLACES */ .nr,
|
|
68140
|
+
// exchange-specific options
|
|
68141
|
+
'options': {
|
|
68142
|
+
'networksById': {
|
|
68143
|
+
'Ethereum': 'ERC20',
|
|
68144
|
+
'ethereum': 'ERC20',
|
|
68145
|
+
'Tron': 'TRC20',
|
|
68146
|
+
'tron': 'TRC20',
|
|
68147
|
+
'Binance': 'BSC',
|
|
68148
|
+
'binance': 'BSC',
|
|
68149
|
+
'Binance Smart Chain': 'BSC',
|
|
68150
|
+
'bscscan': 'BSC',
|
|
68151
|
+
'Bitcoin': 'BTC',
|
|
68152
|
+
'bitcoin': 'BTC',
|
|
68153
|
+
'Litecoin': 'LTC',
|
|
68154
|
+
'litecoin': 'LTC',
|
|
68155
|
+
'Polygon': 'POLYGON',
|
|
68156
|
+
'polygon': 'POLYGON',
|
|
68157
|
+
'PRIZM': 'PRIZM',
|
|
68158
|
+
'Decimal': 'Decimal',
|
|
68159
|
+
'ufobject': 'ufobject',
|
|
68160
|
+
'tonchain': 'tonchain',
|
|
68161
|
+
},
|
|
68162
|
+
'currenciesValuedInUsd': {
|
|
68163
|
+
'USDT': true,
|
|
68164
|
+
'BUSD': true,
|
|
68165
|
+
},
|
|
68166
|
+
},
|
|
68167
|
+
'exceptions': {
|
|
68168
|
+
'exact': {
|
|
68169
|
+
'400002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
|
|
68170
|
+
'401000': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
|
|
68171
|
+
'403002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
|
|
68172
|
+
'404200': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol, // {"ok":false,"code":404200,"data":{},"message":"Pair was not found"}
|
|
68173
|
+
},
|
|
68174
|
+
'broad': {
|
|
68175
|
+
'is not allowed': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
|
|
68176
|
+
'Insufficient funds': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
|
|
68177
|
+
'Invalid request params input': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
|
|
68178
|
+
'must be a number': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
|
|
68179
|
+
'must be a string': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
|
|
68180
|
+
'must be of type': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
|
|
68181
|
+
'must be one of': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
|
|
68182
|
+
'Order not found': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFound,
|
|
68183
|
+
'Pair with pair name': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
|
|
68184
|
+
'pairName': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
|
|
68185
|
+
'Service Unavailable': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeNotAvailable,
|
|
68186
|
+
'Symbol ': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol, // {"ok":false,"code":404000,"data":{},"message":"Symbol asdfasdfas was not found"}
|
|
68187
|
+
},
|
|
68188
|
+
},
|
|
68189
|
+
});
|
|
68190
|
+
}
|
|
68191
|
+
async fetchMarkets(params = {}) {
|
|
68192
|
+
/**
|
|
68193
|
+
* @method
|
|
68194
|
+
* @name bitteam#fetchMarkets
|
|
68195
|
+
* @description retrieves data on all markets for bitteam
|
|
68196
|
+
* @see https://bit.team/trade/api/documentation#/CCXT/getTradeApiCcxtPairs
|
|
68197
|
+
* @param {object} [params] extra parameters specific to the exchange api endpoint
|
|
68198
|
+
* @returns {object[]} an array of objects representing market data
|
|
68199
|
+
*/
|
|
68200
|
+
const response = await this.publicGetTradeApiCcxtPairs(params);
|
|
68201
|
+
//
|
|
68202
|
+
// {
|
|
68203
|
+
// "ok": true,
|
|
68204
|
+
// "result": {
|
|
68205
|
+
// "count": 28,
|
|
68206
|
+
// "pairs": [
|
|
68207
|
+
// {
|
|
68208
|
+
// "id": 2,
|
|
68209
|
+
// "name": "eth_usdt",
|
|
68210
|
+
// "baseAssetId": 2,
|
|
68211
|
+
// "quoteAssetId": 3,
|
|
68212
|
+
// "fullName": "ETH USDT",
|
|
68213
|
+
// "description": "ETH USDT",
|
|
68214
|
+
// "lastBuy": 1964.665001,
|
|
68215
|
+
// "lastSell": 1959.835005,
|
|
68216
|
+
// "lastPrice": 1964.665001,
|
|
68217
|
+
// "change24": 1.41,
|
|
68218
|
+
// "volume24": 28.22627543,
|
|
68219
|
+
// "volume24USD": 55662.35636401598,
|
|
68220
|
+
// "active": true,
|
|
68221
|
+
// "baseStep": 8,
|
|
68222
|
+
// "quoteStep": 6,
|
|
68223
|
+
// "status": 1,
|
|
68224
|
+
// "settings": {
|
|
68225
|
+
// "limit_usd": "0.1",
|
|
68226
|
+
// "price_max": "10000000000000",
|
|
68227
|
+
// "price_min": "1",
|
|
68228
|
+
// "price_tick": "1",
|
|
68229
|
+
// "pricescale": 10000,
|
|
68230
|
+
// "lot_size_max": "1000000000000000",
|
|
68231
|
+
// "lot_size_min": "1",
|
|
68232
|
+
// "lot_size_tick": "1",
|
|
68233
|
+
// "price_view_min": 6,
|
|
68234
|
+
// "default_slippage": 10,
|
|
68235
|
+
// "lot_size_view_min": 6
|
|
68236
|
+
// },
|
|
68237
|
+
// "updateId": "50620",
|
|
68238
|
+
// "timeStart": "2021-01-28T09:19:30.706Z",
|
|
68239
|
+
// "makerFee": 200,
|
|
68240
|
+
// "takerFee": 200,
|
|
68241
|
+
// "quoteVolume24": 54921.93404134529,
|
|
68242
|
+
// "lowPrice24": 1919.355,
|
|
68243
|
+
// "highPrice24": 1971.204995
|
|
68244
|
+
// },
|
|
68245
|
+
// {
|
|
68246
|
+
// "id": 27,
|
|
68247
|
+
// "name": "ltc_usdt",
|
|
68248
|
+
// "baseAssetId": 13,
|
|
68249
|
+
// "quoteAssetId": 3,
|
|
68250
|
+
// "fullName": "LTC USDT",
|
|
68251
|
+
// "description": "This is LTC USDT",
|
|
68252
|
+
// "lastBuy": 53.14,
|
|
68253
|
+
// "lastSell": 53.58,
|
|
68254
|
+
// "lastPrice": 53.58,
|
|
68255
|
+
// "change24": -6.72,
|
|
68256
|
+
// "volume24": 0,
|
|
68257
|
+
// "volume24USD": null,
|
|
68258
|
+
// "active": true,
|
|
68259
|
+
// "baseStep": 8,
|
|
68260
|
+
// "quoteStep": 6,
|
|
68261
|
+
// "status": 0,
|
|
68262
|
+
// "settings": {
|
|
68263
|
+
// "limit_usd": "0.1",
|
|
68264
|
+
// "price_max": "1000000000000",
|
|
68265
|
+
// "price_min": "1",
|
|
68266
|
+
// "price_tick": "1",
|
|
68267
|
+
// "pricescale": 10000,
|
|
68268
|
+
// "lot_size_max": "1000000000000",
|
|
68269
|
+
// "lot_size_min": "1",
|
|
68270
|
+
// "lot_size_tick": "1",
|
|
68271
|
+
// "price_view_min": 6,
|
|
68272
|
+
// "default_slippage": 10,
|
|
68273
|
+
// "lot_size_view_min": 6
|
|
68274
|
+
// },
|
|
68275
|
+
// "updateId": "30",
|
|
68276
|
+
// "timeStart": "2021-10-13T12:11:05.359Z",
|
|
68277
|
+
// "makerFee": 200,
|
|
68278
|
+
// "takerFee": 200,
|
|
68279
|
+
// "quoteVolume24": 0,
|
|
68280
|
+
// "lowPrice24": null,
|
|
68281
|
+
// "highPrice24": null
|
|
68282
|
+
// }
|
|
68283
|
+
// ]
|
|
68284
|
+
// }
|
|
68285
|
+
// }
|
|
68286
|
+
//
|
|
68287
|
+
const result = this.safeValue(response, 'result', {});
|
|
68288
|
+
const markets = this.safeValue(result, 'pairs', []);
|
|
68289
|
+
return this.parseMarkets(markets);
|
|
68290
|
+
}
|
|
68291
|
+
parseMarket(market) {
|
|
68292
|
+
const id = this.safeString(market, 'name');
|
|
68293
|
+
const numericId = this.safeInteger(market, 'id');
|
|
68294
|
+
const parts = id.split('_');
|
|
68295
|
+
const baseId = this.safeString(parts, 0);
|
|
68296
|
+
const quoteId = this.safeString(parts, 1);
|
|
68297
|
+
const base = this.safeCurrencyCode(baseId);
|
|
68298
|
+
const quote = this.safeCurrencyCode(quoteId);
|
|
68299
|
+
const active = this.safeValue(market, 'active');
|
|
68300
|
+
const amountPrecision = this.safeInteger(market, 'baseStep');
|
|
68301
|
+
const pricePrecision = this.safeInteger(market, 'quoteStep');
|
|
68302
|
+
const timeStart = this.safeString(market, 'timeStart');
|
|
68303
|
+
const created = this.parse8601(timeStart);
|
|
68304
|
+
let minCost = undefined;
|
|
68305
|
+
const currenciesValuedInUsd = this.safeValue(this.options, 'currenciesValuedInUsd', {});
|
|
68306
|
+
const quoteInUsd = this.safeValue(currenciesValuedInUsd, quote, false);
|
|
68307
|
+
if (quoteInUsd) {
|
|
68308
|
+
const settings = this.safeValue(market, 'settings', {});
|
|
68309
|
+
minCost = this.safeNumber(settings, 'limit_usd');
|
|
68310
|
+
}
|
|
68311
|
+
return this.safeMarketStructure({
|
|
68312
|
+
'id': id,
|
|
68313
|
+
'numericId': numericId,
|
|
68314
|
+
'symbol': base + '/' + quote,
|
|
68315
|
+
'base': base,
|
|
68316
|
+
'quote': quote,
|
|
68317
|
+
'settle': undefined,
|
|
68318
|
+
'baseId': baseId,
|
|
68319
|
+
'quoteId': quoteId,
|
|
68320
|
+
'settleId': undefined,
|
|
68321
|
+
'type': 'spot',
|
|
68322
|
+
'spot': true,
|
|
68323
|
+
'margin': false,
|
|
68324
|
+
'swap': false,
|
|
68325
|
+
'future': false,
|
|
68326
|
+
'option': false,
|
|
68327
|
+
'active': active,
|
|
68328
|
+
'contract': false,
|
|
68329
|
+
'linear': undefined,
|
|
68330
|
+
'inverse': undefined,
|
|
68331
|
+
'contractSize': undefined,
|
|
68332
|
+
'expiry': undefined,
|
|
68333
|
+
'expiryDatetime': undefined,
|
|
68334
|
+
'strike': undefined,
|
|
68335
|
+
'optionType': undefined,
|
|
68336
|
+
'precision': {
|
|
68337
|
+
'amount': amountPrecision,
|
|
68338
|
+
'price': pricePrecision,
|
|
68339
|
+
},
|
|
68340
|
+
'limits': {
|
|
68341
|
+
'leverage': {
|
|
68342
|
+
'min': undefined,
|
|
68343
|
+
'max': undefined,
|
|
68344
|
+
},
|
|
68345
|
+
'amount': {
|
|
68346
|
+
'min': undefined,
|
|
68347
|
+
'max': undefined,
|
|
68348
|
+
},
|
|
68349
|
+
'price': {
|
|
68350
|
+
'min': undefined,
|
|
68351
|
+
'max': undefined,
|
|
68352
|
+
},
|
|
68353
|
+
'cost': {
|
|
68354
|
+
'min': minCost,
|
|
68355
|
+
'max': undefined,
|
|
68356
|
+
},
|
|
68357
|
+
},
|
|
68358
|
+
'created': created,
|
|
68359
|
+
'info': market,
|
|
68360
|
+
});
|
|
68361
|
+
}
|
|
68362
|
+
async fetchCurrencies(params = {}) {
|
|
68363
|
+
/**
|
|
68364
|
+
* @method
|
|
68365
|
+
* @name bitteam#fetchCurrencies
|
|
68366
|
+
* @description fetches all available currencies on an exchange
|
|
68367
|
+
* @see https://bit.team/trade/api/documentation#/PUBLIC/getTradeApiCurrencies
|
|
68368
|
+
* @param {object} [params] extra parameters specific to the bitteam api endpoint
|
|
68369
|
+
* @returns {object} an associative dictionary of currencies
|
|
68370
|
+
*/
|
|
68371
|
+
const response = await this.publicGetTradeApiCurrencies(params);
|
|
68372
|
+
//
|
|
68373
|
+
// {
|
|
68374
|
+
// "ok": true,
|
|
68375
|
+
// "result": {
|
|
68376
|
+
// "count": 24,
|
|
68377
|
+
// "currencies": [
|
|
68378
|
+
// {
|
|
68379
|
+
// "txLimits": {
|
|
68380
|
+
// "minDeposit": "0.0001",
|
|
68381
|
+
// "minWithdraw": "0.02",
|
|
68382
|
+
// "maxWithdraw": "10000",
|
|
68383
|
+
// "withdrawCommissionPercentage": "NaN",
|
|
68384
|
+
// "withdrawCommissionFixed": "0.005"
|
|
68385
|
+
// },
|
|
68386
|
+
// "id": 2,
|
|
68387
|
+
// "status": 1,
|
|
68388
|
+
// "symbol": "eth",
|
|
68389
|
+
// "title": "Ethereum",
|
|
68390
|
+
// "logoURL": "https://ethereum.org/static/6b935ac0e6194247347855dc3d328e83/34ca5/eth-diamond-black.png",
|
|
68391
|
+
// "isDiscount": false,
|
|
68392
|
+
// "address": "https://ethereum.org/",
|
|
68393
|
+
// "description": "Ethereum ETH",
|
|
68394
|
+
// "decimals": 18,
|
|
68395
|
+
// "blockChain": "Ethereum",
|
|
68396
|
+
// "precision": 8,
|
|
68397
|
+
// "currentRate": null,
|
|
68398
|
+
// "active": true,
|
|
68399
|
+
// "timeStart": "2021-01-28T08:57:41.719Z",
|
|
68400
|
+
// "type": "crypto",
|
|
68401
|
+
// "typeNetwork": "internalGW",
|
|
68402
|
+
// "idSorting": 2,
|
|
68403
|
+
// "links": [
|
|
68404
|
+
// {
|
|
68405
|
+
// "tx": "https://etherscan.io/tx/",
|
|
68406
|
+
// "address": "https://etherscan.io/address/",
|
|
68407
|
+
// "blockChain": "Ethereum"
|
|
68408
|
+
// }
|
|
68409
|
+
// ]
|
|
68410
|
+
// },
|
|
68411
|
+
// {
|
|
68412
|
+
// "txLimits": {
|
|
68413
|
+
// "minDeposit": "0.001",
|
|
68414
|
+
// "minWithdraw": "1",
|
|
68415
|
+
// "maxWithdraw": "100000",
|
|
68416
|
+
// "withdrawCommissionPercentage": "NaN",
|
|
68417
|
+
// "withdrawCommissionFixed": {
|
|
68418
|
+
// "Tron": "2",
|
|
68419
|
+
// "Binance": "2",
|
|
68420
|
+
// "Ethereum": "20"
|
|
68421
|
+
// }
|
|
68422
|
+
// },
|
|
68423
|
+
// "id": 3,
|
|
68424
|
+
// "status": 1,
|
|
68425
|
+
// "symbol": "usdt",
|
|
68426
|
+
// "title": "Tether USD",
|
|
68427
|
+
// "logoURL": "https://cryptologos.cc/logos/tether-usdt-logo.png?v=010",
|
|
68428
|
+
// "isDiscount": false,
|
|
68429
|
+
// "address": "https://tether.to/",
|
|
68430
|
+
// "description": "Tether USD",
|
|
68431
|
+
// "decimals": 6,
|
|
68432
|
+
// "blockChain": "",
|
|
68433
|
+
// "precision": 6,
|
|
68434
|
+
// "currentRate": null,
|
|
68435
|
+
// "active": true,
|
|
68436
|
+
// "timeStart": "2021-01-28T09:04:17.170Z",
|
|
68437
|
+
// "type": "crypto",
|
|
68438
|
+
// "typeNetwork": "internalGW",
|
|
68439
|
+
// "idSorting": 0,
|
|
68440
|
+
// "links": [
|
|
68441
|
+
// {
|
|
68442
|
+
// "tx": "https://etherscan.io/tx/",
|
|
68443
|
+
// "address": "https://etherscan.io/address/",
|
|
68444
|
+
// "blockChain": "Ethereum"
|
|
68445
|
+
// },
|
|
68446
|
+
// {
|
|
68447
|
+
// "tx": "https://tronscan.org/#/transaction/",
|
|
68448
|
+
// "address": "https://tronscan.org/#/address/",
|
|
68449
|
+
// "blockChain": "Tron"
|
|
68450
|
+
// },
|
|
68451
|
+
// {
|
|
68452
|
+
// "tx": "https://bscscan.com/tx/",
|
|
68453
|
+
// "address": "https://bscscan.com/address/",
|
|
68454
|
+
// "blockChain": "Binance"
|
|
68455
|
+
// }
|
|
68456
|
+
// ]
|
|
68457
|
+
// }
|
|
68458
|
+
// ]
|
|
68459
|
+
// }
|
|
68460
|
+
// }
|
|
68461
|
+
//
|
|
68462
|
+
const responseResult = this.safeValue(response, 'result', {});
|
|
68463
|
+
const currencies = this.safeValue(responseResult, 'currencies', []);
|
|
68464
|
+
// usding another endpoint to fetch statuses of deposits and withdrawals
|
|
68465
|
+
let statusesResponse = await this.publicGetTradeApiCmcAssets();
|
|
68466
|
+
//
|
|
68467
|
+
// {
|
|
68468
|
+
// "ZNX": {
|
|
68469
|
+
// "name": "ZeNeX Coin",
|
|
68470
|
+
// "unified_cryptoasset_id": 30,
|
|
68471
|
+
// "withdrawStatus": true,
|
|
68472
|
+
// "depositStatus": true,
|
|
68473
|
+
// "min_withdraw": 0.00001,
|
|
68474
|
+
// "max_withdraw": 10000
|
|
68475
|
+
// },
|
|
68476
|
+
// "USDT": {
|
|
68477
|
+
// "name": "Tether USD",
|
|
68478
|
+
// "unified_cryptoasset_id": 3,
|
|
68479
|
+
// "withdrawStatus": true,
|
|
68480
|
+
// "depositStatus": true,
|
|
68481
|
+
// "min_withdraw": 1,
|
|
68482
|
+
// "max_withdraw": 100000
|
|
68483
|
+
// },
|
|
68484
|
+
// }
|
|
68485
|
+
//
|
|
68486
|
+
statusesResponse = this.indexBy(statusesResponse, 'unified_cryptoasset_id');
|
|
68487
|
+
const result = {};
|
|
68488
|
+
for (let i = 0; i < currencies.length; i++) {
|
|
68489
|
+
const currency = currencies[i];
|
|
68490
|
+
const id = this.safeString(currency, 'symbol');
|
|
68491
|
+
const numericId = this.safeInteger(currency, 'id');
|
|
68492
|
+
const code = this.safeCurrencyCode(id);
|
|
68493
|
+
const active = this.safeValue(currency, 'active', false);
|
|
68494
|
+
const precision = this.safeInteger(currency, 'precision');
|
|
68495
|
+
const txLimits = this.safeValue(currency, 'txLimits', {});
|
|
68496
|
+
const minWithdraw = this.safeString(txLimits, 'minWithdraw');
|
|
68497
|
+
const maxWithdraw = this.safeString(txLimits, 'maxWithdraw');
|
|
68498
|
+
const minDeposit = this.safeString(txLimits, 'minDeposit');
|
|
68499
|
+
let fee = undefined;
|
|
68500
|
+
const withdrawCommissionFixed = this.safeValue(txLimits, 'withdrawCommissionFixed', {});
|
|
68501
|
+
let feesByNetworkId = {};
|
|
68502
|
+
const blockChain = this.safeString(currency, 'blockChain');
|
|
68503
|
+
// if only one blockChain
|
|
68504
|
+
if ((blockChain !== undefined) && (blockChain !== '')) {
|
|
68505
|
+
fee = this.parseNumber(withdrawCommissionFixed);
|
|
68506
|
+
feesByNetworkId[blockChain] = fee;
|
|
68507
|
+
}
|
|
68508
|
+
else {
|
|
68509
|
+
feesByNetworkId = withdrawCommissionFixed;
|
|
68510
|
+
}
|
|
68511
|
+
const statuses = this.safeValue(statusesResponse, numericId, {});
|
|
68512
|
+
const deposit = this.safeValue(statuses, 'depositStatus');
|
|
68513
|
+
const withdraw = this.safeValue(statuses, 'withdrawStatus');
|
|
68514
|
+
const networkIds = Object.keys(feesByNetworkId);
|
|
68515
|
+
const networks = {};
|
|
68516
|
+
const networkPrecision = this.safeInteger(currency, 'decimals');
|
|
68517
|
+
for (let j = 0; j < networkIds.length; j++) {
|
|
68518
|
+
const networkId = networkIds[j];
|
|
68519
|
+
const networkCode = this.networkIdToCode(networkId, code);
|
|
68520
|
+
const networkFee = this.safeNumber(feesByNetworkId, networkId);
|
|
68521
|
+
networks[networkCode] = {
|
|
68522
|
+
'id': networkId,
|
|
68523
|
+
'network': networkCode,
|
|
68524
|
+
'deposit': deposit,
|
|
68525
|
+
'withdraw': withdraw,
|
|
68526
|
+
'active': active,
|
|
68527
|
+
'fee': networkFee,
|
|
68528
|
+
'precision': networkPrecision,
|
|
68529
|
+
'limits': {
|
|
68530
|
+
'amount': {
|
|
68531
|
+
'min': undefined,
|
|
68532
|
+
'max': undefined,
|
|
68533
|
+
},
|
|
68534
|
+
'withdraw': {
|
|
68535
|
+
'min': this.parseNumber(minWithdraw),
|
|
68536
|
+
'max': this.parseNumber(maxWithdraw),
|
|
68537
|
+
},
|
|
68538
|
+
'deposit': {
|
|
68539
|
+
'min': this.parseNumber(minDeposit),
|
|
68540
|
+
'max': undefined,
|
|
68541
|
+
},
|
|
68542
|
+
},
|
|
68543
|
+
'info': currency,
|
|
68544
|
+
};
|
|
68545
|
+
}
|
|
68546
|
+
result[code] = {
|
|
68547
|
+
'id': id,
|
|
68548
|
+
'numericId': numericId,
|
|
68549
|
+
'code': code,
|
|
68550
|
+
'name': code,
|
|
68551
|
+
'info': currency,
|
|
68552
|
+
'active': active,
|
|
68553
|
+
'deposit': deposit,
|
|
68554
|
+
'withdraw': withdraw,
|
|
68555
|
+
'fee': fee,
|
|
68556
|
+
'precision': precision,
|
|
68557
|
+
'limits': {
|
|
68558
|
+
'amount': {
|
|
68559
|
+
'min': undefined,
|
|
68560
|
+
'max': undefined,
|
|
68561
|
+
},
|
|
68562
|
+
'withdraw': {
|
|
68563
|
+
'min': this.parseNumber(minWithdraw),
|
|
68564
|
+
'max': this.parseNumber(maxWithdraw),
|
|
68565
|
+
},
|
|
68566
|
+
'deposit': {
|
|
68567
|
+
'min': this.parseNumber(minDeposit),
|
|
68568
|
+
'max': undefined,
|
|
68569
|
+
},
|
|
68570
|
+
},
|
|
68571
|
+
'networks': networks,
|
|
68572
|
+
};
|
|
68573
|
+
}
|
|
68574
|
+
return result;
|
|
68575
|
+
}
|
|
68576
|
+
async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
|
|
68577
|
+
/**
|
|
68578
|
+
* @method
|
|
68579
|
+
* @name bitteam#fetchOHLCV
|
|
68580
|
+
* @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
|
68581
|
+
* @param {string} symbol unified symbol of the market to fetch OHLCV data for
|
|
68582
|
+
* @param {string} timeframe the length of time each candle represents
|
|
68583
|
+
* @param {int} [since] timestamp in ms of the earliest candle to fetch
|
|
68584
|
+
* @param {int} [limit] the maximum amount of candles to fetch
|
|
68585
|
+
* @param {object} [params] extra parameters specific to the bitteam api endpoint
|
|
68586
|
+
* @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
|
|
68587
|
+
*/
|
|
68588
|
+
await this.loadMarkets();
|
|
68589
|
+
const market = this.market(symbol);
|
|
68590
|
+
const resolution = this.safeString(this.timeframes, timeframe, timeframe);
|
|
68591
|
+
const request = {
|
|
68592
|
+
'pairName': market['id'],
|
|
68593
|
+
'resolution': resolution,
|
|
68594
|
+
};
|
|
68595
|
+
const response = await this.historyGetApiTwHistoryPairNameResolution(this.extend(request, params));
|
|
68596
|
+
//
|
|
68597
|
+
// {
|
|
68598
|
+
// "ok": true,
|
|
68599
|
+
// "result": {
|
|
68600
|
+
// "count": 364,
|
|
68601
|
+
// "data": [
|
|
68602
|
+
// {
|
|
68603
|
+
// "t": 1669593600,
|
|
68604
|
+
// "o": 16211.259266,
|
|
68605
|
+
// "h": 16476.985001,
|
|
68606
|
+
// "l": 16023.714999,
|
|
68607
|
+
// "c": 16430.636894,
|
|
68608
|
+
// "v": 2.60150368999999
|
|
68609
|
+
// },
|
|
68610
|
+
// {
|
|
68611
|
+
// "t": 1669680000,
|
|
68612
|
+
// "o": 16430.636894,
|
|
68613
|
+
// "h": 17065.229582,
|
|
68614
|
+
// "l": 16346.114155,
|
|
68615
|
+
// "c": 16882.297736,
|
|
68616
|
+
// "v": 3.0872548400000115
|
|
68617
|
+
// },
|
|
68618
|
+
// ...
|
|
68619
|
+
// ]
|
|
68620
|
+
// }
|
|
68621
|
+
// }
|
|
68622
|
+
//
|
|
68623
|
+
const result = this.safeValue(response, 'result', {});
|
|
68624
|
+
const data = this.safeValue(result, 'data', []);
|
|
68625
|
+
return this.parseOHLCVs(data, market, timeframe, since, limit);
|
|
68626
|
+
}
|
|
68627
|
+
parseOHLCV(ohlcv, market = undefined) {
|
|
68628
|
+
//
|
|
68629
|
+
// {
|
|
68630
|
+
// "t": 1669680000,
|
|
68631
|
+
// "o": 16430.636894,
|
|
68632
|
+
// "h": 17065.229582,
|
|
68633
|
+
// "l": 16346.114155,
|
|
68634
|
+
// "c": 16882.297736,
|
|
68635
|
+
// "v": 3.0872548400000115
|
|
68636
|
+
// },
|
|
68637
|
+
//
|
|
68638
|
+
return [
|
|
68639
|
+
this.safeTimestamp(ohlcv, 't'),
|
|
68640
|
+
this.safeNumber(ohlcv, 'o'),
|
|
68641
|
+
this.safeNumber(ohlcv, 'h'),
|
|
68642
|
+
this.safeNumber(ohlcv, 'l'),
|
|
68643
|
+
this.safeNumber(ohlcv, 'c'),
|
|
68644
|
+
this.safeNumber(ohlcv, 'v'),
|
|
68645
|
+
];
|
|
68646
|
+
}
|
|
68647
|
+
async fetchOrderBook(symbol, limit = undefined, params = {}) {
|
|
68648
|
+
/**
|
|
68649
|
+
* @method
|
|
68650
|
+
* @name bitteam#fetchOrderBook
|
|
68651
|
+
* @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
|
|
68652
|
+
* @see https://bit.team/trade/api/documentation#/CMC/getTradeApiCmcOrderbookPair
|
|
68653
|
+
* @param {string} symbol unified symbol of the market to fetch the order book for
|
|
68654
|
+
* @param {int} [limit] the maximum amount of order book entries to return (default 100, max 200)
|
|
68655
|
+
* @param {object} [params] extra parameters specific to the bitteam api endpoint
|
|
68656
|
+
* @returns {object} A dictionary of [order book structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-book-structure} indexed by market symbols
|
|
68657
|
+
*/
|
|
68658
|
+
await this.loadMarkets();
|
|
68659
|
+
const market = this.market(symbol);
|
|
68660
|
+
const request = {
|
|
68661
|
+
'pair': market['id'],
|
|
68662
|
+
};
|
|
68663
|
+
const response = await this.publicGetTradeApiCmcOrderbookPair(this.extend(request, params));
|
|
68664
|
+
//
|
|
68665
|
+
// {
|
|
68666
|
+
// "timestamp": 1701166703285,
|
|
68667
|
+
// "bids": [
|
|
68668
|
+
// [
|
|
68669
|
+
// 2019.334988,
|
|
68670
|
+
// 0.09048525
|
|
68671
|
+
// ],
|
|
68672
|
+
// [
|
|
68673
|
+
// 1999.860002,
|
|
68674
|
+
// 0.0225
|
|
68675
|
+
// ],
|
|
68676
|
+
// ...
|
|
68677
|
+
// ],
|
|
68678
|
+
// "asks": [
|
|
68679
|
+
// [
|
|
68680
|
+
// 2019.334995,
|
|
68681
|
+
// 0.00899078
|
|
68682
|
+
// ],
|
|
68683
|
+
// [
|
|
68684
|
+
// 2019.335013,
|
|
68685
|
+
// 0.09833052
|
|
68686
|
+
// ],
|
|
68687
|
+
// ...
|
|
68688
|
+
// ]
|
|
68689
|
+
// }
|
|
68690
|
+
//
|
|
68691
|
+
const timestamp = this.safeInteger(response, 'timestamp');
|
|
68692
|
+
const orderbook = this.parseOrderBook(response, symbol, timestamp);
|
|
68693
|
+
return orderbook;
|
|
68694
|
+
}
|
|
68695
|
+
async fetchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
68696
|
+
/**
|
|
68697
|
+
* @method
|
|
68698
|
+
* @name bitteam#fetchOrders
|
|
68699
|
+
* @description fetches information on multiple orders made by the user
|
|
68700
|
+
* @see https://bit.team/trade/api/documentation#/PRIVATE/getTradeApiCcxtOrdersofuser
|
|
68701
|
+
* @param {string} symbol unified market symbol of the market orders were made in
|
|
68702
|
+
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
68703
|
+
* @param {int} [limit] the maximum number of orde structures to retrieve (default 10)
|
|
68704
|
+
* @param {object} [params] extra parameters specific to the bitteam api endpoint
|
|
68705
|
+
* @param {string} [params.type] the status of the order - 'active', 'closed', 'cancelled', 'all', 'history' (default 'all')
|
|
68706
|
+
* @returns {Order[]} a list of [order structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
|
|
68707
|
+
*/
|
|
68708
|
+
await this.loadMarkets();
|
|
68709
|
+
const type = this.safeString(params, 'type', 'all');
|
|
68710
|
+
const request = {
|
|
68711
|
+
'type': type,
|
|
68712
|
+
};
|
|
68713
|
+
let market = undefined;
|
|
68714
|
+
if (symbol !== undefined) {
|
|
68715
|
+
market = this.market(symbol);
|
|
68716
|
+
request['pair'] = market['id'];
|
|
68717
|
+
}
|
|
68718
|
+
if (limit !== undefined) {
|
|
68719
|
+
request['limit'] = limit;
|
|
68720
|
+
}
|
|
68721
|
+
const response = await this.privateGetTradeApiCcxtOrdersOfUser(this.extend(request, params));
|
|
68722
|
+
//
|
|
68723
|
+
// {
|
|
68724
|
+
// "ok": true,
|
|
68725
|
+
// "result": {
|
|
68726
|
+
// "count": 3,
|
|
68727
|
+
// "orders": [
|
|
68728
|
+
// {
|
|
68729
|
+
// "id": 106733026,
|
|
68730
|
+
// "orderId": null,
|
|
68731
|
+
// "userId": 21639,
|
|
68732
|
+
// "pair": "btc_usdt",
|
|
68733
|
+
// "pairId": 22,
|
|
68734
|
+
// "quantity": "0.00001",
|
|
68735
|
+
// "price": "40",
|
|
68736
|
+
// "executedPrice": "0",
|
|
68737
|
+
// "fee": null,
|
|
68738
|
+
// "orderCid": null,
|
|
68739
|
+
// "executed": "0",
|
|
68740
|
+
// "expires": null,
|
|
68741
|
+
// "baseDecimals": 8,
|
|
68742
|
+
// "quoteDecimals": 6,
|
|
68743
|
+
// "timestamp": 1700594804,
|
|
68744
|
+
// "status": "inactive",
|
|
68745
|
+
// "side": "buy",
|
|
68746
|
+
// "type": "limit",
|
|
68747
|
+
// "createdAt": "2023-11-21T19:26:43.868Z",
|
|
68748
|
+
// "updatedAt": "2023-11-21T19:26:43.868Z"
|
|
68749
|
+
// },
|
|
68750
|
+
// {
|
|
68751
|
+
// "id": 106733308,
|
|
68752
|
+
// "orderId": "13074362",
|
|
68753
|
+
// "userId": 21639,
|
|
68754
|
+
// "pair": "btc_usdt",
|
|
68755
|
+
// "pairId": 22,
|
|
68756
|
+
// "quantity": "0.00001",
|
|
68757
|
+
// "price": "50000",
|
|
68758
|
+
// "executedPrice": "37017.495008",
|
|
68759
|
+
// "fee": {
|
|
68760
|
+
// "amount": "0.00000002",
|
|
68761
|
+
// "symbol": "btc",
|
|
68762
|
+
// "userId": 21639,
|
|
68763
|
+
// "decimals": 8,
|
|
68764
|
+
// "symbolId": 11
|
|
68765
|
+
// },
|
|
68766
|
+
// "orderCid": null,
|
|
68767
|
+
// "executed": "0.00001",
|
|
68768
|
+
// "expires": null,
|
|
68769
|
+
// "baseDecimals": 8,
|
|
68770
|
+
// "quoteDecimals": 6,
|
|
68771
|
+
// "timestamp": 1700594959,
|
|
68772
|
+
// "status": "executed",
|
|
68773
|
+
// "side": "buy",
|
|
68774
|
+
// "type": "limit",
|
|
68775
|
+
// "createdAt": "2023-11-21T19:29:19.946Z",
|
|
68776
|
+
// "updatedAt": "2023-11-21T19:29:19.946Z"
|
|
68777
|
+
// },
|
|
68778
|
+
// {
|
|
68779
|
+
// "id": 106734455,
|
|
68780
|
+
// "orderId": "13248984",
|
|
68781
|
+
// "userId": 21639,
|
|
68782
|
+
// "pair": "eth_usdt",
|
|
68783
|
+
// "pairId": 2,
|
|
68784
|
+
// "quantity": "0.001",
|
|
68785
|
+
// "price": "1750",
|
|
68786
|
+
// "executedPrice": "0",
|
|
68787
|
+
// "fee": null,
|
|
68788
|
+
// "orderCid": null,
|
|
68789
|
+
// "executed": "0",
|
|
68790
|
+
// "expires": null,
|
|
68791
|
+
// "baseDecimals": 18,
|
|
68792
|
+
// "quoteDecimals": 6,
|
|
68793
|
+
// "timestamp": 1700595523,
|
|
68794
|
+
// "status": "accepted",
|
|
68795
|
+
// "side": "buy",
|
|
68796
|
+
// "type": "limit",
|
|
68797
|
+
// "createdAt": "2023-11-21T19:38:43.530Z",
|
|
68798
|
+
// "updatedAt": "2023-11-21T19:38:43.530Z"
|
|
68799
|
+
// }
|
|
68800
|
+
// ]
|
|
68801
|
+
// }
|
|
68802
|
+
// }
|
|
68803
|
+
//
|
|
68804
|
+
const result = this.safeValue(response, 'result', {});
|
|
68805
|
+
const orders = this.safeValue(result, 'orders', []);
|
|
68806
|
+
return this.parseOrders(orders, market, since, limit);
|
|
68807
|
+
}
|
|
68808
|
+
async fetchOrder(id, symbol = undefined, params = {}) {
|
|
68809
|
+
/**
|
|
68810
|
+
* @method
|
|
68811
|
+
* @name bitteam#fetchOrder
|
|
68812
|
+
* @description fetches information on an order
|
|
68813
|
+
* @see https://bit.team/trade/api/documentation#/PRIVATE/getTradeApiCcxtOrderId
|
|
68814
|
+
* @param {int|string} id order id
|
|
68815
|
+
* @param {string} symbol not used by bitteam fetchOrder ()
|
|
68816
|
+
* @param {object} [params] extra parameters specific to the bitteam api endpoint
|
|
68817
|
+
* @returns {object} An [order structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
|
|
68818
|
+
*/
|
|
68819
|
+
await this.loadMarkets();
|
|
68820
|
+
const request = {
|
|
68821
|
+
'id': id,
|
|
68822
|
+
};
|
|
68823
|
+
let market = undefined;
|
|
68824
|
+
if (symbol !== undefined) {
|
|
68825
|
+
market = this.market(symbol);
|
|
68826
|
+
}
|
|
68827
|
+
const response = await this.privateGetTradeApiCcxtOrderId(this.extend(request, params));
|
|
68828
|
+
//
|
|
68829
|
+
// {
|
|
68830
|
+
// "ok": true,
|
|
68831
|
+
// "result": {
|
|
68832
|
+
// "id": 106494347,
|
|
68833
|
+
// "orderId": "13214332",
|
|
68834
|
+
// "userId": 15912,
|
|
68835
|
+
// "pair": "eth_usdt",
|
|
68836
|
+
// "pairId": 2,
|
|
68837
|
+
// "quantity": "0.00448598",
|
|
68838
|
+
// "price": "2015.644995",
|
|
68839
|
+
// "executedPrice": "2015.644995",
|
|
68840
|
+
// "fee": {
|
|
68841
|
+
// "amount": "0",
|
|
68842
|
+
// "symbol": "eth",
|
|
68843
|
+
// "userId": 15912,
|
|
68844
|
+
// "decimals": 18,
|
|
68845
|
+
// "symbolId": 2,
|
|
68846
|
+
// "discountAmount": "0",
|
|
68847
|
+
// "discountSymbol": "btt",
|
|
68848
|
+
// "discountDecimals": 18,
|
|
68849
|
+
// "discountSymbolId": 5
|
|
68850
|
+
// },
|
|
68851
|
+
// "orderCid": null,
|
|
68852
|
+
// "executed": "0.00448598",
|
|
68853
|
+
// "expires": null,
|
|
68854
|
+
// "baseDecimals": 18,
|
|
68855
|
+
// "quoteDecimals": 6,
|
|
68856
|
+
// "timestamp": 1700470476,
|
|
68857
|
+
// "status": "executed",
|
|
68858
|
+
// "side": "buy",
|
|
68859
|
+
// "type": "limit",
|
|
68860
|
+
// "stopPrice": null,
|
|
68861
|
+
// "slippage": null
|
|
68862
|
+
// }
|
|
68863
|
+
// }
|
|
68864
|
+
//
|
|
68865
|
+
const result = this.safeValue(response, 'result');
|
|
68866
|
+
return this.parseOrder(result, market);
|
|
68867
|
+
}
|
|
68868
|
+
async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
68869
|
+
/**
|
|
68870
|
+
* @method
|
|
68871
|
+
* @name bitteam#fetchOpenOrders
|
|
68872
|
+
* @description fetch all unfilled currently open orders
|
|
68873
|
+
* @see https://bit.team/trade/api/documentation#/PRIVATE/getTradeApiCcxtOrdersofuser
|
|
68874
|
+
* @param {string} symbol unified market symbol
|
|
68875
|
+
* @param {int} [since] the earliest time in ms to fetch open orders for
|
|
68876
|
+
* @param {int} [limit] the maximum number of open order structures to retrieve (default 10)
|
|
68877
|
+
* @param {object} [params] extra parameters specific to the bitteam api endpoint
|
|
68878
|
+
* @returns {Order[]} a list of [order structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
|
|
68879
|
+
*/
|
|
68880
|
+
await this.loadMarkets();
|
|
68881
|
+
const request = {
|
|
68882
|
+
'type': 'active',
|
|
68883
|
+
};
|
|
68884
|
+
return await this.fetchOrders(symbol, since, limit, this.extend(request, params));
|
|
68885
|
+
}
|
|
68886
|
+
async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
68887
|
+
/**
|
|
68888
|
+
* @method
|
|
68889
|
+
* @name bitteam#fetchClosedOrders
|
|
68890
|
+
* @description fetches information on multiple closed orders made by the user
|
|
68891
|
+
* @see https://bit.team/trade/api/documentation#/PRIVATE/getTradeApiCcxtOrdersofuser
|
|
68892
|
+
* @param {string} symbol unified market symbol of the market orders were made in
|
|
68893
|
+
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
68894
|
+
* @param {int} [limit] the maximum number of closed order structures to retrieve (default 10)
|
|
68895
|
+
* @param {object} [params] extra parameters specific to the bitteam api endpoint
|
|
68896
|
+
* @returns {Order[]} a list of [order structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
|
|
68897
|
+
*/
|
|
68898
|
+
await this.loadMarkets();
|
|
68899
|
+
const request = {
|
|
68900
|
+
'type': 'closed',
|
|
68901
|
+
};
|
|
68902
|
+
return await this.fetchOrders(symbol, since, limit, this.extend(request, params));
|
|
68903
|
+
}
|
|
68904
|
+
async fetchCanceledOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
68905
|
+
/**
|
|
68906
|
+
* @method
|
|
68907
|
+
* @name bitteam#fetchCanceledOrders
|
|
68908
|
+
* @description fetches information on multiple canceled orders made by the user
|
|
68909
|
+
* @see https://bit.team/trade/api/documentation#/PRIVATE/getTradeApiCcxtOrdersofuser
|
|
68910
|
+
* @param {string} symbol unified market symbol of the market orders were made in
|
|
68911
|
+
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
68912
|
+
* @param {int} [limit] the maximum number of canceled order structures to retrieve (default 10)
|
|
68913
|
+
* @param {object} [params] extra parameters specific to the bitteam api endpoint
|
|
68914
|
+
* @returns {object} a list of [order structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
|
|
68915
|
+
*/
|
|
68916
|
+
await this.loadMarkets();
|
|
68917
|
+
const request = {
|
|
68918
|
+
'type': 'cancelled',
|
|
68919
|
+
};
|
|
68920
|
+
return await this.fetchOrders(symbol, since, limit, this.extend(request, params));
|
|
68921
|
+
}
|
|
68922
|
+
async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
|
|
68923
|
+
/**
|
|
68924
|
+
* @method
|
|
68925
|
+
* @name bitteam#createOrder
|
|
68926
|
+
* @description create a trade order
|
|
68927
|
+
* @see https://bit.team/trade/api/documentation#/PRIVATE/postTradeApiCcxtOrdercreate
|
|
68928
|
+
* @param {string} symbol unified symbol of the market to create an order in
|
|
68929
|
+
* @param {string} type 'market' or 'limit'
|
|
68930
|
+
* @param {string} side 'buy' or 'sell'
|
|
68931
|
+
* @param {float} amount how much of currency you want to trade in units of base currency
|
|
68932
|
+
* @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
|
|
68933
|
+
* @param {object} [params] extra parameters specific to the bitteam api endpoint
|
|
68934
|
+
* @returns {object} an [order structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
|
|
68935
|
+
*/
|
|
68936
|
+
await this.loadMarkets();
|
|
68937
|
+
const market = this.market(symbol);
|
|
68938
|
+
const request = {
|
|
68939
|
+
'pairId': market['numericId'].toString(),
|
|
68940
|
+
'type': type,
|
|
68941
|
+
'side': side,
|
|
68942
|
+
'amount': this.amountToPrecision(symbol, amount),
|
|
68943
|
+
};
|
|
68944
|
+
if (type === 'limit') {
|
|
68945
|
+
if (price === undefined) {
|
|
68946
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' createOrder() requires a price argument for a ' + type + ' order');
|
|
68947
|
+
}
|
|
68948
|
+
else {
|
|
68949
|
+
request['price'] = this.priceToPrecision(symbol, price);
|
|
68950
|
+
}
|
|
68951
|
+
}
|
|
68952
|
+
const response = await this.privatePostTradeApiCcxtOrdercreate(this.extend(request, params));
|
|
68953
|
+
//
|
|
68954
|
+
// {
|
|
68955
|
+
// "ok": true,
|
|
68956
|
+
// "result": {
|
|
68957
|
+
// "id": 106733308,
|
|
68958
|
+
// "userId": 21639,
|
|
68959
|
+
// "quantity": "0.00001",
|
|
68960
|
+
// "pair": "btc_usdt",
|
|
68961
|
+
// "side": "buy",
|
|
68962
|
+
// "price": "50000",
|
|
68963
|
+
// "executed": "0",
|
|
68964
|
+
// "executedPrice": "0",
|
|
68965
|
+
// "status": "created",
|
|
68966
|
+
// "baseDecimals": 8,
|
|
68967
|
+
// "quoteDecimals": 6,
|
|
68968
|
+
// "pairId": 22,
|
|
68969
|
+
// "type": "limit",
|
|
68970
|
+
// "stopPrice": null,
|
|
68971
|
+
// "slippage": null,
|
|
68972
|
+
// "timestamp": "1700594959"
|
|
68973
|
+
// }
|
|
68974
|
+
// }
|
|
68975
|
+
//
|
|
68976
|
+
const order = this.safeValue(response, 'result', {});
|
|
68977
|
+
return this.parseOrder(order, market);
|
|
68978
|
+
}
|
|
68979
|
+
async cancelOrder(id, symbol = undefined, params = {}) {
|
|
68980
|
+
/**
|
|
68981
|
+
* @method
|
|
68982
|
+
* @name bitteam#cancelOrder
|
|
68983
|
+
* @description cancels an open order
|
|
68984
|
+
* @see https://bit.team/trade/api/documentation#/PRIVATE/postTradeApiCcxtCancelorder
|
|
68985
|
+
* @param {string} id order id
|
|
68986
|
+
* @param {string} symbol not used by bitteam cancelOrder ()
|
|
68987
|
+
* @param {object} [params] extra parameters specific to the bitteam api endpoint
|
|
68988
|
+
* @returns {object} An [order structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
|
|
68989
|
+
*/
|
|
68990
|
+
await this.loadMarkets();
|
|
68991
|
+
const request = {
|
|
68992
|
+
'id': id,
|
|
68993
|
+
};
|
|
68994
|
+
const response = await this.privatePostTradeApiCcxtCancelorder(this.extend(request, params));
|
|
68995
|
+
//
|
|
68996
|
+
// {
|
|
68997
|
+
// "ok": true,
|
|
68998
|
+
// "result": {
|
|
68999
|
+
// "message": "The request to cancel your order was received"
|
|
69000
|
+
// }
|
|
69001
|
+
// }
|
|
69002
|
+
//
|
|
69003
|
+
const result = this.safeValue(response, 'result', {});
|
|
69004
|
+
return this.parseOrder(result);
|
|
69005
|
+
}
|
|
69006
|
+
async cancelAllOrders(symbol = undefined, params = {}) {
|
|
69007
|
+
/**
|
|
69008
|
+
* @method
|
|
69009
|
+
* @name bitteam#cancelAllOrders
|
|
69010
|
+
* @description cancel open orders of market
|
|
69011
|
+
* @see https://bit.team/trade/api/documentation#/PRIVATE/postTradeApiCcxtCancelallorder
|
|
69012
|
+
* @param {string} symbol unified market symbol
|
|
69013
|
+
* @param {object} [params] extra parameters specific to the bitteam api endpoint
|
|
69014
|
+
* @returns {object[]} a list of [order structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
|
|
69015
|
+
*/
|
|
69016
|
+
await this.loadMarkets();
|
|
69017
|
+
let market = undefined;
|
|
69018
|
+
const request = {};
|
|
69019
|
+
if (symbol !== undefined) {
|
|
69020
|
+
market = this.market(symbol);
|
|
69021
|
+
request['pairId'] = market['numericId'].toString();
|
|
69022
|
+
}
|
|
69023
|
+
else {
|
|
69024
|
+
request['pairId'] = '0'; // '0' for all markets
|
|
69025
|
+
}
|
|
69026
|
+
const response = await this.privatePostTradeApiCcxtCancelAllOrder(this.extend(request, params));
|
|
69027
|
+
//
|
|
69028
|
+
// {
|
|
69029
|
+
// "ok": true,
|
|
69030
|
+
// "result": {
|
|
69031
|
+
// "message":"The request to cancel all your orders was received"
|
|
69032
|
+
// }
|
|
69033
|
+
// }
|
|
69034
|
+
//
|
|
69035
|
+
const result = this.safeValue(response, 'result', {});
|
|
69036
|
+
const orders = [result];
|
|
69037
|
+
return this.parseOrders(orders, market);
|
|
69038
|
+
}
|
|
69039
|
+
parseOrder(order, market = undefined) {
|
|
69040
|
+
//
|
|
69041
|
+
// fetchOrders
|
|
69042
|
+
// {
|
|
69043
|
+
// "id": 106733308,
|
|
69044
|
+
// "orderId": "13074362",
|
|
69045
|
+
// "userId": 21639,
|
|
69046
|
+
// "pair": "btc_usdt",
|
|
69047
|
+
// "pairId": 22,
|
|
69048
|
+
// "quantity": "0.00001",
|
|
69049
|
+
// "price": "50000",
|
|
69050
|
+
// "executedPrice": "37017.495008",
|
|
69051
|
+
// "fee": {
|
|
69052
|
+
// "amount": "0.00000002",
|
|
69053
|
+
// "symbol": "btc",
|
|
69054
|
+
// "userId": 21639,
|
|
69055
|
+
// "decimals": 8,
|
|
69056
|
+
// "symbolId": 11
|
|
69057
|
+
// },
|
|
69058
|
+
// "orderCid": null,
|
|
69059
|
+
// "executed": "0.00001",
|
|
69060
|
+
// "expires": null,
|
|
69061
|
+
// "baseDecimals": 8,
|
|
69062
|
+
// "quoteDecimals": 6,
|
|
69063
|
+
// "timestamp": 1700594959,
|
|
69064
|
+
// "status": "executed",
|
|
69065
|
+
// "side": "buy",
|
|
69066
|
+
// "type": "limit",
|
|
69067
|
+
// "createdAt": "2023-11-21T19:29:19.946Z",
|
|
69068
|
+
// "updatedAt": "2023-11-21T19:29:19.946Z"
|
|
69069
|
+
// },
|
|
69070
|
+
//
|
|
69071
|
+
// fetchOrder
|
|
69072
|
+
// {
|
|
69073
|
+
// "id": 106494347,
|
|
69074
|
+
// "orderId": "13214332",
|
|
69075
|
+
// "userId": 15912,
|
|
69076
|
+
// "pair": "eth_usdt",
|
|
69077
|
+
// "pairId": 2,
|
|
69078
|
+
// "quantity": "0.00448598",
|
|
69079
|
+
// "price": "2015.644995",
|
|
69080
|
+
// "executedPrice": "2015.644995",
|
|
69081
|
+
// "fee": {
|
|
69082
|
+
// "amount": "0",
|
|
69083
|
+
// "symbol": "eth",
|
|
69084
|
+
// "userId": 15912,
|
|
69085
|
+
// "decimals": 18,
|
|
69086
|
+
// "symbolId": 2,
|
|
69087
|
+
// "discountAmount": "0",
|
|
69088
|
+
// "discountSymbol": "btt",
|
|
69089
|
+
// "discountDecimals": 18,
|
|
69090
|
+
// "discountSymbolId": 5
|
|
69091
|
+
// },
|
|
69092
|
+
// "orderCid": null,
|
|
69093
|
+
// "executed": "0.00448598",
|
|
69094
|
+
// "expires": null,
|
|
69095
|
+
// "baseDecimals": 18,
|
|
69096
|
+
// "quoteDecimals": 6,
|
|
69097
|
+
// "timestamp": 1700470476,
|
|
69098
|
+
// "status": "executed",
|
|
69099
|
+
// "side": "buy",
|
|
69100
|
+
// "type": "limit",
|
|
69101
|
+
// "stopPrice": null,
|
|
69102
|
+
// "slippage": null
|
|
69103
|
+
// }
|
|
69104
|
+
//
|
|
69105
|
+
// createOrder
|
|
69106
|
+
// {
|
|
69107
|
+
// "id": 106733308,
|
|
69108
|
+
// "userId": 21639,
|
|
69109
|
+
// "quantity": "0.00001",
|
|
69110
|
+
// "pair": "btc_usdt",
|
|
69111
|
+
// "side": "buy",
|
|
69112
|
+
// "price": "50000",
|
|
69113
|
+
// "executed": "0",
|
|
69114
|
+
// "executedPrice": "0",
|
|
69115
|
+
// "status": "created",
|
|
69116
|
+
// "baseDecimals": 8,
|
|
69117
|
+
// "quoteDecimals": 6,
|
|
69118
|
+
// "pairId": 22,
|
|
69119
|
+
// "type": "limit",
|
|
69120
|
+
// "stopPrice": null,
|
|
69121
|
+
// "slippage": null,
|
|
69122
|
+
// "timestamp": "1700594959"
|
|
69123
|
+
// }
|
|
69124
|
+
//
|
|
69125
|
+
const id = this.safeString(order, 'id');
|
|
69126
|
+
const marketId = this.safeString(order, 'pair');
|
|
69127
|
+
market = this.safeMarket(marketId, market);
|
|
69128
|
+
const clientOrderId = this.safeString(order, 'orderCid');
|
|
69129
|
+
let timestamp = undefined;
|
|
69130
|
+
const createdAt = this.safeString(order, 'createdAt');
|
|
69131
|
+
if (createdAt !== undefined) {
|
|
69132
|
+
timestamp = this.parse8601(createdAt);
|
|
69133
|
+
}
|
|
69134
|
+
else {
|
|
69135
|
+
timestamp = this.safeTimestamp(order, 'timestamp');
|
|
69136
|
+
}
|
|
69137
|
+
const updatedAt = this.safeString(order, 'updatedAt');
|
|
69138
|
+
const lastUpdateTimestamp = this.parse8601(updatedAt);
|
|
69139
|
+
const status = this.parseOrderStatus(this.safeString(order, 'status'));
|
|
69140
|
+
const type = this.parseOrderType(this.safeString(order, 'type'));
|
|
69141
|
+
const side = this.safeString(order, 'side');
|
|
69142
|
+
const feeRaw = this.safeValue(order, 'fee');
|
|
69143
|
+
const price = this.safeString(order, 'price');
|
|
69144
|
+
const stopPrice = this.safeString(order, 'stopPrice');
|
|
69145
|
+
const amount = this.safeString(order, 'quantity');
|
|
69146
|
+
const filled = this.safeString(order, 'executed');
|
|
69147
|
+
let fee = undefined;
|
|
69148
|
+
if (feeRaw !== undefined) {
|
|
69149
|
+
const feeCost = this.safeString(feeRaw, 'amount');
|
|
69150
|
+
const feeCurrencyId = this.safeString(feeRaw, 'symbol');
|
|
69151
|
+
fee = {
|
|
69152
|
+
'currency': this.safeCurrencyCode(feeCurrencyId),
|
|
69153
|
+
'cost': feeCost,
|
|
69154
|
+
'rate': undefined,
|
|
69155
|
+
};
|
|
69156
|
+
}
|
|
69157
|
+
return this.safeOrder({
|
|
69158
|
+
'id': id,
|
|
69159
|
+
'clientOrderId': clientOrderId,
|
|
69160
|
+
'timestamp': timestamp,
|
|
69161
|
+
'datetime': this.iso8601(timestamp),
|
|
69162
|
+
'lastTradeTimestamp': undefined,
|
|
69163
|
+
'lastUpdateTimestamp': lastUpdateTimestamp,
|
|
69164
|
+
'status': status,
|
|
69165
|
+
'symbol': market['symbol'],
|
|
69166
|
+
'type': type,
|
|
69167
|
+
'timeInForce': 'GTC',
|
|
69168
|
+
'side': side,
|
|
69169
|
+
'price': price,
|
|
69170
|
+
'stopPrice': stopPrice,
|
|
69171
|
+
'triggerPrice': stopPrice,
|
|
69172
|
+
'average': undefined,
|
|
69173
|
+
'amount': amount,
|
|
69174
|
+
'cost': undefined,
|
|
69175
|
+
'filled': filled,
|
|
69176
|
+
'remaining': undefined,
|
|
69177
|
+
'fee': fee,
|
|
69178
|
+
'trades': undefined,
|
|
69179
|
+
'info': order,
|
|
69180
|
+
'postOnly': false,
|
|
69181
|
+
}, market);
|
|
69182
|
+
}
|
|
69183
|
+
parseOrderStatus(status) {
|
|
69184
|
+
const statuses = {
|
|
69185
|
+
'accepted': 'open',
|
|
69186
|
+
'executed': 'closed',
|
|
69187
|
+
'cancelled': 'canceled',
|
|
69188
|
+
'partiallyCancelled': 'canceled',
|
|
69189
|
+
'delete': 'rejected',
|
|
69190
|
+
'inactive': 'rejected',
|
|
69191
|
+
'executing': 'open',
|
|
69192
|
+
'created': 'open',
|
|
69193
|
+
};
|
|
69194
|
+
return this.safeString(statuses, status, status);
|
|
69195
|
+
}
|
|
69196
|
+
parseOrderType(status) {
|
|
69197
|
+
const statuses = {
|
|
69198
|
+
'market': 'market',
|
|
69199
|
+
'limit': 'limit',
|
|
69200
|
+
};
|
|
69201
|
+
return this.safeString(statuses, status, status);
|
|
69202
|
+
}
|
|
69203
|
+
parseValueToPricision(valueObject, valueKey, preciseObject, precisionKey) {
|
|
69204
|
+
const valueRawString = this.safeString(valueObject, valueKey);
|
|
69205
|
+
const precisionRawString = this.safeString(preciseObject, precisionKey);
|
|
69206
|
+
if (valueRawString === undefined || precisionRawString === undefined) {
|
|
69207
|
+
return undefined;
|
|
69208
|
+
}
|
|
69209
|
+
const precisionString = this.parsePrecision(precisionRawString);
|
|
69210
|
+
return _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringMul(valueRawString, precisionString);
|
|
69211
|
+
}
|
|
69212
|
+
async fetchTickers(symbols = undefined, params = {}) {
|
|
69213
|
+
/**
|
|
69214
|
+
* @method
|
|
69215
|
+
* @name bitteam#fetchTickers
|
|
69216
|
+
* @description fetches price tickers for multiple markets, statistical calculations with the information calculated over the past 24 hours each market
|
|
69217
|
+
* @see https://bit.team/trade/api/documentation#/CMC/getTradeApiCmcSummary
|
|
69218
|
+
* @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
|
69219
|
+
* @param {object} [params] extra parameters specific to the bitteam api endpoint
|
|
69220
|
+
* @returns {object} a dictionary of [ticker structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#ticker-structure}
|
|
69221
|
+
*/
|
|
69222
|
+
await this.loadMarkets();
|
|
69223
|
+
let response = await this.publicGetTradeApiCmcSummary();
|
|
69224
|
+
//
|
|
69225
|
+
// [
|
|
69226
|
+
// {
|
|
69227
|
+
// "trading_pairs": "BTC_USDT",
|
|
69228
|
+
// "base_currency": "BTC",
|
|
69229
|
+
// "quote_currency": "USDT",
|
|
69230
|
+
// "last_price": 37669.955001,
|
|
69231
|
+
// "lowest_ask": 37670.055,
|
|
69232
|
+
// "highest_bid": 37669.955,
|
|
69233
|
+
// "base_volume": 6.81156888,
|
|
69234
|
+
// "quote_volume": 257400.516878529,
|
|
69235
|
+
// "price_change_percent_24h": -0.29,
|
|
69236
|
+
// "highest_price_24h": 38389.994463,
|
|
69237
|
+
// "lowest_price_24h": 37574.894999
|
|
69238
|
+
// },
|
|
69239
|
+
// {
|
|
69240
|
+
// "trading_pairs": "BNB_USDT",
|
|
69241
|
+
// "base_currency": "BNB",
|
|
69242
|
+
// "quote_currency": "USDT",
|
|
69243
|
+
// "last_price": 233.525142,
|
|
69244
|
+
// "lowest_ask": 233.675,
|
|
69245
|
+
// "highest_bid": 233.425,
|
|
69246
|
+
// "base_volume": 245.0199339,
|
|
69247
|
+
// "quote_volume": 57356.91823827642,
|
|
69248
|
+
// "price_change_percent_24h": -0.32,
|
|
69249
|
+
// "highest_price_24h": 236.171123,
|
|
69250
|
+
// "lowest_price_24h": 231.634637
|
|
69251
|
+
// },
|
|
69252
|
+
// ...
|
|
69253
|
+
// ]
|
|
69254
|
+
//
|
|
69255
|
+
const tickers = [];
|
|
69256
|
+
if (!Array.isArray(response)) {
|
|
69257
|
+
response = [];
|
|
69258
|
+
}
|
|
69259
|
+
for (let i = 0; i < response.length; i++) {
|
|
69260
|
+
const rawTicker = response[i];
|
|
69261
|
+
const ticker = this.parseTicker(rawTicker);
|
|
69262
|
+
tickers.push(ticker);
|
|
69263
|
+
}
|
|
69264
|
+
return this.filterByArrayTickers(tickers, 'symbol', symbols);
|
|
69265
|
+
}
|
|
69266
|
+
async fetchTicker(symbol, params = {}) {
|
|
69267
|
+
/**
|
|
69268
|
+
* @method
|
|
69269
|
+
* @name bitteam#fetchTicker
|
|
69270
|
+
* @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
|
69271
|
+
* @see https://bit.team/trade/api/documentation#/PUBLIC/getTradeApiPairName
|
|
69272
|
+
* @param {string} symbol unified symbol of the market to fetch the ticker for
|
|
69273
|
+
* @param {object} [params] extra parameters specific to the bitteam api endpoint
|
|
69274
|
+
* @returns {object} a [ticker structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#ticker-structure}
|
|
69275
|
+
*/
|
|
69276
|
+
await this.loadMarkets();
|
|
69277
|
+
const market = this.market(symbol);
|
|
69278
|
+
const request = {
|
|
69279
|
+
'name': market['id'],
|
|
69280
|
+
};
|
|
69281
|
+
const response = await this.publicGetTradeApiPairName(this.extend(request, params));
|
|
69282
|
+
//
|
|
69283
|
+
// {
|
|
69284
|
+
// "ok": true,
|
|
69285
|
+
// "result": {
|
|
69286
|
+
// "pair": {
|
|
69287
|
+
// "id": 2,
|
|
69288
|
+
// "name": "eth_usdt",
|
|
69289
|
+
// "baseAssetId": 2,
|
|
69290
|
+
// "quoteAssetId": 3,
|
|
69291
|
+
// "fullName": "ETH USDT",
|
|
69292
|
+
// "description": "ETH USDT",
|
|
69293
|
+
// "lastBuy": "1976.715012",
|
|
69294
|
+
// "lastSell": "1971.995006",
|
|
69295
|
+
// "lastPrice": "1976.715012",
|
|
69296
|
+
// "change24": "1.02",
|
|
69297
|
+
// "volume24": 24.0796457,
|
|
69298
|
+
// "volume24USD": 44282.347995912205,
|
|
69299
|
+
// "active": true,
|
|
69300
|
+
// "baseStep": 8,
|
|
69301
|
+
// "quoteStep": 6,
|
|
69302
|
+
// "status": 1,
|
|
69303
|
+
// "settings": {
|
|
69304
|
+
// "limit_usd": "0.1",
|
|
69305
|
+
// "price_max": "10000000000000",
|
|
69306
|
+
// "price_min": "1",
|
|
69307
|
+
// "price_tick": "1",
|
|
69308
|
+
// "pricescale": 10000,
|
|
69309
|
+
// "lot_size_max": "1000000000000000",
|
|
69310
|
+
// "lot_size_min": "1",
|
|
69311
|
+
// "lot_size_tick": "1",
|
|
69312
|
+
// "price_view_min": 6,
|
|
69313
|
+
// "default_slippage": 10,
|
|
69314
|
+
// "lot_size_view_min": 6
|
|
69315
|
+
// },
|
|
69316
|
+
// "asks": [
|
|
69317
|
+
// {
|
|
69318
|
+
// "price": "1976.405003",
|
|
69319
|
+
// "quantity": "0.0051171",
|
|
69320
|
+
// "amount": "10.1134620408513"
|
|
69321
|
+
// },
|
|
69322
|
+
// {
|
|
69323
|
+
// "price": "1976.405013",
|
|
69324
|
+
// "quantity": "0.09001559",
|
|
69325
|
+
// "amount": "177.90726332415267"
|
|
69326
|
+
// },
|
|
69327
|
+
// {
|
|
69328
|
+
// "price": "2010.704988",
|
|
69329
|
+
// "quantity": "0.00127892",
|
|
69330
|
+
// "amount": "2.57153082325296"
|
|
69331
|
+
// }
|
|
69332
|
+
// ],
|
|
69333
|
+
// "bids": [
|
|
69334
|
+
// {
|
|
69335
|
+
// "price": "1976.404988",
|
|
69336
|
+
// "quantity": "0.09875861",
|
|
69337
|
+
// "amount": "195.18700941194668"
|
|
69338
|
+
// },
|
|
69339
|
+
// {
|
|
69340
|
+
// "price": "1905.472973",
|
|
69341
|
+
// "quantity": "0.00263591",
|
|
69342
|
+
// "amount": "5.02265526426043"
|
|
69343
|
+
// },
|
|
69344
|
+
// {
|
|
69345
|
+
// "price": "1904.274973",
|
|
69346
|
+
// "quantity": "0.09425304",
|
|
69347
|
+
// "amount": "179.48370520116792"
|
|
69348
|
+
// }
|
|
69349
|
+
// ],
|
|
69350
|
+
// "updateId": "78",
|
|
69351
|
+
// "timeStart": "2021-01-28T09:19:30.706Z",
|
|
69352
|
+
// "makerFee": 200,
|
|
69353
|
+
// "takerFee": 200,
|
|
69354
|
+
// "quoteVolume24": 49125.1374009045,
|
|
69355
|
+
// "lowPrice24": 1966.704999,
|
|
69356
|
+
// "highPrice24": 2080.354997,
|
|
69357
|
+
// "baseCurrency": {
|
|
69358
|
+
// "id": 2,
|
|
69359
|
+
// "status": 1,
|
|
69360
|
+
// "symbol": "eth",
|
|
69361
|
+
// "title": "Ethereum",
|
|
69362
|
+
// "logoURL": "https://ethereum.org/static/6b935ac0e6194247347855dc3d328e83/34ca5/eth-diamond-black.png",
|
|
69363
|
+
// "isDiscount": false,
|
|
69364
|
+
// "address": "https://ethereum.org/",
|
|
69365
|
+
// "description": "Ethereum ETH",
|
|
69366
|
+
// "decimals": 18,
|
|
69367
|
+
// "blockChain": "Ethereum",
|
|
69368
|
+
// "precision": 8,
|
|
69369
|
+
// "currentRate": null,
|
|
69370
|
+
// "active": true,
|
|
69371
|
+
// "timeStart": "2021-01-28T08:57:41.719Z",
|
|
69372
|
+
// "txLimits": {
|
|
69373
|
+
// "minDeposit": "100000000000000",
|
|
69374
|
+
// "maxWithdraw": "10000000000000000000000",
|
|
69375
|
+
// "minWithdraw": "20000000000000000",
|
|
69376
|
+
// "withdrawCommissionFixed": "5000000000000000",
|
|
69377
|
+
// "withdrawCommissionPercentage": "NaN"
|
|
69378
|
+
// },
|
|
69379
|
+
// "type": "crypto",
|
|
69380
|
+
// "typeNetwork": "internalGW",
|
|
69381
|
+
// "icon": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIHZpZXdCb3g9IjAgMCAzMCAzMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAgMTVDMCA2LjcxNTczIDYuNzE1NzMgMCAxNSAwVjBDMjMuMjg0MyAwIDMwIDYuNzE1NzMgMzAgMTVWMTVDMzAgMjMuMjg0MyAyMy4yODQzIDMwIDE1IDMwVjMwQzYuNzE1NzMgMzAgMCAyMy4yODQzIDAgMTVWMTVaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMTQuOTU1NyAxOS45NzM5TDkgMTYuMzUwOUwxNC45NTIxIDI1TDIwLjkxMDkgMTYuMzUwOUwxNC45NTIxIDE5Ljk3MzlIMTQuOTU1N1pNMTUuMDQ0MyA1TDkuMDkwOTUgMTUuMTg1M0wxNS4wNDQzIDE4LjgxNDZMMjEgMTUuMTg5MUwxNS4wNDQzIDVaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K",
|
|
69382
|
+
// "idSorting": 2,
|
|
69383
|
+
// "links": [
|
|
69384
|
+
// {
|
|
69385
|
+
// "tx": "https://etherscan.io/tx/",
|
|
69386
|
+
// "address": "https://etherscan.io/address/",
|
|
69387
|
+
// "blockChain": "Ethereum"
|
|
69388
|
+
// }
|
|
69389
|
+
// ],
|
|
69390
|
+
// "clientTxLimits": {
|
|
69391
|
+
// "minDeposit": "0.0001",
|
|
69392
|
+
// "minWithdraw": "0.02",
|
|
69393
|
+
// "maxWithdraw": "10000",
|
|
69394
|
+
// "withdrawCommissionPercentage": "NaN",
|
|
69395
|
+
// "withdrawCommissionFixed": "0.005"
|
|
69396
|
+
// }
|
|
69397
|
+
// },
|
|
69398
|
+
// "quoteCurrency": {
|
|
69399
|
+
// "id": 3,
|
|
69400
|
+
// "status": 1,
|
|
69401
|
+
// "symbol": "usdt",
|
|
69402
|
+
// "title": "Tether USD",
|
|
69403
|
+
// "logoURL": "https://cryptologos.cc/logos/tether-usdt-logo.png?v=010",
|
|
69404
|
+
// "isDiscount": false,
|
|
69405
|
+
// "address": "https://tether.to/",
|
|
69406
|
+
// "description": "Tether USD",
|
|
69407
|
+
// "decimals": 6,
|
|
69408
|
+
// "blockChain": "",
|
|
69409
|
+
// "precision": 6,
|
|
69410
|
+
// "currentRate": null,
|
|
69411
|
+
// "active": true,
|
|
69412
|
+
// "timeStart": "2021-01-28T09:04:17.170Z",
|
|
69413
|
+
// "txLimits": {
|
|
69414
|
+
// "minDeposit": "1000",
|
|
69415
|
+
// "maxWithdraw": "100000000000",
|
|
69416
|
+
// "minWithdraw": "1000000",
|
|
69417
|
+
// "withdrawCommissionFixed": {
|
|
69418
|
+
// "Tron": "2000000",
|
|
69419
|
+
// "Binance": "2000000000000000000",
|
|
69420
|
+
// "Ethereum": "20000000"
|
|
69421
|
+
// },
|
|
69422
|
+
// "withdrawCommissionPercentage": "NaN"
|
|
69423
|
+
// },
|
|
69424
|
+
// "type": "crypto",
|
|
69425
|
+
// "typeNetwork": "internalGW",
|
|
69426
|
+
// "icon": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIHZpZXdCb3g9IjAgMCAzMCAzMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAgMTVDMCA2LjcxNTczIDYuNzE1NzMgMCAxNSAwVjBDMjMuMjg0MyAwIDMwIDYuNzE1NzMgMzAgMTVWMTVDMzAgMjMuMjg0MyAyMy4yODQzIDMwIDE1IDMwVjMwQzYuNzE1NzMgMzAgMCAyMy4yODQzIDAgMTVWMTVaIiBmaWxsPSIjNkZBNjg4Ii8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjMgN0g3VjExSDEzVjEyLjA2MkM4Ljk5MjAyIDEyLjMxNDYgNiAxMy4zMTAyIDYgMTQuNUM2IDE1LjY4OTggOC45OTIwMiAxNi42ODU0IDEzIDE2LjkzOFYyM0gxN1YxNi45MzhDMjEuMDA4IDE2LjY4NTQgMjQgMTUuNjg5OCAyNCAxNC41QzI0IDEzLjMxMDIgMjEuMDA4IDEyLjMxNDYgMTcgMTIuMDYyVjExSDIzVjdaTTcuNSAxNC41QzcuNSAxMy40NjA2IDkuMzMzMzMgMTIuMzY4IDEzIDEyLjA3NTZWMTUuNUgxN1YxMi4wNzU5QzIwLjkzODQgMTIuMzkyNyAyMi41IDEzLjYzMzkgMjIuNSAxNC41QzIyLjUgMTUuMzIyIDIwLjAwMDggMTUuODA2MSAxNyAxNS45NTI1QzE1LjcwODIgMTYuMDQ2MiAxMy43OTUxIDE1Ljk4MjYgMTMgMTUuOTM5MUM5Ljk5OTIxIDE1Ljc1NTkgNy41IDE1LjE4MDkgNy41IDE0LjVaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K",
|
|
69427
|
+
// "idSorting": 0,
|
|
69428
|
+
// "links": [
|
|
69429
|
+
// {
|
|
69430
|
+
// "tx": "https://etherscan.io/tx/",
|
|
69431
|
+
// "address": "https://etherscan.io/address/",
|
|
69432
|
+
// "blockChain": "Ethereum"
|
|
69433
|
+
// },
|
|
69434
|
+
// {
|
|
69435
|
+
// "tx": "https://tronscan.org/#/transaction/",
|
|
69436
|
+
// "address": "https://tronscan.org/#/address/",
|
|
69437
|
+
// "blockChain": "Tron"
|
|
69438
|
+
// },
|
|
69439
|
+
// {
|
|
69440
|
+
// "tx": "https://bscscan.com/tx/",
|
|
69441
|
+
// "address": "https://bscscan.com/address/",
|
|
69442
|
+
// "blockChain": "Binance"
|
|
69443
|
+
// }
|
|
69444
|
+
// ],
|
|
69445
|
+
// "clientTxLimits": {
|
|
69446
|
+
// "minDeposit": "0.001",
|
|
69447
|
+
// "minWithdraw": "1",
|
|
69448
|
+
// "maxWithdraw": "100000",
|
|
69449
|
+
// "withdrawCommissionPercentage": "NaN",
|
|
69450
|
+
// "withdrawCommissionFixed": {
|
|
69451
|
+
// "Tron": "2",
|
|
69452
|
+
// "Binance": "2",
|
|
69453
|
+
// "Ethereum": "20"
|
|
69454
|
+
// }
|
|
69455
|
+
// }
|
|
69456
|
+
// },
|
|
69457
|
+
// "quantities": {
|
|
69458
|
+
// "asks": "5.58760757",
|
|
69459
|
+
// "bids": "2226.98663823032198"
|
|
69460
|
+
// }
|
|
69461
|
+
// }
|
|
69462
|
+
// }
|
|
69463
|
+
// }
|
|
69464
|
+
//
|
|
69465
|
+
const result = this.safeValue(response, 'result', {});
|
|
69466
|
+
const pair = this.safeValue(result, 'pair', {});
|
|
69467
|
+
return this.parseTicker(pair, market);
|
|
69468
|
+
}
|
|
69469
|
+
parseTicker(ticker, market = undefined) {
|
|
69470
|
+
//
|
|
69471
|
+
// fetchTicker
|
|
69472
|
+
// {
|
|
69473
|
+
// "id": 2,
|
|
69474
|
+
// "name": "eth_usdt",
|
|
69475
|
+
// "baseAssetId": 2,
|
|
69476
|
+
// "quoteAssetId": 3,
|
|
69477
|
+
// "fullName": "ETH USDT",
|
|
69478
|
+
// "description": "ETH USDT",
|
|
69479
|
+
// "lastBuy": "1976.715012",
|
|
69480
|
+
// "lastSell": "1971.995006",
|
|
69481
|
+
// "lastPrice": "1976.715012",
|
|
69482
|
+
// "change24": "1.02",
|
|
69483
|
+
// "volume24": 24.0796457,
|
|
69484
|
+
// "volume24USD": 44282.347995912205,
|
|
69485
|
+
// "active": true,
|
|
69486
|
+
// "baseStep": 8,
|
|
69487
|
+
// "quoteStep": 6,
|
|
69488
|
+
// "status": 1,
|
|
69489
|
+
// "asks": [
|
|
69490
|
+
// {
|
|
69491
|
+
// "price": "1976.405003",
|
|
69492
|
+
// "quantity": "0.0051171",
|
|
69493
|
+
// "amount": "10.1134620408513"
|
|
69494
|
+
// },
|
|
69495
|
+
// {
|
|
69496
|
+
// "price": "1976.405013",
|
|
69497
|
+
// "quantity": "0.09001559",
|
|
69498
|
+
// "amount": "177.90726332415267"
|
|
69499
|
+
// },
|
|
69500
|
+
// {
|
|
69501
|
+
// "price": "2010.704988",
|
|
69502
|
+
// "quantity": "0.00127892",
|
|
69503
|
+
// "amount": "2.57153082325296"
|
|
69504
|
+
// }
|
|
69505
|
+
// ...
|
|
69506
|
+
// ],
|
|
69507
|
+
// "bids": [
|
|
69508
|
+
// {
|
|
69509
|
+
// "price": "1976.404988",
|
|
69510
|
+
// "quantity": "0.09875861",
|
|
69511
|
+
// "amount": "195.18700941194668"
|
|
69512
|
+
// },
|
|
69513
|
+
// {
|
|
69514
|
+
// "price": "1905.472973",
|
|
69515
|
+
// "quantity": "0.00263591",
|
|
69516
|
+
// "amount": "5.02265526426043"
|
|
69517
|
+
// },
|
|
69518
|
+
// {
|
|
69519
|
+
// "price": "1904.274973",
|
|
69520
|
+
// "quantity": "0.09425304",
|
|
69521
|
+
// "amount": "179.48370520116792"
|
|
69522
|
+
// }
|
|
69523
|
+
// ...
|
|
69524
|
+
// ],
|
|
69525
|
+
// "updateId": "78",
|
|
69526
|
+
// "timeStart": "2021-01-28T09:19:30.706Z",
|
|
69527
|
+
// "makerFee": 200,
|
|
69528
|
+
// "takerFee": 200,
|
|
69529
|
+
// "quoteVolume24": 49125.1374009045,
|
|
69530
|
+
// "lowPrice24": 1966.704999,
|
|
69531
|
+
// "highPrice24": 2080.354997,
|
|
69532
|
+
// ...
|
|
69533
|
+
// }
|
|
69534
|
+
//
|
|
69535
|
+
// fetchTickers
|
|
69536
|
+
// {
|
|
69537
|
+
// "trading_pairs": "BTC_USDT",
|
|
69538
|
+
// "base_currency": "BTC",
|
|
69539
|
+
// "quote_currency": "USDT",
|
|
69540
|
+
// "last_price": 37669.955001,
|
|
69541
|
+
// "lowest_ask": 37670.055,
|
|
69542
|
+
// "highest_bid": 37669.955,
|
|
69543
|
+
// "base_volume": 6.81156888,
|
|
69544
|
+
// "quote_volume": 257400.516878529,
|
|
69545
|
+
// "price_change_percent_24h": -0.29,
|
|
69546
|
+
// "highest_price_24h": 38389.994463,
|
|
69547
|
+
// "lowest_price_24h": 37574.894999
|
|
69548
|
+
// }
|
|
69549
|
+
const marketId = this.safeStringLower(ticker, 'trading_pairs');
|
|
69550
|
+
market = this.safeMarket(marketId, market);
|
|
69551
|
+
let bestBidPrice = undefined;
|
|
69552
|
+
let bestAskPrice = undefined;
|
|
69553
|
+
let bestBidVolume = undefined;
|
|
69554
|
+
let bestAskVolume = undefined;
|
|
69555
|
+
const bids = this.safeValue(ticker, 'bids');
|
|
69556
|
+
const asks = this.safeValue(ticker, 'asks');
|
|
69557
|
+
if ((bids !== undefined) && (Array.isArray(bids)) && (asks !== undefined) && (Array.isArray(asks))) {
|
|
69558
|
+
const bestBid = this.safeValue(bids, 0, {});
|
|
69559
|
+
bestBidPrice = this.safeString(bestBid, 'price');
|
|
69560
|
+
bestBidVolume = this.safeString(bestBid, 'quantity');
|
|
69561
|
+
const bestAsk = this.safeValue(asks, 0, {});
|
|
69562
|
+
bestAskPrice = this.safeString(bestAsk, 'price');
|
|
69563
|
+
bestAskVolume = this.safeString(bestAsk, 'quantity');
|
|
69564
|
+
}
|
|
69565
|
+
else {
|
|
69566
|
+
bestBidPrice = this.safeString(ticker, 'highest_bid');
|
|
69567
|
+
bestAskPrice = this.safeString(ticker, 'lowest_ask');
|
|
69568
|
+
}
|
|
69569
|
+
const baseVolume = this.safeString2(ticker, 'volume24', 'base_volume');
|
|
69570
|
+
const quoteVolume = this.safeString2(ticker, 'quoteVolume24', 'quote_volume');
|
|
69571
|
+
const high = this.safeString2(ticker, 'highPrice24', 'highest_price_24h');
|
|
69572
|
+
const low = this.safeString2(ticker, 'lowPrice24', 'lowest_price_24h');
|
|
69573
|
+
const close = this.safeString2(ticker, 'lastPrice', 'last_price');
|
|
69574
|
+
const changePcnt = this.safeString2(ticker, 'change24', 'price_change_percent_24h');
|
|
69575
|
+
return this.safeTicker({
|
|
69576
|
+
'symbol': market['symbol'],
|
|
69577
|
+
'timestamp': undefined,
|
|
69578
|
+
'datetime': undefined,
|
|
69579
|
+
'open': undefined,
|
|
69580
|
+
'high': high,
|
|
69581
|
+
'low': low,
|
|
69582
|
+
'close': close,
|
|
69583
|
+
'bid': bestBidPrice,
|
|
69584
|
+
'bidVolume': bestBidVolume,
|
|
69585
|
+
'ask': bestAskPrice,
|
|
69586
|
+
'askVolume': bestAskVolume,
|
|
69587
|
+
'vwap': undefined,
|
|
69588
|
+
'previousClose': undefined,
|
|
69589
|
+
'change': undefined,
|
|
69590
|
+
'percentage': changePcnt,
|
|
69591
|
+
'average': undefined,
|
|
69592
|
+
'baseVolume': baseVolume,
|
|
69593
|
+
'quoteVolume': quoteVolume,
|
|
69594
|
+
'info': ticker,
|
|
69595
|
+
}, market);
|
|
69596
|
+
}
|
|
69597
|
+
async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
|
|
69598
|
+
/**
|
|
69599
|
+
* @method
|
|
69600
|
+
* @name bitteam#fetchTrades
|
|
69601
|
+
* @description get the list of most recent trades for a particular symbol
|
|
69602
|
+
* @see https://bit.team/trade/api/documentation#/CMC/getTradeApiCmcTradesPair
|
|
69603
|
+
* @param {string} symbol unified symbol of the market to fetch trades for
|
|
69604
|
+
* @param {int} [since] timestamp in ms of the earliest trade to fetch
|
|
69605
|
+
* @param {int} [limit] the maximum amount of trades to fetch
|
|
69606
|
+
* @param {object} [params] extra parameters specific to the bitteam api endpoint
|
|
69607
|
+
* @returns {Trade[]} a list of [trade structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#public-trades}
|
|
69608
|
+
*/
|
|
69609
|
+
await this.loadMarkets();
|
|
69610
|
+
const market = this.market(symbol);
|
|
69611
|
+
const request = {
|
|
69612
|
+
'pair': market['id'],
|
|
69613
|
+
};
|
|
69614
|
+
const response = await this.publicGetTradeApiCmcTradesPair(this.extend(request, params));
|
|
69615
|
+
//
|
|
69616
|
+
// [
|
|
69617
|
+
// {
|
|
69618
|
+
// "trade_id": 34970337,
|
|
69619
|
+
// "price": 37769.994793,
|
|
69620
|
+
// "base_volume": 0.00119062,
|
|
69621
|
+
// "quote_volume": 44.96971120044166,
|
|
69622
|
+
// "timestamp": 1700827234000,
|
|
69623
|
+
// "type": "buy"
|
|
69624
|
+
// },
|
|
69625
|
+
// {
|
|
69626
|
+
// "trade_id": 34970347,
|
|
69627
|
+
// "price": 37769.634497,
|
|
69628
|
+
// "base_volume": 0.00104009,
|
|
69629
|
+
// "quote_volume": 39.28381914398473,
|
|
69630
|
+
// "timestamp": 1700827248000,
|
|
69631
|
+
// "type": "buy"
|
|
69632
|
+
// },
|
|
69633
|
+
// ...
|
|
69634
|
+
// ]
|
|
69635
|
+
//
|
|
69636
|
+
return this.parseTrades(response, market, since, limit);
|
|
69637
|
+
}
|
|
69638
|
+
async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
69639
|
+
/**
|
|
69640
|
+
* @method
|
|
69641
|
+
* @name bitteam#fetchMyTrades
|
|
69642
|
+
* @description fetch all trades made by the user
|
|
69643
|
+
* @see https://bit.team/trade/api/documentation#/PRIVATE/getTradeApiCcxtTradesofuser
|
|
69644
|
+
* @param {string} symbol unified market symbol
|
|
69645
|
+
* @param {int} [since] the earliest time in ms to fetch trades for
|
|
69646
|
+
* @param {int} [limit] the maximum number of trades structures to retrieve (default 10)
|
|
69647
|
+
* @param {object} [params] extra parameters specific to the bitteam api endpoint
|
|
69648
|
+
* @returns {Trade[]} a list of [trade structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#trade-structure}
|
|
69649
|
+
*/
|
|
69650
|
+
await this.loadMarkets();
|
|
69651
|
+
const request = {};
|
|
69652
|
+
let market = undefined;
|
|
69653
|
+
if (symbol !== undefined) {
|
|
69654
|
+
market = this.market(symbol);
|
|
69655
|
+
request['pairId'] = market['numericId'];
|
|
69656
|
+
}
|
|
69657
|
+
if (limit !== undefined) {
|
|
69658
|
+
request['limit'] = limit;
|
|
69659
|
+
}
|
|
69660
|
+
const response = await this.privateGetTradeApiCcxtTradesOfUser(this.extend(request, params));
|
|
69661
|
+
//
|
|
69662
|
+
// {
|
|
69663
|
+
// "ok": true,
|
|
69664
|
+
// "result": {
|
|
69665
|
+
// "count": 3,
|
|
69666
|
+
// "trades": [
|
|
69667
|
+
// {
|
|
69668
|
+
// "id": 34880724,
|
|
69669
|
+
// "tradeId": "4368041",
|
|
69670
|
+
// "makerOrderId": 106742914,
|
|
69671
|
+
// "takerOrderId": 106761614,
|
|
69672
|
+
// "pairId": 2,
|
|
69673
|
+
// "quantity": "0.00955449",
|
|
69674
|
+
// "price": "1993.674994",
|
|
69675
|
+
// "isBuyerMaker": true,
|
|
69676
|
+
// "baseDecimals": 18,
|
|
69677
|
+
// "quoteDecimals": 6,
|
|
69678
|
+
// "side": "sell",
|
|
69679
|
+
// "timestamp": 1700615250,
|
|
69680
|
+
// "rewarded": true,
|
|
69681
|
+
// "makerUserId": 21639,
|
|
69682
|
+
// "takerUserId": 15913,
|
|
69683
|
+
// "baseCurrencyId": 2,
|
|
69684
|
+
// "quoteCurrencyId": 3,
|
|
69685
|
+
// "feeMaker": {
|
|
69686
|
+
// "amount": "0.0000191",
|
|
69687
|
+
// "symbol": "eth",
|
|
69688
|
+
// "userId": 21639,
|
|
69689
|
+
// "decimals": 18,
|
|
69690
|
+
// "symbolId": 2
|
|
69691
|
+
// },
|
|
69692
|
+
// "feeTaker": {
|
|
69693
|
+
// "amount": "0",
|
|
69694
|
+
// "symbol": "usdt",
|
|
69695
|
+
// "userId": 15913,
|
|
69696
|
+
// "decimals": 6,
|
|
69697
|
+
// "symbolId": 3,
|
|
69698
|
+
// "discountAmount": "0",
|
|
69699
|
+
// "discountSymbol": "btt",
|
|
69700
|
+
// "discountDecimals": 18,
|
|
69701
|
+
// "discountSymbolId": 5
|
|
69702
|
+
// },
|
|
69703
|
+
// "pair": "eth_usdt",
|
|
69704
|
+
// "createdAt": "2023-11-22T01:07:30.593Z",
|
|
69705
|
+
// "updatedAt": "2023-11-22T01:10:00.117Z",
|
|
69706
|
+
// "isCurrentSide": "maker"
|
|
69707
|
+
// },
|
|
69708
|
+
// {
|
|
69709
|
+
// "id": 34875793,
|
|
69710
|
+
// "tradeId": "4368010",
|
|
69711
|
+
// "makerOrderId": 106742914,
|
|
69712
|
+
// "takerOrderId": 106745926,
|
|
69713
|
+
// "pairId": 2,
|
|
69714
|
+
// "quantity": "0.0027193",
|
|
69715
|
+
// "price": "1993.674994",
|
|
69716
|
+
// "isBuyerMaker": true,
|
|
69717
|
+
// "baseDecimals": 18,
|
|
69718
|
+
// "quoteDecimals": 6,
|
|
69719
|
+
// "side": "sell",
|
|
69720
|
+
// "timestamp": 1700602983,
|
|
69721
|
+
// "rewarded": true,
|
|
69722
|
+
// "makerUserId": 21639,
|
|
69723
|
+
// "takerUserId": 15912,
|
|
69724
|
+
// "baseCurrencyId": 2,
|
|
69725
|
+
// "quoteCurrencyId": 3,
|
|
69726
|
+
// "feeMaker": {
|
|
69727
|
+
// "amount": "0.00000543",
|
|
69728
|
+
// "symbol": "eth",
|
|
69729
|
+
// "userId": 21639,
|
|
69730
|
+
// "decimals": 18,
|
|
69731
|
+
// "symbolId": 2
|
|
69732
|
+
// },
|
|
69733
|
+
// "feeTaker": {
|
|
69734
|
+
// "amount": "0",
|
|
69735
|
+
// "symbol": "usdt",
|
|
69736
|
+
// "userId": 15912,
|
|
69737
|
+
// "decimals": 6,
|
|
69738
|
+
// "symbolId": 3,
|
|
69739
|
+
// "discountAmount": "0",
|
|
69740
|
+
// "discountSymbol": "btt",
|
|
69741
|
+
// "discountDecimals": 18,
|
|
69742
|
+
// "discountSymbolId": 5
|
|
69743
|
+
// },
|
|
69744
|
+
// "pair": "eth_usdt",
|
|
69745
|
+
// "createdAt": "2023-11-21T21:43:02.758Z",
|
|
69746
|
+
// "updatedAt": "2023-11-21T21:45:00.147Z",
|
|
69747
|
+
// "isCurrentSide": "maker"
|
|
69748
|
+
// },
|
|
69749
|
+
// {
|
|
69750
|
+
// "id": 34871727,
|
|
69751
|
+
// "tradeId": "3441840",
|
|
69752
|
+
// "makerOrderId": 106733299,
|
|
69753
|
+
// "takerOrderId": 106733308,
|
|
69754
|
+
// "pairId": 22,
|
|
69755
|
+
// "quantity": "0.00001",
|
|
69756
|
+
// "price": "37017.495008",
|
|
69757
|
+
// "isBuyerMaker": false,
|
|
69758
|
+
// "baseDecimals": 8,
|
|
69759
|
+
// "quoteDecimals": 6,
|
|
69760
|
+
// "side": "buy",
|
|
69761
|
+
// "timestamp": 1700594960,
|
|
69762
|
+
// "rewarded": true,
|
|
69763
|
+
// "makerUserId": 15909,
|
|
69764
|
+
// "takerUserId": 21639,
|
|
69765
|
+
// "baseCurrencyId": 11,
|
|
69766
|
+
// "quoteCurrencyId": 3,
|
|
69767
|
+
// "feeMaker": {
|
|
69768
|
+
// "amount": "0",
|
|
69769
|
+
// "symbol": "usdt",
|
|
69770
|
+
// "userId": 15909,
|
|
69771
|
+
// "decimals": 6,
|
|
69772
|
+
// "symbolId": 3,
|
|
69773
|
+
// "discountAmount": "0",
|
|
69774
|
+
// "discountSymbol": "btt",
|
|
69775
|
+
// "discountDecimals": 18,
|
|
69776
|
+
// "discountSymbolId": 5
|
|
69777
|
+
// },
|
|
69778
|
+
// "feeTaker": {
|
|
69779
|
+
// "amount": "0.00000002",
|
|
69780
|
+
// "symbol": "btc",
|
|
69781
|
+
// "userId": 21639,
|
|
69782
|
+
// "decimals": 8,
|
|
69783
|
+
// "symbolId": 11
|
|
69784
|
+
// },
|
|
69785
|
+
// "pair": "btc_usdt",
|
|
69786
|
+
// "createdAt": "2023-11-21T19:29:20.092Z",
|
|
69787
|
+
// "updatedAt": "2023-11-21T19:30:00.159Z"
|
|
69788
|
+
// "isCurrentSide": "taker"
|
|
69789
|
+
// }
|
|
69790
|
+
// ]
|
|
69791
|
+
// }
|
|
69792
|
+
// }
|
|
69793
|
+
//
|
|
69794
|
+
const result = this.safeValue(response, 'result', {});
|
|
69795
|
+
const trades = this.safeValue(result, 'trades', []);
|
|
69796
|
+
return this.parseTrades(trades, market, since, limit);
|
|
69797
|
+
}
|
|
69798
|
+
parseTrade(trade, market = undefined) {
|
|
69799
|
+
//
|
|
69800
|
+
// fetchTrades
|
|
69801
|
+
// {
|
|
69802
|
+
// "trade_id": 34970337,
|
|
69803
|
+
// "price": 37769.994793,
|
|
69804
|
+
// "base_volume": 0.00119062,
|
|
69805
|
+
// "quote_volume": 44.96971120044166,
|
|
69806
|
+
// "timestamp": 1700827234000,
|
|
69807
|
+
// "type": "buy"
|
|
69808
|
+
// },
|
|
69809
|
+
//
|
|
69810
|
+
// fetchMyTrades
|
|
69811
|
+
// {
|
|
69812
|
+
// "id": 34875793,
|
|
69813
|
+
// "tradeId": "4368010",
|
|
69814
|
+
// "makerOrderId": 106742914,
|
|
69815
|
+
// "takerOrderId": 106745926,
|
|
69816
|
+
// "pairId": 2,
|
|
69817
|
+
// "quantity": "0.0027193",
|
|
69818
|
+
// "price": "1993.674994",
|
|
69819
|
+
// "isBuyerMaker": true,
|
|
69820
|
+
// "baseDecimals": 18,
|
|
69821
|
+
// "quoteDecimals": 6,
|
|
69822
|
+
// "side": "sell",
|
|
69823
|
+
// "timestamp": 1700602983,
|
|
69824
|
+
// "rewarded": true,
|
|
69825
|
+
// "makerUserId": 21639,
|
|
69826
|
+
// "takerUserId": 15912,
|
|
69827
|
+
// "baseCurrencyId": 2,
|
|
69828
|
+
// "quoteCurrencyId": 3,
|
|
69829
|
+
// "feeMaker": {
|
|
69830
|
+
// "amount": "0.00000543",
|
|
69831
|
+
// "symbol": "eth",
|
|
69832
|
+
// "userId": 21639,
|
|
69833
|
+
// "decimals": 18,
|
|
69834
|
+
// "symbolId": 2
|
|
69835
|
+
// },
|
|
69836
|
+
// "feeTaker": {
|
|
69837
|
+
// "amount": "0",
|
|
69838
|
+
// "symbol": "usdt",
|
|
69839
|
+
// "userId": 15912,
|
|
69840
|
+
// "decimals": 6,
|
|
69841
|
+
// "symbolId": 3,
|
|
69842
|
+
// "discountAmount": "0",
|
|
69843
|
+
// "discountSymbol": "btt",
|
|
69844
|
+
// "discountDecimals": 18,
|
|
69845
|
+
// "discountSymbolId": 5
|
|
69846
|
+
// },
|
|
69847
|
+
// "pair": "eth_usdt",
|
|
69848
|
+
// "createdAt": "2023-11-21T21:43:02.758Z",
|
|
69849
|
+
// "updatedAt": "2023-11-21T21:45:00.147Z",
|
|
69850
|
+
// "isCurrentSide": "maker"
|
|
69851
|
+
// }
|
|
69852
|
+
//
|
|
69853
|
+
const marketId = this.safeString(trade, 'pair');
|
|
69854
|
+
market = this.safeMarket(marketId, market);
|
|
69855
|
+
const symbol = market['symbol'];
|
|
69856
|
+
const id = this.safeString2(trade, 'id', 'trade_id');
|
|
69857
|
+
const price = this.safeString(trade, 'price');
|
|
69858
|
+
const amount = this.safeString2(trade, 'quantity', 'base_volume');
|
|
69859
|
+
const cost = this.safeString(trade, 'quote_volume');
|
|
69860
|
+
const takerOrMaker = this.safeString(trade, 'isCurrentSide');
|
|
69861
|
+
let timestamp = this.safeString(trade, 'timestamp');
|
|
69862
|
+
if (takerOrMaker !== undefined) {
|
|
69863
|
+
timestamp = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringMul(timestamp, '1000');
|
|
69864
|
+
}
|
|
69865
|
+
// the exchange returns the side of the taker
|
|
69866
|
+
let side = this.safeString2(trade, 'side', 'type');
|
|
69867
|
+
let feeInfo = undefined;
|
|
69868
|
+
let order = undefined;
|
|
69869
|
+
if (takerOrMaker === 'maker') {
|
|
69870
|
+
if (side === 'sell') {
|
|
69871
|
+
side = 'buy';
|
|
69872
|
+
}
|
|
69873
|
+
else if (side === 'buy') {
|
|
69874
|
+
side = 'sell';
|
|
69875
|
+
}
|
|
69876
|
+
order = this.safeString(trade, 'makerOrderId');
|
|
69877
|
+
feeInfo = this.safeValue(trade, 'feeMaker', {});
|
|
69878
|
+
}
|
|
69879
|
+
else if (takerOrMaker === 'taker') {
|
|
69880
|
+
order = this.safeString(trade, 'takerOrderId');
|
|
69881
|
+
feeInfo = this.safeValue(trade, 'feeTaker', {});
|
|
69882
|
+
}
|
|
69883
|
+
const feeCurrencyId = this.safeString(feeInfo, 'symbol');
|
|
69884
|
+
const feeCost = this.safeString(feeInfo, 'amount');
|
|
69885
|
+
const fee = {
|
|
69886
|
+
'currency': this.safeCurrencyCode(feeCurrencyId),
|
|
69887
|
+
'cost': feeCost,
|
|
69888
|
+
'rate': undefined,
|
|
69889
|
+
};
|
|
69890
|
+
const intTs = this.parseToInt(timestamp);
|
|
69891
|
+
return this.safeTrade({
|
|
69892
|
+
'id': id,
|
|
69893
|
+
'order': order,
|
|
69894
|
+
'timestamp': intTs,
|
|
69895
|
+
'datetime': this.iso8601(intTs),
|
|
69896
|
+
'symbol': symbol,
|
|
69897
|
+
'type': undefined,
|
|
69898
|
+
'side': side,
|
|
69899
|
+
'takerOrMaker': takerOrMaker,
|
|
69900
|
+
'price': price,
|
|
69901
|
+
'amount': amount,
|
|
69902
|
+
'cost': cost,
|
|
69903
|
+
'fee': fee,
|
|
69904
|
+
'info': trade,
|
|
69905
|
+
}, market);
|
|
69906
|
+
}
|
|
69907
|
+
async fetchBalance(params = {}) {
|
|
69908
|
+
/**
|
|
69909
|
+
* @method
|
|
69910
|
+
* @name betteam#fetchBalance
|
|
69911
|
+
* @description query for balance and get the amount of funds available for trading or funds locked in orders
|
|
69912
|
+
* @see https://bit.team/trade/api/documentation#/PRIVATE/getTradeApiCcxtBalance
|
|
69913
|
+
* @param {object} [params] extra parameters specific to the betteam api endpoint
|
|
69914
|
+
* @returns {object} a [balance structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#balance-structure}
|
|
69915
|
+
*/
|
|
69916
|
+
await this.loadMarkets();
|
|
69917
|
+
const response = await this.privateGetTradeApiCcxtBalance(params);
|
|
69918
|
+
return this.parseBalance(response);
|
|
69919
|
+
}
|
|
69920
|
+
parseBalance(response) {
|
|
69921
|
+
//
|
|
69922
|
+
// {
|
|
69923
|
+
// "ok": true,
|
|
69924
|
+
// "result": {
|
|
69925
|
+
// "free": {
|
|
69926
|
+
// "USDT": "0",
|
|
69927
|
+
// "DEL": "0",
|
|
69928
|
+
// "BTC": "0",
|
|
69929
|
+
// ...
|
|
69930
|
+
// },
|
|
69931
|
+
// "used": {
|
|
69932
|
+
// "USDT": "0",
|
|
69933
|
+
// "DEL": "0",
|
|
69934
|
+
// "BTC": "0",
|
|
69935
|
+
// ...
|
|
69936
|
+
// },
|
|
69937
|
+
// "total": {
|
|
69938
|
+
// "USDT": "0",
|
|
69939
|
+
// "DEL": "0",
|
|
69940
|
+
// "BTC": "0",
|
|
69941
|
+
// ...
|
|
69942
|
+
// },
|
|
69943
|
+
// "USDT": {
|
|
69944
|
+
// "free": "0",
|
|
69945
|
+
// "used": "0",
|
|
69946
|
+
// "total": "0",
|
|
69947
|
+
// },
|
|
69948
|
+
// "DEL": {
|
|
69949
|
+
// "free": "0",
|
|
69950
|
+
// "used": "0",
|
|
69951
|
+
// "total": "0",
|
|
69952
|
+
// },
|
|
69953
|
+
// "BTC": {
|
|
69954
|
+
// "free": "0",
|
|
69955
|
+
// "used": "0",
|
|
69956
|
+
// "total": "0",
|
|
69957
|
+
// }
|
|
69958
|
+
// ...
|
|
69959
|
+
// }
|
|
69960
|
+
// }
|
|
69961
|
+
//
|
|
69962
|
+
const timestamp = this.milliseconds();
|
|
69963
|
+
const balance = {
|
|
69964
|
+
'info': response,
|
|
69965
|
+
'timestamp': timestamp,
|
|
69966
|
+
'datetime': this.iso8601(timestamp),
|
|
69967
|
+
};
|
|
69968
|
+
const result = this.safeValue(response, 'result', {});
|
|
69969
|
+
const balanceByCurrencies = this.omit(result, ['free', 'used', 'total']);
|
|
69970
|
+
const rawCurrencyIds = Object.keys(balanceByCurrencies);
|
|
69971
|
+
for (let i = 0; i < rawCurrencyIds.length; i++) {
|
|
69972
|
+
const rawCurrencyId = rawCurrencyIds[i];
|
|
69973
|
+
const currencyBalance = this.safeValue(result, rawCurrencyId);
|
|
69974
|
+
const free = this.safeString(currencyBalance, 'free');
|
|
69975
|
+
const used = this.safeString(currencyBalance, 'used');
|
|
69976
|
+
const total = this.safeString(currencyBalance, 'total');
|
|
69977
|
+
const currencyCode = this.safeCurrencyCode(rawCurrencyId.toLowerCase());
|
|
69978
|
+
balance[currencyCode] = {
|
|
69979
|
+
'free': free,
|
|
69980
|
+
'used': used,
|
|
69981
|
+
'total': total,
|
|
69982
|
+
};
|
|
69983
|
+
}
|
|
69984
|
+
return this.safeBalance(balance);
|
|
69985
|
+
}
|
|
69986
|
+
async fetchDepositsWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
|
|
69987
|
+
/**
|
|
69988
|
+
* @method
|
|
69989
|
+
* @name bitteam#fetchDepositsWithdrawals
|
|
69990
|
+
* @description fetch history of deposits and withdrawals from external wallets and between CoinList Pro trading account and CoinList wallet
|
|
69991
|
+
* @see https://bit.team/trade/api/documentation#/PRIVATE/getTradeApiTransactionsofuser
|
|
69992
|
+
* @param {string} [code] unified currency code for the currency of the deposit/withdrawals
|
|
69993
|
+
* @param {int} [since] timestamp in ms of the earliest deposit/withdrawal
|
|
69994
|
+
* @param {int} [limit] max number of deposit/withdrawals to return (default 10)
|
|
69995
|
+
* @param {object} [params] extra parameters specific to the bitteam api endpoint
|
|
69996
|
+
* @returns {object} a list of [transaction structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#transaction-structure}
|
|
69997
|
+
*/
|
|
69998
|
+
await this.loadMarkets();
|
|
69999
|
+
let currency = undefined;
|
|
70000
|
+
const request = {};
|
|
70001
|
+
if (code !== undefined) {
|
|
70002
|
+
currency = this.currency(code);
|
|
70003
|
+
request['currency'] = currency['numericId'];
|
|
70004
|
+
}
|
|
70005
|
+
if (limit !== undefined) {
|
|
70006
|
+
request['limit'] = limit;
|
|
70007
|
+
}
|
|
70008
|
+
const response = await this.privateGetTradeApiTransactionsOfUser(this.extend(request, params));
|
|
70009
|
+
//
|
|
70010
|
+
// {
|
|
70011
|
+
// "ok": true,
|
|
70012
|
+
// "result": {
|
|
70013
|
+
// "count": 2,
|
|
70014
|
+
// "transactions": [
|
|
70015
|
+
// {
|
|
70016
|
+
// "id": 1329686,
|
|
70017
|
+
// "orderId": "2f060ad5-30f7-4f2b-ac5f-1bb8f5fd34dc",
|
|
70018
|
+
// "transactionCoreId": "561863",
|
|
70019
|
+
// "userId": 21639,
|
|
70020
|
+
// "recipient": "0x9050dfA063D1bE7cA711c750b18D51fDD13e90Ee",
|
|
70021
|
+
// "sender": "0x6894a93B6fea044584649278621723cac51443Cd",
|
|
70022
|
+
// "symbolId": 2,
|
|
70023
|
+
// "CommissionId": 17571,
|
|
70024
|
+
// "amount": "44000000000000000",
|
|
70025
|
+
// "params": {},
|
|
70026
|
+
// "reason": null,
|
|
70027
|
+
// "timestamp": 1700715341743,
|
|
70028
|
+
// "status": "approving",
|
|
70029
|
+
// "statusDescription": null,
|
|
70030
|
+
// "type": "withdraw",
|
|
70031
|
+
// "message": null,
|
|
70032
|
+
// "blockChain": "",
|
|
70033
|
+
// "before": null,
|
|
70034
|
+
// "after": null,
|
|
70035
|
+
// "currency": {
|
|
70036
|
+
// "symbol": "eth",
|
|
70037
|
+
// "decimals": 18,
|
|
70038
|
+
// "blockChain": "Ethereum",
|
|
70039
|
+
// "links": [
|
|
70040
|
+
// {
|
|
70041
|
+
// "tx": "https://etherscan.io/tx/",
|
|
70042
|
+
// "address": "https://etherscan.io/address/",
|
|
70043
|
+
// "blockChain": "Ethereum"
|
|
70044
|
+
// }
|
|
70045
|
+
// ]
|
|
70046
|
+
// }
|
|
70047
|
+
// },
|
|
70048
|
+
// {
|
|
70049
|
+
// "id": 1329229,
|
|
70050
|
+
// "orderId": null,
|
|
70051
|
+
// "transactionCoreId": "561418",
|
|
70052
|
+
// "userId": 21639,
|
|
70053
|
+
// "recipient": "0x7d6a797f2406e06b2f9b41d067df324affa315dd",
|
|
70054
|
+
// "sender": null,
|
|
70055
|
+
// "symbolId": 3,
|
|
70056
|
+
// "CommissionId": null,
|
|
70057
|
+
// "amount": "100000000",
|
|
70058
|
+
// "params": {
|
|
70059
|
+
// "tx_id": "0x2253823c828d838acd983fe6a348fb0e034efe3874b081871d8b80da76ec758b"
|
|
70060
|
+
// },
|
|
70061
|
+
// "reason": null,
|
|
70062
|
+
// "timestamp": 1700594180417,
|
|
70063
|
+
// "status": "success",
|
|
70064
|
+
// "statusDescription": null,
|
|
70065
|
+
// "type": "deposit",
|
|
70066
|
+
// "message": null,
|
|
70067
|
+
// "blockChain": "Ethereum",
|
|
70068
|
+
// "before": 0,
|
|
70069
|
+
// "after": 100000000,
|
|
70070
|
+
// "currency": {
|
|
70071
|
+
// "symbol": "usdt",
|
|
70072
|
+
// "decimals": 6,
|
|
70073
|
+
// "blockChain": "",
|
|
70074
|
+
// "links": [
|
|
70075
|
+
// {
|
|
70076
|
+
// "tx": "https://etherscan.io/tx/",
|
|
70077
|
+
// "address": "https://etherscan.io/address/",
|
|
70078
|
+
// "blockChain": "Ethereum"
|
|
70079
|
+
// },
|
|
70080
|
+
// {
|
|
70081
|
+
// "tx": "https://tronscan.org/#/transaction/",
|
|
70082
|
+
// "address": "https://tronscan.org/#/address/",
|
|
70083
|
+
// "blockChain": "Tron"
|
|
70084
|
+
// },
|
|
70085
|
+
// {
|
|
70086
|
+
// "tx": "https://bscscan.com/tx/",
|
|
70087
|
+
// "address": "https://bscscan.com/address/",
|
|
70088
|
+
// "blockChain": "Binance"
|
|
70089
|
+
// }
|
|
70090
|
+
// ]
|
|
70091
|
+
// }
|
|
70092
|
+
// }
|
|
70093
|
+
// ]
|
|
70094
|
+
// }
|
|
70095
|
+
// }
|
|
70096
|
+
//
|
|
70097
|
+
const result = this.safeValue(response, 'result', {});
|
|
70098
|
+
const transactions = this.safeValue(result, 'transactions', []);
|
|
70099
|
+
return this.parseTransactions(transactions, currency, since, limit);
|
|
70100
|
+
}
|
|
70101
|
+
parseTransaction(transaction, currency = undefined) {
|
|
70102
|
+
//
|
|
70103
|
+
// {
|
|
70104
|
+
// "id": 1329229,
|
|
70105
|
+
// "orderId": null,
|
|
70106
|
+
// "transactionCoreId": "561418",
|
|
70107
|
+
// "userId": 21639,
|
|
70108
|
+
// "recipient": "0x7d6a797f2406e06b2f9b41d067df324affa315dd",
|
|
70109
|
+
// "sender": null,
|
|
70110
|
+
// "symbolId": 3,
|
|
70111
|
+
// "CommissionId": null,
|
|
70112
|
+
// "amount": "100000000",
|
|
70113
|
+
// "params": {
|
|
70114
|
+
// "tx_id": "0x2253823c828d838acd983fe6a348fb0e034efe3874b081871d8b80da76ec758b"
|
|
70115
|
+
// },
|
|
70116
|
+
// "reason": null,
|
|
70117
|
+
// "timestamp": 1700594180417,
|
|
70118
|
+
// "status": "success",
|
|
70119
|
+
// "statusDescription": null,
|
|
70120
|
+
// "type": "deposit",
|
|
70121
|
+
// "message": null,
|
|
70122
|
+
// "blockChain": "Ethereum",
|
|
70123
|
+
// "before": 0,
|
|
70124
|
+
// "after": 100000000,
|
|
70125
|
+
// "currency": {
|
|
70126
|
+
// "symbol": "usdt",
|
|
70127
|
+
// "decimals": 6,
|
|
70128
|
+
// "blockChain": "",
|
|
70129
|
+
// "links": [
|
|
70130
|
+
// {
|
|
70131
|
+
// "tx": "https://etherscan.io/tx/",
|
|
70132
|
+
// "address": "https://etherscan.io/address/",
|
|
70133
|
+
// "blockChain": "Ethereum"
|
|
70134
|
+
// },
|
|
70135
|
+
// {
|
|
70136
|
+
// "tx": "https://tronscan.org/#/transaction/",
|
|
70137
|
+
// "address": "https://tronscan.org/#/address/",
|
|
70138
|
+
// "blockChain": "Tron"
|
|
70139
|
+
// },
|
|
70140
|
+
// {
|
|
70141
|
+
// "tx": "https://bscscan.com/tx/",
|
|
70142
|
+
// "address": "https://bscscan.com/address/",
|
|
70143
|
+
// "blockChain": "Binance"
|
|
70144
|
+
// }
|
|
70145
|
+
// ]
|
|
70146
|
+
// }
|
|
70147
|
+
// }
|
|
70148
|
+
//
|
|
70149
|
+
const currencyObject = this.safeValue(transaction, 'currency');
|
|
70150
|
+
const currencyId = this.safeString(currencyObject, 'symbol');
|
|
70151
|
+
const code = this.safeCurrencyCode(currencyId, currency);
|
|
70152
|
+
const id = this.safeString(transaction, 'id');
|
|
70153
|
+
const params = this.safeValue(transaction, 'params');
|
|
70154
|
+
const txid = this.safeString(params, 'tx_id');
|
|
70155
|
+
const timestamp = this.safeInteger(transaction, 'timestamp');
|
|
70156
|
+
let networkId = this.safeString(transaction, 'blockChain');
|
|
70157
|
+
if (networkId === undefined) {
|
|
70158
|
+
const links = this.safeValue(currencyObject, 'links', []);
|
|
70159
|
+
const blockChain = this.safeValue(links, 0, {});
|
|
70160
|
+
networkId = this.safeString(blockChain, 'blockChain');
|
|
70161
|
+
}
|
|
70162
|
+
const addressFrom = this.safeString(transaction, 'sender');
|
|
70163
|
+
const addressTo = this.safeString(transaction, 'recipient');
|
|
70164
|
+
const tag = this.safeString(transaction, 'message');
|
|
70165
|
+
const type = this.parseTransactionType(this.safeString(transaction, 'type'));
|
|
70166
|
+
const amount = this.parseValueToPricision(transaction, 'amount', currencyObject, 'decimals');
|
|
70167
|
+
const status = this.parseTransactionStatus(this.safeValue(transaction, 'status'));
|
|
70168
|
+
return {
|
|
70169
|
+
'info': transaction,
|
|
70170
|
+
'id': id,
|
|
70171
|
+
'txid': txid,
|
|
70172
|
+
'timestamp': timestamp,
|
|
70173
|
+
'datetime': this.iso8601(timestamp),
|
|
70174
|
+
'network': this.networkIdToCode(networkId),
|
|
70175
|
+
'addressFrom': addressFrom,
|
|
70176
|
+
'address': undefined,
|
|
70177
|
+
'addressTo': addressTo,
|
|
70178
|
+
'tagFrom': undefined,
|
|
70179
|
+
'tag': tag,
|
|
70180
|
+
'tagTo': undefined,
|
|
70181
|
+
'type': type,
|
|
70182
|
+
'amount': this.parseNumber(amount),
|
|
70183
|
+
'currency': code,
|
|
70184
|
+
'status': status,
|
|
70185
|
+
'updated': undefined,
|
|
70186
|
+
'fee': undefined,
|
|
70187
|
+
'comment': this.safeString(transaction, 'description'),
|
|
70188
|
+
'internal': false,
|
|
70189
|
+
};
|
|
70190
|
+
}
|
|
70191
|
+
parseTransactionType(type) {
|
|
70192
|
+
const types = {
|
|
70193
|
+
'deposit': 'deposit',
|
|
70194
|
+
'withdraw': 'withdrawal',
|
|
70195
|
+
};
|
|
70196
|
+
return this.safeString(types, type, type);
|
|
70197
|
+
}
|
|
70198
|
+
parseTransactionStatus(status) {
|
|
70199
|
+
const statuses = {
|
|
70200
|
+
'approving': 'pending',
|
|
70201
|
+
'success': 'ok',
|
|
70202
|
+
};
|
|
70203
|
+
return this.safeString(statuses, status, status);
|
|
70204
|
+
}
|
|
70205
|
+
sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
|
|
70206
|
+
const request = this.omit(params, this.extractParams(path));
|
|
70207
|
+
const endpoint = '/' + this.implodeParams(path, params);
|
|
70208
|
+
let url = this.urls['api'][api] + endpoint;
|
|
70209
|
+
const query = this.urlencode(request);
|
|
70210
|
+
if (api === 'private') {
|
|
70211
|
+
this.checkRequiredCredentials();
|
|
70212
|
+
if (method === 'POST') {
|
|
70213
|
+
body = this.json(request);
|
|
70214
|
+
}
|
|
70215
|
+
else if (query.length !== 0) {
|
|
70216
|
+
url += '?' + query;
|
|
70217
|
+
}
|
|
70218
|
+
const auth = this.apiKey + ':' + this.secret;
|
|
70219
|
+
const auth64 = this.stringToBase64(auth);
|
|
70220
|
+
const signature = 'Basic ' + auth64;
|
|
70221
|
+
headers = {
|
|
70222
|
+
'Authorization': signature,
|
|
70223
|
+
'Content-Type': 'application/json',
|
|
70224
|
+
};
|
|
70225
|
+
}
|
|
70226
|
+
else if (query.length !== 0) {
|
|
70227
|
+
url += '?' + query;
|
|
70228
|
+
}
|
|
70229
|
+
return { 'url': url, 'method': method, 'body': body, 'headers': headers };
|
|
70230
|
+
}
|
|
70231
|
+
handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
|
|
70232
|
+
if (response === undefined) {
|
|
70233
|
+
return undefined;
|
|
70234
|
+
}
|
|
70235
|
+
if (code !== 200) {
|
|
70236
|
+
if (code === 404) {
|
|
70237
|
+
if ((url.indexOf('/ccxt/order/') >= 0) && (method === 'GET')) {
|
|
70238
|
+
const parts = url.split('/order/');
|
|
70239
|
+
const orderId = this.safeString(parts, 1);
|
|
70240
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFound(this.id + ' order ' + orderId + ' not found');
|
|
70241
|
+
}
|
|
70242
|
+
if (url.indexOf('/cmc/orderbook/') >= 0) {
|
|
70243
|
+
const parts = url.split('/cmc/orderbook/');
|
|
70244
|
+
const symbolId = this.safeString(parts, 1);
|
|
70245
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol(this.id + ' symbolId ' + symbolId + ' not found');
|
|
70246
|
+
}
|
|
70247
|
+
}
|
|
70248
|
+
const feedback = this.id + ' ' + body;
|
|
70249
|
+
const message = this.safeString(response, 'message');
|
|
70250
|
+
const responseCode = this.safeString(response, 'code');
|
|
70251
|
+
this.throwBroadlyMatchedException(this.exceptions['broad'], message, feedback);
|
|
70252
|
+
this.throwExactlyMatchedException(this.exceptions['exact'], responseCode, feedback);
|
|
70253
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError(feedback);
|
|
70254
|
+
}
|
|
70255
|
+
return undefined;
|
|
70256
|
+
}
|
|
70257
|
+
}
|
|
70258
|
+
|
|
70259
|
+
|
|
67741
70260
|
/***/ }),
|
|
67742
70261
|
|
|
67743
70262
|
/***/ 9943:
|
|
@@ -68739,7 +71258,7 @@ class bitvavo extends _abstract_bitvavo_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
68739
71258
|
* @method
|
|
68740
71259
|
* @name bitvavo#createOrder
|
|
68741
71260
|
* @description create a trade order
|
|
68742
|
-
* @see https://docs.bitvavo.com/#tag/
|
|
71261
|
+
* @see https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1order/post
|
|
68743
71262
|
* @param {string} symbol unified symbol of the market to create an order in
|
|
68744
71263
|
* @param {string} type 'market' or 'limit'
|
|
68745
71264
|
* @param {string} side 'buy' or 'sell'
|
|
@@ -68757,6 +71276,7 @@ class bitvavo extends _abstract_bitvavo_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
68757
71276
|
* @param {string} [params.selfTradePrevention] "decrementAndCancel", "cancelOldest", "cancelNewest", "cancelBoth"
|
|
68758
71277
|
* @param {bool} [params.disableMarketProtection] don't cancel if the next fill price is 10% worse than the best fill price
|
|
68759
71278
|
* @param {bool} [params.responseRequired] Set this to 'false' when only an acknowledgement of success or failure is required, this is faster.
|
|
71279
|
+
* @param {string} [params.clientOrderId] An ID supplied by the client that must be unique among all open orders for the same market
|
|
68760
71280
|
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
68761
71281
|
*/
|
|
68762
71282
|
await this.loadMarkets();
|
|
@@ -68867,25 +71387,54 @@ class bitvavo extends _abstract_bitvavo_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
68867
71387
|
return this.parseOrder(response, market);
|
|
68868
71388
|
}
|
|
68869
71389
|
async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
|
|
71390
|
+
/**
|
|
71391
|
+
* @method
|
|
71392
|
+
* @name bitvavo#editOrder
|
|
71393
|
+
* @description edit a trade order
|
|
71394
|
+
* @see https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1order/put
|
|
71395
|
+
* @param {string} symbol unified symbol of the market to create an order in
|
|
71396
|
+
* @param {string} type 'market' or 'limit'
|
|
71397
|
+
* @param {string} side 'buy' or 'sell'
|
|
71398
|
+
* @param {float} amount how much of currency you want to trade in units of base currency
|
|
71399
|
+
* @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
|
|
71400
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
71401
|
+
* @param {string} [params.timeInForce] "GTC", "IOC", or "PO"
|
|
71402
|
+
* @param {bool} [params.postOnly] If true, the order will only be posted to the order book and not executed immediately
|
|
71403
|
+
* @param {float} [params.stopPrice] The price at which a trigger order is triggered at
|
|
71404
|
+
* @param {float} [params.triggerPrice] The price at which a trigger order is triggered at
|
|
71405
|
+
* @param {string} [params.selfTradePrevention] "decrementAndCancel", "cancelOldest", "cancelNewest", "cancelBoth"
|
|
71406
|
+
* @param {bool} [params.responseRequired] Set this to 'false' when only an acknowledgement of success or failure is required, this is faster.
|
|
71407
|
+
* @param {string} [params.clientOrderId] An ID supplied by the client
|
|
71408
|
+
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
71409
|
+
*/
|
|
68870
71410
|
await this.loadMarkets();
|
|
68871
71411
|
const market = this.market(symbol);
|
|
68872
|
-
|
|
71412
|
+
const request = {
|
|
71413
|
+
'market': market['id'],
|
|
71414
|
+
};
|
|
71415
|
+
const clientOrderId = this.safeString(params, 'clientOrderId');
|
|
71416
|
+
if (clientOrderId === undefined) {
|
|
71417
|
+
request['orderId'] = id;
|
|
71418
|
+
}
|
|
68873
71419
|
const amountRemaining = this.safeNumber(params, 'amountRemaining');
|
|
68874
|
-
|
|
71420
|
+
const triggerPrice = this.safeStringN(params, ['triggerPrice', 'stopPrice', 'triggerAmount']);
|
|
71421
|
+
params = this.omit(params, ['amountRemaining', 'triggerPrice', 'stopPrice', 'triggerAmount']);
|
|
71422
|
+
let updateRequest = {};
|
|
68875
71423
|
if (price !== undefined) {
|
|
68876
|
-
|
|
71424
|
+
updateRequest['price'] = this.priceToPrecision(symbol, price);
|
|
68877
71425
|
}
|
|
68878
71426
|
if (amount !== undefined) {
|
|
68879
|
-
|
|
71427
|
+
updateRequest['amount'] = this.amountToPrecision(symbol, amount);
|
|
68880
71428
|
}
|
|
68881
71429
|
if (amountRemaining !== undefined) {
|
|
68882
|
-
|
|
71430
|
+
updateRequest['amountRemaining'] = this.amountToPrecision(symbol, amountRemaining);
|
|
68883
71431
|
}
|
|
68884
|
-
|
|
68885
|
-
|
|
68886
|
-
|
|
68887
|
-
|
|
68888
|
-
|
|
71432
|
+
if (triggerPrice !== undefined) {
|
|
71433
|
+
updateRequest['triggerAmount'] = this.priceToPrecision(symbol, triggerPrice);
|
|
71434
|
+
}
|
|
71435
|
+
updateRequest = this.extend(updateRequest, params);
|
|
71436
|
+
if (Object.keys(updateRequest).length) {
|
|
71437
|
+
const response = await this.privatePutOrder(this.extend(request, updateRequest));
|
|
68889
71438
|
return this.parseOrder(response, market);
|
|
68890
71439
|
}
|
|
68891
71440
|
else {
|
|
@@ -68897,6 +71446,7 @@ class bitvavo extends _abstract_bitvavo_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
68897
71446
|
* @method
|
|
68898
71447
|
* @name bitvavo#cancelOrder
|
|
68899
71448
|
* @description cancels an open order
|
|
71449
|
+
* @see https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1order/delete
|
|
68900
71450
|
* @param {string} id order id
|
|
68901
71451
|
* @param {string} symbol unified symbol of the market the order was made in
|
|
68902
71452
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
@@ -68908,9 +71458,12 @@ class bitvavo extends _abstract_bitvavo_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
68908
71458
|
await this.loadMarkets();
|
|
68909
71459
|
const market = this.market(symbol);
|
|
68910
71460
|
const request = {
|
|
68911
|
-
'orderId': id,
|
|
68912
71461
|
'market': market['id'],
|
|
68913
71462
|
};
|
|
71463
|
+
const clientOrderId = this.safeString(params, 'clientOrderId');
|
|
71464
|
+
if (clientOrderId === undefined) {
|
|
71465
|
+
request['orderId'] = id;
|
|
71466
|
+
}
|
|
68914
71467
|
const response = await this.privateDeleteOrder(this.extend(request, params));
|
|
68915
71468
|
//
|
|
68916
71469
|
// {
|
|
@@ -68950,6 +71503,7 @@ class bitvavo extends _abstract_bitvavo_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
68950
71503
|
* @method
|
|
68951
71504
|
* @name bitvavo#fetchOrder
|
|
68952
71505
|
* @description fetches information on an order made by the user
|
|
71506
|
+
* @see https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1order/get
|
|
68953
71507
|
* @param {string} symbol unified symbol of the market the order was made in
|
|
68954
71508
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
68955
71509
|
* @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
@@ -68960,9 +71514,12 @@ class bitvavo extends _abstract_bitvavo_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
68960
71514
|
await this.loadMarkets();
|
|
68961
71515
|
const market = this.market(symbol);
|
|
68962
71516
|
const request = {
|
|
68963
|
-
'orderId': id,
|
|
68964
71517
|
'market': market['id'],
|
|
68965
71518
|
};
|
|
71519
|
+
const clientOrderId = this.safeString(params, 'clientOrderId');
|
|
71520
|
+
if (clientOrderId === undefined) {
|
|
71521
|
+
request['orderId'] = id;
|
|
71522
|
+
}
|
|
68966
71523
|
const response = await this.privateGetOrder(this.extend(request, params));
|
|
68967
71524
|
//
|
|
68968
71525
|
// {
|
|
@@ -69004,7 +71561,7 @@ class bitvavo extends _abstract_bitvavo_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
69004
71561
|
/**
|
|
69005
71562
|
* @method
|
|
69006
71563
|
* @name bitvavo#fetchOrders
|
|
69007
|
-
* @see https://docs.bitvavo.com/#tag/
|
|
71564
|
+
* @see https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1orders/get
|
|
69008
71565
|
* @description fetches information on multiple orders made by the user
|
|
69009
71566
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
69010
71567
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
@@ -90573,6 +93130,8 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
90573
93130
|
},
|
|
90574
93131
|
'put': {
|
|
90575
93132
|
'balance/deposit/address/{coin_type}': 40,
|
|
93133
|
+
'sub_account/unfrozen': 40,
|
|
93134
|
+
'sub_account/frozen': 40,
|
|
90576
93135
|
'sub_account/auth/api/{user_auth_id}': 40,
|
|
90577
93136
|
'v1/account/settings': 40,
|
|
90578
93137
|
},
|
|
@@ -90582,7 +93141,10 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
90582
93141
|
'order/pending': 13.334,
|
|
90583
93142
|
'order/stop/pending': 40,
|
|
90584
93143
|
'order/stop/pending/{id}': 13.334,
|
|
93144
|
+
'order/pending/by_client_id': 40,
|
|
93145
|
+
'order/stop/pending/by_client_id': 40,
|
|
90585
93146
|
'sub_account/auth/api/{user_auth_id}': 40,
|
|
93147
|
+
'sub_account/authorize/{id}': 40,
|
|
90586
93148
|
},
|
|
90587
93149
|
},
|
|
90588
93150
|
'perpetualPublic': {
|
|
@@ -90596,12 +93158,12 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
90596
93158
|
'market/depth': 1,
|
|
90597
93159
|
'market/deals': 1,
|
|
90598
93160
|
'market/funding_history': 1,
|
|
90599
|
-
'market/user_deals': 1,
|
|
90600
93161
|
'market/kline': 1,
|
|
90601
93162
|
},
|
|
90602
93163
|
},
|
|
90603
93164
|
'perpetualPrivate': {
|
|
90604
93165
|
'get': {
|
|
93166
|
+
'market/user_deals': 1,
|
|
90605
93167
|
'asset/query': 40,
|
|
90606
93168
|
'order/pending': 8,
|
|
90607
93169
|
'order/finished': 40,
|
|
@@ -90609,8 +93171,13 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
90609
93171
|
'order/stop_pending': 8,
|
|
90610
93172
|
'order/status': 8,
|
|
90611
93173
|
'order/stop_status': 8,
|
|
93174
|
+
'position/finished': 40,
|
|
90612
93175
|
'position/pending': 40,
|
|
90613
93176
|
'position/funding': 40,
|
|
93177
|
+
'position/adl_history': 40,
|
|
93178
|
+
'market/preference': 40,
|
|
93179
|
+
'position/margin_history': 40,
|
|
93180
|
+
'position/settle_history': 40,
|
|
90614
93181
|
},
|
|
90615
93182
|
'post': {
|
|
90616
93183
|
'market/adjust_leverage': 1,
|
|
@@ -90632,6 +93199,9 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
90632
93199
|
'position/stop_loss': 20,
|
|
90633
93200
|
'position/take_profit': 20,
|
|
90634
93201
|
'position/market_close': 20,
|
|
93202
|
+
'order/cancel/by_client_id': 20,
|
|
93203
|
+
'order/cancel_stop/by_client_id': 20,
|
|
93204
|
+
'market/preference': 20,
|
|
90635
93205
|
},
|
|
90636
93206
|
},
|
|
90637
93207
|
},
|
|
@@ -91452,9 +94022,10 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
91452
94022
|
const priceString = this.safeString(trade, 'price');
|
|
91453
94023
|
const amountString = this.safeString(trade, 'amount');
|
|
91454
94024
|
const marketId = this.safeString(trade, 'market');
|
|
91455
|
-
const
|
|
94025
|
+
const marketType = this.safeString(trade, 'market_type');
|
|
94026
|
+
const defaultType = (marketType === undefined) ? 'spot' : 'swap';
|
|
91456
94027
|
market = this.safeMarket(marketId, market, undefined, defaultType);
|
|
91457
|
-
const symbol =
|
|
94028
|
+
const symbol = market['symbol'];
|
|
91458
94029
|
const costString = this.safeString(trade, 'deal_money');
|
|
91459
94030
|
let fee = undefined;
|
|
91460
94031
|
const feeCostString = this.safeString2(trade, 'fee', 'deal_fee');
|
|
@@ -92952,11 +95523,17 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
92952
95523
|
* @description cancels an open order
|
|
92953
95524
|
* @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot003_trade018_cancle_stop_pending_order
|
|
92954
95525
|
* @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot003_trade015_cancel_order
|
|
95526
|
+
* @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot003_trade024_cancel_order_by_client_id
|
|
95527
|
+
* @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot003_trade025_cancel_stop_order_by_client_id
|
|
92955
95528
|
* @see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http023_cancel_stop_order
|
|
92956
95529
|
* @see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http021_cancel_order
|
|
95530
|
+
* @see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http042_cancel_order_by_client_id
|
|
95531
|
+
* @see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http043_cancel_stop_order_by_client_id
|
|
92957
95532
|
* @param {string} id order id
|
|
92958
95533
|
* @param {string} symbol unified symbol of the market the order was made in
|
|
92959
95534
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
95535
|
+
* @param {string} [params.clientOrderId] client order id, defaults to id if not passed
|
|
95536
|
+
* @param {boolean} [params.stop] if stop order = true, default = false
|
|
92960
95537
|
* @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
92961
95538
|
*/
|
|
92962
95539
|
if (symbol === undefined) {
|
|
@@ -92969,32 +95546,54 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
92969
95546
|
const request = {
|
|
92970
95547
|
'market': market['id'],
|
|
92971
95548
|
};
|
|
92972
|
-
const idRequest = swap ? 'order_id' : 'id';
|
|
92973
|
-
request[idRequest] = id;
|
|
92974
95549
|
const accountId = this.safeInteger(params, 'account_id');
|
|
92975
95550
|
const defaultType = this.safeString(this.options, 'defaultType');
|
|
95551
|
+
const clientOrderId = this.safeString2(params, 'client_id', 'clientOrderId');
|
|
92976
95552
|
if (defaultType === 'margin') {
|
|
92977
95553
|
if (accountId === undefined) {
|
|
92978
95554
|
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest(this.id + ' cancelOrder() requires an account_id parameter for margin orders');
|
|
92979
95555
|
}
|
|
92980
95556
|
request['account_id'] = accountId;
|
|
92981
95557
|
}
|
|
92982
|
-
const query = this.omit(params, ['stop', 'account_id']);
|
|
95558
|
+
const query = this.omit(params, ['stop', 'account_id', 'clientOrderId']);
|
|
92983
95559
|
let response = undefined;
|
|
92984
|
-
if (
|
|
92985
|
-
|
|
92986
|
-
|
|
95560
|
+
if (clientOrderId !== undefined) {
|
|
95561
|
+
request['client_id'] = clientOrderId;
|
|
95562
|
+
if (stop) {
|
|
95563
|
+
if (swap) {
|
|
95564
|
+
response = await this.perpetualPrivatePostOrderCancelStopByClientId(this.extend(request, query));
|
|
95565
|
+
}
|
|
95566
|
+
else {
|
|
95567
|
+
response = await this.privateDeleteOrderStopPendingByClientId(this.extend(request, query));
|
|
95568
|
+
}
|
|
92987
95569
|
}
|
|
92988
95570
|
else {
|
|
92989
|
-
|
|
95571
|
+
if (swap) {
|
|
95572
|
+
response = await this.perpetualPrivatePostOrderCancelByClientId(this.extend(request, query));
|
|
95573
|
+
}
|
|
95574
|
+
else {
|
|
95575
|
+
response = await this.privateDeleteOrderPendingByClientId(this.extend(request, query));
|
|
95576
|
+
}
|
|
92990
95577
|
}
|
|
92991
95578
|
}
|
|
92992
95579
|
else {
|
|
92993
|
-
|
|
92994
|
-
|
|
95580
|
+
const idRequest = swap ? 'order_id' : 'id';
|
|
95581
|
+
request[idRequest] = id;
|
|
95582
|
+
if (stop) {
|
|
95583
|
+
if (swap) {
|
|
95584
|
+
response = await this.perpetualPrivatePostOrderCancelStop(this.extend(request, query));
|
|
95585
|
+
}
|
|
95586
|
+
else {
|
|
95587
|
+
response = await this.privateDeleteOrderStopPendingId(this.extend(request, query));
|
|
95588
|
+
}
|
|
92995
95589
|
}
|
|
92996
95590
|
else {
|
|
92997
|
-
|
|
95591
|
+
if (swap) {
|
|
95592
|
+
response = await this.perpetualPrivatePostOrderCancel(this.extend(request, query));
|
|
95593
|
+
}
|
|
95594
|
+
else {
|
|
95595
|
+
response = await this.privateDeleteOrderPending(this.extend(request, query));
|
|
95596
|
+
}
|
|
92998
95597
|
}
|
|
92999
95598
|
}
|
|
93000
95599
|
//
|
|
@@ -93736,16 +96335,11 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
93736
96335
|
}
|
|
93737
96336
|
let response = undefined;
|
|
93738
96337
|
if (swap) {
|
|
93739
|
-
const side = this.safeInteger(params, 'side');
|
|
93740
|
-
if (side === undefined) {
|
|
93741
|
-
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' fetchMyTrades() requires a side parameter for swap markets');
|
|
93742
|
-
}
|
|
93743
96338
|
if (since !== undefined) {
|
|
93744
96339
|
request['start_time'] = since;
|
|
93745
96340
|
}
|
|
93746
|
-
request['side'] =
|
|
93747
|
-
|
|
93748
|
-
response = await this.perpetualPublicGetMarketUserDeals(this.extend(request, params));
|
|
96341
|
+
request['side'] = 0;
|
|
96342
|
+
response = await this.perpetualPrivateGetMarketUserDeals(this.extend(request, params));
|
|
93749
96343
|
}
|
|
93750
96344
|
else {
|
|
93751
96345
|
request['page'] = 1;
|
|
@@ -95674,7 +98268,7 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
95674
98268
|
}
|
|
95675
98269
|
}
|
|
95676
98270
|
}
|
|
95677
|
-
if (api === 'perpetualPrivate'
|
|
98271
|
+
if (api === 'perpetualPrivate') {
|
|
95678
98272
|
this.checkRequiredCredentials();
|
|
95679
98273
|
query = this.extend({
|
|
95680
98274
|
'access_id': this.apiKey,
|
|
@@ -151624,7 +154218,9 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
151624
154218
|
* @param {bool} [params.reduceOnly] *margin only* indicates if this order is to reduce the size of a position
|
|
151625
154219
|
* @param {float} [params.stopLossPrice] *margin only* the price that a stop loss order is triggered at
|
|
151626
154220
|
* @param {float} [params.takeProfitPrice] *margin only* the price that a take profit order is triggered at
|
|
151627
|
-
* @param {string} [params.
|
|
154221
|
+
* @param {string} [params.trailingAmount] *margin only* the quote amount to trail away from the current market price
|
|
154222
|
+
* @param {string} [params.trailingLimitAmount] *margin only* the quote amount away from the trailingAmount
|
|
154223
|
+
* @param {string} [params.offset] *margin only* '+' or '-' whether you want the trailingLimitAmount value to be positive or negative, default is negative '-'
|
|
151628
154224
|
* @param {string} [params.trigger] *margin only* the activation price type, 'last' or 'index', default is 'last'
|
|
151629
154225
|
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
151630
154226
|
*/
|
|
@@ -151885,9 +154481,10 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
151885
154481
|
const isStopLossTriggerOrder = stopLossTriggerPrice !== undefined;
|
|
151886
154482
|
const isTakeProfitTriggerOrder = takeProfitTriggerPrice !== undefined;
|
|
151887
154483
|
const isStopLossOrTakeProfitTrigger = isStopLossTriggerOrder || isTakeProfitTriggerOrder;
|
|
151888
|
-
const
|
|
151889
|
-
const
|
|
151890
|
-
|
|
154484
|
+
const trailingAmount = this.safeString(params, 'trailingAmount');
|
|
154485
|
+
const trailingLimitAmount = this.safeString(params, 'trailingLimitAmount');
|
|
154486
|
+
const isTrailingAmountOrder = trailingAmount !== undefined;
|
|
154487
|
+
if ((type === 'limit') && !isTrailingAmountOrder) {
|
|
151891
154488
|
request['price'] = this.priceToPrecision(symbol, price);
|
|
151892
154489
|
}
|
|
151893
154490
|
let reduceOnly = this.safeValue2(params, 'reduceOnly', 'reduce_only');
|
|
@@ -151903,19 +154500,19 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
151903
154500
|
request['price2'] = this.priceToPrecision(symbol, price);
|
|
151904
154501
|
reduceOnly = true;
|
|
151905
154502
|
}
|
|
151906
|
-
else if (
|
|
151907
|
-
const
|
|
151908
|
-
const
|
|
151909
|
-
request['trigger'] =
|
|
151910
|
-
|
|
151911
|
-
|
|
151912
|
-
const
|
|
151913
|
-
request['price'] =
|
|
151914
|
-
request['price2'] =
|
|
154503
|
+
else if (isTrailingAmountOrder) {
|
|
154504
|
+
const trailingActivationPriceType = this.safeString(params, 'trigger', 'last');
|
|
154505
|
+
const trailingAmountString = '+' + trailingAmount;
|
|
154506
|
+
request['trigger'] = trailingActivationPriceType;
|
|
154507
|
+
if ((type === 'limit') || (trailingLimitAmount !== undefined)) {
|
|
154508
|
+
const offset = this.safeString(params, 'offset', '-');
|
|
154509
|
+
const trailingLimitAmountString = offset + this.numberToString(trailingLimitAmount);
|
|
154510
|
+
request['price'] = trailingAmountString;
|
|
154511
|
+
request['price2'] = trailingLimitAmountString;
|
|
151915
154512
|
request['ordertype'] = 'trailing-stop-limit';
|
|
151916
154513
|
}
|
|
151917
154514
|
else {
|
|
151918
|
-
request['price'] =
|
|
154515
|
+
request['price'] = trailingAmountString;
|
|
151919
154516
|
request['ordertype'] = 'trailing-stop';
|
|
151920
154517
|
}
|
|
151921
154518
|
}
|
|
@@ -151945,7 +154542,7 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
151945
154542
|
if (postOnly) {
|
|
151946
154543
|
request['oflags'] = 'post';
|
|
151947
154544
|
}
|
|
151948
|
-
params = this.omit(params, ['timeInForce', 'reduceOnly', 'stopLossPrice', 'takeProfitPrice', '
|
|
154545
|
+
params = this.omit(params, ['timeInForce', 'reduceOnly', 'stopLossPrice', 'takeProfitPrice', 'trailingAmount', 'trailingLimitAmount', 'offset']);
|
|
151949
154546
|
return [request, params];
|
|
151950
154547
|
}
|
|
151951
154548
|
async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
|
|
@@ -151963,7 +154560,9 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
151963
154560
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
151964
154561
|
* @param {float} [params.stopLossPrice] *margin only* the price that a stop loss order is triggered at
|
|
151965
154562
|
* @param {float} [params.takeProfitPrice] *margin only* the price that a take profit order is triggered at
|
|
151966
|
-
* @param {string} [params.
|
|
154563
|
+
* @param {string} [params.trailingAmount] *margin only* the quote price away from the current market price
|
|
154564
|
+
* @param {string} [params.trailingLimitAmount] *margin only* the quote amount away from the trailingAmount
|
|
154565
|
+
* @param {string} [params.offset] *margin only* '+' or '-' whether you want the trailingLimitAmount value to be positive or negative, default is negative '-'
|
|
151967
154566
|
* @param {string} [params.trigger] *margin only* the activation price type, 'last' or 'index', default is 'last'
|
|
151968
154567
|
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
151969
154568
|
*/
|
|
@@ -172741,7 +175340,7 @@ class mexc extends _abstract_mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
172741
175340
|
'BCH': 'BCH',
|
|
172742
175341
|
'TRC20': 'Tron(TRC20)',
|
|
172743
175342
|
'ERC20': 'Ethereum(ERC20)',
|
|
172744
|
-
'BEP20': '
|
|
175343
|
+
'BEP20': 'BNB Smart Chain(BEP20)',
|
|
172745
175344
|
'OPTIMISM': 'Optimism(OP)',
|
|
172746
175345
|
'SOL': 'Solana(SOL)',
|
|
172747
175346
|
'CRC20': 'CRONOS',
|
|
@@ -173339,7 +175938,7 @@ class mexc extends _abstract_mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
173339
175938
|
'Algorand(ALGO)': 'ALGO',
|
|
173340
175939
|
'ArbitrumOne(ARB)': 'ARBONE',
|
|
173341
175940
|
'AvalancheCChain(AVAXCCHAIN)': 'AVAXC',
|
|
173342
|
-
'
|
|
175941
|
+
'BNB Smart Chain(BEP20)': 'BEP20',
|
|
173343
175942
|
'Polygon(MATIC)': 'MATIC',
|
|
173344
175943
|
'Optimism(OP)': 'OPTIMISM',
|
|
173345
175944
|
'Solana(SOL)': 'SOL',
|
|
@@ -176653,8 +179252,8 @@ class mexc extends _abstract_mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
176653
179252
|
/**
|
|
176654
179253
|
* @method
|
|
176655
179254
|
* @name mexc3#createDepositAddress
|
|
176656
|
-
* @see https://mexcdevelop.github.io/apidocs/spot_v3_en/#generate-deposit-address-supporting-network
|
|
176657
179255
|
* @description create a currency deposit address
|
|
179256
|
+
* @see https://mexcdevelop.github.io/apidocs/spot_v3_en/#generate-deposit-address-supporting-network
|
|
176658
179257
|
* @param {string} code unified currency code of the currency for the deposit address
|
|
176659
179258
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
176660
179259
|
* @param {string} [params.network] the blockchain network name
|
|
@@ -186714,8 +189313,8 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
186714
189313
|
'ALGO': 'Algorand',
|
|
186715
189314
|
'BHP': 'BHP',
|
|
186716
189315
|
'APT': 'Aptos',
|
|
186717
|
-
'ARBONE': 'Arbitrum
|
|
186718
|
-
'AVAXC': 'Avalanche C
|
|
189316
|
+
'ARBONE': 'Arbitrum One',
|
|
189317
|
+
'AVAXC': 'Avalanche C',
|
|
186719
189318
|
'AVAXX': 'Avalanche X-Chain',
|
|
186720
189319
|
'ARK': 'ARK',
|
|
186721
189320
|
'AR': 'Arweave',
|
|
@@ -190309,15 +192908,16 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
190309
192908
|
// },
|
|
190310
192909
|
//
|
|
190311
192910
|
if (chain === 'USDT-Polygon') {
|
|
190312
|
-
networkData = this.
|
|
192911
|
+
networkData = this.safeValue2(networksById, 'USDT-Polygon-Bridge', 'USDT-Polygon');
|
|
190313
192912
|
}
|
|
190314
192913
|
const network = this.safeString(networkData, 'network');
|
|
192914
|
+
const networkCode = this.networkIdToCode(network, code);
|
|
190315
192915
|
this.checkAddress(address);
|
|
190316
192916
|
return {
|
|
190317
192917
|
'currency': code,
|
|
190318
192918
|
'address': address,
|
|
190319
192919
|
'tag': tag,
|
|
190320
|
-
'network':
|
|
192920
|
+
'network': networkCode,
|
|
190321
192921
|
'info': depositAddress,
|
|
190322
192922
|
};
|
|
190323
192923
|
}
|
|
@@ -205624,7 +208224,7 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
205624
208224
|
'watchBalance': true,
|
|
205625
208225
|
'watchMyTrades': true,
|
|
205626
208226
|
'watchOHLCV': true,
|
|
205627
|
-
'watchOHLCVForSymbols':
|
|
208227
|
+
'watchOHLCVForSymbols': false,
|
|
205628
208228
|
'watchOrderBook': true,
|
|
205629
208229
|
'watchOrderBookForSymbols': true,
|
|
205630
208230
|
'watchOrders': true,
|
|
@@ -211347,7 +213947,7 @@ class bitget extends _bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
|
|
|
211347
213947
|
'watchBalance': true,
|
|
211348
213948
|
'watchMyTrades': true,
|
|
211349
213949
|
'watchOHLCV': true,
|
|
211350
|
-
'watchOHLCVForSymbols':
|
|
213950
|
+
'watchOHLCVForSymbols': false,
|
|
211351
213951
|
'watchOrderBook': true,
|
|
211352
213952
|
'watchOrderBookForSymbols': true,
|
|
211353
213953
|
'watchOrders': true,
|
|
@@ -220342,7 +222942,7 @@ class bybit extends _bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
|
220342
222942
|
'watchBalance': true,
|
|
220343
222943
|
'watchMyTrades': true,
|
|
220344
222944
|
'watchOHLCV': true,
|
|
220345
|
-
'watchOHLCVForSymbols':
|
|
222945
|
+
'watchOHLCVForSymbols': false,
|
|
220346
222946
|
'watchOrderBook': true,
|
|
220347
222947
|
'watchOrderBookForSymbols': true,
|
|
220348
222948
|
'watchOrders': true,
|
|
@@ -240252,8 +242852,9 @@ class kucoin extends _kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
|
|
|
240252
242852
|
negotiate(privateChannel, params = {}) {
|
|
240253
242853
|
const connectId = privateChannel ? 'private' : 'public';
|
|
240254
242854
|
const urls = this.safeValue(this.options, 'urls', {});
|
|
240255
|
-
|
|
240256
|
-
|
|
242855
|
+
const spawaned = this.safeValue(urls, connectId);
|
|
242856
|
+
if (spawaned !== undefined) {
|
|
242857
|
+
return spawaned;
|
|
240257
242858
|
}
|
|
240258
242859
|
// we store an awaitable to the url
|
|
240259
242860
|
// so that multiple calls don't asynchronously
|
|
@@ -241224,6 +243825,13 @@ class kucoin extends _kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
|
|
|
241224
243825
|
// }
|
|
241225
243826
|
//
|
|
241226
243827
|
const data = this.safeString(message, 'data', '');
|
|
243828
|
+
if (data === 'token is expired') {
|
|
243829
|
+
let type = 'public';
|
|
243830
|
+
if (client.url.indexOf('connectId=private') >= 0) {
|
|
243831
|
+
type = 'private';
|
|
243832
|
+
}
|
|
243833
|
+
this.options['urls'][type] = undefined;
|
|
243834
|
+
}
|
|
241227
243835
|
this.handleErrors(undefined, undefined, client.url, undefined, undefined, data, message, undefined, undefined);
|
|
241228
243836
|
}
|
|
241229
243837
|
handleMessage(client, message) {
|
|
@@ -241314,8 +243922,9 @@ class kucoinfutures extends _kucoinfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
|
|
|
241314
243922
|
negotiate(privateChannel, params = {}) {
|
|
241315
243923
|
const connectId = privateChannel ? 'private' : 'public';
|
|
241316
243924
|
const urls = this.safeValue(this.options, 'urls', {});
|
|
241317
|
-
|
|
241318
|
-
|
|
243925
|
+
const spawaned = this.safeValue(urls, connectId);
|
|
243926
|
+
if (spawaned !== undefined) {
|
|
243927
|
+
return spawaned;
|
|
241319
243928
|
}
|
|
241320
243929
|
// we store an awaitable to the url
|
|
241321
243930
|
// so that multiple calls don't asynchronously
|
|
@@ -242205,6 +244814,13 @@ class kucoinfutures extends _kucoinfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
|
|
|
242205
244814
|
// }
|
|
242206
244815
|
//
|
|
242207
244816
|
const data = this.safeString(message, 'data', '');
|
|
244817
|
+
if (data === 'token is expired') {
|
|
244818
|
+
let type = 'public';
|
|
244819
|
+
if (client.url.indexOf('connectId=private') >= 0) {
|
|
244820
|
+
type = 'private';
|
|
244821
|
+
}
|
|
244822
|
+
this.options['urls'][type] = undefined;
|
|
244823
|
+
}
|
|
242208
244824
|
this.handleErrors(undefined, undefined, client.url, undefined, undefined, data, message, undefined, undefined);
|
|
242209
244825
|
}
|
|
242210
244826
|
handleMessage(client, message) {
|
|
@@ -288308,39 +290924,39 @@ var __webpack_exports__ = {};
|
|
|
288308
290924
|
(() => {
|
|
288309
290925
|
__webpack_require__.r(__webpack_exports__);
|
|
288310
290926
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
288311
|
-
/* harmony export */ AccountNotEnabled: () => (/* reexport safe */
|
|
288312
|
-
/* harmony export */ AccountSuspended: () => (/* reexport safe */
|
|
288313
|
-
/* harmony export */ AddressPending: () => (/* reexport safe */
|
|
288314
|
-
/* harmony export */ ArgumentsRequired: () => (/* reexport safe */
|
|
288315
|
-
/* harmony export */ AuthenticationError: () => (/* reexport safe */
|
|
288316
|
-
/* harmony export */ BadRequest: () => (/* reexport safe */
|
|
288317
|
-
/* harmony export */ BadResponse: () => (/* reexport safe */
|
|
288318
|
-
/* harmony export */ BadSymbol: () => (/* reexport safe */
|
|
288319
|
-
/* harmony export */ BaseError: () => (/* reexport safe */
|
|
288320
|
-
/* harmony export */ CancelPending: () => (/* reexport safe */
|
|
288321
|
-
/* harmony export */ DDoSProtection: () => (/* reexport safe */
|
|
288322
|
-
/* harmony export */ DuplicateOrderId: () => (/* reexport safe */
|
|
290927
|
+
/* harmony export */ AccountNotEnabled: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.AccountNotEnabled),
|
|
290928
|
+
/* harmony export */ AccountSuspended: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.AccountSuspended),
|
|
290929
|
+
/* harmony export */ AddressPending: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.AddressPending),
|
|
290930
|
+
/* harmony export */ ArgumentsRequired: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.ArgumentsRequired),
|
|
290931
|
+
/* harmony export */ AuthenticationError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.AuthenticationError),
|
|
290932
|
+
/* harmony export */ BadRequest: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.BadRequest),
|
|
290933
|
+
/* harmony export */ BadResponse: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.BadResponse),
|
|
290934
|
+
/* harmony export */ BadSymbol: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.BadSymbol),
|
|
290935
|
+
/* harmony export */ BaseError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.BaseError),
|
|
290936
|
+
/* harmony export */ CancelPending: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.CancelPending),
|
|
290937
|
+
/* harmony export */ DDoSProtection: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.DDoSProtection),
|
|
290938
|
+
/* harmony export */ DuplicateOrderId: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.DuplicateOrderId),
|
|
288323
290939
|
/* harmony export */ Exchange: () => (/* reexport safe */ _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__.e),
|
|
288324
|
-
/* harmony export */ ExchangeError: () => (/* reexport safe */
|
|
288325
|
-
/* harmony export */ ExchangeNotAvailable: () => (/* reexport safe */
|
|
288326
|
-
/* harmony export */ InsufficientFunds: () => (/* reexport safe */
|
|
288327
|
-
/* harmony export */ InvalidAddress: () => (/* reexport safe */
|
|
288328
|
-
/* harmony export */ InvalidNonce: () => (/* reexport safe */
|
|
288329
|
-
/* harmony export */ InvalidOrder: () => (/* reexport safe */
|
|
288330
|
-
/* harmony export */ MarginModeAlreadySet: () => (/* reexport safe */
|
|
288331
|
-
/* harmony export */ NetworkError: () => (/* reexport safe */
|
|
288332
|
-
/* harmony export */ NoChange: () => (/* reexport safe */
|
|
288333
|
-
/* harmony export */ NotSupported: () => (/* reexport safe */
|
|
288334
|
-
/* harmony export */ NullResponse: () => (/* reexport safe */
|
|
288335
|
-
/* harmony export */ OnMaintenance: () => (/* reexport safe */
|
|
288336
|
-
/* harmony export */ OrderImmediatelyFillable: () => (/* reexport safe */
|
|
288337
|
-
/* harmony export */ OrderNotCached: () => (/* reexport safe */
|
|
288338
|
-
/* harmony export */ OrderNotFillable: () => (/* reexport safe */
|
|
288339
|
-
/* harmony export */ OrderNotFound: () => (/* reexport safe */
|
|
288340
|
-
/* harmony export */ PermissionDenied: () => (/* reexport safe */
|
|
288341
|
-
/* harmony export */ Precise: () => (/* reexport safe */
|
|
288342
|
-
/* harmony export */ RateLimitExceeded: () => (/* reexport safe */
|
|
288343
|
-
/* harmony export */ RequestTimeout: () => (/* reexport safe */
|
|
290940
|
+
/* harmony export */ ExchangeError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.ExchangeError),
|
|
290941
|
+
/* harmony export */ ExchangeNotAvailable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.ExchangeNotAvailable),
|
|
290942
|
+
/* harmony export */ InsufficientFunds: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.InsufficientFunds),
|
|
290943
|
+
/* harmony export */ InvalidAddress: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.InvalidAddress),
|
|
290944
|
+
/* harmony export */ InvalidNonce: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.InvalidNonce),
|
|
290945
|
+
/* harmony export */ InvalidOrder: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.InvalidOrder),
|
|
290946
|
+
/* harmony export */ MarginModeAlreadySet: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.MarginModeAlreadySet),
|
|
290947
|
+
/* harmony export */ NetworkError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.NetworkError),
|
|
290948
|
+
/* harmony export */ NoChange: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.NoChange),
|
|
290949
|
+
/* harmony export */ NotSupported: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.NotSupported),
|
|
290950
|
+
/* harmony export */ NullResponse: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.NullResponse),
|
|
290951
|
+
/* harmony export */ OnMaintenance: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.OnMaintenance),
|
|
290952
|
+
/* harmony export */ OrderImmediatelyFillable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.OrderImmediatelyFillable),
|
|
290953
|
+
/* harmony export */ OrderNotCached: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.OrderNotCached),
|
|
290954
|
+
/* harmony export */ OrderNotFillable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.OrderNotFillable),
|
|
290955
|
+
/* harmony export */ OrderNotFound: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.OrderNotFound),
|
|
290956
|
+
/* harmony export */ PermissionDenied: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.PermissionDenied),
|
|
290957
|
+
/* harmony export */ Precise: () => (/* reexport safe */ _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_155__.O),
|
|
290958
|
+
/* harmony export */ RateLimitExceeded: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.RateLimitExceeded),
|
|
290959
|
+
/* harmony export */ RequestTimeout: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__.RequestTimeout),
|
|
288344
290960
|
/* harmony export */ ace: () => (/* reexport safe */ _src_ace_js__WEBPACK_IMPORTED_MODULE_2__.Z),
|
|
288345
290961
|
/* harmony export */ alpaca: () => (/* reexport safe */ _src_alpaca_js__WEBPACK_IMPORTED_MODULE_3__.Z),
|
|
288346
290962
|
/* harmony export */ ascendex: () => (/* reexport safe */ _src_ascendex_js__WEBPACK_IMPORTED_MODULE_4__.Z),
|
|
@@ -288369,86 +290985,87 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
288369
290985
|
/* harmony export */ bitrue: () => (/* reexport safe */ _src_bitrue_js__WEBPACK_IMPORTED_MODULE_27__.Z),
|
|
288370
290986
|
/* harmony export */ bitso: () => (/* reexport safe */ _src_bitso_js__WEBPACK_IMPORTED_MODULE_28__.Z),
|
|
288371
290987
|
/* harmony export */ bitstamp: () => (/* reexport safe */ _src_bitstamp_js__WEBPACK_IMPORTED_MODULE_29__.Z),
|
|
288372
|
-
/* harmony export */
|
|
288373
|
-
/* harmony export */
|
|
288374
|
-
/* harmony export */
|
|
288375
|
-
/* harmony export */
|
|
288376
|
-
/* harmony export */
|
|
288377
|
-
/* harmony export */
|
|
288378
|
-
/* harmony export */
|
|
288379
|
-
/* harmony export */
|
|
288380
|
-
/* harmony export */
|
|
288381
|
-
/* harmony export */
|
|
288382
|
-
/* harmony export */
|
|
288383
|
-
/* harmony export */
|
|
288384
|
-
/* harmony export */
|
|
288385
|
-
/* harmony export */
|
|
288386
|
-
/* harmony export */
|
|
288387
|
-
/* harmony export */
|
|
288388
|
-
/* harmony export */
|
|
288389
|
-
/* harmony export */
|
|
288390
|
-
/* harmony export */
|
|
288391
|
-
/* harmony export */
|
|
290988
|
+
/* harmony export */ bitteam: () => (/* reexport safe */ _src_bitteam_js__WEBPACK_IMPORTED_MODULE_30__.Z),
|
|
290989
|
+
/* harmony export */ bitvavo: () => (/* reexport safe */ _src_bitvavo_js__WEBPACK_IMPORTED_MODULE_31__.Z),
|
|
290990
|
+
/* harmony export */ bl3p: () => (/* reexport safe */ _src_bl3p_js__WEBPACK_IMPORTED_MODULE_32__.Z),
|
|
290991
|
+
/* harmony export */ blockchaincom: () => (/* reexport safe */ _src_blockchaincom_js__WEBPACK_IMPORTED_MODULE_33__.Z),
|
|
290992
|
+
/* harmony export */ btcalpha: () => (/* reexport safe */ _src_btcalpha_js__WEBPACK_IMPORTED_MODULE_34__.Z),
|
|
290993
|
+
/* harmony export */ btcbox: () => (/* reexport safe */ _src_btcbox_js__WEBPACK_IMPORTED_MODULE_35__.Z),
|
|
290994
|
+
/* harmony export */ btcmarkets: () => (/* reexport safe */ _src_btcmarkets_js__WEBPACK_IMPORTED_MODULE_36__.Z),
|
|
290995
|
+
/* harmony export */ btcturk: () => (/* reexport safe */ _src_btcturk_js__WEBPACK_IMPORTED_MODULE_37__.Z),
|
|
290996
|
+
/* harmony export */ bybit: () => (/* reexport safe */ _src_bybit_js__WEBPACK_IMPORTED_MODULE_38__.Z),
|
|
290997
|
+
/* harmony export */ cex: () => (/* reexport safe */ _src_cex_js__WEBPACK_IMPORTED_MODULE_39__.Z),
|
|
290998
|
+
/* harmony export */ coinbase: () => (/* reexport safe */ _src_coinbase_js__WEBPACK_IMPORTED_MODULE_40__.Z),
|
|
290999
|
+
/* harmony export */ coinbasepro: () => (/* reexport safe */ _src_coinbasepro_js__WEBPACK_IMPORTED_MODULE_41__.Z),
|
|
291000
|
+
/* harmony export */ coincheck: () => (/* reexport safe */ _src_coincheck_js__WEBPACK_IMPORTED_MODULE_42__.Z),
|
|
291001
|
+
/* harmony export */ coinex: () => (/* reexport safe */ _src_coinex_js__WEBPACK_IMPORTED_MODULE_43__.Z),
|
|
291002
|
+
/* harmony export */ coinlist: () => (/* reexport safe */ _src_coinlist_js__WEBPACK_IMPORTED_MODULE_44__.Z),
|
|
291003
|
+
/* harmony export */ coinmate: () => (/* reexport safe */ _src_coinmate_js__WEBPACK_IMPORTED_MODULE_45__.Z),
|
|
291004
|
+
/* harmony export */ coinone: () => (/* reexport safe */ _src_coinone_js__WEBPACK_IMPORTED_MODULE_46__.Z),
|
|
291005
|
+
/* harmony export */ coinsph: () => (/* reexport safe */ _src_coinsph_js__WEBPACK_IMPORTED_MODULE_47__.Z),
|
|
291006
|
+
/* harmony export */ coinspot: () => (/* reexport safe */ _src_coinspot_js__WEBPACK_IMPORTED_MODULE_48__.Z),
|
|
291007
|
+
/* harmony export */ cryptocom: () => (/* reexport safe */ _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_49__.Z),
|
|
291008
|
+
/* harmony export */ currencycom: () => (/* reexport safe */ _src_currencycom_js__WEBPACK_IMPORTED_MODULE_50__.Z),
|
|
288392
291009
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
|
|
288393
|
-
/* harmony export */ delta: () => (/* reexport safe */
|
|
288394
|
-
/* harmony export */ deribit: () => (/* reexport safe */
|
|
288395
|
-
/* harmony export */ digifinex: () => (/* reexport safe */
|
|
288396
|
-
/* harmony export */ errors: () => (/* reexport module object */
|
|
291010
|
+
/* harmony export */ delta: () => (/* reexport safe */ _src_delta_js__WEBPACK_IMPORTED_MODULE_51__.Z),
|
|
291011
|
+
/* harmony export */ deribit: () => (/* reexport safe */ _src_deribit_js__WEBPACK_IMPORTED_MODULE_52__.Z),
|
|
291012
|
+
/* harmony export */ digifinex: () => (/* reexport safe */ _src_digifinex_js__WEBPACK_IMPORTED_MODULE_53__.Z),
|
|
291013
|
+
/* harmony export */ errors: () => (/* reexport module object */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__),
|
|
288397
291014
|
/* harmony export */ exchanges: () => (/* binding */ exchanges),
|
|
288398
|
-
/* harmony export */ exmo: () => (/* reexport safe */
|
|
288399
|
-
/* harmony export */ fmfwio: () => (/* reexport safe */
|
|
288400
|
-
/* harmony export */ functions: () => (/* reexport module object */
|
|
288401
|
-
/* harmony export */ gate: () => (/* reexport safe */
|
|
288402
|
-
/* harmony export */ gateio: () => (/* reexport safe */
|
|
288403
|
-
/* harmony export */ gemini: () => (/* reexport safe */
|
|
288404
|
-
/* harmony export */ hitbtc: () => (/* reexport safe */
|
|
288405
|
-
/* harmony export */ hitbtc3: () => (/* reexport safe */
|
|
288406
|
-
/* harmony export */ hollaex: () => (/* reexport safe */
|
|
288407
|
-
/* harmony export */ htx: () => (/* reexport safe */
|
|
288408
|
-
/* harmony export */ huobi: () => (/* reexport safe */
|
|
288409
|
-
/* harmony export */ huobijp: () => (/* reexport safe */
|
|
288410
|
-
/* harmony export */ idex: () => (/* reexport safe */
|
|
288411
|
-
/* harmony export */ independentreserve: () => (/* reexport safe */
|
|
288412
|
-
/* harmony export */ indodax: () => (/* reexport safe */
|
|
288413
|
-
/* harmony export */ kraken: () => (/* reexport safe */
|
|
288414
|
-
/* harmony export */ krakenfutures: () => (/* reexport safe */
|
|
288415
|
-
/* harmony export */ kucoin: () => (/* reexport safe */
|
|
288416
|
-
/* harmony export */ kucoinfutures: () => (/* reexport safe */
|
|
288417
|
-
/* harmony export */ kuna: () => (/* reexport safe */
|
|
288418
|
-
/* harmony export */ latoken: () => (/* reexport safe */
|
|
288419
|
-
/* harmony export */ lbank: () => (/* reexport safe */
|
|
288420
|
-
/* harmony export */ luno: () => (/* reexport safe */
|
|
288421
|
-
/* harmony export */ lykke: () => (/* reexport safe */
|
|
288422
|
-
/* harmony export */ mercado: () => (/* reexport safe */
|
|
288423
|
-
/* harmony export */ mexc: () => (/* reexport safe */
|
|
288424
|
-
/* harmony export */ ndax: () => (/* reexport safe */
|
|
288425
|
-
/* harmony export */ novadax: () => (/* reexport safe */
|
|
288426
|
-
/* harmony export */ oceanex: () => (/* reexport safe */
|
|
288427
|
-
/* harmony export */ okcoin: () => (/* reexport safe */
|
|
288428
|
-
/* harmony export */ okx: () => (/* reexport safe */
|
|
288429
|
-
/* harmony export */ p2b: () => (/* reexport safe */
|
|
288430
|
-
/* harmony export */ paymium: () => (/* reexport safe */
|
|
288431
|
-
/* harmony export */ phemex: () => (/* reexport safe */
|
|
288432
|
-
/* harmony export */ poloniex: () => (/* reexport safe */
|
|
288433
|
-
/* harmony export */ poloniexfutures: () => (/* reexport safe */
|
|
291015
|
+
/* harmony export */ exmo: () => (/* reexport safe */ _src_exmo_js__WEBPACK_IMPORTED_MODULE_54__.Z),
|
|
291016
|
+
/* harmony export */ fmfwio: () => (/* reexport safe */ _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_55__.Z),
|
|
291017
|
+
/* harmony export */ functions: () => (/* reexport module object */ _src_base_functions_js__WEBPACK_IMPORTED_MODULE_156__),
|
|
291018
|
+
/* harmony export */ gate: () => (/* reexport safe */ _src_gate_js__WEBPACK_IMPORTED_MODULE_56__.Z),
|
|
291019
|
+
/* harmony export */ gateio: () => (/* reexport safe */ _src_gateio_js__WEBPACK_IMPORTED_MODULE_57__.Z),
|
|
291020
|
+
/* harmony export */ gemini: () => (/* reexport safe */ _src_gemini_js__WEBPACK_IMPORTED_MODULE_58__.Z),
|
|
291021
|
+
/* harmony export */ hitbtc: () => (/* reexport safe */ _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_59__.Z),
|
|
291022
|
+
/* harmony export */ hitbtc3: () => (/* reexport safe */ _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_60__.Z),
|
|
291023
|
+
/* harmony export */ hollaex: () => (/* reexport safe */ _src_hollaex_js__WEBPACK_IMPORTED_MODULE_61__.Z),
|
|
291024
|
+
/* harmony export */ htx: () => (/* reexport safe */ _src_htx_js__WEBPACK_IMPORTED_MODULE_62__.Z),
|
|
291025
|
+
/* harmony export */ huobi: () => (/* reexport safe */ _src_huobi_js__WEBPACK_IMPORTED_MODULE_63__.Z),
|
|
291026
|
+
/* harmony export */ huobijp: () => (/* reexport safe */ _src_huobijp_js__WEBPACK_IMPORTED_MODULE_64__.Z),
|
|
291027
|
+
/* harmony export */ idex: () => (/* reexport safe */ _src_idex_js__WEBPACK_IMPORTED_MODULE_65__.Z),
|
|
291028
|
+
/* harmony export */ independentreserve: () => (/* reexport safe */ _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_66__.Z),
|
|
291029
|
+
/* harmony export */ indodax: () => (/* reexport safe */ _src_indodax_js__WEBPACK_IMPORTED_MODULE_67__.Z),
|
|
291030
|
+
/* harmony export */ kraken: () => (/* reexport safe */ _src_kraken_js__WEBPACK_IMPORTED_MODULE_68__.Z),
|
|
291031
|
+
/* harmony export */ krakenfutures: () => (/* reexport safe */ _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_69__.Z),
|
|
291032
|
+
/* harmony export */ kucoin: () => (/* reexport safe */ _src_kucoin_js__WEBPACK_IMPORTED_MODULE_70__.Z),
|
|
291033
|
+
/* harmony export */ kucoinfutures: () => (/* reexport safe */ _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_71__.Z),
|
|
291034
|
+
/* harmony export */ kuna: () => (/* reexport safe */ _src_kuna_js__WEBPACK_IMPORTED_MODULE_72__.Z),
|
|
291035
|
+
/* harmony export */ latoken: () => (/* reexport safe */ _src_latoken_js__WEBPACK_IMPORTED_MODULE_73__.Z),
|
|
291036
|
+
/* harmony export */ lbank: () => (/* reexport safe */ _src_lbank_js__WEBPACK_IMPORTED_MODULE_74__.Z),
|
|
291037
|
+
/* harmony export */ luno: () => (/* reexport safe */ _src_luno_js__WEBPACK_IMPORTED_MODULE_75__.Z),
|
|
291038
|
+
/* harmony export */ lykke: () => (/* reexport safe */ _src_lykke_js__WEBPACK_IMPORTED_MODULE_76__.Z),
|
|
291039
|
+
/* harmony export */ mercado: () => (/* reexport safe */ _src_mercado_js__WEBPACK_IMPORTED_MODULE_77__.Z),
|
|
291040
|
+
/* harmony export */ mexc: () => (/* reexport safe */ _src_mexc_js__WEBPACK_IMPORTED_MODULE_78__.Z),
|
|
291041
|
+
/* harmony export */ ndax: () => (/* reexport safe */ _src_ndax_js__WEBPACK_IMPORTED_MODULE_79__.Z),
|
|
291042
|
+
/* harmony export */ novadax: () => (/* reexport safe */ _src_novadax_js__WEBPACK_IMPORTED_MODULE_80__.Z),
|
|
291043
|
+
/* harmony export */ oceanex: () => (/* reexport safe */ _src_oceanex_js__WEBPACK_IMPORTED_MODULE_81__.Z),
|
|
291044
|
+
/* harmony export */ okcoin: () => (/* reexport safe */ _src_okcoin_js__WEBPACK_IMPORTED_MODULE_82__.Z),
|
|
291045
|
+
/* harmony export */ okx: () => (/* reexport safe */ _src_okx_js__WEBPACK_IMPORTED_MODULE_83__.Z),
|
|
291046
|
+
/* harmony export */ p2b: () => (/* reexport safe */ _src_p2b_js__WEBPACK_IMPORTED_MODULE_84__.Z),
|
|
291047
|
+
/* harmony export */ paymium: () => (/* reexport safe */ _src_paymium_js__WEBPACK_IMPORTED_MODULE_85__.Z),
|
|
291048
|
+
/* harmony export */ phemex: () => (/* reexport safe */ _src_phemex_js__WEBPACK_IMPORTED_MODULE_86__.Z),
|
|
291049
|
+
/* harmony export */ poloniex: () => (/* reexport safe */ _src_poloniex_js__WEBPACK_IMPORTED_MODULE_87__.Z),
|
|
291050
|
+
/* harmony export */ poloniexfutures: () => (/* reexport safe */ _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_88__.Z),
|
|
288434
291051
|
/* harmony export */ pro: () => (/* binding */ pro),
|
|
288435
|
-
/* harmony export */ probit: () => (/* reexport safe */
|
|
288436
|
-
/* harmony export */ timex: () => (/* reexport safe */
|
|
288437
|
-
/* harmony export */ tokocrypto: () => (/* reexport safe */
|
|
288438
|
-
/* harmony export */ upbit: () => (/* reexport safe */
|
|
291052
|
+
/* harmony export */ probit: () => (/* reexport safe */ _src_probit_js__WEBPACK_IMPORTED_MODULE_89__.Z),
|
|
291053
|
+
/* harmony export */ timex: () => (/* reexport safe */ _src_timex_js__WEBPACK_IMPORTED_MODULE_90__.Z),
|
|
291054
|
+
/* harmony export */ tokocrypto: () => (/* reexport safe */ _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_91__.Z),
|
|
291055
|
+
/* harmony export */ upbit: () => (/* reexport safe */ _src_upbit_js__WEBPACK_IMPORTED_MODULE_92__.Z),
|
|
288439
291056
|
/* harmony export */ version: () => (/* binding */ version),
|
|
288440
|
-
/* harmony export */ wavesexchange: () => (/* reexport safe */
|
|
288441
|
-
/* harmony export */ wazirx: () => (/* reexport safe */
|
|
288442
|
-
/* harmony export */ whitebit: () => (/* reexport safe */
|
|
288443
|
-
/* harmony export */ woo: () => (/* reexport safe */
|
|
288444
|
-
/* harmony export */ yobit: () => (/* reexport safe */
|
|
291057
|
+
/* harmony export */ wavesexchange: () => (/* reexport safe */ _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_93__.Z),
|
|
291058
|
+
/* harmony export */ wazirx: () => (/* reexport safe */ _src_wazirx_js__WEBPACK_IMPORTED_MODULE_94__.Z),
|
|
291059
|
+
/* harmony export */ whitebit: () => (/* reexport safe */ _src_whitebit_js__WEBPACK_IMPORTED_MODULE_95__.Z),
|
|
291060
|
+
/* harmony export */ woo: () => (/* reexport safe */ _src_woo_js__WEBPACK_IMPORTED_MODULE_96__.Z),
|
|
291061
|
+
/* harmony export */ yobit: () => (/* reexport safe */ _src_yobit_js__WEBPACK_IMPORTED_MODULE_97__.Z),
|
|
288445
291062
|
/* harmony export */ zaif: () => (/* reexport safe */ _src_zaif_js__WEBPACK_IMPORTED_MODULE_1__.Z),
|
|
288446
|
-
/* harmony export */ zonda: () => (/* reexport safe */
|
|
291063
|
+
/* harmony export */ zonda: () => (/* reexport safe */ _src_zonda_js__WEBPACK_IMPORTED_MODULE_98__.Z)
|
|
288447
291064
|
/* harmony export */ });
|
|
288448
291065
|
/* harmony import */ var _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3043);
|
|
288449
|
-
/* harmony import */ var
|
|
288450
|
-
/* harmony import */ var
|
|
288451
|
-
/* harmony import */ var
|
|
291066
|
+
/* harmony import */ var _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(2194);
|
|
291067
|
+
/* harmony import */ var _src_base_functions_js__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__(7100);
|
|
291068
|
+
/* harmony import */ var _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__ = __webpack_require__(6689);
|
|
288452
291069
|
/* harmony import */ var _src_ace_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9869);
|
|
288453
291070
|
/* harmony import */ var _src_alpaca_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5660);
|
|
288454
291071
|
/* harmony import */ var _src_ascendex_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(9612);
|
|
@@ -288477,131 +291094,132 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
288477
291094
|
/* harmony import */ var _src_bitrue_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(854);
|
|
288478
291095
|
/* harmony import */ var _src_bitso_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(4388);
|
|
288479
291096
|
/* harmony import */ var _src_bitstamp_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(4667);
|
|
288480
|
-
/* harmony import */ var
|
|
288481
|
-
/* harmony import */ var
|
|
288482
|
-
/* harmony import */ var
|
|
288483
|
-
/* harmony import */ var
|
|
288484
|
-
/* harmony import */ var
|
|
288485
|
-
/* harmony import */ var
|
|
288486
|
-
/* harmony import */ var
|
|
288487
|
-
/* harmony import */ var
|
|
288488
|
-
/* harmony import */ var
|
|
288489
|
-
/* harmony import */ var
|
|
288490
|
-
/* harmony import */ var
|
|
288491
|
-
/* harmony import */ var
|
|
288492
|
-
/* harmony import */ var
|
|
288493
|
-
/* harmony import */ var
|
|
288494
|
-
/* harmony import */ var
|
|
288495
|
-
/* harmony import */ var
|
|
288496
|
-
/* harmony import */ var
|
|
288497
|
-
/* harmony import */ var
|
|
288498
|
-
/* harmony import */ var
|
|
288499
|
-
/* harmony import */ var
|
|
288500
|
-
/* harmony import */ var
|
|
288501
|
-
/* harmony import */ var
|
|
288502
|
-
/* harmony import */ var
|
|
288503
|
-
/* harmony import */ var
|
|
288504
|
-
/* harmony import */ var
|
|
288505
|
-
/* harmony import */ var
|
|
288506
|
-
/* harmony import */ var
|
|
288507
|
-
/* harmony import */ var
|
|
288508
|
-
/* harmony import */ var
|
|
288509
|
-
/* harmony import */ var
|
|
288510
|
-
/* harmony import */ var
|
|
288511
|
-
/* harmony import */ var
|
|
288512
|
-
/* harmony import */ var
|
|
288513
|
-
/* harmony import */ var
|
|
288514
|
-
/* harmony import */ var
|
|
288515
|
-
/* harmony import */ var
|
|
288516
|
-
/* harmony import */ var
|
|
288517
|
-
/* harmony import */ var
|
|
288518
|
-
/* harmony import */ var
|
|
288519
|
-
/* harmony import */ var
|
|
288520
|
-
/* harmony import */ var
|
|
288521
|
-
/* harmony import */ var
|
|
288522
|
-
/* harmony import */ var
|
|
288523
|
-
/* harmony import */ var
|
|
288524
|
-
/* harmony import */ var
|
|
288525
|
-
/* harmony import */ var
|
|
288526
|
-
/* harmony import */ var
|
|
288527
|
-
/* harmony import */ var
|
|
288528
|
-
/* harmony import */ var
|
|
288529
|
-
/* harmony import */ var
|
|
288530
|
-
/* harmony import */ var
|
|
288531
|
-
/* harmony import */ var
|
|
288532
|
-
/* harmony import */ var
|
|
288533
|
-
/* harmony import */ var
|
|
288534
|
-
/* harmony import */ var
|
|
288535
|
-
/* harmony import */ var
|
|
288536
|
-
/* harmony import */ var
|
|
288537
|
-
/* harmony import */ var
|
|
288538
|
-
/* harmony import */ var
|
|
288539
|
-
/* harmony import */ var
|
|
288540
|
-
/* harmony import */ var
|
|
288541
|
-
/* harmony import */ var
|
|
288542
|
-
/* harmony import */ var
|
|
288543
|
-
/* harmony import */ var
|
|
288544
|
-
/* harmony import */ var
|
|
288545
|
-
/* harmony import */ var
|
|
288546
|
-
/* harmony import */ var
|
|
291097
|
+
/* harmony import */ var _src_bitteam_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(8994);
|
|
291098
|
+
/* harmony import */ var _src_bitvavo_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(9943);
|
|
291099
|
+
/* harmony import */ var _src_bl3p_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(9476);
|
|
291100
|
+
/* harmony import */ var _src_blockchaincom_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(182);
|
|
291101
|
+
/* harmony import */ var _src_btcalpha_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(6246);
|
|
291102
|
+
/* harmony import */ var _src_btcbox_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(7796);
|
|
291103
|
+
/* harmony import */ var _src_btcmarkets_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(1776);
|
|
291104
|
+
/* harmony import */ var _src_btcturk_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(6304);
|
|
291105
|
+
/* harmony import */ var _src_bybit_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(3527);
|
|
291106
|
+
/* harmony import */ var _src_cex_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(6445);
|
|
291107
|
+
/* harmony import */ var _src_coinbase_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(437);
|
|
291108
|
+
/* harmony import */ var _src_coinbasepro_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(8856);
|
|
291109
|
+
/* harmony import */ var _src_coincheck_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(2117);
|
|
291110
|
+
/* harmony import */ var _src_coinex_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(332);
|
|
291111
|
+
/* harmony import */ var _src_coinlist_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(3623);
|
|
291112
|
+
/* harmony import */ var _src_coinmate_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(9816);
|
|
291113
|
+
/* harmony import */ var _src_coinone_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(7811);
|
|
291114
|
+
/* harmony import */ var _src_coinsph_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(5782);
|
|
291115
|
+
/* harmony import */ var _src_coinspot_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(7794);
|
|
291116
|
+
/* harmony import */ var _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(9129);
|
|
291117
|
+
/* harmony import */ var _src_currencycom_js__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(3214);
|
|
291118
|
+
/* harmony import */ var _src_delta_js__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(1753);
|
|
291119
|
+
/* harmony import */ var _src_deribit_js__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(24);
|
|
291120
|
+
/* harmony import */ var _src_digifinex_js__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(8846);
|
|
291121
|
+
/* harmony import */ var _src_exmo_js__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(1729);
|
|
291122
|
+
/* harmony import */ var _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(5788);
|
|
291123
|
+
/* harmony import */ var _src_gate_js__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(7290);
|
|
291124
|
+
/* harmony import */ var _src_gateio_js__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(7036);
|
|
291125
|
+
/* harmony import */ var _src_gemini_js__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(6743);
|
|
291126
|
+
/* harmony import */ var _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(4714);
|
|
291127
|
+
/* harmony import */ var _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(4815);
|
|
291128
|
+
/* harmony import */ var _src_hollaex_js__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(8422);
|
|
291129
|
+
/* harmony import */ var _src_htx_js__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(5939);
|
|
291130
|
+
/* harmony import */ var _src_huobi_js__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(8146);
|
|
291131
|
+
/* harmony import */ var _src_huobijp_js__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(7034);
|
|
291132
|
+
/* harmony import */ var _src_idex_js__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(8232);
|
|
291133
|
+
/* harmony import */ var _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(9570);
|
|
291134
|
+
/* harmony import */ var _src_indodax_js__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(1605);
|
|
291135
|
+
/* harmony import */ var _src_kraken_js__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(9922);
|
|
291136
|
+
/* harmony import */ var _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(4470);
|
|
291137
|
+
/* harmony import */ var _src_kucoin_js__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(3583);
|
|
291138
|
+
/* harmony import */ var _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(1924);
|
|
291139
|
+
/* harmony import */ var _src_kuna_js__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(7732);
|
|
291140
|
+
/* harmony import */ var _src_latoken_js__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(2545);
|
|
291141
|
+
/* harmony import */ var _src_lbank_js__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(3944);
|
|
291142
|
+
/* harmony import */ var _src_luno_js__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(1758);
|
|
291143
|
+
/* harmony import */ var _src_lykke_js__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(3803);
|
|
291144
|
+
/* harmony import */ var _src_mercado_js__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(9013);
|
|
291145
|
+
/* harmony import */ var _src_mexc_js__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(6641);
|
|
291146
|
+
/* harmony import */ var _src_ndax_js__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(4531);
|
|
291147
|
+
/* harmony import */ var _src_novadax_js__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(2449);
|
|
291148
|
+
/* harmony import */ var _src_oceanex_js__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(6749);
|
|
291149
|
+
/* harmony import */ var _src_okcoin_js__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(3007);
|
|
291150
|
+
/* harmony import */ var _src_okx_js__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(4042);
|
|
291151
|
+
/* harmony import */ var _src_p2b_js__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(2466);
|
|
291152
|
+
/* harmony import */ var _src_paymium_js__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(7082);
|
|
291153
|
+
/* harmony import */ var _src_phemex_js__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(79);
|
|
291154
|
+
/* harmony import */ var _src_poloniex_js__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(8891);
|
|
291155
|
+
/* harmony import */ var _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(6877);
|
|
291156
|
+
/* harmony import */ var _src_probit_js__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(3657);
|
|
291157
|
+
/* harmony import */ var _src_timex_js__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(1067);
|
|
291158
|
+
/* harmony import */ var _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(5261);
|
|
291159
|
+
/* harmony import */ var _src_upbit_js__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(7584);
|
|
291160
|
+
/* harmony import */ var _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(3853);
|
|
291161
|
+
/* harmony import */ var _src_wazirx_js__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(6536);
|
|
291162
|
+
/* harmony import */ var _src_whitebit_js__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(5467);
|
|
291163
|
+
/* harmony import */ var _src_woo_js__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(517);
|
|
291164
|
+
/* harmony import */ var _src_yobit_js__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(3850);
|
|
288547
291165
|
/* harmony import */ var _src_zaif_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7558);
|
|
288548
|
-
/* harmony import */ var
|
|
288549
|
-
/* harmony import */ var
|
|
288550
|
-
/* harmony import */ var
|
|
288551
|
-
/* harmony import */ var
|
|
288552
|
-
/* harmony import */ var
|
|
288553
|
-
/* harmony import */ var
|
|
288554
|
-
/* harmony import */ var
|
|
288555
|
-
/* harmony import */ var
|
|
288556
|
-
/* harmony import */ var
|
|
288557
|
-
/* harmony import */ var
|
|
288558
|
-
/* harmony import */ var
|
|
288559
|
-
/* harmony import */ var
|
|
288560
|
-
/* harmony import */ var
|
|
288561
|
-
/* harmony import */ var
|
|
288562
|
-
/* harmony import */ var
|
|
288563
|
-
/* harmony import */ var
|
|
288564
|
-
/* harmony import */ var
|
|
288565
|
-
/* harmony import */ var
|
|
288566
|
-
/* harmony import */ var
|
|
288567
|
-
/* harmony import */ var
|
|
288568
|
-
/* harmony import */ var
|
|
288569
|
-
/* harmony import */ var
|
|
288570
|
-
/* harmony import */ var
|
|
288571
|
-
/* harmony import */ var
|
|
288572
|
-
/* harmony import */ var
|
|
288573
|
-
/* harmony import */ var
|
|
288574
|
-
/* harmony import */ var
|
|
288575
|
-
/* harmony import */ var
|
|
288576
|
-
/* harmony import */ var
|
|
288577
|
-
/* harmony import */ var
|
|
288578
|
-
/* harmony import */ var
|
|
288579
|
-
/* harmony import */ var
|
|
288580
|
-
/* harmony import */ var
|
|
288581
|
-
/* harmony import */ var
|
|
288582
|
-
/* harmony import */ var
|
|
288583
|
-
/* harmony import */ var
|
|
288584
|
-
/* harmony import */ var
|
|
288585
|
-
/* harmony import */ var
|
|
288586
|
-
/* harmony import */ var
|
|
288587
|
-
/* harmony import */ var
|
|
288588
|
-
/* harmony import */ var
|
|
288589
|
-
/* harmony import */ var
|
|
288590
|
-
/* harmony import */ var
|
|
288591
|
-
/* harmony import */ var
|
|
288592
|
-
/* harmony import */ var
|
|
288593
|
-
/* harmony import */ var
|
|
288594
|
-
/* harmony import */ var
|
|
288595
|
-
/* harmony import */ var
|
|
288596
|
-
/* harmony import */ var
|
|
288597
|
-
/* harmony import */ var
|
|
288598
|
-
/* harmony import */ var
|
|
288599
|
-
/* harmony import */ var
|
|
288600
|
-
/* harmony import */ var
|
|
288601
|
-
/* harmony import */ var
|
|
288602
|
-
/* harmony import */ var
|
|
288603
|
-
/* harmony import */ var
|
|
288604
|
-
/* harmony import */ var
|
|
291166
|
+
/* harmony import */ var _src_zonda_js__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(5140);
|
|
291167
|
+
/* harmony import */ var _src_pro_alpaca_js__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(2467);
|
|
291168
|
+
/* harmony import */ var _src_pro_ascendex_js__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(2383);
|
|
291169
|
+
/* harmony import */ var _src_pro_bequant_js__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(8848);
|
|
291170
|
+
/* harmony import */ var _src_pro_binance_js__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(8764);
|
|
291171
|
+
/* harmony import */ var _src_pro_binancecoinm_js__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(5078);
|
|
291172
|
+
/* harmony import */ var _src_pro_binanceus_js__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(1326);
|
|
291173
|
+
/* harmony import */ var _src_pro_binanceusdm_js__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(1230);
|
|
291174
|
+
/* harmony import */ var _src_pro_bingx_js__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(6955);
|
|
291175
|
+
/* harmony import */ var _src_pro_bitcoincom_js__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(453);
|
|
291176
|
+
/* harmony import */ var _src_pro_bitfinex_js__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(9772);
|
|
291177
|
+
/* harmony import */ var _src_pro_bitfinex2_js__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(588);
|
|
291178
|
+
/* harmony import */ var _src_pro_bitget_js__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__(1885);
|
|
291179
|
+
/* harmony import */ var _src_pro_bitmart_js__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__(7504);
|
|
291180
|
+
/* harmony import */ var _src_pro_bitmex_js__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__(2302);
|
|
291181
|
+
/* harmony import */ var _src_pro_bitopro_js__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__(2191);
|
|
291182
|
+
/* harmony import */ var _src_pro_bitpanda_js__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__(1297);
|
|
291183
|
+
/* harmony import */ var _src_pro_bitrue_js__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(3005);
|
|
291184
|
+
/* harmony import */ var _src_pro_bitstamp_js__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(2317);
|
|
291185
|
+
/* harmony import */ var _src_pro_bitvavo_js__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(6977);
|
|
291186
|
+
/* harmony import */ var _src_pro_blockchaincom_js__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(2519);
|
|
291187
|
+
/* harmony import */ var _src_pro_bybit_js__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(5030);
|
|
291188
|
+
/* harmony import */ var _src_pro_cex_js__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(5272);
|
|
291189
|
+
/* harmony import */ var _src_pro_coinbase_js__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(3414);
|
|
291190
|
+
/* harmony import */ var _src_pro_coinbasepro_js__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(8368);
|
|
291191
|
+
/* harmony import */ var _src_pro_coinex_js__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(204);
|
|
291192
|
+
/* harmony import */ var _src_pro_cryptocom_js__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(6820);
|
|
291193
|
+
/* harmony import */ var _src_pro_currencycom_js__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(2952);
|
|
291194
|
+
/* harmony import */ var _src_pro_deribit_js__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(1788);
|
|
291195
|
+
/* harmony import */ var _src_pro_exmo_js__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(9004);
|
|
291196
|
+
/* harmony import */ var _src_pro_gate_js__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(8335);
|
|
291197
|
+
/* harmony import */ var _src_pro_gateio_js__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(1465);
|
|
291198
|
+
/* harmony import */ var _src_pro_gemini_js__WEBPACK_IMPORTED_MODULE_130__ = __webpack_require__(9488);
|
|
291199
|
+
/* harmony import */ var _src_pro_hitbtc_js__WEBPACK_IMPORTED_MODULE_131__ = __webpack_require__(5189);
|
|
291200
|
+
/* harmony import */ var _src_pro_hollaex_js__WEBPACK_IMPORTED_MODULE_132__ = __webpack_require__(8559);
|
|
291201
|
+
/* harmony import */ var _src_pro_htx_js__WEBPACK_IMPORTED_MODULE_133__ = __webpack_require__(7474);
|
|
291202
|
+
/* harmony import */ var _src_pro_huobi_js__WEBPACK_IMPORTED_MODULE_134__ = __webpack_require__(8384);
|
|
291203
|
+
/* harmony import */ var _src_pro_huobijp_js__WEBPACK_IMPORTED_MODULE_135__ = __webpack_require__(9021);
|
|
291204
|
+
/* harmony import */ var _src_pro_idex_js__WEBPACK_IMPORTED_MODULE_136__ = __webpack_require__(3484);
|
|
291205
|
+
/* harmony import */ var _src_pro_independentreserve_js__WEBPACK_IMPORTED_MODULE_137__ = __webpack_require__(1311);
|
|
291206
|
+
/* harmony import */ var _src_pro_kraken_js__WEBPACK_IMPORTED_MODULE_138__ = __webpack_require__(736);
|
|
291207
|
+
/* harmony import */ var _src_pro_krakenfutures_js__WEBPACK_IMPORTED_MODULE_139__ = __webpack_require__(449);
|
|
291208
|
+
/* harmony import */ var _src_pro_kucoin_js__WEBPACK_IMPORTED_MODULE_140__ = __webpack_require__(2387);
|
|
291209
|
+
/* harmony import */ var _src_pro_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_141__ = __webpack_require__(7181);
|
|
291210
|
+
/* harmony import */ var _src_pro_luno_js__WEBPACK_IMPORTED_MODULE_142__ = __webpack_require__(627);
|
|
291211
|
+
/* harmony import */ var _src_pro_mexc_js__WEBPACK_IMPORTED_MODULE_143__ = __webpack_require__(6484);
|
|
291212
|
+
/* harmony import */ var _src_pro_ndax_js__WEBPACK_IMPORTED_MODULE_144__ = __webpack_require__(8080);
|
|
291213
|
+
/* harmony import */ var _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_145__ = __webpack_require__(7105);
|
|
291214
|
+
/* harmony import */ var _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_146__ = __webpack_require__(2214);
|
|
291215
|
+
/* harmony import */ var _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_147__ = __webpack_require__(4360);
|
|
291216
|
+
/* harmony import */ var _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_148__ = __webpack_require__(7924);
|
|
291217
|
+
/* harmony import */ var _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_149__ = __webpack_require__(3541);
|
|
291218
|
+
/* harmony import */ var _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__(9782);
|
|
291219
|
+
/* harmony import */ var _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__(7614);
|
|
291220
|
+
/* harmony import */ var _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__(4828);
|
|
291221
|
+
/* harmony import */ var _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_153__ = __webpack_require__(5630);
|
|
291222
|
+
/* harmony import */ var _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(3910);
|
|
288605
291223
|
/*
|
|
288606
291224
|
|
|
288607
291225
|
MIT License
|
|
@@ -288636,7 +291254,7 @@ SOFTWARE.
|
|
|
288636
291254
|
|
|
288637
291255
|
//-----------------------------------------------------------------------------
|
|
288638
291256
|
// this is updated by vss.js when building
|
|
288639
|
-
const version = '4.1.
|
|
291257
|
+
const version = '4.1.100';
|
|
288640
291258
|
_src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion = version;
|
|
288641
291259
|
//-----------------------------------------------------------------------------
|
|
288642
291260
|
|
|
@@ -288734,6 +291352,7 @@ _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion
|
|
|
288734
291352
|
|
|
288735
291353
|
|
|
288736
291354
|
|
|
291355
|
+
|
|
288737
291356
|
|
|
288738
291357
|
|
|
288739
291358
|
// pro exchanges
|
|
@@ -288822,133 +291441,134 @@ const exchanges = {
|
|
|
288822
291441
|
'bitrue': _src_bitrue_js__WEBPACK_IMPORTED_MODULE_27__/* ["default"] */ .Z,
|
|
288823
291442
|
'bitso': _src_bitso_js__WEBPACK_IMPORTED_MODULE_28__/* ["default"] */ .Z,
|
|
288824
291443
|
'bitstamp': _src_bitstamp_js__WEBPACK_IMPORTED_MODULE_29__/* ["default"] */ .Z,
|
|
288825
|
-
'
|
|
288826
|
-
'
|
|
288827
|
-
'
|
|
288828
|
-
'
|
|
288829
|
-
'
|
|
288830
|
-
'
|
|
288831
|
-
'
|
|
288832
|
-
'
|
|
288833
|
-
'
|
|
288834
|
-
'
|
|
288835
|
-
'
|
|
288836
|
-
'
|
|
288837
|
-
'
|
|
288838
|
-
'
|
|
288839
|
-
'
|
|
288840
|
-
'
|
|
288841
|
-
'
|
|
288842
|
-
'
|
|
288843
|
-
'
|
|
288844
|
-
'
|
|
288845
|
-
'
|
|
288846
|
-
'
|
|
288847
|
-
'
|
|
288848
|
-
'
|
|
288849
|
-
'
|
|
288850
|
-
'
|
|
288851
|
-
'
|
|
288852
|
-
'
|
|
288853
|
-
'
|
|
288854
|
-
'
|
|
288855
|
-
'
|
|
288856
|
-
'
|
|
288857
|
-
'
|
|
288858
|
-
'
|
|
288859
|
-
'
|
|
288860
|
-
'
|
|
288861
|
-
'
|
|
288862
|
-
'
|
|
288863
|
-
'
|
|
288864
|
-
'
|
|
288865
|
-
'
|
|
288866
|
-
'
|
|
288867
|
-
'
|
|
288868
|
-
'
|
|
288869
|
-
'
|
|
288870
|
-
'
|
|
288871
|
-
'
|
|
288872
|
-
'
|
|
288873
|
-
'
|
|
288874
|
-
'
|
|
288875
|
-
'
|
|
288876
|
-
'
|
|
288877
|
-
'
|
|
288878
|
-
'
|
|
288879
|
-
'
|
|
288880
|
-
'
|
|
288881
|
-
'
|
|
288882
|
-
'
|
|
288883
|
-
'
|
|
288884
|
-
'
|
|
288885
|
-
'
|
|
288886
|
-
'
|
|
288887
|
-
'
|
|
288888
|
-
'
|
|
288889
|
-
'
|
|
288890
|
-
'
|
|
288891
|
-
'
|
|
291444
|
+
'bitteam': _src_bitteam_js__WEBPACK_IMPORTED_MODULE_30__/* ["default"] */ .Z,
|
|
291445
|
+
'bitvavo': _src_bitvavo_js__WEBPACK_IMPORTED_MODULE_31__/* ["default"] */ .Z,
|
|
291446
|
+
'bl3p': _src_bl3p_js__WEBPACK_IMPORTED_MODULE_32__/* ["default"] */ .Z,
|
|
291447
|
+
'blockchaincom': _src_blockchaincom_js__WEBPACK_IMPORTED_MODULE_33__/* ["default"] */ .Z,
|
|
291448
|
+
'btcalpha': _src_btcalpha_js__WEBPACK_IMPORTED_MODULE_34__/* ["default"] */ .Z,
|
|
291449
|
+
'btcbox': _src_btcbox_js__WEBPACK_IMPORTED_MODULE_35__/* ["default"] */ .Z,
|
|
291450
|
+
'btcmarkets': _src_btcmarkets_js__WEBPACK_IMPORTED_MODULE_36__/* ["default"] */ .Z,
|
|
291451
|
+
'btcturk': _src_btcturk_js__WEBPACK_IMPORTED_MODULE_37__/* ["default"] */ .Z,
|
|
291452
|
+
'bybit': _src_bybit_js__WEBPACK_IMPORTED_MODULE_38__/* ["default"] */ .Z,
|
|
291453
|
+
'cex': _src_cex_js__WEBPACK_IMPORTED_MODULE_39__/* ["default"] */ .Z,
|
|
291454
|
+
'coinbase': _src_coinbase_js__WEBPACK_IMPORTED_MODULE_40__/* ["default"] */ .Z,
|
|
291455
|
+
'coinbasepro': _src_coinbasepro_js__WEBPACK_IMPORTED_MODULE_41__/* ["default"] */ .Z,
|
|
291456
|
+
'coincheck': _src_coincheck_js__WEBPACK_IMPORTED_MODULE_42__/* ["default"] */ .Z,
|
|
291457
|
+
'coinex': _src_coinex_js__WEBPACK_IMPORTED_MODULE_43__/* ["default"] */ .Z,
|
|
291458
|
+
'coinlist': _src_coinlist_js__WEBPACK_IMPORTED_MODULE_44__/* ["default"] */ .Z,
|
|
291459
|
+
'coinmate': _src_coinmate_js__WEBPACK_IMPORTED_MODULE_45__/* ["default"] */ .Z,
|
|
291460
|
+
'coinone': _src_coinone_js__WEBPACK_IMPORTED_MODULE_46__/* ["default"] */ .Z,
|
|
291461
|
+
'coinsph': _src_coinsph_js__WEBPACK_IMPORTED_MODULE_47__/* ["default"] */ .Z,
|
|
291462
|
+
'coinspot': _src_coinspot_js__WEBPACK_IMPORTED_MODULE_48__/* ["default"] */ .Z,
|
|
291463
|
+
'cryptocom': _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_49__/* ["default"] */ .Z,
|
|
291464
|
+
'currencycom': _src_currencycom_js__WEBPACK_IMPORTED_MODULE_50__/* ["default"] */ .Z,
|
|
291465
|
+
'delta': _src_delta_js__WEBPACK_IMPORTED_MODULE_51__/* ["default"] */ .Z,
|
|
291466
|
+
'deribit': _src_deribit_js__WEBPACK_IMPORTED_MODULE_52__/* ["default"] */ .Z,
|
|
291467
|
+
'digifinex': _src_digifinex_js__WEBPACK_IMPORTED_MODULE_53__/* ["default"] */ .Z,
|
|
291468
|
+
'exmo': _src_exmo_js__WEBPACK_IMPORTED_MODULE_54__/* ["default"] */ .Z,
|
|
291469
|
+
'fmfwio': _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_55__/* ["default"] */ .Z,
|
|
291470
|
+
'gate': _src_gate_js__WEBPACK_IMPORTED_MODULE_56__/* ["default"] */ .Z,
|
|
291471
|
+
'gateio': _src_gateio_js__WEBPACK_IMPORTED_MODULE_57__/* ["default"] */ .Z,
|
|
291472
|
+
'gemini': _src_gemini_js__WEBPACK_IMPORTED_MODULE_58__/* ["default"] */ .Z,
|
|
291473
|
+
'hitbtc': _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_59__/* ["default"] */ .Z,
|
|
291474
|
+
'hitbtc3': _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_60__/* ["default"] */ .Z,
|
|
291475
|
+
'hollaex': _src_hollaex_js__WEBPACK_IMPORTED_MODULE_61__/* ["default"] */ .Z,
|
|
291476
|
+
'htx': _src_htx_js__WEBPACK_IMPORTED_MODULE_62__/* ["default"] */ .Z,
|
|
291477
|
+
'huobi': _src_huobi_js__WEBPACK_IMPORTED_MODULE_63__/* ["default"] */ .Z,
|
|
291478
|
+
'huobijp': _src_huobijp_js__WEBPACK_IMPORTED_MODULE_64__/* ["default"] */ .Z,
|
|
291479
|
+
'idex': _src_idex_js__WEBPACK_IMPORTED_MODULE_65__/* ["default"] */ .Z,
|
|
291480
|
+
'independentreserve': _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_66__/* ["default"] */ .Z,
|
|
291481
|
+
'indodax': _src_indodax_js__WEBPACK_IMPORTED_MODULE_67__/* ["default"] */ .Z,
|
|
291482
|
+
'kraken': _src_kraken_js__WEBPACK_IMPORTED_MODULE_68__/* ["default"] */ .Z,
|
|
291483
|
+
'krakenfutures': _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_69__/* ["default"] */ .Z,
|
|
291484
|
+
'kucoin': _src_kucoin_js__WEBPACK_IMPORTED_MODULE_70__/* ["default"] */ .Z,
|
|
291485
|
+
'kucoinfutures': _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_71__/* ["default"] */ .Z,
|
|
291486
|
+
'kuna': _src_kuna_js__WEBPACK_IMPORTED_MODULE_72__/* ["default"] */ .Z,
|
|
291487
|
+
'latoken': _src_latoken_js__WEBPACK_IMPORTED_MODULE_73__/* ["default"] */ .Z,
|
|
291488
|
+
'lbank': _src_lbank_js__WEBPACK_IMPORTED_MODULE_74__/* ["default"] */ .Z,
|
|
291489
|
+
'luno': _src_luno_js__WEBPACK_IMPORTED_MODULE_75__/* ["default"] */ .Z,
|
|
291490
|
+
'lykke': _src_lykke_js__WEBPACK_IMPORTED_MODULE_76__/* ["default"] */ .Z,
|
|
291491
|
+
'mercado': _src_mercado_js__WEBPACK_IMPORTED_MODULE_77__/* ["default"] */ .Z,
|
|
291492
|
+
'mexc': _src_mexc_js__WEBPACK_IMPORTED_MODULE_78__/* ["default"] */ .Z,
|
|
291493
|
+
'ndax': _src_ndax_js__WEBPACK_IMPORTED_MODULE_79__/* ["default"] */ .Z,
|
|
291494
|
+
'novadax': _src_novadax_js__WEBPACK_IMPORTED_MODULE_80__/* ["default"] */ .Z,
|
|
291495
|
+
'oceanex': _src_oceanex_js__WEBPACK_IMPORTED_MODULE_81__/* ["default"] */ .Z,
|
|
291496
|
+
'okcoin': _src_okcoin_js__WEBPACK_IMPORTED_MODULE_82__/* ["default"] */ .Z,
|
|
291497
|
+
'okx': _src_okx_js__WEBPACK_IMPORTED_MODULE_83__/* ["default"] */ .Z,
|
|
291498
|
+
'p2b': _src_p2b_js__WEBPACK_IMPORTED_MODULE_84__/* ["default"] */ .Z,
|
|
291499
|
+
'paymium': _src_paymium_js__WEBPACK_IMPORTED_MODULE_85__/* ["default"] */ .Z,
|
|
291500
|
+
'phemex': _src_phemex_js__WEBPACK_IMPORTED_MODULE_86__/* ["default"] */ .Z,
|
|
291501
|
+
'poloniex': _src_poloniex_js__WEBPACK_IMPORTED_MODULE_87__/* ["default"] */ .Z,
|
|
291502
|
+
'poloniexfutures': _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_88__/* ["default"] */ .Z,
|
|
291503
|
+
'probit': _src_probit_js__WEBPACK_IMPORTED_MODULE_89__/* ["default"] */ .Z,
|
|
291504
|
+
'timex': _src_timex_js__WEBPACK_IMPORTED_MODULE_90__/* ["default"] */ .Z,
|
|
291505
|
+
'tokocrypto': _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_91__/* ["default"] */ .Z,
|
|
291506
|
+
'upbit': _src_upbit_js__WEBPACK_IMPORTED_MODULE_92__/* ["default"] */ .Z,
|
|
291507
|
+
'wavesexchange': _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_93__/* ["default"] */ .Z,
|
|
291508
|
+
'wazirx': _src_wazirx_js__WEBPACK_IMPORTED_MODULE_94__/* ["default"] */ .Z,
|
|
291509
|
+
'whitebit': _src_whitebit_js__WEBPACK_IMPORTED_MODULE_95__/* ["default"] */ .Z,
|
|
291510
|
+
'woo': _src_woo_js__WEBPACK_IMPORTED_MODULE_96__/* ["default"] */ .Z,
|
|
291511
|
+
'yobit': _src_yobit_js__WEBPACK_IMPORTED_MODULE_97__/* ["default"] */ .Z,
|
|
288892
291512
|
'zaif': _src_zaif_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z,
|
|
288893
|
-
'zonda':
|
|
291513
|
+
'zonda': _src_zonda_js__WEBPACK_IMPORTED_MODULE_98__/* ["default"] */ .Z,
|
|
288894
291514
|
};
|
|
288895
291515
|
const pro = {
|
|
288896
|
-
'alpaca':
|
|
288897
|
-
'ascendex':
|
|
288898
|
-
'bequant':
|
|
288899
|
-
'binance':
|
|
288900
|
-
'binancecoinm':
|
|
288901
|
-
'binanceus':
|
|
288902
|
-
'binanceusdm':
|
|
288903
|
-
'bingx':
|
|
288904
|
-
'bitcoincom':
|
|
288905
|
-
'bitfinex':
|
|
288906
|
-
'bitfinex2':
|
|
288907
|
-
'bitget':
|
|
288908
|
-
'bitmart':
|
|
288909
|
-
'bitmex':
|
|
288910
|
-
'bitopro':
|
|
288911
|
-
'bitpanda':
|
|
288912
|
-
'bitrue':
|
|
288913
|
-
'bitstamp':
|
|
288914
|
-
'bitvavo':
|
|
288915
|
-
'blockchaincom':
|
|
288916
|
-
'bybit':
|
|
288917
|
-
'cex':
|
|
288918
|
-
'coinbase':
|
|
288919
|
-
'coinbasepro':
|
|
288920
|
-
'coinex':
|
|
288921
|
-
'cryptocom':
|
|
288922
|
-
'currencycom':
|
|
288923
|
-
'deribit':
|
|
288924
|
-
'exmo':
|
|
288925
|
-
'gate':
|
|
288926
|
-
'gateio':
|
|
288927
|
-
'gemini':
|
|
288928
|
-
'hitbtc':
|
|
288929
|
-
'hollaex':
|
|
288930
|
-
'htx':
|
|
288931
|
-
'huobi':
|
|
288932
|
-
'huobijp':
|
|
288933
|
-
'idex':
|
|
288934
|
-
'independentreserve':
|
|
288935
|
-
'kraken':
|
|
288936
|
-
'krakenfutures':
|
|
288937
|
-
'kucoin':
|
|
288938
|
-
'kucoinfutures':
|
|
288939
|
-
'luno':
|
|
288940
|
-
'mexc':
|
|
288941
|
-
'ndax':
|
|
288942
|
-
'okcoin':
|
|
288943
|
-
'okx':
|
|
288944
|
-
'phemex':
|
|
288945
|
-
'poloniex':
|
|
288946
|
-
'poloniexfutures':
|
|
288947
|
-
'probit':
|
|
288948
|
-
'upbit':
|
|
288949
|
-
'wazirx':
|
|
288950
|
-
'whitebit':
|
|
288951
|
-
'woo':
|
|
291516
|
+
'alpaca': _src_pro_alpaca_js__WEBPACK_IMPORTED_MODULE_99__/* ["default"] */ .Z,
|
|
291517
|
+
'ascendex': _src_pro_ascendex_js__WEBPACK_IMPORTED_MODULE_100__/* ["default"] */ .Z,
|
|
291518
|
+
'bequant': _src_pro_bequant_js__WEBPACK_IMPORTED_MODULE_101__/* ["default"] */ .Z,
|
|
291519
|
+
'binance': _src_pro_binance_js__WEBPACK_IMPORTED_MODULE_102__/* ["default"] */ .Z,
|
|
291520
|
+
'binancecoinm': _src_pro_binancecoinm_js__WEBPACK_IMPORTED_MODULE_103__/* ["default"] */ .Z,
|
|
291521
|
+
'binanceus': _src_pro_binanceus_js__WEBPACK_IMPORTED_MODULE_104__/* ["default"] */ .Z,
|
|
291522
|
+
'binanceusdm': _src_pro_binanceusdm_js__WEBPACK_IMPORTED_MODULE_105__/* ["default"] */ .Z,
|
|
291523
|
+
'bingx': _src_pro_bingx_js__WEBPACK_IMPORTED_MODULE_106__/* ["default"] */ .Z,
|
|
291524
|
+
'bitcoincom': _src_pro_bitcoincom_js__WEBPACK_IMPORTED_MODULE_107__/* ["default"] */ .Z,
|
|
291525
|
+
'bitfinex': _src_pro_bitfinex_js__WEBPACK_IMPORTED_MODULE_108__/* ["default"] */ .Z,
|
|
291526
|
+
'bitfinex2': _src_pro_bitfinex2_js__WEBPACK_IMPORTED_MODULE_109__/* ["default"] */ .Z,
|
|
291527
|
+
'bitget': _src_pro_bitget_js__WEBPACK_IMPORTED_MODULE_110__/* ["default"] */ .Z,
|
|
291528
|
+
'bitmart': _src_pro_bitmart_js__WEBPACK_IMPORTED_MODULE_111__/* ["default"] */ .Z,
|
|
291529
|
+
'bitmex': _src_pro_bitmex_js__WEBPACK_IMPORTED_MODULE_112__/* ["default"] */ .Z,
|
|
291530
|
+
'bitopro': _src_pro_bitopro_js__WEBPACK_IMPORTED_MODULE_113__/* ["default"] */ .Z,
|
|
291531
|
+
'bitpanda': _src_pro_bitpanda_js__WEBPACK_IMPORTED_MODULE_114__/* ["default"] */ .Z,
|
|
291532
|
+
'bitrue': _src_pro_bitrue_js__WEBPACK_IMPORTED_MODULE_115__/* ["default"] */ .Z,
|
|
291533
|
+
'bitstamp': _src_pro_bitstamp_js__WEBPACK_IMPORTED_MODULE_116__/* ["default"] */ .Z,
|
|
291534
|
+
'bitvavo': _src_pro_bitvavo_js__WEBPACK_IMPORTED_MODULE_117__/* ["default"] */ .Z,
|
|
291535
|
+
'blockchaincom': _src_pro_blockchaincom_js__WEBPACK_IMPORTED_MODULE_118__/* ["default"] */ .Z,
|
|
291536
|
+
'bybit': _src_pro_bybit_js__WEBPACK_IMPORTED_MODULE_119__/* ["default"] */ .Z,
|
|
291537
|
+
'cex': _src_pro_cex_js__WEBPACK_IMPORTED_MODULE_120__/* ["default"] */ .Z,
|
|
291538
|
+
'coinbase': _src_pro_coinbase_js__WEBPACK_IMPORTED_MODULE_121__/* ["default"] */ .Z,
|
|
291539
|
+
'coinbasepro': _src_pro_coinbasepro_js__WEBPACK_IMPORTED_MODULE_122__/* ["default"] */ .Z,
|
|
291540
|
+
'coinex': _src_pro_coinex_js__WEBPACK_IMPORTED_MODULE_123__/* ["default"] */ .Z,
|
|
291541
|
+
'cryptocom': _src_pro_cryptocom_js__WEBPACK_IMPORTED_MODULE_124__/* ["default"] */ .Z,
|
|
291542
|
+
'currencycom': _src_pro_currencycom_js__WEBPACK_IMPORTED_MODULE_125__/* ["default"] */ .Z,
|
|
291543
|
+
'deribit': _src_pro_deribit_js__WEBPACK_IMPORTED_MODULE_126__/* ["default"] */ .Z,
|
|
291544
|
+
'exmo': _src_pro_exmo_js__WEBPACK_IMPORTED_MODULE_127__/* ["default"] */ .Z,
|
|
291545
|
+
'gate': _src_pro_gate_js__WEBPACK_IMPORTED_MODULE_128__/* ["default"] */ .Z,
|
|
291546
|
+
'gateio': _src_pro_gateio_js__WEBPACK_IMPORTED_MODULE_129__/* ["default"] */ .Z,
|
|
291547
|
+
'gemini': _src_pro_gemini_js__WEBPACK_IMPORTED_MODULE_130__/* ["default"] */ .Z,
|
|
291548
|
+
'hitbtc': _src_pro_hitbtc_js__WEBPACK_IMPORTED_MODULE_131__/* ["default"] */ .Z,
|
|
291549
|
+
'hollaex': _src_pro_hollaex_js__WEBPACK_IMPORTED_MODULE_132__/* ["default"] */ .Z,
|
|
291550
|
+
'htx': _src_pro_htx_js__WEBPACK_IMPORTED_MODULE_133__/* ["default"] */ .Z,
|
|
291551
|
+
'huobi': _src_pro_huobi_js__WEBPACK_IMPORTED_MODULE_134__/* ["default"] */ .Z,
|
|
291552
|
+
'huobijp': _src_pro_huobijp_js__WEBPACK_IMPORTED_MODULE_135__/* ["default"] */ .Z,
|
|
291553
|
+
'idex': _src_pro_idex_js__WEBPACK_IMPORTED_MODULE_136__/* ["default"] */ .Z,
|
|
291554
|
+
'independentreserve': _src_pro_independentreserve_js__WEBPACK_IMPORTED_MODULE_137__/* ["default"] */ .Z,
|
|
291555
|
+
'kraken': _src_pro_kraken_js__WEBPACK_IMPORTED_MODULE_138__/* ["default"] */ .Z,
|
|
291556
|
+
'krakenfutures': _src_pro_krakenfutures_js__WEBPACK_IMPORTED_MODULE_139__/* ["default"] */ .Z,
|
|
291557
|
+
'kucoin': _src_pro_kucoin_js__WEBPACK_IMPORTED_MODULE_140__/* ["default"] */ .Z,
|
|
291558
|
+
'kucoinfutures': _src_pro_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_141__/* ["default"] */ .Z,
|
|
291559
|
+
'luno': _src_pro_luno_js__WEBPACK_IMPORTED_MODULE_142__/* ["default"] */ .Z,
|
|
291560
|
+
'mexc': _src_pro_mexc_js__WEBPACK_IMPORTED_MODULE_143__/* ["default"] */ .Z,
|
|
291561
|
+
'ndax': _src_pro_ndax_js__WEBPACK_IMPORTED_MODULE_144__/* ["default"] */ .Z,
|
|
291562
|
+
'okcoin': _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_145__/* ["default"] */ .Z,
|
|
291563
|
+
'okx': _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_146__/* ["default"] */ .Z,
|
|
291564
|
+
'phemex': _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_147__/* ["default"] */ .Z,
|
|
291565
|
+
'poloniex': _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_148__/* ["default"] */ .Z,
|
|
291566
|
+
'poloniexfutures': _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_149__/* ["default"] */ .Z,
|
|
291567
|
+
'probit': _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_150__/* ["default"] */ .Z,
|
|
291568
|
+
'upbit': _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_151__/* ["default"] */ .Z,
|
|
291569
|
+
'wazirx': _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_152__/* ["default"] */ .Z,
|
|
291570
|
+
'whitebit': _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_153__/* ["default"] */ .Z,
|
|
291571
|
+
'woo': _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_154__/* ["default"] */ .Z,
|
|
288952
291572
|
};
|
|
288953
291573
|
for (const exchange in pro) {
|
|
288954
291574
|
// const ccxtExchange = exchanges[exchange]
|
|
@@ -288961,7 +291581,7 @@ for (const exchange in pro) {
|
|
|
288961
291581
|
pro.exchanges = Object.keys(pro);
|
|
288962
291582
|
pro['Exchange'] = _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e; // now the same for rest and ts
|
|
288963
291583
|
//-----------------------------------------------------------------------------
|
|
288964
|
-
const ccxt = Object.assign({ version, Exchange: _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e, Precise:
|
|
291584
|
+
const ccxt = Object.assign({ version, Exchange: _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e, Precise: _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_155__/* .Precise */ .O, 'exchanges': Object.keys(exchanges), 'pro': pro }, exchanges, _src_base_functions_js__WEBPACK_IMPORTED_MODULE_156__, _src_base_errors_js__WEBPACK_IMPORTED_MODULE_157__);
|
|
288965
291585
|
|
|
288966
291586
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ccxt);
|
|
288967
291587
|
//-----------------------------------------------------------------------------
|