ccxt 4.3.36 → 4.3.37
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.min.js +3 -3
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/bingx.js +61 -31
- package/dist/cjs/src/bitbank.js +46 -1
- package/dist/cjs/src/bitmart.js +2 -2
- package/dist/cjs/src/htx.js +78 -3
- package/dist/cjs/src/kraken.js +5 -5
- package/dist/cjs/src/woofipro.js +3 -1
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/bingx.d.ts +2 -2
- package/js/src/bingx.js +61 -31
- package/js/src/bitbank.d.ts +1 -1
- package/js/src/bitbank.js +46 -1
- package/js/src/bitmart.js +2 -2
- package/js/src/htx.d.ts +1 -0
- package/js/src/htx.js +78 -3
- package/js/src/kraken.js +5 -5
- package/js/src/woofipro.js +3 -1
- package/package.json +1 -1
package/dist/cjs/ccxt.js
CHANGED
|
@@ -185,7 +185,7 @@ var woofipro$1 = require('./src/pro/woofipro.js');
|
|
|
185
185
|
|
|
186
186
|
//-----------------------------------------------------------------------------
|
|
187
187
|
// this is updated by vss.js when building
|
|
188
|
-
const version = '4.3.
|
|
188
|
+
const version = '4.3.37';
|
|
189
189
|
Exchange["default"].ccxtVersion = version;
|
|
190
190
|
const exchanges = {
|
|
191
191
|
'ace': ace,
|
package/dist/cjs/src/bingx.js
CHANGED
|
@@ -2733,7 +2733,9 @@ class bingx extends bingx$1 {
|
|
|
2733
2733
|
else {
|
|
2734
2734
|
throw new errors.BadRequest(this.id + ' cancelAllOrders is only supported for spot and swap markets.');
|
|
2735
2735
|
}
|
|
2736
|
-
|
|
2736
|
+
const data = this.safeDict(response, 'data', {});
|
|
2737
|
+
const orders = this.safeList2(data, 'success', 'orders', []);
|
|
2738
|
+
return this.parseOrders(orders);
|
|
2737
2739
|
}
|
|
2738
2740
|
async cancelOrders(ids, symbol = undefined, params = {}) {
|
|
2739
2741
|
/**
|
|
@@ -2774,6 +2776,32 @@ class bingx extends bingx$1 {
|
|
|
2774
2776
|
const spotReqKey = areClientOrderIds ? 'clientOrderIDs' : 'orderIds';
|
|
2775
2777
|
request[spotReqKey] = parsedIds.join(',');
|
|
2776
2778
|
response = await this.spotV1PrivatePostTradeCancelOrders(this.extend(request, params));
|
|
2779
|
+
//
|
|
2780
|
+
// {
|
|
2781
|
+
// "code": 0,
|
|
2782
|
+
// "msg": "",
|
|
2783
|
+
// "debugMsg": "",
|
|
2784
|
+
// "data": {
|
|
2785
|
+
// "orders": [
|
|
2786
|
+
// {
|
|
2787
|
+
// "symbol": "SOL-USDT",
|
|
2788
|
+
// "orderId": 1795970045910614016,
|
|
2789
|
+
// "transactTime": 1717027601111,
|
|
2790
|
+
// "price": "180.25",
|
|
2791
|
+
// "stopPrice": "0",
|
|
2792
|
+
// "origQty": "0.03",
|
|
2793
|
+
// "executedQty": "0",
|
|
2794
|
+
// "cummulativeQuoteQty": "0",
|
|
2795
|
+
// "status": "CANCELED",
|
|
2796
|
+
// "type": "LIMIT",
|
|
2797
|
+
// "side": "SELL",
|
|
2798
|
+
// "clientOrderID": ""
|
|
2799
|
+
// },
|
|
2800
|
+
// ...
|
|
2801
|
+
// ]
|
|
2802
|
+
// }
|
|
2803
|
+
// }
|
|
2804
|
+
//
|
|
2777
2805
|
}
|
|
2778
2806
|
else {
|
|
2779
2807
|
if (areClientOrderIds) {
|
|
@@ -2783,37 +2811,39 @@ class bingx extends bingx$1 {
|
|
|
2783
2811
|
request['orderIdList'] = parsedIds;
|
|
2784
2812
|
}
|
|
2785
2813
|
response = await this.swapV2PrivateDeleteTradeBatchOrders(this.extend(request, params));
|
|
2814
|
+
//
|
|
2815
|
+
// {
|
|
2816
|
+
// "code": 0,
|
|
2817
|
+
// "msg": "",
|
|
2818
|
+
// "data": {
|
|
2819
|
+
// "success": [
|
|
2820
|
+
// {
|
|
2821
|
+
// "symbol": "LINK-USDT",
|
|
2822
|
+
// "orderId": 1597783850786750464,
|
|
2823
|
+
// "side": "BUY",
|
|
2824
|
+
// "positionSide": "LONG",
|
|
2825
|
+
// "type": "TRIGGER_MARKET",
|
|
2826
|
+
// "origQty": "5.0",
|
|
2827
|
+
// "price": "5.5710",
|
|
2828
|
+
// "executedQty": "0.0",
|
|
2829
|
+
// "avgPrice": "0.0000",
|
|
2830
|
+
// "cumQuote": "0",
|
|
2831
|
+
// "stopPrice": "5.0000",
|
|
2832
|
+
// "profit": "0.0000",
|
|
2833
|
+
// "commission": "0.000000",
|
|
2834
|
+
// "status": "CANCELLED",
|
|
2835
|
+
// "time": 1669776330000,
|
|
2836
|
+
// "updateTime": 1672370837000
|
|
2837
|
+
// }
|
|
2838
|
+
// ],
|
|
2839
|
+
// "failed": null
|
|
2840
|
+
// }
|
|
2841
|
+
// }
|
|
2842
|
+
//
|
|
2786
2843
|
}
|
|
2787
|
-
|
|
2788
|
-
|
|
2789
|
-
|
|
2790
|
-
// "msg": "",
|
|
2791
|
-
// "data": {
|
|
2792
|
-
// "success": [
|
|
2793
|
-
// {
|
|
2794
|
-
// "symbol": "LINK-USDT",
|
|
2795
|
-
// "orderId": 1597783850786750464,
|
|
2796
|
-
// "side": "BUY",
|
|
2797
|
-
// "positionSide": "LONG",
|
|
2798
|
-
// "type": "TRIGGER_MARKET",
|
|
2799
|
-
// "origQty": "5.0",
|
|
2800
|
-
// "price": "5.5710",
|
|
2801
|
-
// "executedQty": "0.0",
|
|
2802
|
-
// "avgPrice": "0.0000",
|
|
2803
|
-
// "cumQuote": "0",
|
|
2804
|
-
// "stopPrice": "5.0000",
|
|
2805
|
-
// "profit": "0.0000",
|
|
2806
|
-
// "commission": "0.000000",
|
|
2807
|
-
// "status": "CANCELLED",
|
|
2808
|
-
// "time": 1669776330000,
|
|
2809
|
-
// "updateTime": 1672370837000
|
|
2810
|
-
// }
|
|
2811
|
-
// ],
|
|
2812
|
-
// "failed": null
|
|
2813
|
-
// }
|
|
2814
|
-
// }
|
|
2815
|
-
//
|
|
2816
|
-
return response;
|
|
2844
|
+
const data = this.safeDict(response, 'data', {});
|
|
2845
|
+
const success = this.safeList2(data, 'success', 'orders', []);
|
|
2846
|
+
return this.parseOrders(success);
|
|
2817
2847
|
}
|
|
2818
2848
|
async cancelAllOrdersAfter(timeout, params = {}) {
|
|
2819
2849
|
/**
|
package/dist/cjs/src/bitbank.js
CHANGED
|
@@ -685,8 +685,31 @@ class bitbank extends bitbank$1 {
|
|
|
685
685
|
'pair': market['id'],
|
|
686
686
|
};
|
|
687
687
|
const response = await this.privatePostUserSpotCancelOrder(this.extend(request, params));
|
|
688
|
+
//
|
|
689
|
+
// {
|
|
690
|
+
// "success": 1,
|
|
691
|
+
// "data": {
|
|
692
|
+
// "order_id": 0,
|
|
693
|
+
// "pair": "string",
|
|
694
|
+
// "side": "string",
|
|
695
|
+
// "type": "string",
|
|
696
|
+
// "start_amount": "string",
|
|
697
|
+
// "remaining_amount": "string",
|
|
698
|
+
// "executed_amount": "string",
|
|
699
|
+
// "price": "string",
|
|
700
|
+
// "post_only": false,
|
|
701
|
+
// "average_price": "string",
|
|
702
|
+
// "ordered_at": 0,
|
|
703
|
+
// "expire_at": 0,
|
|
704
|
+
// "canceled_at": 0,
|
|
705
|
+
// "triggered_at": 0,
|
|
706
|
+
// "trigger_price": "string",
|
|
707
|
+
// "status": "string"
|
|
708
|
+
// }
|
|
709
|
+
// }
|
|
710
|
+
//
|
|
688
711
|
const data = this.safeValue(response, 'data');
|
|
689
|
-
return data;
|
|
712
|
+
return this.parseOrder(data);
|
|
690
713
|
}
|
|
691
714
|
async fetchOrder(id, symbol = undefined, params = {}) {
|
|
692
715
|
/**
|
|
@@ -705,6 +728,28 @@ class bitbank extends bitbank$1 {
|
|
|
705
728
|
'pair': market['id'],
|
|
706
729
|
};
|
|
707
730
|
const response = await this.privateGetUserSpotOrder(this.extend(request, params));
|
|
731
|
+
//
|
|
732
|
+
// {
|
|
733
|
+
// "success": 1,
|
|
734
|
+
// "data": {
|
|
735
|
+
// "order_id": 0,
|
|
736
|
+
// "pair": "string",
|
|
737
|
+
// "side": "string",
|
|
738
|
+
// "type": "string",
|
|
739
|
+
// "start_amount": "string",
|
|
740
|
+
// "remaining_amount": "string",
|
|
741
|
+
// "executed_amount": "string",
|
|
742
|
+
// "price": "string",
|
|
743
|
+
// "post_only": false,
|
|
744
|
+
// "average_price": "string",
|
|
745
|
+
// "ordered_at": 0,
|
|
746
|
+
// "expire_at": 0,
|
|
747
|
+
// "triggered_at": 0,
|
|
748
|
+
// "triger_price": "string",
|
|
749
|
+
// "status": "string"
|
|
750
|
+
// }
|
|
751
|
+
// }
|
|
752
|
+
//
|
|
708
753
|
const data = this.safeDict(response, 'data');
|
|
709
754
|
return this.parseOrder(data, market);
|
|
710
755
|
}
|
package/dist/cjs/src/bitmart.js
CHANGED
|
@@ -1182,9 +1182,9 @@ class bitmart extends bitmart$1 {
|
|
|
1182
1182
|
market = this.safeMarket(marketId, market);
|
|
1183
1183
|
const symbol = market['symbol'];
|
|
1184
1184
|
const last = this.safeString2(ticker, 'close_24h', 'last_price');
|
|
1185
|
-
let percentage =
|
|
1185
|
+
let percentage = this.safeString(ticker, 'price_change_percent_24h');
|
|
1186
1186
|
if (percentage === undefined) {
|
|
1187
|
-
percentage = Precise["default"].
|
|
1187
|
+
percentage = Precise["default"].stringMul(this.safeString(ticker, 'fluctuation'), '100');
|
|
1188
1188
|
}
|
|
1189
1189
|
let baseVolume = this.safeString(ticker, 'base_volume_24h');
|
|
1190
1190
|
let quoteVolume = this.safeString(ticker, 'quote_volume_24h');
|
package/dist/cjs/src/htx.js
CHANGED
|
@@ -38,6 +38,8 @@ class htx extends htx$1 {
|
|
|
38
38
|
'cancelAllOrdersAfter': true,
|
|
39
39
|
'cancelOrder': true,
|
|
40
40
|
'cancelOrders': true,
|
|
41
|
+
'closeAllPositions': false,
|
|
42
|
+
'closePosition': true,
|
|
41
43
|
'createDepositAddress': undefined,
|
|
42
44
|
'createMarketBuyOrderWithCost': true,
|
|
43
45
|
'createMarketOrderWithCost': false,
|
|
@@ -5386,7 +5388,7 @@ class htx extends htx$1 {
|
|
|
5386
5388
|
* @param {float} [params.stopLossPrice] *contract only* the price a stop-loss order is triggered at
|
|
5387
5389
|
* @param {float} [params.takeProfitPrice] *contract only* the price a take-profit order is triggered at
|
|
5388
5390
|
* @param {string} [params.operator] *spot and margin only* gte or lte, trigger price condition
|
|
5389
|
-
* @param {string} [params.offset] *contract only* '
|
|
5391
|
+
* @param {string} [params.offset] *contract only* 'both' (linear only), 'open', or 'close', required in hedge mode and for inverse markets
|
|
5390
5392
|
* @param {bool} [params.postOnly] *contract only* true or false
|
|
5391
5393
|
* @param {int} [params.leverRate] *contract only* required for all contract orders except tpsl, leverage greater than 20x requires prior approval of high-leverage agreement
|
|
5392
5394
|
* @param {string} [params.timeInForce] supports 'IOC' and 'FOK'
|
|
@@ -5449,6 +5451,10 @@ class htx extends htx$1 {
|
|
|
5449
5451
|
}
|
|
5450
5452
|
}
|
|
5451
5453
|
else if (market['inverse']) {
|
|
5454
|
+
const offset = this.safeString(params, 'offset');
|
|
5455
|
+
if (offset === undefined) {
|
|
5456
|
+
throw new errors.ArgumentsRequired(this.id + ' createOrder () requires an extra parameter params["offset"] to be set to "open" or "close" when placing orders in inverse markets');
|
|
5457
|
+
}
|
|
5452
5458
|
if (market['swap']) {
|
|
5453
5459
|
if (isStop) {
|
|
5454
5460
|
response = await this.contractPrivatePostSwapApiV1SwapTriggerOrder(contractRequest);
|
|
@@ -7595,14 +7601,20 @@ class htx extends htx$1 {
|
|
|
7595
7601
|
* @description fetch all open positions
|
|
7596
7602
|
* @param {string[]|undefined} symbols list of unified market symbols
|
|
7597
7603
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
7604
|
+
* @param {string} [params.subType] 'linear' or 'inverse'
|
|
7605
|
+
* @param {string} [params.type] *inverse only* 'future', or 'swap'
|
|
7606
|
+
* @param {string} [params.marginMode] *linear only* 'cross' or 'isolated'
|
|
7598
7607
|
* @returns {object[]} a list of [position structure]{@link https://docs.ccxt.com/#/?id=position-structure}
|
|
7599
7608
|
*/
|
|
7600
7609
|
await this.loadMarkets();
|
|
7601
7610
|
symbols = this.marketSymbols(symbols);
|
|
7602
7611
|
let market = undefined;
|
|
7603
7612
|
if (symbols !== undefined) {
|
|
7604
|
-
const
|
|
7605
|
-
|
|
7613
|
+
const symbolsLength = symbols.length;
|
|
7614
|
+
if (symbolsLength > 0) {
|
|
7615
|
+
const first = this.safeString(symbols, 0);
|
|
7616
|
+
market = this.market(first);
|
|
7617
|
+
}
|
|
7606
7618
|
}
|
|
7607
7619
|
let marginMode = undefined;
|
|
7608
7620
|
[marginMode, params] = this.handleMarginModeAndParams('fetchPositions', params, 'cross');
|
|
@@ -9143,6 +9155,69 @@ class htx extends htx$1 {
|
|
|
9143
9155
|
'datetime': this.iso8601(timestamp),
|
|
9144
9156
|
});
|
|
9145
9157
|
}
|
|
9158
|
+
async closePosition(symbol, side = undefined, params = {}) {
|
|
9159
|
+
/**
|
|
9160
|
+
* @method
|
|
9161
|
+
* @name htx#closePositions
|
|
9162
|
+
* @description closes open positions for a contract market, requires 'amount' in params, unlike other exchanges
|
|
9163
|
+
* @see https://huobiapi.github.io/docs/usdt_swap/v1/en/#isolated-place-lightning-close-order // USDT-M (isolated)
|
|
9164
|
+
* @see https://huobiapi.github.io/docs/usdt_swap/v1/en/#cross-place-lightning-close-position // USDT-M (cross)
|
|
9165
|
+
* @see https://huobiapi.github.io/docs/coin_margined_swap/v1/en/#place-lightning-close-order // Coin-M swap
|
|
9166
|
+
* @see https://huobiapi.github.io/docs/dm/v1/en/#place-flash-close-order // Coin-M futures
|
|
9167
|
+
* @param {string} symbol unified CCXT market symbol
|
|
9168
|
+
* @param {string} side 'buy' or 'sell', the side of the closing order, opposite side as position side
|
|
9169
|
+
* @param {object} [params] extra parameters specific to the okx api endpoint
|
|
9170
|
+
* @param {string} [params.clientOrderId] client needs to provide unique API and have to maintain the API themselves afterwards. [1, 9223372036854775807]
|
|
9171
|
+
* @param {object} [params.marginMode] 'cross' or 'isolated', required for linear markets
|
|
9172
|
+
*
|
|
9173
|
+
* EXCHANGE SPECIFIC PARAMETERS
|
|
9174
|
+
* @param {number} [params.amount] order quantity
|
|
9175
|
+
* @param {string} [params.order_price_type] 'lightning' by default, 'lightning_fok': lightning fok type, 'lightning_ioc': lightning ioc type 'market' by default, 'market': market order type, 'lightning_fok': lightning
|
|
9176
|
+
* @returns {object} [an order structure]{@link https://docs.ccxt.com/#/?id=position-structure}
|
|
9177
|
+
*/
|
|
9178
|
+
await this.loadMarkets();
|
|
9179
|
+
const market = this.market(symbol);
|
|
9180
|
+
const clientOrderId = this.safeString(params, 'clientOrderId');
|
|
9181
|
+
if (!market['contract']) {
|
|
9182
|
+
throw new errors.BadRequest(this.id + ' closePosition() symbol supports contract markets only');
|
|
9183
|
+
}
|
|
9184
|
+
this.checkRequiredArgument('closePosition', side, 'side');
|
|
9185
|
+
const request = {
|
|
9186
|
+
'contract_code': market['id'],
|
|
9187
|
+
'direction': side,
|
|
9188
|
+
};
|
|
9189
|
+
if (clientOrderId !== undefined) {
|
|
9190
|
+
request['client_order_id'] = clientOrderId;
|
|
9191
|
+
}
|
|
9192
|
+
if (market['inverse']) {
|
|
9193
|
+
const amount = this.safeString2(params, 'volume', 'amount');
|
|
9194
|
+
if (amount === undefined) {
|
|
9195
|
+
throw new errors.ArgumentsRequired(this.id + ' closePosition () requires an extra argument params["amount"] for inverse markets');
|
|
9196
|
+
}
|
|
9197
|
+
request['volume'] = this.amountToPrecision(symbol, amount);
|
|
9198
|
+
}
|
|
9199
|
+
params = this.omit(params, ['clientOrderId', 'volume', 'amount']);
|
|
9200
|
+
let response = undefined;
|
|
9201
|
+
if (market['inverse']) { // Coin-M
|
|
9202
|
+
if (market['swap']) {
|
|
9203
|
+
response = await this.contractPrivatePostSwapApiV1SwapLightningClosePosition(this.extend(request, params));
|
|
9204
|
+
}
|
|
9205
|
+
else { // future
|
|
9206
|
+
response = await this.contractPrivatePostApiV1LightningClosePosition(this.extend(request, params));
|
|
9207
|
+
}
|
|
9208
|
+
}
|
|
9209
|
+
else { // USDT-M
|
|
9210
|
+
let marginMode = undefined;
|
|
9211
|
+
[marginMode, params] = this.handleMarginModeAndParams('closePosition', params, 'cross');
|
|
9212
|
+
if (marginMode === 'cross') {
|
|
9213
|
+
response = await this.contractPrivatePostLinearSwapApiV1SwapCrossLightningClosePosition(this.extend(request, params));
|
|
9214
|
+
}
|
|
9215
|
+
else { // isolated
|
|
9216
|
+
response = await this.contractPrivatePostLinearSwapApiV1SwapLightningClosePosition(this.extend(request, params));
|
|
9217
|
+
}
|
|
9218
|
+
}
|
|
9219
|
+
return this.parseOrder(response, market);
|
|
9220
|
+
}
|
|
9146
9221
|
async setPositionMode(hedged, symbol = undefined, params = {}) {
|
|
9147
9222
|
/**
|
|
9148
9223
|
* @method
|
package/dist/cjs/src/kraken.js
CHANGED
|
@@ -161,13 +161,13 @@ class kraken extends kraken$1 {
|
|
|
161
161
|
// rate-limits explained in comment in the top of this file
|
|
162
162
|
'Assets': 1,
|
|
163
163
|
'AssetPairs': 1,
|
|
164
|
-
'Depth': 1,
|
|
165
|
-
'OHLC': 1,
|
|
164
|
+
'Depth': 1.2,
|
|
165
|
+
'OHLC': 1.2,
|
|
166
166
|
'Spread': 1,
|
|
167
167
|
'SystemStatus': 1,
|
|
168
168
|
'Ticker': 1,
|
|
169
169
|
'Time': 1,
|
|
170
|
-
'Trades': 1,
|
|
170
|
+
'Trades': 1.2,
|
|
171
171
|
},
|
|
172
172
|
},
|
|
173
173
|
'private': {
|
|
@@ -758,8 +758,8 @@ class kraken extends kraken$1 {
|
|
|
758
758
|
return {
|
|
759
759
|
'info': response,
|
|
760
760
|
'symbol': market['symbol'],
|
|
761
|
-
'maker': this.
|
|
762
|
-
'taker': this.
|
|
761
|
+
'maker': this.parseNumber(Precise["default"].stringDiv(this.safeString(symbolMakerFee, 'fee'), '100')),
|
|
762
|
+
'taker': this.parseNumber(Precise["default"].stringDiv(this.safeString(symbolTakerFee, 'fee'), '100')),
|
|
763
763
|
'percentage': true,
|
|
764
764
|
'tierBased': true,
|
|
765
765
|
};
|
package/dist/cjs/src/woofipro.js
CHANGED
|
@@ -2277,8 +2277,10 @@ class woofipro extends woofipro$1 {
|
|
|
2277
2277
|
}
|
|
2278
2278
|
signHash(hash, privateKey) {
|
|
2279
2279
|
const signature = crypto.ecdsa(hash.slice(-64), privateKey.slice(-64), secp256k1.secp256k1, undefined);
|
|
2280
|
+
const r = signature['r'];
|
|
2281
|
+
const s = signature['s'];
|
|
2280
2282
|
const v = this.intToBase16(this.sum(27, signature['v']));
|
|
2281
|
-
return '0x' +
|
|
2283
|
+
return '0x' + r.padStart(64, '0') + s.padStart(64, '0') + v;
|
|
2282
2284
|
}
|
|
2283
2285
|
signMessage(message, privateKey) {
|
|
2284
2286
|
return this.signHash(this.hashMessage(message), privateKey.slice(-64));
|
package/js/ccxt.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import * as functions from './src/base/functions.js';
|
|
|
4
4
|
import * as errors from './src/base/errors.js';
|
|
5
5
|
import type { Market, Trade, Fee, Ticker, OrderBook, Order, Transaction, Tickers, Currency, Balance, DepositAddress, WithdrawalResponse, DepositAddressResponse, OHLCV, Balances, PartialBalances, Dictionary, MinMax, Position, FundingRateHistory, Liquidation, FundingHistory, MarginMode, Greeks, Leverage, Leverages, Option, OptionChain, Conversion } from './src/base/types.js';
|
|
6
6
|
import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, ProxyError, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout } from './src/base/errors.js';
|
|
7
|
-
declare const version = "4.3.
|
|
7
|
+
declare const version = "4.3.36";
|
|
8
8
|
import ace from './src/ace.js';
|
|
9
9
|
import alpaca from './src/alpaca.js';
|
|
10
10
|
import ascendex from './src/ascendex.js';
|
package/js/ccxt.js
CHANGED
|
@@ -38,7 +38,7 @@ import * as errors from './src/base/errors.js';
|
|
|
38
38
|
import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, ProxyError, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout } from './src/base/errors.js';
|
|
39
39
|
//-----------------------------------------------------------------------------
|
|
40
40
|
// this is updated by vss.js when building
|
|
41
|
-
const version = '4.3.
|
|
41
|
+
const version = '4.3.37';
|
|
42
42
|
Exchange.ccxtVersion = version;
|
|
43
43
|
//-----------------------------------------------------------------------------
|
|
44
44
|
import ace from './src/ace.js';
|
package/js/src/bingx.d.ts
CHANGED
|
@@ -77,8 +77,8 @@ export default class bingx extends Exchange {
|
|
|
77
77
|
parseOrder(order: Dict, market?: Market): Order;
|
|
78
78
|
parseOrderStatus(status: Str): string;
|
|
79
79
|
cancelOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
|
|
80
|
-
cancelAllOrders(symbol?: Str, params?: {}): Promise<
|
|
81
|
-
cancelOrders(ids: string[], symbol?: Str, params?: {}): Promise<
|
|
80
|
+
cancelAllOrders(symbol?: Str, params?: {}): Promise<Order[]>;
|
|
81
|
+
cancelOrders(ids: string[], symbol?: Str, params?: {}): Promise<Order[]>;
|
|
82
82
|
cancelAllOrdersAfter(timeout: Int, params?: {}): Promise<any>;
|
|
83
83
|
fetchOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
|
|
84
84
|
fetchOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
package/js/src/bingx.js
CHANGED
|
@@ -2736,7 +2736,9 @@ export default class bingx extends Exchange {
|
|
|
2736
2736
|
else {
|
|
2737
2737
|
throw new BadRequest(this.id + ' cancelAllOrders is only supported for spot and swap markets.');
|
|
2738
2738
|
}
|
|
2739
|
-
|
|
2739
|
+
const data = this.safeDict(response, 'data', {});
|
|
2740
|
+
const orders = this.safeList2(data, 'success', 'orders', []);
|
|
2741
|
+
return this.parseOrders(orders);
|
|
2740
2742
|
}
|
|
2741
2743
|
async cancelOrders(ids, symbol = undefined, params = {}) {
|
|
2742
2744
|
/**
|
|
@@ -2777,6 +2779,32 @@ export default class bingx extends Exchange {
|
|
|
2777
2779
|
const spotReqKey = areClientOrderIds ? 'clientOrderIDs' : 'orderIds';
|
|
2778
2780
|
request[spotReqKey] = parsedIds.join(',');
|
|
2779
2781
|
response = await this.spotV1PrivatePostTradeCancelOrders(this.extend(request, params));
|
|
2782
|
+
//
|
|
2783
|
+
// {
|
|
2784
|
+
// "code": 0,
|
|
2785
|
+
// "msg": "",
|
|
2786
|
+
// "debugMsg": "",
|
|
2787
|
+
// "data": {
|
|
2788
|
+
// "orders": [
|
|
2789
|
+
// {
|
|
2790
|
+
// "symbol": "SOL-USDT",
|
|
2791
|
+
// "orderId": 1795970045910614016,
|
|
2792
|
+
// "transactTime": 1717027601111,
|
|
2793
|
+
// "price": "180.25",
|
|
2794
|
+
// "stopPrice": "0",
|
|
2795
|
+
// "origQty": "0.03",
|
|
2796
|
+
// "executedQty": "0",
|
|
2797
|
+
// "cummulativeQuoteQty": "0",
|
|
2798
|
+
// "status": "CANCELED",
|
|
2799
|
+
// "type": "LIMIT",
|
|
2800
|
+
// "side": "SELL",
|
|
2801
|
+
// "clientOrderID": ""
|
|
2802
|
+
// },
|
|
2803
|
+
// ...
|
|
2804
|
+
// ]
|
|
2805
|
+
// }
|
|
2806
|
+
// }
|
|
2807
|
+
//
|
|
2780
2808
|
}
|
|
2781
2809
|
else {
|
|
2782
2810
|
if (areClientOrderIds) {
|
|
@@ -2786,37 +2814,39 @@ export default class bingx extends Exchange {
|
|
|
2786
2814
|
request['orderIdList'] = parsedIds;
|
|
2787
2815
|
}
|
|
2788
2816
|
response = await this.swapV2PrivateDeleteTradeBatchOrders(this.extend(request, params));
|
|
2817
|
+
//
|
|
2818
|
+
// {
|
|
2819
|
+
// "code": 0,
|
|
2820
|
+
// "msg": "",
|
|
2821
|
+
// "data": {
|
|
2822
|
+
// "success": [
|
|
2823
|
+
// {
|
|
2824
|
+
// "symbol": "LINK-USDT",
|
|
2825
|
+
// "orderId": 1597783850786750464,
|
|
2826
|
+
// "side": "BUY",
|
|
2827
|
+
// "positionSide": "LONG",
|
|
2828
|
+
// "type": "TRIGGER_MARKET",
|
|
2829
|
+
// "origQty": "5.0",
|
|
2830
|
+
// "price": "5.5710",
|
|
2831
|
+
// "executedQty": "0.0",
|
|
2832
|
+
// "avgPrice": "0.0000",
|
|
2833
|
+
// "cumQuote": "0",
|
|
2834
|
+
// "stopPrice": "5.0000",
|
|
2835
|
+
// "profit": "0.0000",
|
|
2836
|
+
// "commission": "0.000000",
|
|
2837
|
+
// "status": "CANCELLED",
|
|
2838
|
+
// "time": 1669776330000,
|
|
2839
|
+
// "updateTime": 1672370837000
|
|
2840
|
+
// }
|
|
2841
|
+
// ],
|
|
2842
|
+
// "failed": null
|
|
2843
|
+
// }
|
|
2844
|
+
// }
|
|
2845
|
+
//
|
|
2789
2846
|
}
|
|
2790
|
-
|
|
2791
|
-
|
|
2792
|
-
|
|
2793
|
-
// "msg": "",
|
|
2794
|
-
// "data": {
|
|
2795
|
-
// "success": [
|
|
2796
|
-
// {
|
|
2797
|
-
// "symbol": "LINK-USDT",
|
|
2798
|
-
// "orderId": 1597783850786750464,
|
|
2799
|
-
// "side": "BUY",
|
|
2800
|
-
// "positionSide": "LONG",
|
|
2801
|
-
// "type": "TRIGGER_MARKET",
|
|
2802
|
-
// "origQty": "5.0",
|
|
2803
|
-
// "price": "5.5710",
|
|
2804
|
-
// "executedQty": "0.0",
|
|
2805
|
-
// "avgPrice": "0.0000",
|
|
2806
|
-
// "cumQuote": "0",
|
|
2807
|
-
// "stopPrice": "5.0000",
|
|
2808
|
-
// "profit": "0.0000",
|
|
2809
|
-
// "commission": "0.000000",
|
|
2810
|
-
// "status": "CANCELLED",
|
|
2811
|
-
// "time": 1669776330000,
|
|
2812
|
-
// "updateTime": 1672370837000
|
|
2813
|
-
// }
|
|
2814
|
-
// ],
|
|
2815
|
-
// "failed": null
|
|
2816
|
-
// }
|
|
2817
|
-
// }
|
|
2818
|
-
//
|
|
2819
|
-
return response;
|
|
2847
|
+
const data = this.safeDict(response, 'data', {});
|
|
2848
|
+
const success = this.safeList2(data, 'success', 'orders', []);
|
|
2849
|
+
return this.parseOrders(success);
|
|
2820
2850
|
}
|
|
2821
2851
|
async cancelAllOrdersAfter(timeout, params = {}) {
|
|
2822
2852
|
/**
|
package/js/src/bitbank.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export default class bitbank extends Exchange {
|
|
|
21
21
|
parseOrderStatus(status: Str): string;
|
|
22
22
|
parseOrder(order: Dict, market?: Market): Order;
|
|
23
23
|
createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): Promise<Order>;
|
|
24
|
-
cancelOrder(id: string, symbol?: Str, params?: {}): Promise<
|
|
24
|
+
cancelOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
|
|
25
25
|
fetchOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
|
|
26
26
|
fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
|
27
27
|
fetchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
|
package/js/src/bitbank.js
CHANGED
|
@@ -688,8 +688,31 @@ export default class bitbank extends Exchange {
|
|
|
688
688
|
'pair': market['id'],
|
|
689
689
|
};
|
|
690
690
|
const response = await this.privatePostUserSpotCancelOrder(this.extend(request, params));
|
|
691
|
+
//
|
|
692
|
+
// {
|
|
693
|
+
// "success": 1,
|
|
694
|
+
// "data": {
|
|
695
|
+
// "order_id": 0,
|
|
696
|
+
// "pair": "string",
|
|
697
|
+
// "side": "string",
|
|
698
|
+
// "type": "string",
|
|
699
|
+
// "start_amount": "string",
|
|
700
|
+
// "remaining_amount": "string",
|
|
701
|
+
// "executed_amount": "string",
|
|
702
|
+
// "price": "string",
|
|
703
|
+
// "post_only": false,
|
|
704
|
+
// "average_price": "string",
|
|
705
|
+
// "ordered_at": 0,
|
|
706
|
+
// "expire_at": 0,
|
|
707
|
+
// "canceled_at": 0,
|
|
708
|
+
// "triggered_at": 0,
|
|
709
|
+
// "trigger_price": "string",
|
|
710
|
+
// "status": "string"
|
|
711
|
+
// }
|
|
712
|
+
// }
|
|
713
|
+
//
|
|
691
714
|
const data = this.safeValue(response, 'data');
|
|
692
|
-
return data;
|
|
715
|
+
return this.parseOrder(data);
|
|
693
716
|
}
|
|
694
717
|
async fetchOrder(id, symbol = undefined, params = {}) {
|
|
695
718
|
/**
|
|
@@ -708,6 +731,28 @@ export default class bitbank extends Exchange {
|
|
|
708
731
|
'pair': market['id'],
|
|
709
732
|
};
|
|
710
733
|
const response = await this.privateGetUserSpotOrder(this.extend(request, params));
|
|
734
|
+
//
|
|
735
|
+
// {
|
|
736
|
+
// "success": 1,
|
|
737
|
+
// "data": {
|
|
738
|
+
// "order_id": 0,
|
|
739
|
+
// "pair": "string",
|
|
740
|
+
// "side": "string",
|
|
741
|
+
// "type": "string",
|
|
742
|
+
// "start_amount": "string",
|
|
743
|
+
// "remaining_amount": "string",
|
|
744
|
+
// "executed_amount": "string",
|
|
745
|
+
// "price": "string",
|
|
746
|
+
// "post_only": false,
|
|
747
|
+
// "average_price": "string",
|
|
748
|
+
// "ordered_at": 0,
|
|
749
|
+
// "expire_at": 0,
|
|
750
|
+
// "triggered_at": 0,
|
|
751
|
+
// "triger_price": "string",
|
|
752
|
+
// "status": "string"
|
|
753
|
+
// }
|
|
754
|
+
// }
|
|
755
|
+
//
|
|
711
756
|
const data = this.safeDict(response, 'data');
|
|
712
757
|
return this.parseOrder(data, market);
|
|
713
758
|
}
|
package/js/src/bitmart.js
CHANGED
|
@@ -1185,9 +1185,9 @@ export default class bitmart extends Exchange {
|
|
|
1185
1185
|
market = this.safeMarket(marketId, market);
|
|
1186
1186
|
const symbol = market['symbol'];
|
|
1187
1187
|
const last = this.safeString2(ticker, 'close_24h', 'last_price');
|
|
1188
|
-
let percentage =
|
|
1188
|
+
let percentage = this.safeString(ticker, 'price_change_percent_24h');
|
|
1189
1189
|
if (percentage === undefined) {
|
|
1190
|
-
percentage = Precise.
|
|
1190
|
+
percentage = Precise.stringMul(this.safeString(ticker, 'fluctuation'), '100');
|
|
1191
1191
|
}
|
|
1192
1192
|
let baseVolume = this.safeString(ticker, 'base_volume_24h');
|
|
1193
1193
|
let quoteVolume = this.safeString(ticker, 'quote_volume_24h');
|
package/js/src/htx.d.ts
CHANGED
|
@@ -238,5 +238,6 @@ export default class htx extends Exchange {
|
|
|
238
238
|
};
|
|
239
239
|
fetchLiquidations(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<import("./base/types.js").Liquidation[]>;
|
|
240
240
|
parseLiquidation(liquidation: any, market?: Market): import("./base/types.js").Liquidation;
|
|
241
|
+
closePosition(symbol: string, side?: OrderSide, params?: {}): Promise<Order>;
|
|
241
242
|
setPositionMode(hedged: boolean, symbol?: Str, params?: {}): Promise<any>;
|
|
242
243
|
}
|