ccxt 4.3.5 → 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 +3 -0
- package/dist/cjs/src/binance.js +2 -0
- 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/kucoinfutures.js +2 -2
- package/dist/cjs/src/okx.js +113 -0
- package/dist/cjs/src/pro/bitget.js +1 -1
- package/dist/cjs/src/whitebit.js +42 -0
- 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/woo.d.ts +1 -0
- package/js/src/base/Exchange.d.ts +1 -0
- package/js/src/base/Exchange.js +3 -0
- package/js/src/binance.js +2 -0
- 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/kucoinfutures.js +2 -2
- package/js/src/okx.d.ts +3 -1
- package/js/src/okx.js +113 -0
- package/js/src/pro/bitget.d.ts +1 -1
- package/js/src/pro/bitget.js +1 -1
- package/js/src/whitebit.d.ts +1 -0
- package/js/src/whitebit.js +42 -0
- package/js/src/woo.d.ts +2 -1
- package/js/src/woo.js +29 -0
- package/package.json +1 -1
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/kucoinfutures.js
CHANGED
|
@@ -2198,8 +2198,8 @@ export default class kucoinfutures extends kucoin {
|
|
|
2198
2198
|
// symbol (String) [optional] Symbol of the contract
|
|
2199
2199
|
// side (String) [optional] buy or sell
|
|
2200
2200
|
// type (String) [optional] limit, market, limit_stop or market_stop
|
|
2201
|
-
// startAt (long) [optional] Start time (
|
|
2202
|
-
// endAt (long) [optional] End time (
|
|
2201
|
+
// startAt (long) [optional] Start time (millisecond)
|
|
2202
|
+
// endAt (long) [optional] End time (millisecond)
|
|
2203
2203
|
};
|
|
2204
2204
|
let market = undefined;
|
|
2205
2205
|
if (symbol !== undefined) {
|
package/js/src/okx.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Exchange from './abstract/okx.js';
|
|
2
|
-
import type { TransferEntry, Int, OrderSide, OrderType, Trade, OHLCV, Order, FundingRateHistory, OrderRequest, FundingHistory, Str, Transaction, Ticker, OrderBook, Balances, Tickers, Market, Greeks, Strings, MarketInterface, Currency, Leverage, Num, Account, OptionChain, Option, MarginModification, TradingFeeInterface, Currencies, Conversion } from './base/types.js';
|
|
2
|
+
import type { TransferEntry, Int, OrderSide, OrderType, Trade, OHLCV, Order, FundingRateHistory, OrderRequest, FundingHistory, Str, Transaction, Ticker, OrderBook, Balances, Tickers, Market, Greeks, Strings, MarketInterface, Currency, Leverage, Num, Account, OptionChain, Option, MarginModification, TradingFeeInterface, Currencies, Conversion, CancellationRequest } from './base/types.js';
|
|
3
3
|
/**
|
|
4
4
|
* @class okx
|
|
5
5
|
* @augments Exchange
|
|
@@ -49,6 +49,8 @@ export default class okx extends Exchange {
|
|
|
49
49
|
cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
|
|
50
50
|
parseIds(ids: any): any;
|
|
51
51
|
cancelOrders(ids: any, symbol?: Str, params?: {}): Promise<Order[]>;
|
|
52
|
+
cancelOrdersForSymbols(orders: CancellationRequest[], params?: {}): Promise<Order[]>;
|
|
53
|
+
cancelAllOrdersAfter(timeout: Int, params?: {}): Promise<any>;
|
|
52
54
|
parseOrderStatus(status: any): string;
|
|
53
55
|
parseOrder(order: any, market?: Market): Order;
|
|
54
56
|
fetchOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
|
package/js/src/okx.js
CHANGED
|
@@ -34,8 +34,10 @@ export default class okx extends Exchange {
|
|
|
34
34
|
'option': true,
|
|
35
35
|
'addMargin': true,
|
|
36
36
|
'cancelAllOrders': false,
|
|
37
|
+
'cancelAllOrdersAfter': true,
|
|
37
38
|
'cancelOrder': true,
|
|
38
39
|
'cancelOrders': true,
|
|
40
|
+
'cancelOrdersForSymbols': true,
|
|
39
41
|
'closeAllPositions': false,
|
|
40
42
|
'closePosition': true,
|
|
41
43
|
'createConvertTrade': true,
|
|
@@ -3285,6 +3287,117 @@ export default class okx extends Exchange {
|
|
|
3285
3287
|
const ordersData = this.safeList(response, 'data', []);
|
|
3286
3288
|
return this.parseOrders(ordersData, market, undefined, undefined, params);
|
|
3287
3289
|
}
|
|
3290
|
+
async cancelOrdersForSymbols(orders, params = {}) {
|
|
3291
|
+
/**
|
|
3292
|
+
* @method
|
|
3293
|
+
* @name okx#cancelOrdersForSymbols
|
|
3294
|
+
* @description cancel multiple orders for multiple symbols
|
|
3295
|
+
* @see https://www.okx.com/docs-v5/en/#order-book-trading-trade-post-cancel-multiple-orders
|
|
3296
|
+
* @see https://www.okx.com/docs-v5/en/#order-book-trading-algo-trading-post-cancel-algo-order
|
|
3297
|
+
* @param {CancellationRequest[]} orders each order should contain the parameters required by cancelOrder namely id and symbol
|
|
3298
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3299
|
+
* @param {boolean} [params.trigger] whether the order is a stop/trigger order
|
|
3300
|
+
* @param {boolean} [params.trailing] set to true if you want to cancel trailing orders
|
|
3301
|
+
* @returns {object} an list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
3302
|
+
*/
|
|
3303
|
+
await this.loadMarkets();
|
|
3304
|
+
const request = [];
|
|
3305
|
+
const options = this.safeDict(this.options, 'cancelOrders', {});
|
|
3306
|
+
const defaultMethod = this.safeString(options, 'method', 'privatePostTradeCancelBatchOrders');
|
|
3307
|
+
let method = this.safeString(params, 'method', defaultMethod);
|
|
3308
|
+
const stop = this.safeBool2(params, 'stop', 'trigger');
|
|
3309
|
+
const trailing = this.safeBool(params, 'trailing', false);
|
|
3310
|
+
const isStopOrTrailing = stop || trailing;
|
|
3311
|
+
if (isStopOrTrailing) {
|
|
3312
|
+
method = 'privatePostTradeCancelAlgos';
|
|
3313
|
+
}
|
|
3314
|
+
for (let i = 0; i < orders.length; i++) {
|
|
3315
|
+
const order = orders[i];
|
|
3316
|
+
const id = this.safeString(order, 'id');
|
|
3317
|
+
const clientOrderId = this.safeString2(order, 'clOrdId', 'clientOrderId');
|
|
3318
|
+
const symbol = this.safeString(order, 'symbol');
|
|
3319
|
+
const market = this.market(symbol);
|
|
3320
|
+
let idKey = 'ordId';
|
|
3321
|
+
if (isStopOrTrailing) {
|
|
3322
|
+
idKey = 'algoId';
|
|
3323
|
+
}
|
|
3324
|
+
else if (clientOrderId !== undefined) {
|
|
3325
|
+
idKey = 'clOrdId';
|
|
3326
|
+
}
|
|
3327
|
+
const requestItem = {
|
|
3328
|
+
'instId': market['id'],
|
|
3329
|
+
};
|
|
3330
|
+
requestItem[idKey] = (clientOrderId !== undefined) ? clientOrderId : id;
|
|
3331
|
+
request.push(requestItem);
|
|
3332
|
+
}
|
|
3333
|
+
let response = undefined;
|
|
3334
|
+
if (method === 'privatePostTradeCancelAlgos') {
|
|
3335
|
+
response = await this.privatePostTradeCancelAlgos(request); // * dont extend with params, otherwise ARRAY will be turned into OBJECT
|
|
3336
|
+
}
|
|
3337
|
+
else {
|
|
3338
|
+
response = await this.privatePostTradeCancelBatchOrders(request); // * dont extend with params, otherwise ARRAY will be turned into OBJECT
|
|
3339
|
+
}
|
|
3340
|
+
//
|
|
3341
|
+
// {
|
|
3342
|
+
// "code": "0",
|
|
3343
|
+
// "data": [
|
|
3344
|
+
// {
|
|
3345
|
+
// "clOrdId": "e123456789ec4dBC1123456ba123b45e",
|
|
3346
|
+
// "ordId": "405071912345641543",
|
|
3347
|
+
// "sCode": "0",
|
|
3348
|
+
// "sMsg": ""
|
|
3349
|
+
// },
|
|
3350
|
+
// ...
|
|
3351
|
+
// ],
|
|
3352
|
+
// "msg": ""
|
|
3353
|
+
// }
|
|
3354
|
+
//
|
|
3355
|
+
// Algo order
|
|
3356
|
+
//
|
|
3357
|
+
// {
|
|
3358
|
+
// "code": "0",
|
|
3359
|
+
// "data": [
|
|
3360
|
+
// {
|
|
3361
|
+
// "algoId": "431375349042380800",
|
|
3362
|
+
// "sCode": "0",
|
|
3363
|
+
// "sMsg": ""
|
|
3364
|
+
// }
|
|
3365
|
+
// ],
|
|
3366
|
+
// "msg": ""
|
|
3367
|
+
// }
|
|
3368
|
+
//
|
|
3369
|
+
const ordersData = this.safeList(response, 'data', []);
|
|
3370
|
+
return this.parseOrders(ordersData, undefined, undefined, undefined, params);
|
|
3371
|
+
}
|
|
3372
|
+
async cancelAllOrdersAfter(timeout, params = {}) {
|
|
3373
|
+
/**
|
|
3374
|
+
* @method
|
|
3375
|
+
* @name okx#cancelAllOrdersAfter
|
|
3376
|
+
* @description dead man's switch, cancel all orders after the given timeout
|
|
3377
|
+
* @see https://www.okx.com/docs-v5/en/#order-book-trading-trade-post-cancel-all-after
|
|
3378
|
+
* @param {number} timeout time in milliseconds, 0 represents cancel the timer
|
|
3379
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3380
|
+
* @returns {object} the api result
|
|
3381
|
+
*/
|
|
3382
|
+
await this.loadMarkets();
|
|
3383
|
+
const request = {
|
|
3384
|
+
'timeOut': (timeout > 0) ? this.parseToInt(timeout / 1000) : 0,
|
|
3385
|
+
};
|
|
3386
|
+
const response = await this.privatePostTradeCancelAllAfter(this.extend(request, params));
|
|
3387
|
+
//
|
|
3388
|
+
// {
|
|
3389
|
+
// "code":"0",
|
|
3390
|
+
// "msg":"",
|
|
3391
|
+
// "data":[
|
|
3392
|
+
// {
|
|
3393
|
+
// "triggerTime":"1587971460",
|
|
3394
|
+
// "ts":"1587971400"
|
|
3395
|
+
// }
|
|
3396
|
+
// ]
|
|
3397
|
+
// }
|
|
3398
|
+
//
|
|
3399
|
+
return response;
|
|
3400
|
+
}
|
|
3288
3401
|
parseOrderStatus(status) {
|
|
3289
3402
|
const statuses = {
|
|
3290
3403
|
'canceled': 'canceled',
|
package/js/src/pro/bitget.d.ts
CHANGED
|
@@ -29,7 +29,7 @@ export default class bitget extends bitgetRest {
|
|
|
29
29
|
handlePositions(client: Client, message: any): void;
|
|
30
30
|
parseWsPosition(position: any, market?: any): Position;
|
|
31
31
|
watchOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
|
32
|
-
handleOrder(client: Client, message: any
|
|
32
|
+
handleOrder(client: Client, message: any): void;
|
|
33
33
|
parseWsOrder(order: any, market?: any): Order;
|
|
34
34
|
parseWsOrderStatus(status: any): string;
|
|
35
35
|
watchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
|
package/js/src/pro/bitget.js
CHANGED
|
@@ -1007,7 +1007,7 @@ export default class bitget extends bitgetRest {
|
|
|
1007
1007
|
}
|
|
1008
1008
|
return this.filterBySymbolSinceLimit(orders, symbol, since, limit, true);
|
|
1009
1009
|
}
|
|
1010
|
-
handleOrder(client, message
|
|
1010
|
+
handleOrder(client, message) {
|
|
1011
1011
|
//
|
|
1012
1012
|
// spot
|
|
1013
1013
|
//
|
package/js/src/whitebit.d.ts
CHANGED
|
@@ -38,6 +38,7 @@ export default class whitebit extends Exchange {
|
|
|
38
38
|
editOrder(id: string, symbol: string, type: OrderType, side: OrderSide, amount?: Num, price?: Num, params?: {}): Promise<Order>;
|
|
39
39
|
cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
|
|
40
40
|
cancelAllOrders(symbol?: Str, params?: {}): Promise<any>;
|
|
41
|
+
cancelAllOrdersAfter(timeout: Int, params?: {}): Promise<any>;
|
|
41
42
|
parseBalance(response: any): Balances;
|
|
42
43
|
fetchBalance(params?: {}): Promise<Balances>;
|
|
43
44
|
fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
package/js/src/whitebit.js
CHANGED
|
@@ -32,6 +32,7 @@ export default class whitebit extends Exchange {
|
|
|
32
32
|
'future': false,
|
|
33
33
|
'option': false,
|
|
34
34
|
'cancelAllOrders': true,
|
|
35
|
+
'cancelAllOrdersAfter': true,
|
|
35
36
|
'cancelOrder': true,
|
|
36
37
|
'cancelOrders': false,
|
|
37
38
|
'createOrder': true,
|
|
@@ -1412,6 +1413,47 @@ export default class whitebit extends Exchange {
|
|
|
1412
1413
|
//
|
|
1413
1414
|
return response;
|
|
1414
1415
|
}
|
|
1416
|
+
async cancelAllOrdersAfter(timeout, params = {}) {
|
|
1417
|
+
/**
|
|
1418
|
+
* @method
|
|
1419
|
+
* @name whitebit#cancelAllOrdersAfter
|
|
1420
|
+
* @description dead man's switch, cancel all orders after the given timeout
|
|
1421
|
+
* @see https://docs.whitebit.com/private/http-trade-v4/#sync-kill-switch-timer
|
|
1422
|
+
* @param {number} timeout time in milliseconds, 0 represents cancel the timer
|
|
1423
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1424
|
+
* @param {string} [params.types] Order types value. Example: "spot", "margin", "futures" or null
|
|
1425
|
+
* @param {string} [params.symbol] symbol unified symbol of the market the order was made in
|
|
1426
|
+
* @returns {object} the api result
|
|
1427
|
+
*/
|
|
1428
|
+
await this.loadMarkets();
|
|
1429
|
+
const symbol = this.safeString(params, 'symbol');
|
|
1430
|
+
if (symbol === undefined) {
|
|
1431
|
+
throw new ArgumentsRequired(this.id + ' cancelAllOrdersAfter() requires a symbol argument in params');
|
|
1432
|
+
}
|
|
1433
|
+
const market = this.market(symbol);
|
|
1434
|
+
params = this.omit(params, 'symbol');
|
|
1435
|
+
const isBiggerThanZero = (timeout > 0);
|
|
1436
|
+
const request = {
|
|
1437
|
+
'market': market['id'],
|
|
1438
|
+
// 'timeout': (timeout > 0) ? this.numberToString (timeout / 1000) : null,
|
|
1439
|
+
};
|
|
1440
|
+
if (isBiggerThanZero) {
|
|
1441
|
+
request['timeout'] = this.numberToString(timeout / 1000);
|
|
1442
|
+
}
|
|
1443
|
+
else {
|
|
1444
|
+
request['timeout'] = 'null';
|
|
1445
|
+
}
|
|
1446
|
+
const response = await this.v4PrivatePostOrderKillSwitch(this.extend(request, params));
|
|
1447
|
+
//
|
|
1448
|
+
// {
|
|
1449
|
+
// "market": "BTC_USDT", // currency market,
|
|
1450
|
+
// "startTime": 1662478154, // now timestamp,
|
|
1451
|
+
// "cancellationTime": 1662478154, // now + timer_value,
|
|
1452
|
+
// "types": ["spot", "margin"]
|
|
1453
|
+
// }
|
|
1454
|
+
//
|
|
1455
|
+
return response;
|
|
1456
|
+
}
|
|
1415
1457
|
parseBalance(response) {
|
|
1416
1458
|
const balanceKeys = Object.keys(response);
|
|
1417
1459
|
const result = {};
|