ccxt 4.2.2 → 4.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/ccxt.browser.js +227 -62
- package/dist/ccxt.browser.min.js +5 -5
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/alpaca.js +1 -1
- package/dist/cjs/src/base/Exchange.js +5 -2
- package/dist/cjs/src/bingx.js +109 -7
- package/dist/cjs/src/bitget.js +4 -4
- package/dist/cjs/src/bitmart.js +20 -10
- package/dist/cjs/src/bybit.js +2 -0
- package/dist/cjs/src/coinsph.js +20 -2
- package/dist/cjs/src/htx.js +35 -3
- package/dist/cjs/src/kucoinfutures.js +6 -6
- package/dist/cjs/src/okcoin.js +2 -2
- package/dist/cjs/src/okx.js +16 -9
- package/dist/cjs/src/phemex.js +1 -1
- package/dist/cjs/src/pro/bingx.js +2 -1
- package/dist/cjs/src/pro/bybit.js +3 -13
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/bingx.d.ts +1 -0
- package/js/src/abstract/bitmart.d.ts +1 -0
- package/js/src/alpaca.js +1 -1
- package/js/src/base/Exchange.js +5 -2
- package/js/src/bingx.js +109 -7
- package/js/src/bitget.js +4 -4
- package/js/src/bitmart.js +20 -10
- package/js/src/bybit.js +2 -0
- package/js/src/coinsph.js +20 -2
- package/js/src/htx.js +35 -3
- package/js/src/kucoinfutures.js +6 -6
- package/js/src/okcoin.js +2 -2
- package/js/src/okx.js +16 -9
- package/js/src/phemex.js +1 -1
- package/js/src/pro/bingx.js +2 -1
- package/js/src/pro/bybit.js +3 -13
- package/package.json +1 -1
package/js/src/htx.js
CHANGED
|
@@ -5017,6 +5017,8 @@ export default class htx extends Exchange {
|
|
|
5017
5017
|
* @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
|
|
5018
5018
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
5019
5019
|
* @param {string} [params.timeInForce] supports 'IOC' and 'FOK'
|
|
5020
|
+
* @param {float} [params.trailingPercent] *contract only* the percent to trail away from the current market price
|
|
5021
|
+
* @param {float} [params.trailingTriggerPrice] *contract only* the price to trigger a trailing order, default uses the price argument
|
|
5020
5022
|
* @returns {object} request to be sent to the exchange
|
|
5021
5023
|
*/
|
|
5022
5024
|
const market = this.market(symbol);
|
|
@@ -5040,6 +5042,9 @@ export default class htx extends Exchange {
|
|
|
5040
5042
|
const triggerPrice = this.safeNumber2(params, 'stopPrice', 'trigger_price');
|
|
5041
5043
|
const stopLossTriggerPrice = this.safeNumber2(params, 'stopLossPrice', 'sl_trigger_price');
|
|
5042
5044
|
const takeProfitTriggerPrice = this.safeNumber2(params, 'takeProfitPrice', 'tp_trigger_price');
|
|
5045
|
+
const trailingPercent = this.safeString2(params, 'trailingPercent', 'callback_rate');
|
|
5046
|
+
const trailingTriggerPrice = this.safeNumber(params, 'trailingTriggerPrice', price);
|
|
5047
|
+
const isTrailingPercentOrder = trailingPercent !== undefined;
|
|
5043
5048
|
const isStop = triggerPrice !== undefined;
|
|
5044
5049
|
const isStopLossTriggerOrder = stopLossTriggerPrice !== undefined;
|
|
5045
5050
|
const isTakeProfitTriggerOrder = takeProfitTriggerPrice !== undefined;
|
|
@@ -5067,6 +5072,12 @@ export default class htx extends Exchange {
|
|
|
5067
5072
|
}
|
|
5068
5073
|
}
|
|
5069
5074
|
}
|
|
5075
|
+
else if (isTrailingPercentOrder) {
|
|
5076
|
+
const trailingPercentString = Precise.stringDiv(trailingPercent, '100');
|
|
5077
|
+
request['callback_rate'] = this.parseToNumeric(trailingPercentString);
|
|
5078
|
+
request['active_price'] = trailingTriggerPrice;
|
|
5079
|
+
request['order_price_type'] = this.safeString(params, 'order_price_type', 'formula_price');
|
|
5080
|
+
}
|
|
5070
5081
|
else {
|
|
5071
5082
|
const clientOrderId = this.safeInteger2(params, 'client_order_id', 'clientOrderId');
|
|
5072
5083
|
if (clientOrderId !== undefined) {
|
|
@@ -5078,7 +5089,7 @@ export default class htx extends Exchange {
|
|
|
5078
5089
|
}
|
|
5079
5090
|
}
|
|
5080
5091
|
if (!isStopLossTriggerOrder && !isTakeProfitTriggerOrder) {
|
|
5081
|
-
const leverRate = this.
|
|
5092
|
+
const leverRate = this.safeIntegerN(params, ['leverRate', 'lever_rate', 'leverage'], 1);
|
|
5082
5093
|
const reduceOnly = this.safeValue2(params, 'reduceOnly', 'reduce_only', false);
|
|
5083
5094
|
const openOrClose = (reduceOnly) ? 'close' : 'open';
|
|
5084
5095
|
const offset = this.safeString(params, 'offset', openOrClose);
|
|
@@ -5087,12 +5098,14 @@ export default class htx extends Exchange {
|
|
|
5087
5098
|
request['reduce_only'] = 1;
|
|
5088
5099
|
}
|
|
5089
5100
|
request['lever_rate'] = leverRate;
|
|
5090
|
-
|
|
5101
|
+
if (!isTrailingPercentOrder) {
|
|
5102
|
+
request['order_price_type'] = type;
|
|
5103
|
+
}
|
|
5091
5104
|
}
|
|
5092
5105
|
const broker = this.safeValue(this.options, 'broker', {});
|
|
5093
5106
|
const brokerId = this.safeString(broker, 'id');
|
|
5094
5107
|
request['channel_code'] = brokerId;
|
|
5095
|
-
params = this.omit(params, ['reduceOnly', 'stopPrice', 'stopLossPrice', 'takeProfitPrice', 'triggerType', 'leverRate', 'timeInForce']);
|
|
5108
|
+
params = this.omit(params, ['reduceOnly', 'stopPrice', 'stopLossPrice', 'takeProfitPrice', 'triggerType', 'leverRate', 'timeInForce', 'leverage', 'trailingPercent', 'trailingTriggerPrice']);
|
|
5096
5109
|
return this.extend(request, params);
|
|
5097
5110
|
}
|
|
5098
5111
|
async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
|
|
@@ -5125,6 +5138,8 @@ export default class htx extends Exchange {
|
|
|
5125
5138
|
* @param {int} [params.leverRate] *contract only* required for all contract orders except tpsl, leverage greater than 20x requires prior approval of high-leverage agreement
|
|
5126
5139
|
* @param {string} [params.timeInForce] supports 'IOC' and 'FOK'
|
|
5127
5140
|
* @param {float} [params.cost] *spot market buy only* the quote quantity that can be used as an alternative for the amount
|
|
5141
|
+
* @param {float} [params.trailingPercent] *contract only* the percent to trail away from the current market price
|
|
5142
|
+
* @param {float} [params.trailingTriggerPrice] *contract only* the price to trigger a trailing order, default uses the price argument
|
|
5128
5143
|
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
5129
5144
|
*/
|
|
5130
5145
|
await this.loadMarkets();
|
|
@@ -5132,11 +5147,16 @@ export default class htx extends Exchange {
|
|
|
5132
5147
|
const triggerPrice = this.safeNumber2(params, 'stopPrice', 'trigger_price');
|
|
5133
5148
|
const stopLossTriggerPrice = this.safeNumber2(params, 'stopLossPrice', 'sl_trigger_price');
|
|
5134
5149
|
const takeProfitTriggerPrice = this.safeNumber2(params, 'takeProfitPrice', 'tp_trigger_price');
|
|
5150
|
+
const trailingPercent = this.safeNumber(params, 'trailingPercent');
|
|
5151
|
+
const isTrailingPercentOrder = trailingPercent !== undefined;
|
|
5135
5152
|
const isStop = triggerPrice !== undefined;
|
|
5136
5153
|
const isStopLossTriggerOrder = stopLossTriggerPrice !== undefined;
|
|
5137
5154
|
const isTakeProfitTriggerOrder = takeProfitTriggerPrice !== undefined;
|
|
5138
5155
|
let response = undefined;
|
|
5139
5156
|
if (market['spot']) {
|
|
5157
|
+
if (isTrailingPercentOrder) {
|
|
5158
|
+
throw new NotSupported(this.id + ' createOrder() does not support trailing orders for spot markets');
|
|
5159
|
+
}
|
|
5140
5160
|
const spotRequest = await this.createSpotOrderRequest(symbol, type, side, amount, price, params);
|
|
5141
5161
|
response = await this.spotPrivatePostV1OrderOrdersPlace(spotRequest);
|
|
5142
5162
|
}
|
|
@@ -5153,6 +5173,9 @@ export default class htx extends Exchange {
|
|
|
5153
5173
|
else if (isStopLossTriggerOrder || isTakeProfitTriggerOrder) {
|
|
5154
5174
|
response = await this.contractPrivatePostLinearSwapApiV1SwapTpslOrder(contractRequest);
|
|
5155
5175
|
}
|
|
5176
|
+
else if (isTrailingPercentOrder) {
|
|
5177
|
+
response = await this.contractPrivatePostLinearSwapApiV1SwapTrackOrder(contractRequest);
|
|
5178
|
+
}
|
|
5156
5179
|
else {
|
|
5157
5180
|
response = await this.contractPrivatePostLinearSwapApiV1SwapOrder(contractRequest);
|
|
5158
5181
|
}
|
|
@@ -5164,6 +5187,9 @@ export default class htx extends Exchange {
|
|
|
5164
5187
|
else if (isStopLossTriggerOrder || isTakeProfitTriggerOrder) {
|
|
5165
5188
|
response = await this.contractPrivatePostLinearSwapApiV1SwapCrossTpslOrder(contractRequest);
|
|
5166
5189
|
}
|
|
5190
|
+
else if (isTrailingPercentOrder) {
|
|
5191
|
+
response = await this.contractPrivatePostLinearSwapApiV1SwapCrossTrackOrder(contractRequest);
|
|
5192
|
+
}
|
|
5167
5193
|
else {
|
|
5168
5194
|
response = await this.contractPrivatePostLinearSwapApiV1SwapCrossOrder(contractRequest);
|
|
5169
5195
|
}
|
|
@@ -5177,6 +5203,9 @@ export default class htx extends Exchange {
|
|
|
5177
5203
|
else if (isStopLossTriggerOrder || isTakeProfitTriggerOrder) {
|
|
5178
5204
|
response = await this.contractPrivatePostSwapApiV1SwapTpslOrder(contractRequest);
|
|
5179
5205
|
}
|
|
5206
|
+
else if (isTrailingPercentOrder) {
|
|
5207
|
+
response = await this.contractPrivatePostSwapApiV1SwapTrackOrder(contractRequest);
|
|
5208
|
+
}
|
|
5180
5209
|
else {
|
|
5181
5210
|
response = await this.contractPrivatePostSwapApiV1SwapOrder(contractRequest);
|
|
5182
5211
|
}
|
|
@@ -5188,6 +5217,9 @@ export default class htx extends Exchange {
|
|
|
5188
5217
|
else if (isStopLossTriggerOrder || isTakeProfitTriggerOrder) {
|
|
5189
5218
|
response = await this.contractPrivatePostApiV1ContractTpslOrder(contractRequest);
|
|
5190
5219
|
}
|
|
5220
|
+
else if (isTrailingPercentOrder) {
|
|
5221
|
+
response = await this.contractPrivatePostApiV1ContractTrackOrder(contractRequest);
|
|
5222
|
+
}
|
|
5191
5223
|
else {
|
|
5192
5224
|
response = await this.contractPrivatePostApiV1ContractOrder(contractRequest);
|
|
5193
5225
|
}
|
package/js/src/kucoinfutures.js
CHANGED
|
@@ -1281,7 +1281,7 @@ export default class kucoinfutures extends kucoin {
|
|
|
1281
1281
|
* @see https://www.kucoin.com/docs/rest/futures-trading/orders/cancel-multiple-futures-stop-orders
|
|
1282
1282
|
* @param {string} symbol unified market symbol, only orders in the market of this symbol are cancelled when symbol is not undefined
|
|
1283
1283
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1284
|
-
* @param {object} [params.
|
|
1284
|
+
* @param {object} [params.trigger] When true, all the trigger orders will be cancelled
|
|
1285
1285
|
* @returns Response from the exchange
|
|
1286
1286
|
*/
|
|
1287
1287
|
await this.loadMarkets();
|
|
@@ -1289,8 +1289,8 @@ export default class kucoinfutures extends kucoin {
|
|
|
1289
1289
|
if (symbol !== undefined) {
|
|
1290
1290
|
request['symbol'] = this.marketId(symbol);
|
|
1291
1291
|
}
|
|
1292
|
-
const stop = this.
|
|
1293
|
-
params = this.omit(params, 'stop');
|
|
1292
|
+
const stop = this.safeValue2(params, 'stop', 'trigger');
|
|
1293
|
+
params = this.omit(params, ['stop', 'trigger']);
|
|
1294
1294
|
let response = undefined;
|
|
1295
1295
|
if (stop) {
|
|
1296
1296
|
response = await this.futuresPrivateDeleteStopOrders(this.extend(request, params));
|
|
@@ -1459,7 +1459,7 @@ export default class kucoinfutures extends kucoin {
|
|
|
1459
1459
|
* @param {int} [since] timestamp in ms of the earliest order to retrieve
|
|
1460
1460
|
* @param {int} [limit] The maximum number of orders to retrieve
|
|
1461
1461
|
* @param {object} [params] exchange specific parameters
|
|
1462
|
-
* @param {bool} [params.
|
|
1462
|
+
* @param {bool} [params.trigger] set to true to retrieve untriggered stop orders
|
|
1463
1463
|
* @param {int} [params.until] End time in ms
|
|
1464
1464
|
* @param {string} [params.side] buy or sell
|
|
1465
1465
|
* @param {string} [params.type] limit or market
|
|
@@ -1472,9 +1472,9 @@ export default class kucoinfutures extends kucoin {
|
|
|
1472
1472
|
if (paginate) {
|
|
1473
1473
|
return await this.fetchPaginatedCallDynamic('fetchOrdersByStatus', symbol, since, limit, params);
|
|
1474
1474
|
}
|
|
1475
|
-
const stop = this.
|
|
1475
|
+
const stop = this.safeValue2(params, 'stop', 'trigger');
|
|
1476
1476
|
const until = this.safeInteger2(params, 'until', 'till');
|
|
1477
|
-
params = this.omit(params, ['stop', 'until', 'till']);
|
|
1477
|
+
params = this.omit(params, ['stop', 'until', 'till', 'trigger']);
|
|
1478
1478
|
if (status === 'closed') {
|
|
1479
1479
|
status = 'done';
|
|
1480
1480
|
}
|
package/js/src/okcoin.js
CHANGED
|
@@ -1974,7 +1974,7 @@ export default class okcoin extends Exchange {
|
|
|
1974
1974
|
// 'ordId': id,
|
|
1975
1975
|
};
|
|
1976
1976
|
const clientOrderId = this.safeString2(params, 'clOrdId', 'clientOrderId');
|
|
1977
|
-
const stop = this.
|
|
1977
|
+
const stop = this.safeValue2(params, 'stop', 'trigger');
|
|
1978
1978
|
if (stop) {
|
|
1979
1979
|
if (clientOrderId !== undefined) {
|
|
1980
1980
|
request['algoClOrdId'] = clientOrderId;
|
|
@@ -1991,7 +1991,7 @@ export default class okcoin extends Exchange {
|
|
|
1991
1991
|
request['ordId'] = id;
|
|
1992
1992
|
}
|
|
1993
1993
|
}
|
|
1994
|
-
const query = this.omit(params, ['clientOrderId', 'stop']);
|
|
1994
|
+
const query = this.omit(params, ['clientOrderId', 'stop', 'trigger']);
|
|
1995
1995
|
let response = undefined;
|
|
1996
1996
|
if (stop) {
|
|
1997
1997
|
response = await this.privateGetTradeOrderAlgo(this.extend(request, query));
|
package/js/src/okx.js
CHANGED
|
@@ -3032,12 +3032,13 @@ export default class okx extends Exchange {
|
|
|
3032
3032
|
* @param {string} id order id
|
|
3033
3033
|
* @param {string} symbol unified symbol of the market the order was made in
|
|
3034
3034
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3035
|
+
* @param {boolean} [params.trigger] true if trigger orders
|
|
3035
3036
|
* @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
3036
3037
|
*/
|
|
3037
3038
|
if (symbol === undefined) {
|
|
3038
3039
|
throw new ArgumentsRequired(this.id + ' cancelOrder() requires a symbol argument');
|
|
3039
3040
|
}
|
|
3040
|
-
const stop = this.
|
|
3041
|
+
const stop = this.safeValue2(params, 'stop', 'trigger');
|
|
3041
3042
|
if (stop) {
|
|
3042
3043
|
const orderInner = await this.cancelOrders([id], symbol, params);
|
|
3043
3044
|
return this.safeValue(orderInner, 0);
|
|
@@ -3409,6 +3410,7 @@ export default class okx extends Exchange {
|
|
|
3409
3410
|
* @param {string} id the order id
|
|
3410
3411
|
* @param {string} symbol unified market symbol
|
|
3411
3412
|
* @param {object} [params] extra and exchange specific parameters
|
|
3413
|
+
* @param {boolean} [params.trigger] true if fetching trigger orders
|
|
3412
3414
|
* @returns [an order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
3413
3415
|
*/
|
|
3414
3416
|
if (symbol === undefined) {
|
|
@@ -3426,7 +3428,7 @@ export default class okx extends Exchange {
|
|
|
3426
3428
|
const options = this.safeValue(this.options, 'fetchOrder', {});
|
|
3427
3429
|
const defaultMethod = this.safeString(options, 'method', 'privateGetTradeOrder');
|
|
3428
3430
|
let method = this.safeString(params, 'method', defaultMethod);
|
|
3429
|
-
const stop = this.
|
|
3431
|
+
const stop = this.safeValue2(params, 'stop', 'trigger');
|
|
3430
3432
|
if (stop) {
|
|
3431
3433
|
method = 'privateGetTradeOrderAlgo';
|
|
3432
3434
|
if (clientOrderId !== undefined) {
|
|
@@ -3444,7 +3446,7 @@ export default class okx extends Exchange {
|
|
|
3444
3446
|
request['ordId'] = id;
|
|
3445
3447
|
}
|
|
3446
3448
|
}
|
|
3447
|
-
const query = this.omit(params, ['method', 'clOrdId', 'clientOrderId', 'stop']);
|
|
3449
|
+
const query = this.omit(params, ['method', 'clOrdId', 'clientOrderId', 'stop', 'trigger']);
|
|
3448
3450
|
let response = undefined;
|
|
3449
3451
|
if (method === 'privateGetTradeOrderAlgo') {
|
|
3450
3452
|
response = await this.privateGetTradeOrderAlgo(this.extend(request, query));
|
|
@@ -3600,7 +3602,7 @@ export default class okx extends Exchange {
|
|
|
3600
3602
|
const defaultMethod = this.safeString(options, 'method', 'privateGetTradeOrdersPending');
|
|
3601
3603
|
let method = this.safeString(params, 'method', defaultMethod);
|
|
3602
3604
|
const ordType = this.safeString(params, 'ordType');
|
|
3603
|
-
const stop = this.
|
|
3605
|
+
const stop = this.safeValue2(params, 'stop', 'trigger');
|
|
3604
3606
|
if (stop || (ordType in algoOrderTypes)) {
|
|
3605
3607
|
method = 'privateGetTradeOrdersAlgoPending';
|
|
3606
3608
|
if (stop) {
|
|
@@ -3609,7 +3611,7 @@ export default class okx extends Exchange {
|
|
|
3609
3611
|
}
|
|
3610
3612
|
}
|
|
3611
3613
|
}
|
|
3612
|
-
const query = this.omit(params, ['method', 'stop']);
|
|
3614
|
+
const query = this.omit(params, ['method', 'stop', 'trigger']);
|
|
3613
3615
|
let response = undefined;
|
|
3614
3616
|
if (method === 'privateGetTradeOrdersAlgoPending') {
|
|
3615
3617
|
response = await this.privateGetTradeOrdersAlgoPending(this.extend(request, query));
|
|
@@ -3762,7 +3764,7 @@ export default class okx extends Exchange {
|
|
|
3762
3764
|
const defaultMethod = this.safeString(options, 'method', 'privateGetTradeOrdersHistory');
|
|
3763
3765
|
let method = this.safeString(params, 'method', defaultMethod);
|
|
3764
3766
|
const ordType = this.safeString(params, 'ordType');
|
|
3765
|
-
const stop = this.
|
|
3767
|
+
const stop = this.safeValue2(params, 'stop', 'trigger');
|
|
3766
3768
|
if (stop || (ordType in algoOrderTypes)) {
|
|
3767
3769
|
method = 'privateGetTradeOrdersAlgoHistory';
|
|
3768
3770
|
const algoId = this.safeString(params, 'algoId');
|
|
@@ -3787,7 +3789,7 @@ export default class okx extends Exchange {
|
|
|
3787
3789
|
query = this.omit(query, ['until', 'till']);
|
|
3788
3790
|
}
|
|
3789
3791
|
}
|
|
3790
|
-
const send = this.omit(query, ['method', 'stop', 'ordType']);
|
|
3792
|
+
const send = this.omit(query, ['method', 'stop', 'ordType', 'trigger']);
|
|
3791
3793
|
let response = undefined;
|
|
3792
3794
|
if (method === 'privateGetTradeOrdersAlgoHistory') {
|
|
3793
3795
|
response = await this.privateGetTradeOrdersAlgoHistory(this.extend(request, send));
|
|
@@ -3904,6 +3906,7 @@ export default class okx extends Exchange {
|
|
|
3904
3906
|
* @description fetches information on multiple closed orders made by the user
|
|
3905
3907
|
* @see https://www.okx.com/docs-v5/en/#order-book-trading-trade-get-order-history-last-7-days
|
|
3906
3908
|
* @see https://www.okx.com/docs-v5/en/#order-book-trading-algo-trading-get-algo-order-history
|
|
3909
|
+
* @see https://www.okx.com/docs-v5/en/#order-book-trading-trade-get-order-history-last-3-months
|
|
3907
3910
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
3908
3911
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
3909
3912
|
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
@@ -3913,6 +3916,7 @@ export default class okx extends Exchange {
|
|
|
3913
3916
|
* @param {string} [params.algoId] Algo ID "'433845797218942976'"
|
|
3914
3917
|
* @param {int} [params.until] timestamp in ms to fetch orders for
|
|
3915
3918
|
* @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
|
3919
|
+
* @param {string} [params.method] method to be used, either 'privateGetTradeOrdersHistory', 'privateGetTradeOrdersHistoryArchive' or 'privateGetTradeOrdersAlgoHistory' default is 'privateGetTradeOrdersHistory'
|
|
3916
3920
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
3917
3921
|
*/
|
|
3918
3922
|
await this.loadMarkets();
|
|
@@ -3949,7 +3953,7 @@ export default class okx extends Exchange {
|
|
|
3949
3953
|
const defaultMethod = this.safeString(options, 'method', 'privateGetTradeOrdersHistory');
|
|
3950
3954
|
let method = this.safeString(params, 'method', defaultMethod);
|
|
3951
3955
|
const ordType = this.safeString(params, 'ordType');
|
|
3952
|
-
const stop = this.
|
|
3956
|
+
const stop = this.safeValue2(params, 'stop', 'trigger');
|
|
3953
3957
|
if (stop || (ordType in algoOrderTypes)) {
|
|
3954
3958
|
method = 'privateGetTradeOrdersAlgoHistory';
|
|
3955
3959
|
if (stop) {
|
|
@@ -3970,11 +3974,14 @@ export default class okx extends Exchange {
|
|
|
3970
3974
|
}
|
|
3971
3975
|
request['state'] = 'filled';
|
|
3972
3976
|
}
|
|
3973
|
-
const send = this.omit(query, ['method', 'stop']);
|
|
3977
|
+
const send = this.omit(query, ['method', 'stop', 'trigger']);
|
|
3974
3978
|
let response = undefined;
|
|
3975
3979
|
if (method === 'privateGetTradeOrdersAlgoHistory') {
|
|
3976
3980
|
response = await this.privateGetTradeOrdersAlgoHistory(this.extend(request, send));
|
|
3977
3981
|
}
|
|
3982
|
+
else if (method === 'privateGetTradeOrdersHistoryArchive') {
|
|
3983
|
+
response = await this.privateGetTradeOrdersHistoryArchive(this.extend(request, send));
|
|
3984
|
+
}
|
|
3978
3985
|
else {
|
|
3979
3986
|
response = await this.privateGetTradeOrdersHistory(this.extend(request, send));
|
|
3980
3987
|
}
|
package/js/src/phemex.js
CHANGED
|
@@ -1488,7 +1488,7 @@ export default class phemex extends Exchange {
|
|
|
1488
1488
|
if (type === 'spot') {
|
|
1489
1489
|
response = await this.v1GetMdSpotTicker24hrAll(query);
|
|
1490
1490
|
}
|
|
1491
|
-
else if (subType === 'inverse' || market
|
|
1491
|
+
else if (subType === 'inverse' || this.safeString(market, 'settle') === 'USD') {
|
|
1492
1492
|
response = await this.v1GetMdTicker24hrAll(query);
|
|
1493
1493
|
}
|
|
1494
1494
|
else {
|
package/js/src/pro/bingx.js
CHANGED
|
@@ -33,6 +33,7 @@ export default class bingx extends bingxRest {
|
|
|
33
33
|
},
|
|
34
34
|
},
|
|
35
35
|
'options': {
|
|
36
|
+
'listenKeyRefreshRate': 3540000,
|
|
36
37
|
'ws': {
|
|
37
38
|
'gunzip': true,
|
|
38
39
|
},
|
|
@@ -630,7 +631,7 @@ export default class bingx extends bingxRest {
|
|
|
630
631
|
const lastAuthenticatedTime = this.safeInteger(this.options, 'lastAuthenticatedTime', 0);
|
|
631
632
|
const listenKeyRefreshRate = this.safeInteger(this.options, 'listenKeyRefreshRate', 3600000); // 1 hour
|
|
632
633
|
if (time - lastAuthenticatedTime > listenKeyRefreshRate) {
|
|
633
|
-
const response = await this.
|
|
634
|
+
const response = await this.userAuthPrivatePutUserDataStream({ 'listenKey': listenKey }); // extend the expiry
|
|
634
635
|
this.options['listenKey'] = this.safeString(response, 'listenKey');
|
|
635
636
|
this.options['lastAuthenticatedTime'] = time;
|
|
636
637
|
}
|
package/js/src/pro/bybit.js
CHANGED
|
@@ -211,7 +211,7 @@ export default class bybit extends bybitRest {
|
|
|
211
211
|
*/
|
|
212
212
|
await this.loadMarkets();
|
|
213
213
|
symbols = this.marketSymbols(symbols, undefined, false);
|
|
214
|
-
const
|
|
214
|
+
const messageHashes = [];
|
|
215
215
|
const url = this.getUrlByMarketType(symbols[0], false, params);
|
|
216
216
|
params = this.cleanParams(params);
|
|
217
217
|
const options = this.safeValue(this.options, 'watchTickers', {});
|
|
@@ -221,8 +221,9 @@ export default class bybit extends bybitRest {
|
|
|
221
221
|
for (let i = 0; i < marketIds.length; i++) {
|
|
222
222
|
const marketId = marketIds[i];
|
|
223
223
|
topics.push(topic + '.' + marketId);
|
|
224
|
+
messageHashes.push('ticker:' + symbols[i]);
|
|
224
225
|
}
|
|
225
|
-
const ticker = await this.watchTopics(url,
|
|
226
|
+
const ticker = await this.watchTopics(url, messageHashes, topics, params);
|
|
226
227
|
if (this.newUpdates) {
|
|
227
228
|
return ticker;
|
|
228
229
|
}
|
|
@@ -358,17 +359,6 @@ export default class bybit extends bybitRest {
|
|
|
358
359
|
this.tickers[symbol] = parsed;
|
|
359
360
|
const messageHash = 'ticker:' + symbol;
|
|
360
361
|
client.resolve(this.tickers[symbol], messageHash);
|
|
361
|
-
// watchTickers part
|
|
362
|
-
const messageHashes = this.findMessageHashes(client, 'tickers::');
|
|
363
|
-
for (let i = 0; i < messageHashes.length; i++) {
|
|
364
|
-
const messageHashTicker = messageHashes[i];
|
|
365
|
-
const parts = messageHashTicker.split('::');
|
|
366
|
-
const symbolsString = parts[1];
|
|
367
|
-
const symbols = symbolsString.split(',');
|
|
368
|
-
if (this.inArray(parsed['symbol'], symbols)) {
|
|
369
|
-
client.resolve(parsed, messageHashTicker);
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
362
|
}
|
|
373
363
|
async watchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
|
|
374
364
|
/**
|
package/package.json
CHANGED