ccxt 4.2.12 → 4.2.13
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 +3 -3
- package/dist/ccxt.browser.js +718 -240
- package/dist/ccxt.browser.min.js +3 -3
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/js/ccxt.js +1 -1
- package/dist/cjs/js/src/bigone.js +89 -22
- package/dist/cjs/js/src/binance.js +34 -27
- package/dist/cjs/js/src/bingx.js +106 -36
- package/dist/cjs/js/src/bitget.js +13 -6
- package/dist/cjs/js/src/bitmart.js +3 -3
- package/dist/cjs/js/src/bybit.js +1 -1
- package/dist/cjs/js/src/coinbase.js +176 -26
- package/dist/cjs/js/src/coinlist.js +1 -1
- package/dist/cjs/js/src/coinone.js +1 -1
- package/dist/cjs/js/src/deribit.js +1 -1
- package/dist/cjs/js/src/gate.js +74 -56
- package/dist/cjs/js/src/gemini.js +1 -1
- package/dist/cjs/js/src/htx.js +26 -1
- package/dist/cjs/js/src/independentreserve.js +7 -5
- package/dist/cjs/js/src/kraken.js +3 -7
- package/dist/cjs/js/src/lbank.js +59 -33
- package/dist/cjs/js/src/oceanex.js +1 -1
- package/dist/cjs/js/src/okx.js +2 -1
- package/dist/cjs/js/src/phemex.js +9 -2
- package/dist/cjs/js/src/pro/kraken.js +1 -1
- package/dist/cjs/js/src/pro/okx.js +52 -2
- package/dist/cjs/js/src/probit.js +4 -2
- package/dist/cjs/js/src/wavesexchange.js +1 -1
- package/dist/cjs/js/src/woo.js +52 -2
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/bingx.d.ts +2 -0
- package/js/src/abstract/okx.d.ts +1 -0
- package/js/src/bigone.d.ts +2 -0
- package/js/src/bigone.js +89 -22
- package/js/src/binance.js +34 -27
- package/js/src/bingx.js +106 -36
- package/js/src/bitget.js +13 -6
- package/js/src/bitmart.js +3 -3
- package/js/src/bybit.js +1 -1
- package/js/src/coinbase.d.ts +26 -3
- package/js/src/coinbase.js +176 -26
- package/js/src/coinlist.js +1 -1
- package/js/src/coinone.js +1 -1
- package/js/src/deribit.js +1 -1
- package/js/src/gate.js +74 -56
- package/js/src/gemini.js +1 -1
- package/js/src/htx.d.ts +1 -0
- package/js/src/htx.js +26 -1
- package/js/src/independentreserve.js +7 -5
- package/js/src/kraken.js +3 -7
- package/js/src/lbank.js +59 -33
- package/js/src/oceanex.js +1 -1
- package/js/src/okx.js +2 -1
- package/js/src/phemex.js +9 -2
- package/js/src/pro/kraken.js +1 -1
- package/js/src/pro/okx.d.ts +1 -0
- package/js/src/pro/okx.js +52 -2
- package/js/src/probit.js +4 -2
- package/js/src/wavesexchange.js +1 -1
- package/js/src/woo.d.ts +2 -0
- package/js/src/woo.js +52 -2
- package/package.json +1 -1
package/js/src/binance.js
CHANGED
|
@@ -47,7 +47,6 @@ export default class binance extends Exchange {
|
|
|
47
47
|
'createMarketBuyOrderWithCost': true,
|
|
48
48
|
'createMarketOrderWithCost': true,
|
|
49
49
|
'createMarketSellOrderWithCost': true,
|
|
50
|
-
'createTrailingPercentOrder': true,
|
|
51
50
|
'createOrder': true,
|
|
52
51
|
'createOrders': true,
|
|
53
52
|
'createPostOnlyOrder': true,
|
|
@@ -55,6 +54,7 @@ export default class binance extends Exchange {
|
|
|
55
54
|
'createStopLimitOrder': true,
|
|
56
55
|
'createStopMarketOrder': false,
|
|
57
56
|
'createStopOrder': true,
|
|
57
|
+
'createTrailingPercentOrder': true,
|
|
58
58
|
'editOrder': true,
|
|
59
59
|
'fetchAccounts': undefined,
|
|
60
60
|
'fetchBalance': true,
|
|
@@ -6108,12 +6108,13 @@ export default class binance extends Exchange {
|
|
|
6108
6108
|
* @name binance#transfer
|
|
6109
6109
|
* @description transfer currency internally between wallets on the same account
|
|
6110
6110
|
* @see https://binance-docs.github.io/apidocs/spot/en/#user-universal-transfer-user_data
|
|
6111
|
-
* @see https://binance-docs.github.io/apidocs/spot/en/#isolated-margin-account-transfer-margin
|
|
6112
6111
|
* @param {string} code unified currency code
|
|
6113
6112
|
* @param {float} amount amount to transfer
|
|
6114
6113
|
* @param {string} fromAccount account to transfer from
|
|
6115
6114
|
* @param {string} toAccount account to transfer to
|
|
6116
6115
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
6116
|
+
* @param {string} [params.type] exchange specific transfer type
|
|
6117
|
+
* @param {string} [params.symbol] the unified symbol, required for isolated margin transfers
|
|
6117
6118
|
* @returns {object} a [transfer structure]{@link https://docs.ccxt.com/#/?id=transfer-structure}
|
|
6118
6119
|
*/
|
|
6119
6120
|
await this.loadMarkets();
|
|
@@ -6124,76 +6125,82 @@ export default class binance extends Exchange {
|
|
|
6124
6125
|
};
|
|
6125
6126
|
request['type'] = this.safeString(params, 'type');
|
|
6126
6127
|
params = this.omit(params, 'type');
|
|
6127
|
-
let response = undefined;
|
|
6128
6128
|
if (request['type'] === undefined) {
|
|
6129
6129
|
const symbol = this.safeString(params, 'symbol');
|
|
6130
|
+
let market = undefined;
|
|
6130
6131
|
if (symbol !== undefined) {
|
|
6132
|
+
market = this.market(symbol);
|
|
6131
6133
|
params = this.omit(params, 'symbol');
|
|
6132
6134
|
}
|
|
6133
6135
|
let fromId = this.convertTypeToAccount(fromAccount).toUpperCase();
|
|
6134
6136
|
let toId = this.convertTypeToAccount(toAccount).toUpperCase();
|
|
6137
|
+
let isolatedSymbol = undefined;
|
|
6138
|
+
if (market !== undefined) {
|
|
6139
|
+
isolatedSymbol = market['id'];
|
|
6140
|
+
}
|
|
6135
6141
|
if (fromId === 'ISOLATED') {
|
|
6136
6142
|
if (symbol === undefined) {
|
|
6137
6143
|
throw new ArgumentsRequired(this.id + ' transfer () requires params["symbol"] when fromAccount is ' + fromAccount);
|
|
6138
6144
|
}
|
|
6139
|
-
else {
|
|
6140
|
-
fromId = this.marketId(symbol);
|
|
6141
|
-
}
|
|
6142
6145
|
}
|
|
6143
6146
|
if (toId === 'ISOLATED') {
|
|
6144
6147
|
if (symbol === undefined) {
|
|
6145
6148
|
throw new ArgumentsRequired(this.id + ' transfer () requires params["symbol"] when toAccount is ' + toAccount);
|
|
6146
6149
|
}
|
|
6147
|
-
else {
|
|
6148
|
-
toId = this.marketId(symbol);
|
|
6149
|
-
}
|
|
6150
6150
|
}
|
|
6151
6151
|
const accountsById = this.safeValue(this.options, 'accountsById', {});
|
|
6152
6152
|
const fromIsolated = !(fromId in accountsById);
|
|
6153
6153
|
const toIsolated = !(toId in accountsById);
|
|
6154
|
+
if (fromIsolated && (market === undefined)) {
|
|
6155
|
+
isolatedSymbol = fromId; // allow user provide symbol as the from/to account
|
|
6156
|
+
}
|
|
6157
|
+
if (toIsolated && (market === undefined)) {
|
|
6158
|
+
isolatedSymbol = toId;
|
|
6159
|
+
}
|
|
6154
6160
|
if (fromIsolated || toIsolated) { // Isolated margin transfer
|
|
6155
6161
|
const fromFuture = fromId === 'UMFUTURE' || fromId === 'CMFUTURE';
|
|
6156
6162
|
const toFuture = toId === 'UMFUTURE' || toId === 'CMFUTURE';
|
|
6157
6163
|
const fromSpot = fromId === 'MAIN';
|
|
6158
6164
|
const toSpot = toId === 'MAIN';
|
|
6159
6165
|
const funding = fromId === 'FUNDING' || toId === 'FUNDING';
|
|
6160
|
-
const mining = fromId === 'MINING' || toId === 'MINING';
|
|
6161
6166
|
const option = fromId === 'OPTION' || toId === 'OPTION';
|
|
6162
|
-
const prohibitedWithIsolated = fromFuture || toFuture ||
|
|
6167
|
+
const prohibitedWithIsolated = fromFuture || toFuture || funding || option;
|
|
6163
6168
|
if ((fromIsolated || toIsolated) && prohibitedWithIsolated) {
|
|
6164
6169
|
throw new BadRequest(this.id + ' transfer () does not allow transfers between ' + fromAccount + ' and ' + toAccount);
|
|
6165
6170
|
}
|
|
6166
6171
|
else if (toSpot && fromIsolated) {
|
|
6167
|
-
|
|
6168
|
-
request['
|
|
6169
|
-
request['symbol'] = fromId;
|
|
6170
|
-
response = await this.sapiPostMarginIsolatedTransfer(this.extend(request, params));
|
|
6172
|
+
fromId = 'ISOLATED_MARGIN';
|
|
6173
|
+
request['fromSymbol'] = isolatedSymbol;
|
|
6171
6174
|
}
|
|
6172
6175
|
else if (fromSpot && toIsolated) {
|
|
6173
|
-
|
|
6174
|
-
request['
|
|
6175
|
-
request['symbol'] = toId;
|
|
6176
|
-
response = await this.sapiPostMarginIsolatedTransfer(this.extend(request, params));
|
|
6176
|
+
toId = 'ISOLATED_MARGIN';
|
|
6177
|
+
request['toSymbol'] = isolatedSymbol;
|
|
6177
6178
|
}
|
|
6178
6179
|
else {
|
|
6179
|
-
if (fromIsolated) {
|
|
6180
|
+
if (fromIsolated && toIsolated) {
|
|
6180
6181
|
request['fromSymbol'] = fromId;
|
|
6181
|
-
fromId = 'ISOLATEDMARGIN';
|
|
6182
|
-
}
|
|
6183
|
-
if (toIsolated) {
|
|
6184
6182
|
request['toSymbol'] = toId;
|
|
6183
|
+
fromId = 'ISOLATEDMARGIN';
|
|
6185
6184
|
toId = 'ISOLATEDMARGIN';
|
|
6186
6185
|
}
|
|
6187
|
-
|
|
6186
|
+
else {
|
|
6187
|
+
if (fromIsolated) {
|
|
6188
|
+
request['fromSymbol'] = isolatedSymbol;
|
|
6189
|
+
fromId = 'ISOLATEDMARGIN';
|
|
6190
|
+
}
|
|
6191
|
+
if (toIsolated) {
|
|
6192
|
+
request['toSymbol'] = isolatedSymbol;
|
|
6193
|
+
toId = 'ISOLATEDMARGIN';
|
|
6194
|
+
}
|
|
6195
|
+
}
|
|
6188
6196
|
}
|
|
6197
|
+
request['type'] = fromId + '_' + toId;
|
|
6189
6198
|
}
|
|
6190
6199
|
else {
|
|
6191
6200
|
request['type'] = fromId + '_' + toId;
|
|
6192
6201
|
}
|
|
6193
6202
|
}
|
|
6194
|
-
|
|
6195
|
-
response = await this.sapiPostAssetTransfer(this.extend(request, params));
|
|
6196
|
-
}
|
|
6203
|
+
const response = await this.sapiPostAssetTransfer(this.extend(request, params));
|
|
6197
6204
|
//
|
|
6198
6205
|
// {
|
|
6199
6206
|
// "tranId":13526853623
|
package/js/src/bingx.js
CHANGED
|
@@ -122,6 +122,7 @@ export default class bingx extends Exchange {
|
|
|
122
122
|
'trade/query': 3,
|
|
123
123
|
'trade/openOrders': 3,
|
|
124
124
|
'trade/historyOrders': 3,
|
|
125
|
+
'trade/myTrades': 3,
|
|
125
126
|
'user/commissionRate': 3,
|
|
126
127
|
'account/balance': 3,
|
|
127
128
|
},
|
|
@@ -181,6 +182,7 @@ export default class bingx extends Exchange {
|
|
|
181
182
|
'user/positions': 3,
|
|
182
183
|
'user/income': 3,
|
|
183
184
|
'trade/openOrders': 3,
|
|
185
|
+
'trade/openOrder': 3,
|
|
184
186
|
'trade/order': 3,
|
|
185
187
|
'trade/marginType': 3,
|
|
186
188
|
'trade/leverage': 3,
|
|
@@ -848,6 +850,22 @@ export default class bingx extends Exchange {
|
|
|
848
850
|
// "buyerMaker": false
|
|
849
851
|
// }
|
|
850
852
|
//
|
|
853
|
+
// spot
|
|
854
|
+
// fetchMyTrades
|
|
855
|
+
// {
|
|
856
|
+
// "symbol": "LTC-USDT",
|
|
857
|
+
// "id": 36237072,
|
|
858
|
+
// "orderId": 1674069326895775744,
|
|
859
|
+
// "price": "85.891",
|
|
860
|
+
// "qty": "0.0582",
|
|
861
|
+
// "quoteQty": "4.9988562000000005",
|
|
862
|
+
// "commission": -0.00005820000000000001,
|
|
863
|
+
// "commissionAsset": "LTC",
|
|
864
|
+
// "time": 1687964205000,
|
|
865
|
+
// "isBuyer": true,
|
|
866
|
+
// "isMaker": false
|
|
867
|
+
// }
|
|
868
|
+
//
|
|
851
869
|
// swap
|
|
852
870
|
// fetchTrades
|
|
853
871
|
//
|
|
@@ -910,7 +928,7 @@ export default class bingx extends Exchange {
|
|
|
910
928
|
}
|
|
911
929
|
const cost = this.safeString(trade, 'quoteQty');
|
|
912
930
|
const type = (cost === undefined) ? 'spot' : 'swap';
|
|
913
|
-
const currencyId = this.
|
|
931
|
+
const currencyId = this.safeStringN(trade, ['currency', 'N', 'commissionAsset']);
|
|
914
932
|
const currencyCode = this.safeCurrencyCode(currencyId);
|
|
915
933
|
const m = this.safeValue(trade, 'm');
|
|
916
934
|
const marketId = this.safeString(trade, 's');
|
|
@@ -926,6 +944,14 @@ export default class bingx extends Exchange {
|
|
|
926
944
|
takeOrMaker = 'taker';
|
|
927
945
|
}
|
|
928
946
|
}
|
|
947
|
+
const isBuyer = this.safeValue(trade, 'isBuyer');
|
|
948
|
+
if (isBuyer !== undefined) {
|
|
949
|
+
side = isBuyer ? 'buy' : 'sell';
|
|
950
|
+
}
|
|
951
|
+
const isMaker = this.safeValue(trade, 'isMaker');
|
|
952
|
+
if (isMaker !== undefined) {
|
|
953
|
+
takeOrMaker = isMaker ? 'maker' : 'taker';
|
|
954
|
+
}
|
|
929
955
|
return this.safeTrade({
|
|
930
956
|
'id': this.safeStringN(trade, ['id', 't']),
|
|
931
957
|
'info': trade,
|
|
@@ -3260,57 +3286,101 @@ export default class bingx extends Exchange {
|
|
|
3260
3286
|
* @method
|
|
3261
3287
|
* @name bingx#fetchMyTrades
|
|
3262
3288
|
* @description fetch all trades made by the user
|
|
3289
|
+
* @see https://bingx-api.github.io/docs/#/en-us/spot/trade-api.html#Query%20Order%20History
|
|
3263
3290
|
* @see https://bingx-api.github.io/docs/#/swapV2/trade-api.html#Query%20historical%20transaction%20orders
|
|
3264
3291
|
* @param {string} [symbol] unified market symbol
|
|
3265
3292
|
* @param {int} [since] the earliest time in ms to fetch trades for
|
|
3266
3293
|
* @param {int} [limit] the maximum number of trades structures to retrieve
|
|
3267
3294
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3295
|
+
* @param {int} [params.until] timestamp in ms for the ending date filter, default is undefined
|
|
3268
3296
|
* @param {string} params.trandingUnit COIN (directly represent assets such as BTC and ETH) or CONT (represents the number of contract sheets)
|
|
3269
3297
|
* @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
|
|
3270
3298
|
*/
|
|
3271
3299
|
if (symbol === undefined) {
|
|
3272
3300
|
throw new ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol argument');
|
|
3273
3301
|
}
|
|
3274
|
-
if (since === undefined) {
|
|
3275
|
-
throw new ArgumentsRequired(this.id + ' fetchMyTrades() requires a since argument');
|
|
3276
|
-
}
|
|
3277
|
-
const tradingUnit = this.safeStringUpper(params, 'tradingUnit', 'CONT');
|
|
3278
3302
|
await this.loadMarkets();
|
|
3279
3303
|
const market = this.market(symbol);
|
|
3280
|
-
|
|
3281
|
-
|
|
3282
|
-
}
|
|
3304
|
+
const now = this.milliseconds();
|
|
3305
|
+
let response = undefined;
|
|
3283
3306
|
const request = {
|
|
3284
3307
|
'symbol': market['id'],
|
|
3285
|
-
'tradingUnit': tradingUnit,
|
|
3286
|
-
'startTs': since,
|
|
3287
|
-
'endTs': this.nonce(),
|
|
3288
3308
|
};
|
|
3289
|
-
|
|
3290
|
-
|
|
3291
|
-
|
|
3292
|
-
|
|
3293
|
-
|
|
3294
|
-
|
|
3295
|
-
|
|
3296
|
-
|
|
3297
|
-
|
|
3298
|
-
|
|
3299
|
-
|
|
3300
|
-
|
|
3301
|
-
|
|
3302
|
-
|
|
3303
|
-
|
|
3304
|
-
|
|
3305
|
-
|
|
3306
|
-
|
|
3307
|
-
|
|
3308
|
-
|
|
3309
|
-
|
|
3310
|
-
|
|
3311
|
-
|
|
3312
|
-
|
|
3313
|
-
|
|
3309
|
+
if (since !== undefined) {
|
|
3310
|
+
const startTimeReq = market['spot'] ? 'startTime' : 'startTs';
|
|
3311
|
+
request[startTimeReq] = since;
|
|
3312
|
+
}
|
|
3313
|
+
else if (market['swap']) {
|
|
3314
|
+
request['startTs'] = now - 7776000000; // 90 days
|
|
3315
|
+
}
|
|
3316
|
+
const until = this.safeInteger(params, 'until');
|
|
3317
|
+
params = this.omit(params, 'until');
|
|
3318
|
+
if (until !== undefined) {
|
|
3319
|
+
const endTimeReq = market['spot'] ? 'endTime' : 'endTs';
|
|
3320
|
+
request[endTimeReq] = until;
|
|
3321
|
+
}
|
|
3322
|
+
else if (market['swap']) {
|
|
3323
|
+
request['endTs'] = now;
|
|
3324
|
+
}
|
|
3325
|
+
let fills = undefined;
|
|
3326
|
+
if (market['spot']) {
|
|
3327
|
+
response = await this.spotV1PrivateGetTradeMyTrades(this.extend(request, params));
|
|
3328
|
+
const data = this.safeValue(response, 'data', []);
|
|
3329
|
+
fills = this.safeValue(data, 'fills', []);
|
|
3330
|
+
//
|
|
3331
|
+
// {
|
|
3332
|
+
// "code": 0,
|
|
3333
|
+
// "msg": "",
|
|
3334
|
+
// "debugMsg": "",
|
|
3335
|
+
// "data": {
|
|
3336
|
+
// "fills": [
|
|
3337
|
+
// {
|
|
3338
|
+
// "symbol": "LTC-USDT",
|
|
3339
|
+
// "id": 36237072,
|
|
3340
|
+
// "orderId": 1674069326895775744,
|
|
3341
|
+
// "price": "85.891",
|
|
3342
|
+
// "qty": "0.0582",
|
|
3343
|
+
// "quoteQty": "4.9988562000000005",
|
|
3344
|
+
// "commission": -0.00005820000000000001,
|
|
3345
|
+
// "commissionAsset": "LTC",
|
|
3346
|
+
// "time": 1687964205000,
|
|
3347
|
+
// "isBuyer": true,
|
|
3348
|
+
// "isMaker": false
|
|
3349
|
+
// }
|
|
3350
|
+
// ]
|
|
3351
|
+
// }
|
|
3352
|
+
// }
|
|
3353
|
+
//
|
|
3354
|
+
}
|
|
3355
|
+
else {
|
|
3356
|
+
const tradingUnit = this.safeStringUpper(params, 'tradingUnit', 'CONT');
|
|
3357
|
+
params = this.omit(params, 'tradingUnit');
|
|
3358
|
+
request['tradingUnit'] = tradingUnit;
|
|
3359
|
+
response = await this.swapV2PrivateGetTradeAllFillOrders(this.extend(request, params));
|
|
3360
|
+
const data = this.safeValue(response, 'data', []);
|
|
3361
|
+
fills = this.safeValue(data, 'fill_orders', []);
|
|
3362
|
+
//
|
|
3363
|
+
// {
|
|
3364
|
+
// "code": "0",
|
|
3365
|
+
// "msg": '',
|
|
3366
|
+
// "data": { fill_orders: [
|
|
3367
|
+
// {
|
|
3368
|
+
// "volume": "0.1",
|
|
3369
|
+
// "price": "106.75",
|
|
3370
|
+
// "amount": "10.6750",
|
|
3371
|
+
// "commission": "-0.0053",
|
|
3372
|
+
// "currency": "USDT",
|
|
3373
|
+
// "orderId": "1676213270274379776",
|
|
3374
|
+
// "liquidatedPrice": "0.00",
|
|
3375
|
+
// "liquidatedMarginRatio": "0.00",
|
|
3376
|
+
// "filledTime": "2023-07-04T20:56:01.000+0800"
|
|
3377
|
+
// }
|
|
3378
|
+
// ]
|
|
3379
|
+
// }
|
|
3380
|
+
// }
|
|
3381
|
+
//
|
|
3382
|
+
}
|
|
3383
|
+
return this.parseTrades(fills, market, since, limit, params);
|
|
3314
3384
|
}
|
|
3315
3385
|
parseDepositWithdrawFee(fee, currency = undefined) {
|
|
3316
3386
|
//
|
package/js/src/bitget.js
CHANGED
|
@@ -43,10 +43,10 @@ export default class bitget extends Exchange {
|
|
|
43
43
|
'createMarketBuyOrderWithCost': true,
|
|
44
44
|
'createMarketOrderWithCost': false,
|
|
45
45
|
'createMarketSellOrderWithCost': false,
|
|
46
|
-
'createTrailingPercentOrder': true,
|
|
47
46
|
'createOrder': true,
|
|
48
47
|
'createOrders': true,
|
|
49
48
|
'createReduceOnlyOrder': false,
|
|
49
|
+
'createTrailingPercentOrder': true,
|
|
50
50
|
'editOrder': true,
|
|
51
51
|
'fetchAccounts': false,
|
|
52
52
|
'fetchBalance': true,
|
|
@@ -2960,7 +2960,12 @@ export default class bitget extends Exchange {
|
|
|
2960
2960
|
'symbol': market['id'],
|
|
2961
2961
|
};
|
|
2962
2962
|
if (limit !== undefined) {
|
|
2963
|
-
|
|
2963
|
+
if (market['contract']) {
|
|
2964
|
+
request['limit'] = Math.min(limit, 1000);
|
|
2965
|
+
}
|
|
2966
|
+
else {
|
|
2967
|
+
request['limit'] = limit;
|
|
2968
|
+
}
|
|
2964
2969
|
}
|
|
2965
2970
|
const options = this.safeValue(this.options, 'fetchTrades', {});
|
|
2966
2971
|
let response = undefined;
|
|
@@ -3272,11 +3277,12 @@ export default class bitget extends Exchange {
|
|
|
3272
3277
|
const marketType = market['spot'] ? 'spot' : 'swap';
|
|
3273
3278
|
const timeframes = this.options['timeframes'][marketType];
|
|
3274
3279
|
const selectedTimeframe = this.safeString(timeframes, timeframe, timeframe);
|
|
3275
|
-
|
|
3280
|
+
const request = {
|
|
3276
3281
|
'symbol': market['id'],
|
|
3277
3282
|
'granularity': selectedTimeframe,
|
|
3278
3283
|
};
|
|
3279
|
-
|
|
3284
|
+
const until = this.safeInteger2(params, 'until', 'till');
|
|
3285
|
+
params = this.omit(params, ['until', 'till']);
|
|
3280
3286
|
if (limit !== undefined) {
|
|
3281
3287
|
request['limit'] = limit;
|
|
3282
3288
|
}
|
|
@@ -3289,6 +3295,9 @@ export default class bitget extends Exchange {
|
|
|
3289
3295
|
if (since !== undefined) {
|
|
3290
3296
|
request['startTime'] = since;
|
|
3291
3297
|
}
|
|
3298
|
+
if (until !== undefined) {
|
|
3299
|
+
request['endTime'] = until;
|
|
3300
|
+
}
|
|
3292
3301
|
}
|
|
3293
3302
|
let response = undefined;
|
|
3294
3303
|
if (market['spot']) {
|
|
@@ -3296,8 +3305,6 @@ export default class bitget extends Exchange {
|
|
|
3296
3305
|
response = await this.publicSpotGetV2SpotMarketCandles(this.extend(request, params));
|
|
3297
3306
|
}
|
|
3298
3307
|
else if (method === 'publicSpotGetV2SpotMarketHistoryCandles') {
|
|
3299
|
-
const until = this.safeInteger2(params, 'until', 'till');
|
|
3300
|
-
params = this.omit(params, ['until', 'till']);
|
|
3301
3308
|
if (since !== undefined) {
|
|
3302
3309
|
if (limit === undefined) {
|
|
3303
3310
|
limit = 100; // exchange default
|
package/js/src/bitmart.js
CHANGED
|
@@ -42,12 +42,12 @@ export default class bitmart extends Exchange {
|
|
|
42
42
|
'createMarketBuyOrderWithCost': true,
|
|
43
43
|
'createMarketOrderWithCost': false,
|
|
44
44
|
'createMarketSellOrderWithCost': false,
|
|
45
|
-
'createTrailingPercentOrder': true,
|
|
46
45
|
'createOrder': true,
|
|
47
46
|
'createPostOnlyOrder': true,
|
|
48
47
|
'createStopLimitOrder': false,
|
|
49
48
|
'createStopMarketOrder': false,
|
|
50
49
|
'createStopOrder': false,
|
|
50
|
+
'createTrailingPercentOrder': true,
|
|
51
51
|
'fetchBalance': true,
|
|
52
52
|
'fetchBorrowInterest': true,
|
|
53
53
|
'fetchBorrowRateHistories': false,
|
|
@@ -266,8 +266,8 @@ export default class bitmart extends Exchange {
|
|
|
266
266
|
'trading': {
|
|
267
267
|
'tierBased': true,
|
|
268
268
|
'percentage': true,
|
|
269
|
-
'taker': this.parseNumber('0.
|
|
270
|
-
'maker': this.parseNumber('0.
|
|
269
|
+
'taker': this.parseNumber('0.0040'),
|
|
270
|
+
'maker': this.parseNumber('0.0035'),
|
|
271
271
|
'tiers': {
|
|
272
272
|
'taker': [
|
|
273
273
|
[this.parseNumber('0'), this.parseNumber('0.0020')],
|
package/js/src/bybit.js
CHANGED
|
@@ -42,7 +42,6 @@ export default class bybit extends Exchange {
|
|
|
42
42
|
'closePosition': false,
|
|
43
43
|
'createMarketBuyOrderWithCost': true,
|
|
44
44
|
'createMarketSellOrderWithCost': false,
|
|
45
|
-
'createTrailingAmountOrder': true,
|
|
46
45
|
'createOrder': true,
|
|
47
46
|
'createOrders': true,
|
|
48
47
|
'createPostOnlyOrder': true,
|
|
@@ -50,6 +49,7 @@ export default class bybit extends Exchange {
|
|
|
50
49
|
'createStopLimitOrder': true,
|
|
51
50
|
'createStopMarketOrder': true,
|
|
52
51
|
'createStopOrder': true,
|
|
52
|
+
'createTrailingAmountOrder': true,
|
|
53
53
|
'editOrder': true,
|
|
54
54
|
'fetchBalance': true,
|
|
55
55
|
'fetchBorrowInterest': false,
|
package/js/src/coinbase.d.ts
CHANGED
|
@@ -33,10 +33,10 @@ export default class coinbase extends Exchange {
|
|
|
33
33
|
id: string;
|
|
34
34
|
txid: string;
|
|
35
35
|
timestamp: number;
|
|
36
|
-
datetime:
|
|
36
|
+
datetime: any;
|
|
37
37
|
network: any;
|
|
38
|
-
address:
|
|
39
|
-
addressTo:
|
|
38
|
+
address: string;
|
|
39
|
+
addressTo: string;
|
|
40
40
|
addressFrom: any;
|
|
41
41
|
tag: any;
|
|
42
42
|
tagTo: any;
|
|
@@ -114,6 +114,29 @@ export default class coinbase extends Exchange {
|
|
|
114
114
|
fetchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
|
|
115
115
|
fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
|
|
116
116
|
fetchBidsAsks(symbols?: Strings, params?: {}): Promise<import("./base/types.js").Dictionary<Ticker>>;
|
|
117
|
+
withdraw(code: string, amount: any, address: any, tag?: any, params?: {}): Promise<{
|
|
118
|
+
info: any;
|
|
119
|
+
id: string;
|
|
120
|
+
txid: string;
|
|
121
|
+
timestamp: number;
|
|
122
|
+
datetime: any;
|
|
123
|
+
network: any;
|
|
124
|
+
address: string;
|
|
125
|
+
addressTo: string;
|
|
126
|
+
addressFrom: any;
|
|
127
|
+
tag: any;
|
|
128
|
+
tagTo: any;
|
|
129
|
+
tagFrom: any;
|
|
130
|
+
type: string;
|
|
131
|
+
amount: number;
|
|
132
|
+
currency: string;
|
|
133
|
+
status: string;
|
|
134
|
+
updated: number;
|
|
135
|
+
fee: {
|
|
136
|
+
cost: number;
|
|
137
|
+
currency: string;
|
|
138
|
+
};
|
|
139
|
+
}>;
|
|
117
140
|
sign(path: any, api?: any[], method?: string, params?: {}, headers?: any, body?: any): {
|
|
118
141
|
url: string;
|
|
119
142
|
method: string;
|