ccxt 4.3.4 → 4.3.6
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/cjs/ccxt.js +1 -1
- package/dist/cjs/src/base/Exchange.js +299 -6
- package/dist/cjs/src/binance.js +24 -17
- package/dist/cjs/src/bingx.js +45 -0
- package/dist/cjs/src/bitmex.js +24 -0
- package/dist/cjs/src/bybit.js +86 -0
- package/dist/cjs/src/coinbase.js +5 -4
- package/dist/cjs/src/coinex.js +30 -32
- package/dist/cjs/src/cryptocom.js +32 -0
- package/dist/cjs/src/htx.js +28 -0
- package/dist/cjs/src/hyperliquid.js +40 -0
- package/dist/cjs/src/kraken.js +30 -0
- package/dist/cjs/src/krakenfutures.js +28 -0
- package/dist/cjs/src/kucoin.js +53 -3
- package/dist/cjs/src/kucoinfutures.js +2 -2
- package/dist/cjs/src/okx.js +113 -0
- package/dist/cjs/src/pro/binance.js +439 -75
- package/dist/cjs/src/pro/bitget.js +1 -1
- package/dist/cjs/src/pro/woo.js +0 -1
- package/dist/cjs/src/whitebit.js +174 -2
- package/dist/cjs/src/woo.js +29 -0
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/binance.d.ts +1 -0
- package/js/src/abstract/binancecoinm.d.ts +1 -0
- package/js/src/abstract/binanceus.d.ts +1 -0
- package/js/src/abstract/binanceusdm.d.ts +1 -0
- package/js/src/abstract/bingx.d.ts +1 -0
- package/js/src/abstract/whitebit.d.ts +21 -0
- package/js/src/abstract/woo.d.ts +1 -0
- package/js/src/base/Exchange.d.ts +52 -3
- package/js/src/base/Exchange.js +299 -6
- package/js/src/binance.d.ts +4 -0
- package/js/src/binance.js +24 -17
- package/js/src/bingx.d.ts +1 -0
- package/js/src/bingx.js +45 -0
- package/js/src/bitmex.d.ts +1 -0
- package/js/src/bitmex.js +24 -0
- package/js/src/bybit.d.ts +2 -1
- package/js/src/bybit.js +86 -0
- package/js/src/coinbase.js +5 -4
- package/js/src/coinex.js +30 -32
- package/js/src/cryptocom.d.ts +2 -1
- package/js/src/cryptocom.js +32 -0
- package/js/src/htx.d.ts +1 -0
- package/js/src/htx.js +28 -0
- package/js/src/hyperliquid.d.ts +1 -0
- package/js/src/hyperliquid.js +40 -0
- package/js/src/kraken.d.ts +1 -0
- package/js/src/kraken.js +30 -0
- package/js/src/krakenfutures.d.ts +1 -0
- package/js/src/krakenfutures.js +28 -0
- package/js/src/kucoin.d.ts +1 -0
- package/js/src/kucoin.js +53 -3
- package/js/src/kucoinfutures.js +2 -2
- package/js/src/okx.d.ts +3 -1
- package/js/src/okx.js +113 -0
- package/js/src/pro/binance.d.ts +9 -1
- package/js/src/pro/binance.js +439 -75
- package/js/src/pro/bitget.d.ts +1 -1
- package/js/src/pro/bitget.js +1 -1
- package/js/src/pro/cex.d.ts +1 -1
- package/js/src/pro/lbank.d.ts +1 -1
- package/js/src/pro/woo.js +0 -1
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
- package/js/src/whitebit.d.ts +3 -0
- package/js/src/whitebit.js +174 -2
- package/js/src/woo.d.ts +2 -1
- package/js/src/woo.js +29 -0
- package/package.json +1 -1
package/js/src/bitmex.d.ts
CHANGED
|
@@ -62,6 +62,7 @@ export default class bitmex extends Exchange {
|
|
|
62
62
|
cancelOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
|
|
63
63
|
cancelOrders(ids: any, symbol?: Str, params?: {}): Promise<Order[]>;
|
|
64
64
|
cancelAllOrders(symbol?: Str, params?: {}): Promise<Order[]>;
|
|
65
|
+
cancelAllOrdersAfter(timeout: Int, params?: {}): Promise<any>;
|
|
65
66
|
fetchLeverages(symbols?: string[], params?: {}): Promise<Leverages>;
|
|
66
67
|
parseLeverage(leverage: any, market?: any): Leverage;
|
|
67
68
|
fetchPositions(symbols?: Strings, params?: {}): Promise<import("./base/types.js").Position[]>;
|
package/js/src/bitmex.js
CHANGED
|
@@ -39,6 +39,7 @@ export default class bitmex extends Exchange {
|
|
|
39
39
|
'option': false,
|
|
40
40
|
'addMargin': undefined,
|
|
41
41
|
'cancelAllOrders': true,
|
|
42
|
+
'cancelAllOrdersAfter': true,
|
|
42
43
|
'cancelOrder': true,
|
|
43
44
|
'cancelOrders': true,
|
|
44
45
|
'closeAllPositions': false,
|
|
@@ -2119,6 +2120,29 @@ export default class bitmex extends Exchange {
|
|
|
2119
2120
|
//
|
|
2120
2121
|
return this.parseOrders(response, market);
|
|
2121
2122
|
}
|
|
2123
|
+
async cancelAllOrdersAfter(timeout, params = {}) {
|
|
2124
|
+
/**
|
|
2125
|
+
* @method
|
|
2126
|
+
* @name bitmex#cancelAllOrdersAfter
|
|
2127
|
+
* @description dead man's switch, cancel all orders after the given timeout
|
|
2128
|
+
* @see https://www.bitmex.com/api/explorer/#!/Order/Order_cancelAllAfter
|
|
2129
|
+
* @param {number} timeout time in milliseconds, 0 represents cancel the timer
|
|
2130
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2131
|
+
* @returns {object} the api result
|
|
2132
|
+
*/
|
|
2133
|
+
await this.loadMarkets();
|
|
2134
|
+
const request = {
|
|
2135
|
+
'timeout': (timeout > 0) ? this.parseToInt(timeout / 1000) : 0,
|
|
2136
|
+
};
|
|
2137
|
+
const response = await this.privatePostOrderCancelAllAfter(this.extend(request, params));
|
|
2138
|
+
//
|
|
2139
|
+
// {
|
|
2140
|
+
// now: '2024-04-09T09:01:56.560Z',
|
|
2141
|
+
// cancelTime: '2024-04-09T09:01:56.660Z'
|
|
2142
|
+
// }
|
|
2143
|
+
//
|
|
2144
|
+
return response;
|
|
2145
|
+
}
|
|
2122
2146
|
async fetchLeverages(symbols = undefined, params = {}) {
|
|
2123
2147
|
/**
|
|
2124
2148
|
* @method
|
package/js/src/bybit.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Exchange from './abstract/bybit.js';
|
|
2
|
-
import type { Int, OrderSide, OrderType, Trade, Order, OHLCV, FundingRateHistory, OpenInterest, OrderRequest, Balances, Str, Transaction, Ticker, OrderBook, Tickers, Greeks, Strings, Market, Currency, MarketInterface, TransferEntry, Liquidation, Leverage, Num, FundingHistory, Option, OptionChain, TradingFeeInterface, Currencies, TradingFees } from './base/types.js';
|
|
2
|
+
import type { Int, OrderSide, OrderType, Trade, Order, OHLCV, FundingRateHistory, OpenInterest, OrderRequest, Balances, Str, Transaction, Ticker, OrderBook, Tickers, Greeks, Strings, Market, Currency, MarketInterface, TransferEntry, Liquidation, Leverage, Num, FundingHistory, Option, OptionChain, TradingFeeInterface, Currencies, TradingFees, CancellationRequest } from './base/types.js';
|
|
3
3
|
/**
|
|
4
4
|
* @class bybit
|
|
5
5
|
* @augments Exchange
|
|
@@ -66,6 +66,7 @@ export default class bybit extends Exchange {
|
|
|
66
66
|
cancelUsdcOrder(id: any, symbol?: Str, params?: {}): Promise<Order>;
|
|
67
67
|
cancelOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
|
|
68
68
|
cancelOrders(ids: any, symbol?: Str, params?: {}): Promise<Order[]>;
|
|
69
|
+
cancelOrdersForSymbols(orders: CancellationRequest[], params?: {}): Promise<Order[]>;
|
|
69
70
|
cancelAllUsdcOrders(symbol?: Str, params?: {}): Promise<any>;
|
|
70
71
|
cancelAllOrders(symbol?: Str, params?: {}): Promise<any>;
|
|
71
72
|
fetchUsdcOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
package/js/src/bybit.js
CHANGED
|
@@ -38,6 +38,8 @@ export default class bybit extends Exchange {
|
|
|
38
38
|
'borrowCrossMargin': true,
|
|
39
39
|
'cancelAllOrders': true,
|
|
40
40
|
'cancelOrder': true,
|
|
41
|
+
'cancelOrders': true,
|
|
42
|
+
'cancelOrdersForSymbols': true,
|
|
41
43
|
'closeAllPositions': false,
|
|
42
44
|
'closePosition': false,
|
|
43
45
|
'createMarketBuyOrderWithCost': true,
|
|
@@ -4385,6 +4387,90 @@ export default class bybit extends Exchange {
|
|
|
4385
4387
|
const row = this.safeList(result, 'list', []);
|
|
4386
4388
|
return this.parseOrders(row, market);
|
|
4387
4389
|
}
|
|
4390
|
+
async cancelOrdersForSymbols(orders, params = {}) {
|
|
4391
|
+
/**
|
|
4392
|
+
* @method
|
|
4393
|
+
* @name bybit#cancelOrdersForSymbols
|
|
4394
|
+
* @description cancel multiple orders for multiple symbols
|
|
4395
|
+
* @see https://bybit-exchange.github.io/docs/v5/order/batch-cancel
|
|
4396
|
+
* @param {string[]} ids order ids
|
|
4397
|
+
* @param {string} symbol unified symbol of the market the order was made in
|
|
4398
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
4399
|
+
* @param {string[]} [params.clientOrderIds] client order ids
|
|
4400
|
+
* @returns {object} an list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
4401
|
+
*/
|
|
4402
|
+
await this.loadMarkets();
|
|
4403
|
+
const ordersRequests = [];
|
|
4404
|
+
let category = undefined;
|
|
4405
|
+
for (let i = 0; i < orders.length; i++) {
|
|
4406
|
+
const order = orders[i];
|
|
4407
|
+
const symbol = this.safeString(order, 'symbol');
|
|
4408
|
+
const market = this.market(symbol);
|
|
4409
|
+
let currentCategory = undefined;
|
|
4410
|
+
[currentCategory, params] = this.getBybitType('cancelOrders', market, params);
|
|
4411
|
+
if (currentCategory === 'inverse') {
|
|
4412
|
+
throw new NotSupported(this.id + ' cancelOrdersForSymbols does not allow inverse orders');
|
|
4413
|
+
}
|
|
4414
|
+
if ((category !== undefined) && (category !== currentCategory)) {
|
|
4415
|
+
throw new ExchangeError(this.id + ' cancelOrdersForSymbols requires all orders to be of the same category (linear, spot or option))');
|
|
4416
|
+
}
|
|
4417
|
+
category = currentCategory;
|
|
4418
|
+
const id = this.safeString(order, 'id');
|
|
4419
|
+
const clientOrderId = this.safeString(order, 'clientOrderId');
|
|
4420
|
+
let idKey = 'orderId';
|
|
4421
|
+
if (clientOrderId !== undefined) {
|
|
4422
|
+
idKey = 'orderLinkId';
|
|
4423
|
+
}
|
|
4424
|
+
const orderItem = {
|
|
4425
|
+
'symbol': market['id'],
|
|
4426
|
+
};
|
|
4427
|
+
orderItem[idKey] = (idKey === 'orderId') ? id : clientOrderId;
|
|
4428
|
+
ordersRequests.push(orderItem);
|
|
4429
|
+
}
|
|
4430
|
+
const request = {
|
|
4431
|
+
'category': category,
|
|
4432
|
+
'request': ordersRequests,
|
|
4433
|
+
};
|
|
4434
|
+
const response = await this.privatePostV5OrderCancelBatch(this.extend(request, params));
|
|
4435
|
+
//
|
|
4436
|
+
// {
|
|
4437
|
+
// "retCode": "0",
|
|
4438
|
+
// "retMsg": "OK",
|
|
4439
|
+
// "result": {
|
|
4440
|
+
// "list": [
|
|
4441
|
+
// {
|
|
4442
|
+
// "category": "spot",
|
|
4443
|
+
// "symbol": "BTCUSDT",
|
|
4444
|
+
// "orderId": "1636282505818800896",
|
|
4445
|
+
// "orderLinkId": "1636282505818800897"
|
|
4446
|
+
// },
|
|
4447
|
+
// {
|
|
4448
|
+
// "category": "spot",
|
|
4449
|
+
// "symbol": "BTCUSDT",
|
|
4450
|
+
// "orderId": "1636282505818800898",
|
|
4451
|
+
// "orderLinkId": "1636282505818800899"
|
|
4452
|
+
// }
|
|
4453
|
+
// ]
|
|
4454
|
+
// },
|
|
4455
|
+
// "retExtInfo": {
|
|
4456
|
+
// "list": [
|
|
4457
|
+
// {
|
|
4458
|
+
// "code": "0",
|
|
4459
|
+
// "msg": "OK"
|
|
4460
|
+
// },
|
|
4461
|
+
// {
|
|
4462
|
+
// "code": "0",
|
|
4463
|
+
// "msg": "OK"
|
|
4464
|
+
// }
|
|
4465
|
+
// ]
|
|
4466
|
+
// },
|
|
4467
|
+
// "time": "1709796158501"
|
|
4468
|
+
// }
|
|
4469
|
+
//
|
|
4470
|
+
const result = this.safeDict(response, 'result', {});
|
|
4471
|
+
const row = this.safeList(result, 'list', []);
|
|
4472
|
+
return this.parseOrders(row, undefined);
|
|
4473
|
+
}
|
|
4388
4474
|
async cancelAllUsdcOrders(symbol = undefined, params = {}) {
|
|
4389
4475
|
if (symbol === undefined) {
|
|
4390
4476
|
throw new ArgumentsRequired(this.id + ' cancelAllUsdcOrders() requires a symbol argument');
|
package/js/src/coinbase.js
CHANGED
|
@@ -3431,12 +3431,13 @@ export default class coinbase extends Exchange {
|
|
|
3431
3431
|
sinceString = Precise.stringSub(now, requestedDuration.toString());
|
|
3432
3432
|
}
|
|
3433
3433
|
request['start'] = sinceString;
|
|
3434
|
-
|
|
3435
|
-
|
|
3434
|
+
if (until !== undefined) {
|
|
3435
|
+
request['end'] = this.numberToString(this.parseToInt(until / 1000));
|
|
3436
|
+
}
|
|
3437
|
+
else {
|
|
3436
3438
|
// 300 candles max
|
|
3437
|
-
|
|
3439
|
+
request['end'] = Precise.stringAdd(sinceString, requestedDuration.toString());
|
|
3438
3440
|
}
|
|
3439
|
-
request['end'] = endString;
|
|
3440
3441
|
const response = await this.v3PrivateGetBrokerageProductsProductIdCandles(this.extend(request, params));
|
|
3441
3442
|
//
|
|
3442
3443
|
// {
|
package/js/src/coinex.js
CHANGED
|
@@ -1132,14 +1132,13 @@ export default class coinex extends Exchange {
|
|
|
1132
1132
|
//
|
|
1133
1133
|
// Spot and Swap fetchTrades (public)
|
|
1134
1134
|
//
|
|
1135
|
-
//
|
|
1136
|
-
//
|
|
1137
|
-
//
|
|
1138
|
-
//
|
|
1139
|
-
//
|
|
1140
|
-
//
|
|
1141
|
-
//
|
|
1142
|
-
// },
|
|
1135
|
+
// {
|
|
1136
|
+
// "amount": "0.00049432",
|
|
1137
|
+
// "created_at": 1713849825667,
|
|
1138
|
+
// "deal_id": 4137517302,
|
|
1139
|
+
// "price": "66251",
|
|
1140
|
+
// "side": "buy"
|
|
1141
|
+
// }
|
|
1143
1142
|
//
|
|
1144
1143
|
// Spot and Margin fetchMyTrades (private)
|
|
1145
1144
|
//
|
|
@@ -1193,9 +1192,9 @@ export default class coinex extends Exchange {
|
|
|
1193
1192
|
//
|
|
1194
1193
|
let timestamp = this.safeTimestamp2(trade, 'create_time', 'time');
|
|
1195
1194
|
if (timestamp === undefined) {
|
|
1196
|
-
timestamp = this.safeInteger(trade, '
|
|
1195
|
+
timestamp = this.safeInteger(trade, 'created_at');
|
|
1197
1196
|
}
|
|
1198
|
-
const tradeId = this.
|
|
1197
|
+
const tradeId = this.safeString2(trade, 'id', 'deal_id');
|
|
1199
1198
|
const orderId = this.safeString(trade, 'order_id');
|
|
1200
1199
|
const priceString = this.safeString(trade, 'price');
|
|
1201
1200
|
const amountString = this.safeString(trade, 'amount');
|
|
@@ -1232,11 +1231,11 @@ export default class coinex extends Exchange {
|
|
|
1232
1231
|
side = 'buy';
|
|
1233
1232
|
}
|
|
1234
1233
|
if (side === undefined) {
|
|
1235
|
-
side = this.
|
|
1234
|
+
side = this.safeString2(trade, 'type', 'side');
|
|
1236
1235
|
}
|
|
1237
1236
|
}
|
|
1238
1237
|
else {
|
|
1239
|
-
side = this.
|
|
1238
|
+
side = this.safeString2(trade, 'type', 'side');
|
|
1240
1239
|
}
|
|
1241
1240
|
return this.safeTrade({
|
|
1242
1241
|
'info': trade,
|
|
@@ -1258,9 +1257,9 @@ export default class coinex extends Exchange {
|
|
|
1258
1257
|
/**
|
|
1259
1258
|
* @method
|
|
1260
1259
|
* @name coinex#fetchTrades
|
|
1261
|
-
* @description get the list of most recent trades for a particular symbol
|
|
1262
|
-
* @see https://
|
|
1263
|
-
* @see https://
|
|
1260
|
+
* @description get the list of the most recent trades for a particular symbol
|
|
1261
|
+
* @see https://docs.coinex.com/api/v2/spot/market/http/list-market-deals
|
|
1262
|
+
* @see https://docs.coinex.com/api/v2/futures/market/http/list-market-deals
|
|
1264
1263
|
* @param {string} symbol unified symbol of the market to fetch trades for
|
|
1265
1264
|
* @param {int} [since] timestamp in ms of the earliest trade to fetch
|
|
1266
1265
|
* @param {int} [limit] the maximum amount of trades to fetch
|
|
@@ -1278,28 +1277,27 @@ export default class coinex extends Exchange {
|
|
|
1278
1277
|
}
|
|
1279
1278
|
let response = undefined;
|
|
1280
1279
|
if (market['swap']) {
|
|
1281
|
-
response = await this.
|
|
1280
|
+
response = await this.v2PublicGetFuturesDeals(this.extend(request, params));
|
|
1282
1281
|
}
|
|
1283
1282
|
else {
|
|
1284
|
-
response = await this.
|
|
1283
|
+
response = await this.v2PublicGetSpotDeals(this.extend(request, params));
|
|
1285
1284
|
}
|
|
1286
1285
|
//
|
|
1287
1286
|
// Spot and Swap
|
|
1288
1287
|
//
|
|
1289
|
-
//
|
|
1290
|
-
//
|
|
1291
|
-
//
|
|
1292
|
-
//
|
|
1293
|
-
//
|
|
1294
|
-
//
|
|
1295
|
-
//
|
|
1296
|
-
//
|
|
1297
|
-
//
|
|
1298
|
-
//
|
|
1299
|
-
//
|
|
1300
|
-
//
|
|
1301
|
-
//
|
|
1302
|
-
// }
|
|
1288
|
+
// {
|
|
1289
|
+
// "code": 0,
|
|
1290
|
+
// "data": [
|
|
1291
|
+
// {
|
|
1292
|
+
// "amount": "0.00049432",
|
|
1293
|
+
// "created_at": 1713849825667,
|
|
1294
|
+
// "deal_id": 4137517302,
|
|
1295
|
+
// "price": "66251",
|
|
1296
|
+
// "side": "buy"
|
|
1297
|
+
// },
|
|
1298
|
+
// ],
|
|
1299
|
+
// "message": "OK"
|
|
1300
|
+
// }
|
|
1303
1301
|
//
|
|
1304
1302
|
return this.parseTrades(response['data'], market, since, limit);
|
|
1305
1303
|
}
|
|
@@ -4487,7 +4485,7 @@ export default class coinex extends Exchange {
|
|
|
4487
4485
|
}
|
|
4488
4486
|
async fetchFundingRates(symbols = undefined, params = {}) {
|
|
4489
4487
|
/**
|
|
4490
|
-
*
|
|
4488
|
+
* @method
|
|
4491
4489
|
* @name coinex#fetchFundingRates
|
|
4492
4490
|
* @description fetch the current funding rates
|
|
4493
4491
|
* @see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http009_market_ticker_all
|
package/js/src/cryptocom.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Exchange from './abstract/cryptocom.js';
|
|
2
|
-
import type { Int, OrderSide, OrderType, Trade, OHLCV, Order, FundingRateHistory, Str, Ticker, OrderRequest, Balances, Transaction, OrderBook, Tickers, Strings, Currency, Market, Num, Account } from './base/types.js';
|
|
2
|
+
import type { Int, OrderSide, OrderType, Trade, OHLCV, Order, FundingRateHistory, Str, Ticker, OrderRequest, Balances, Transaction, OrderBook, Tickers, Strings, Currency, Market, Num, Account, CancellationRequest } from './base/types.js';
|
|
3
3
|
/**
|
|
4
4
|
* @class cryptocom
|
|
5
5
|
* @augments Exchange
|
|
@@ -23,6 +23,7 @@ export default class cryptocom extends Exchange {
|
|
|
23
23
|
cancelAllOrders(symbol?: Str, params?: {}): Promise<any>;
|
|
24
24
|
cancelOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
|
|
25
25
|
cancelOrders(ids: any, symbol?: Str, params?: {}): Promise<Order[]>;
|
|
26
|
+
cancelOrdersForSymbols(orders: CancellationRequest[], params?: {}): Promise<Order[]>;
|
|
26
27
|
fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
|
27
28
|
fetchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
|
|
28
29
|
parseAddress(addressString: any): any[];
|
package/js/src/cryptocom.js
CHANGED
|
@@ -35,6 +35,7 @@ export default class cryptocom extends Exchange {
|
|
|
35
35
|
'cancelAllOrders': true,
|
|
36
36
|
'cancelOrder': true,
|
|
37
37
|
'cancelOrders': true,
|
|
38
|
+
'cancelOrdersForSymbols': true,
|
|
38
39
|
'closeAllPositions': false,
|
|
39
40
|
'closePosition': true,
|
|
40
41
|
'createMarketBuyOrderWithCost': false,
|
|
@@ -1467,6 +1468,37 @@ export default class cryptocom extends Exchange {
|
|
|
1467
1468
|
const result = this.safeList(response, 'result', []);
|
|
1468
1469
|
return this.parseOrders(result, market, undefined, undefined, params);
|
|
1469
1470
|
}
|
|
1471
|
+
async cancelOrdersForSymbols(orders, params = {}) {
|
|
1472
|
+
/**
|
|
1473
|
+
* @method
|
|
1474
|
+
* @name cryptocom#cancelOrdersForSymbols
|
|
1475
|
+
* @description cancel multiple orders for multiple symbols
|
|
1476
|
+
* @see https://exchange-docs.crypto.com/exchange/v1/rest-ws/index.html#private-cancel-order-list-list
|
|
1477
|
+
* @param {CancellationRequest[]} orders each order should contain the parameters required by cancelOrder namely id and symbol
|
|
1478
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1479
|
+
* @returns {object} an list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
1480
|
+
*/
|
|
1481
|
+
await this.loadMarkets();
|
|
1482
|
+
const orderRequests = [];
|
|
1483
|
+
for (let i = 0; i < orders.length; i++) {
|
|
1484
|
+
const order = orders[i];
|
|
1485
|
+
const id = this.safeString(order, 'id');
|
|
1486
|
+
const symbol = this.safeString(order, 'symbol');
|
|
1487
|
+
const market = this.market(symbol);
|
|
1488
|
+
const orderItem = {
|
|
1489
|
+
'instrument_name': market['id'],
|
|
1490
|
+
'order_id': id.toString(),
|
|
1491
|
+
};
|
|
1492
|
+
orderRequests.push(orderItem);
|
|
1493
|
+
}
|
|
1494
|
+
const request = {
|
|
1495
|
+
'contingency_type': 'LIST',
|
|
1496
|
+
'order_list': orderRequests,
|
|
1497
|
+
};
|
|
1498
|
+
const response = await this.v1PrivatePostPrivateCancelOrderList(this.extend(request, params));
|
|
1499
|
+
const result = this.safeList(response, 'result', []);
|
|
1500
|
+
return this.parseOrders(result, undefined, undefined, undefined, params);
|
|
1501
|
+
}
|
|
1470
1502
|
async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
1471
1503
|
/**
|
|
1472
1504
|
* @method
|
package/js/src/htx.d.ts
CHANGED
|
@@ -92,6 +92,7 @@ export default class htx extends Exchange {
|
|
|
92
92
|
cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
|
|
93
93
|
cancelOrders(ids: any, symbol?: Str, params?: {}): Promise<any>;
|
|
94
94
|
cancelAllOrders(symbol?: Str, params?: {}): Promise<any>;
|
|
95
|
+
cancelAllOrdersAfter(timeout: Int, params?: {}): Promise<any>;
|
|
95
96
|
parseDepositAddress(depositAddress: any, currency?: Currency): {
|
|
96
97
|
currency: string;
|
|
97
98
|
address: string;
|
package/js/src/htx.js
CHANGED
|
@@ -38,6 +38,7 @@ export default class htx extends Exchange {
|
|
|
38
38
|
'borrowCrossMargin': true,
|
|
39
39
|
'borrowIsolatedMargin': true,
|
|
40
40
|
'cancelAllOrders': true,
|
|
41
|
+
'cancelAllOrdersAfter': true,
|
|
41
42
|
'cancelOrder': true,
|
|
42
43
|
'cancelOrders': true,
|
|
43
44
|
'createDepositAddress': undefined,
|
|
@@ -6166,6 +6167,33 @@ export default class htx extends Exchange {
|
|
|
6166
6167
|
//
|
|
6167
6168
|
return response;
|
|
6168
6169
|
}
|
|
6170
|
+
async cancelAllOrdersAfter(timeout, params = {}) {
|
|
6171
|
+
/**
|
|
6172
|
+
* @method
|
|
6173
|
+
* @name huobi#cancelAllOrdersAfter
|
|
6174
|
+
* @description dead man's switch, cancel all orders after the given timeout
|
|
6175
|
+
* @see https://huobiapi.github.io/docs/spot/v1/en/#dead-man-s-switch
|
|
6176
|
+
* @param {number} timeout time in milliseconds, 0 represents cancel the timer
|
|
6177
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
6178
|
+
* @returns {object} the api result
|
|
6179
|
+
*/
|
|
6180
|
+
await this.loadMarkets();
|
|
6181
|
+
const request = {
|
|
6182
|
+
'timeout': (timeout > 0) ? this.parseToInt(timeout / 1000) : 0,
|
|
6183
|
+
};
|
|
6184
|
+
const response = await this.v2PrivatePostAlgoOrdersCancelAllAfter(this.extend(request, params));
|
|
6185
|
+
//
|
|
6186
|
+
// {
|
|
6187
|
+
// "code": 200,
|
|
6188
|
+
// "message": "success",
|
|
6189
|
+
// "data": {
|
|
6190
|
+
// "currentTime": 1630491627230,
|
|
6191
|
+
// "triggerTime": 1630491637230
|
|
6192
|
+
// }
|
|
6193
|
+
// }
|
|
6194
|
+
//
|
|
6195
|
+
return response;
|
|
6196
|
+
}
|
|
6169
6197
|
parseDepositAddress(depositAddress, currency = undefined) {
|
|
6170
6198
|
//
|
|
6171
6199
|
// {
|
package/js/src/hyperliquid.d.ts
CHANGED
|
@@ -56,6 +56,7 @@ export default class hyperliquid extends Exchange {
|
|
|
56
56
|
cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
|
|
57
57
|
cancelOrders(ids: string[], symbol?: Str, params?: {}): Promise<any>;
|
|
58
58
|
cancelOrdersForSymbols(orders: CancellationRequest[], params?: {}): Promise<any>;
|
|
59
|
+
cancelAllOrdersAfter(timeout: Int, params?: {}): Promise<any>;
|
|
59
60
|
editOrder(id: string, symbol: string, type: string, side: string, amount?: Num, price?: Num, params?: {}): Promise<Order>;
|
|
60
61
|
fetchFundingRateHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingRateHistory[]>;
|
|
61
62
|
fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
package/js/src/hyperliquid.js
CHANGED
|
@@ -38,6 +38,7 @@ export default class hyperliquid extends Exchange {
|
|
|
38
38
|
'borrowCrossMargin': false,
|
|
39
39
|
'borrowIsolatedMargin': false,
|
|
40
40
|
'cancelAllOrders': false,
|
|
41
|
+
'cancelAllOrdersAfter': true,
|
|
41
42
|
'cancelOrder': true,
|
|
42
43
|
'cancelOrders': true,
|
|
43
44
|
'cancelOrdersForSymbols': true,
|
|
@@ -1364,6 +1365,45 @@ export default class hyperliquid extends Exchange {
|
|
|
1364
1365
|
//
|
|
1365
1366
|
return response;
|
|
1366
1367
|
}
|
|
1368
|
+
async cancelAllOrdersAfter(timeout, params = {}) {
|
|
1369
|
+
/**
|
|
1370
|
+
* @method
|
|
1371
|
+
* @name hyperliquid#cancelAllOrdersAfter
|
|
1372
|
+
* @description dead man's switch, cancel all orders after the given timeout
|
|
1373
|
+
* @param {number} timeout time in milliseconds, 0 represents cancel the timer
|
|
1374
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1375
|
+
* @param {string} [params.vaultAddress] the vault address
|
|
1376
|
+
* @returns {object} the api result
|
|
1377
|
+
*/
|
|
1378
|
+
this.checkRequiredCredentials();
|
|
1379
|
+
await this.loadMarkets();
|
|
1380
|
+
params = this.omit(params, ['clientOrderId', 'client_id']);
|
|
1381
|
+
const nonce = this.milliseconds();
|
|
1382
|
+
const request = {
|
|
1383
|
+
'nonce': nonce,
|
|
1384
|
+
// 'vaultAddress': vaultAddress,
|
|
1385
|
+
};
|
|
1386
|
+
const cancelAction = {
|
|
1387
|
+
'type': 'scheduleCancel',
|
|
1388
|
+
'time': nonce + timeout,
|
|
1389
|
+
};
|
|
1390
|
+
const vaultAddress = this.formatVaultAddress(this.safeString(params, 'vaultAddress'));
|
|
1391
|
+
const signature = this.signL1Action(cancelAction, nonce, vaultAddress);
|
|
1392
|
+
request['action'] = cancelAction;
|
|
1393
|
+
request['signature'] = signature;
|
|
1394
|
+
if (vaultAddress !== undefined) {
|
|
1395
|
+
params = this.omit(params, 'vaultAddress');
|
|
1396
|
+
request['vaultAddress'] = vaultAddress;
|
|
1397
|
+
}
|
|
1398
|
+
const response = await this.privatePostExchange(this.extend(request, params));
|
|
1399
|
+
//
|
|
1400
|
+
// {
|
|
1401
|
+
// "status":"err",
|
|
1402
|
+
// "response":"Cannot set scheduled cancel time until enough volume traded. Required: $1000000. Traded: $373.47205."
|
|
1403
|
+
// }
|
|
1404
|
+
//
|
|
1405
|
+
return response;
|
|
1406
|
+
}
|
|
1367
1407
|
async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
|
|
1368
1408
|
/**
|
|
1369
1409
|
* @method
|
package/js/src/kraken.d.ts
CHANGED
|
@@ -71,6 +71,7 @@ export default class kraken extends Exchange {
|
|
|
71
71
|
cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
|
|
72
72
|
cancelOrders(ids: any, symbol?: Str, params?: {}): Promise<any>;
|
|
73
73
|
cancelAllOrders(symbol?: Str, params?: {}): Promise<any>;
|
|
74
|
+
cancelAllOrdersAfter(timeout: Int, params?: {}): Promise<any>;
|
|
74
75
|
fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
|
75
76
|
fetchClosedOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
|
76
77
|
parseTransactionStatus(status: any): string;
|
package/js/src/kraken.js
CHANGED
|
@@ -39,6 +39,7 @@ export default class kraken extends Exchange {
|
|
|
39
39
|
'option': false,
|
|
40
40
|
'addMargin': false,
|
|
41
41
|
'cancelAllOrders': true,
|
|
42
|
+
'cancelAllOrdersAfter': true,
|
|
42
43
|
'cancelOrder': true,
|
|
43
44
|
'cancelOrders': true,
|
|
44
45
|
'createDepositAddress': true,
|
|
@@ -2139,6 +2140,35 @@ export default class kraken extends Exchange {
|
|
|
2139
2140
|
await this.loadMarkets();
|
|
2140
2141
|
return await this.privatePostCancelAll(params);
|
|
2141
2142
|
}
|
|
2143
|
+
async cancelAllOrdersAfter(timeout, params = {}) {
|
|
2144
|
+
/**
|
|
2145
|
+
* @method
|
|
2146
|
+
* @name kraken#cancelAllOrdersAfter
|
|
2147
|
+
* @description dead man's switch, cancel all orders after the given timeout
|
|
2148
|
+
* @see https://docs.kraken.com/rest/#tag/Spot-Trading/operation/cancelAllOrdersAfter
|
|
2149
|
+
* @param {number} timeout time in milliseconds, 0 represents cancel the timer
|
|
2150
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2151
|
+
* @returns {object} the api result
|
|
2152
|
+
*/
|
|
2153
|
+
if (timeout > 86400000) {
|
|
2154
|
+
throw new BadRequest(this.id + 'cancelAllOrdersAfter timeout should be less than 86400000 milliseconds');
|
|
2155
|
+
}
|
|
2156
|
+
await this.loadMarkets();
|
|
2157
|
+
const request = {
|
|
2158
|
+
'timeout': (timeout > 0) ? (this.parseToInt(timeout / 1000)) : 0,
|
|
2159
|
+
};
|
|
2160
|
+
const response = await this.privatePostCancelAllOrdersAfter(this.extend(request, params));
|
|
2161
|
+
//
|
|
2162
|
+
// {
|
|
2163
|
+
// "error": [ ],
|
|
2164
|
+
// "result": {
|
|
2165
|
+
// "currentTime": "2023-03-24T17:41:56Z",
|
|
2166
|
+
// "triggerTime": "2023-03-24T17:42:56Z"
|
|
2167
|
+
// }
|
|
2168
|
+
// }
|
|
2169
|
+
//
|
|
2170
|
+
return response;
|
|
2171
|
+
}
|
|
2142
2172
|
async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
2143
2173
|
/**
|
|
2144
2174
|
* @method
|
|
@@ -21,6 +21,7 @@ export default class krakenfutures extends Exchange {
|
|
|
21
21
|
cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
|
|
22
22
|
cancelOrders(ids: string[], symbol?: Str, params?: {}): Promise<Order[]>;
|
|
23
23
|
cancelAllOrders(symbol?: Str, params?: {}): Promise<any>;
|
|
24
|
+
cancelAllOrdersAfter(timeout: Int, params?: {}): Promise<any>;
|
|
24
25
|
fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
|
25
26
|
fetchClosedOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
|
26
27
|
fetchCanceledOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
package/js/src/krakenfutures.js
CHANGED
|
@@ -34,6 +34,7 @@ export default class krakenfutures extends Exchange {
|
|
|
34
34
|
'future': true,
|
|
35
35
|
'option': false,
|
|
36
36
|
'cancelAllOrders': true,
|
|
37
|
+
'cancelAllOrdersAfter': true,
|
|
37
38
|
'cancelOrder': true,
|
|
38
39
|
'cancelOrders': true,
|
|
39
40
|
'createMarketOrder': false,
|
|
@@ -1272,6 +1273,33 @@ export default class krakenfutures extends Exchange {
|
|
|
1272
1273
|
const response = await this.privatePostCancelallorders(this.extend(request, params));
|
|
1273
1274
|
return response;
|
|
1274
1275
|
}
|
|
1276
|
+
async cancelAllOrdersAfter(timeout, params = {}) {
|
|
1277
|
+
/**
|
|
1278
|
+
* @method
|
|
1279
|
+
* @name krakenfutures#cancelAllOrdersAfter
|
|
1280
|
+
* @description dead man's switch, cancel all orders after the given timeout
|
|
1281
|
+
* @see https://docs.futures.kraken.com/#http-api-trading-v3-api-order-management-dead-man-39-s-switch
|
|
1282
|
+
* @param {number} timeout time in milliseconds, 0 represents cancel the timer
|
|
1283
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1284
|
+
* @returns {object} the api result
|
|
1285
|
+
*/
|
|
1286
|
+
await this.loadMarkets();
|
|
1287
|
+
const request = {
|
|
1288
|
+
'timeout': (timeout > 0) ? (this.parseToInt(timeout / 1000)) : 0,
|
|
1289
|
+
};
|
|
1290
|
+
const response = await this.privatePostCancelallordersafter(this.extend(request, params));
|
|
1291
|
+
//
|
|
1292
|
+
// {
|
|
1293
|
+
// "result": "success",
|
|
1294
|
+
// "serverTime": "2018-06-19T16:51:23.839Z",
|
|
1295
|
+
// "status": {
|
|
1296
|
+
// "currentTime": "2018-06-19T16:51:23.839Z",
|
|
1297
|
+
// "triggerTime": "0"
|
|
1298
|
+
// }
|
|
1299
|
+
// }
|
|
1300
|
+
//
|
|
1301
|
+
return response;
|
|
1302
|
+
}
|
|
1275
1303
|
async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
1276
1304
|
/**
|
|
1277
1305
|
* @method
|
package/js/src/kucoin.d.ts
CHANGED
|
@@ -87,6 +87,7 @@ export default class kucoin extends Exchange {
|
|
|
87
87
|
parseTrade(trade: any, market?: Market): Trade;
|
|
88
88
|
fetchTradingFee(symbol: string, params?: {}): Promise<TradingFeeInterface>;
|
|
89
89
|
withdraw(code: string, amount: number, address: any, tag?: any, params?: {}): Promise<Transaction>;
|
|
90
|
+
loadCurrencyPrecision(currency: any, networkCode?: Str): Promise<void>;
|
|
90
91
|
parseTransactionStatus(status: any): string;
|
|
91
92
|
parseTransaction(transaction: any, currency?: Currency): Transaction;
|
|
92
93
|
fetchDeposits(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<Transaction[]>;
|