ccxt 4.5.11 → 4.5.12
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 +30 -30
- package/dist/ccxt.browser.min.js +3 -3
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/apex.js +9 -0
- package/dist/cjs/src/base/Exchange.js +1 -1
- package/dist/cjs/src/base/functions/throttle.js +1 -1
- package/dist/cjs/src/binance.js +1 -1
- package/dist/cjs/src/bitget.js +15 -0
- package/dist/cjs/src/bitmart.js +2 -2
- package/dist/cjs/src/bybit.js +28 -7
- package/dist/cjs/src/coincatch.js +2 -1
- package/dist/cjs/src/krakenfutures.js +26 -5
- package/dist/cjs/src/okx.js +18 -9
- package/dist/cjs/src/pro/alpaca.js +17 -1
- package/dist/cjs/src/pro/apex.js +17 -0
- package/dist/cjs/src/pro/binance.js +5 -5
- package/dist/cjs/src/pro/bitget.js +9 -3
- package/dist/cjs/src/pro/coinbase.js +8 -7
- package/dist/cjs/src/pro/hyperliquid.js +4 -0
- package/dist/cjs/src/pro/mexc.js +1 -1
- package/dist/cjs/src/pro/woo.js +48 -4
- package/dist/cjs/src/woo.js +20 -2
- package/dist/cjs/src/xt.js +1 -1
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/xt.d.ts +1 -1
- package/js/src/apex.js +9 -0
- package/js/src/base/Exchange.js +1 -1
- package/js/src/base/functions/throttle.js +1 -1
- package/js/src/binance.js +1 -1
- package/js/src/bitget.d.ts +14 -1
- package/js/src/bitget.js +15 -0
- package/js/src/bitmart.js +2 -2
- package/js/src/bybit.js +28 -7
- package/js/src/coincatch.js +2 -1
- package/js/src/krakenfutures.js +26 -5
- package/js/src/okx.js +18 -9
- package/js/src/pro/alpaca.js +17 -1
- package/js/src/pro/apex.d.ts +2 -0
- package/js/src/pro/apex.js +18 -1
- package/js/src/pro/binance.js +5 -5
- package/js/src/pro/bitget.js +9 -3
- package/js/src/pro/coinbase.js +8 -7
- package/js/src/pro/hyperliquid.js +4 -0
- package/js/src/pro/mexc.js +1 -1
- package/js/src/pro/woo.js +48 -4
- package/js/src/woo.js +20 -2
- package/js/src/xt.js +1 -1
- package/package.json +1 -1
package/js/src/pro/binance.js
CHANGED
|
@@ -425,7 +425,7 @@ export default class binance extends binanceRest {
|
|
|
425
425
|
// }
|
|
426
426
|
//
|
|
427
427
|
const marketId = this.safeString(liquidation, 's');
|
|
428
|
-
market = this.safeMarket(marketId, market);
|
|
428
|
+
market = this.safeMarket(marketId, market, undefined, 'swap');
|
|
429
429
|
const timestamp = this.safeInteger(liquidation, 'T');
|
|
430
430
|
return this.safeLiquidation({
|
|
431
431
|
'info': liquidation,
|
|
@@ -547,8 +547,8 @@ export default class binance extends binanceRest {
|
|
|
547
547
|
return;
|
|
548
548
|
}
|
|
549
549
|
const marketId = this.safeString(message, 's');
|
|
550
|
-
const market = this.safeMarket(marketId);
|
|
551
|
-
const symbol = this.safeSymbol(marketId);
|
|
550
|
+
const market = this.safeMarket(marketId, undefined, undefined, 'swap');
|
|
551
|
+
const symbol = this.safeSymbol(marketId, market);
|
|
552
552
|
const liquidation = this.parseWsLiquidation(message, market);
|
|
553
553
|
let myLiquidations = this.safeValue(this.myLiquidations, symbol);
|
|
554
554
|
if (myLiquidations === undefined) {
|
|
@@ -922,7 +922,7 @@ export default class binance extends binanceRest {
|
|
|
922
922
|
// }
|
|
923
923
|
//
|
|
924
924
|
const isSpot = this.isSpotUrl(client);
|
|
925
|
-
const marketType = (isSpot) ? 'spot' : '
|
|
925
|
+
const marketType = (isSpot) ? 'spot' : 'swap';
|
|
926
926
|
const marketId = this.safeString(message, 's');
|
|
927
927
|
const market = this.safeMarket(marketId, undefined, undefined, marketType);
|
|
928
928
|
const symbol = market['symbol'];
|
|
@@ -4029,7 +4029,7 @@ export default class binance extends binanceRest {
|
|
|
4029
4029
|
return this.safePosition({
|
|
4030
4030
|
'info': position,
|
|
4031
4031
|
'id': undefined,
|
|
4032
|
-
'symbol': this.safeSymbol(marketId, undefined, undefined, '
|
|
4032
|
+
'symbol': this.safeSymbol(marketId, undefined, undefined, 'swap'),
|
|
4033
4033
|
'notional': undefined,
|
|
4034
4034
|
'marginMode': this.safeString(position, 'mt'),
|
|
4035
4035
|
'liquidationPrice': undefined,
|
package/js/src/pro/bitget.js
CHANGED
|
@@ -2751,7 +2751,9 @@ export default class bitget extends bitgetRest {
|
|
|
2751
2751
|
delete client.subscriptions[messageHash];
|
|
2752
2752
|
}
|
|
2753
2753
|
const error = new UnsubscribeError(this.id + ' orderbook ' + symbol);
|
|
2754
|
-
client.
|
|
2754
|
+
if (subMessageHash in client.futures) {
|
|
2755
|
+
client.reject(error, subMessageHash);
|
|
2756
|
+
}
|
|
2755
2757
|
client.resolve(true, messageHash);
|
|
2756
2758
|
}
|
|
2757
2759
|
handleTradesUnSubscription(client, message) {
|
|
@@ -2776,7 +2778,9 @@ export default class bitget extends bitgetRest {
|
|
|
2776
2778
|
delete client.subscriptions[messageHash];
|
|
2777
2779
|
}
|
|
2778
2780
|
const error = new UnsubscribeError(this.id + ' trades ' + symbol);
|
|
2779
|
-
client.
|
|
2781
|
+
if (subMessageHash in client.futures) {
|
|
2782
|
+
client.reject(error, subMessageHash);
|
|
2783
|
+
}
|
|
2780
2784
|
client.resolve(true, messageHash);
|
|
2781
2785
|
}
|
|
2782
2786
|
handleTickerUnSubscription(client, message) {
|
|
@@ -2801,7 +2805,9 @@ export default class bitget extends bitgetRest {
|
|
|
2801
2805
|
delete client.subscriptions[messageHash];
|
|
2802
2806
|
}
|
|
2803
2807
|
const error = new UnsubscribeError(this.id + ' ticker ' + symbol);
|
|
2804
|
-
client.
|
|
2808
|
+
if (subMessageHash in client.futures) {
|
|
2809
|
+
client.reject(error, subMessageHash);
|
|
2810
|
+
}
|
|
2805
2811
|
client.resolve(true, messageHash);
|
|
2806
2812
|
}
|
|
2807
2813
|
handleOHLCVUnSubscription(client, message) {
|
package/js/src/pro/coinbase.js
CHANGED
|
@@ -776,8 +776,9 @@ export default class coinbase extends coinbaseRest {
|
|
|
776
776
|
const id = this.safeString(order, 'order_id');
|
|
777
777
|
const clientOrderId = this.safeString(order, 'client_order_id');
|
|
778
778
|
const marketId = this.safeString(order, 'product_id');
|
|
779
|
-
const datetime = this.
|
|
779
|
+
const datetime = this.safeString2(order, 'time', 'creation_time');
|
|
780
780
|
market = this.safeMarket(marketId, market);
|
|
781
|
+
const stopPrice = this.safeString(order, 'stop_price');
|
|
781
782
|
return this.safeOrder({
|
|
782
783
|
'info': order,
|
|
783
784
|
'symbol': this.safeString(market, 'symbol'),
|
|
@@ -789,12 +790,12 @@ export default class coinbase extends coinbaseRest {
|
|
|
789
790
|
'type': this.safeString(order, 'order_type'),
|
|
790
791
|
'timeInForce': undefined,
|
|
791
792
|
'postOnly': undefined,
|
|
792
|
-
'side': this.
|
|
793
|
-
'price':
|
|
794
|
-
'stopPrice':
|
|
795
|
-
'triggerPrice':
|
|
796
|
-
'amount':
|
|
797
|
-
'cost':
|
|
793
|
+
'side': this.safeString2(order, 'side', 'order_side'),
|
|
794
|
+
'price': this.safeString(order, 'limit_price'),
|
|
795
|
+
'stopPrice': stopPrice,
|
|
796
|
+
'triggerPrice': stopPrice,
|
|
797
|
+
'amount': this.safeString(order, 'cumulative_quantity'),
|
|
798
|
+
'cost': this.omitZero(this.safeString(order, 'filled_value')),
|
|
798
799
|
'average': this.safeString(order, 'avg_price'),
|
|
799
800
|
'filled': this.safeString(order, 'cumulative_quantity'),
|
|
800
801
|
'remaining': this.safeString(order, 'leaves_quantity'),
|
|
@@ -454,8 +454,10 @@ export default class hyperliquid extends hyperliquidRest {
|
|
|
454
454
|
const assetObject = spotAssets[i];
|
|
455
455
|
const marketId = this.safeString(assetObject, 'coin');
|
|
456
456
|
const market = this.safeMarket(marketId, undefined, undefined, 'spot');
|
|
457
|
+
const symbol = market['symbol'];
|
|
457
458
|
const ticker = this.parseWsTicker(assetObject, market);
|
|
458
459
|
parsedTickers.push(ticker);
|
|
460
|
+
this.tickers[symbol] = ticker;
|
|
459
461
|
}
|
|
460
462
|
// perpetuals
|
|
461
463
|
const meta = this.safeDict(rawData, 'meta', {});
|
|
@@ -465,7 +467,9 @@ export default class hyperliquid extends hyperliquidRest {
|
|
|
465
467
|
const data = this.extend(this.safeDict(universe, i, {}), this.safeDict(assetCtxs, i, {}));
|
|
466
468
|
const id = data['name'] + '/USDC:USDC';
|
|
467
469
|
const market = this.safeMarket(id, undefined, undefined, 'swap');
|
|
470
|
+
const symbol = market['symbol'];
|
|
468
471
|
const ticker = this.parseWsTicker(data, market);
|
|
472
|
+
this.tickers[symbol] = ticker;
|
|
469
473
|
parsedTickers.push(ticker);
|
|
470
474
|
}
|
|
471
475
|
const tickers = this.indexBy(parsedTickers, 'symbol');
|
package/js/src/pro/mexc.js
CHANGED
|
@@ -114,7 +114,7 @@ export default class mexc extends mexcRest {
|
|
|
114
114
|
// "symbol": "BTC_USDT",
|
|
115
115
|
// "data": {
|
|
116
116
|
// "symbol": "BTC_USDT",
|
|
117
|
-
// "lastPrice": 76376.
|
|
117
|
+
// "lastPrice": 76376.1,
|
|
118
118
|
// "riseFallRate": -0.0006,
|
|
119
119
|
// "fairPrice": 76374.4,
|
|
120
120
|
// "indexPrice": 76385.8,
|
package/js/src/pro/woo.js
CHANGED
|
@@ -977,8 +977,50 @@ export default class woo extends wooRest {
|
|
|
977
977
|
// "reduceOnly": false,
|
|
978
978
|
// "maker": false
|
|
979
979
|
// }
|
|
980
|
+
// {
|
|
981
|
+
// "symbol": "SPOT_BTC_USDT",
|
|
982
|
+
// "rootAlgoOrderId": 2573778,
|
|
983
|
+
// "parentAlgoOrderId": 0,
|
|
984
|
+
// "algoOrderId": 2573778,
|
|
985
|
+
// "clientOrderId": 0,
|
|
986
|
+
// "orderTag": "default",
|
|
987
|
+
// "algoType": "STOP_LOSS",
|
|
988
|
+
// "side": "SELL",
|
|
989
|
+
// "quantity": 0.00011,
|
|
990
|
+
// "triggerPrice": 98566.67,
|
|
991
|
+
// "triggerStatus": "USELESS",
|
|
992
|
+
// "price": 0,
|
|
993
|
+
// "type": "MARKET",
|
|
994
|
+
// "triggerTradePrice": 0,
|
|
995
|
+
// "triggerTime": 0,
|
|
996
|
+
// "tradeId": 0,
|
|
997
|
+
// "executedPrice": 0,
|
|
998
|
+
// "executedQuantity": 0,
|
|
999
|
+
// "fee": 0,
|
|
1000
|
+
// "reason": "",
|
|
1001
|
+
// "feeAsset": "",
|
|
1002
|
+
// "totalExecutedQuantity": 0,
|
|
1003
|
+
// "averageExecutedPrice": 0,
|
|
1004
|
+
// "totalFee": 0,
|
|
1005
|
+
// "timestamp": 1761030467426,
|
|
1006
|
+
// "visibleQuantity": 0,
|
|
1007
|
+
// "reduceOnly": false,
|
|
1008
|
+
// "triggerPriceType": "MARKET_PRICE",
|
|
1009
|
+
// "positionSide": "BOTH",
|
|
1010
|
+
// "feeCurrency": "",
|
|
1011
|
+
// "totalRebate": 0.0,
|
|
1012
|
+
// "rebateCurrency": "",
|
|
1013
|
+
// "triggered": false,
|
|
1014
|
+
// "maker": false,
|
|
1015
|
+
// "activated": false,
|
|
1016
|
+
// "isTriggered": false,
|
|
1017
|
+
// "isMaker": false,
|
|
1018
|
+
// "isActivated": false,
|
|
1019
|
+
// "rootAlgoStatus": "NEW",
|
|
1020
|
+
// "algoStatus": "NEW"
|
|
1021
|
+
// }
|
|
980
1022
|
//
|
|
981
|
-
const orderId = this.
|
|
1023
|
+
const orderId = this.safeString2(order, 'orderId', 'algoOrderId');
|
|
982
1024
|
const marketId = this.safeString(order, 'symbol');
|
|
983
1025
|
market = this.market(marketId);
|
|
984
1026
|
const symbol = market['symbol'];
|
|
@@ -1002,10 +1044,11 @@ export default class woo extends wooRest {
|
|
|
1002
1044
|
if (amount >= totalExecQuantity) {
|
|
1003
1045
|
remaining -= totalExecQuantity;
|
|
1004
1046
|
}
|
|
1005
|
-
const rawStatus = this.
|
|
1047
|
+
const rawStatus = this.safeString2(order, 'status', 'algoStatus');
|
|
1006
1048
|
const status = this.parseOrderStatus(rawStatus);
|
|
1007
1049
|
const trades = undefined;
|
|
1008
1050
|
const clientOrderId = this.safeString(order, 'clientOrderId');
|
|
1051
|
+
const triggerPrice = this.safeString(order, 'triggerPrice');
|
|
1009
1052
|
return this.safeOrder({
|
|
1010
1053
|
'info': order,
|
|
1011
1054
|
'symbol': symbol,
|
|
@@ -1019,8 +1062,9 @@ export default class woo extends wooRest {
|
|
|
1019
1062
|
'postOnly': undefined,
|
|
1020
1063
|
'side': side,
|
|
1021
1064
|
'price': price,
|
|
1022
|
-
'stopPrice':
|
|
1023
|
-
'triggerPrice':
|
|
1065
|
+
'stopPrice': triggerPrice,
|
|
1066
|
+
'triggerPrice': triggerPrice,
|
|
1067
|
+
'reduceOnly': this.safeBool(order, 'reduceOnly'),
|
|
1024
1068
|
'amount': amount,
|
|
1025
1069
|
'cost': undefined,
|
|
1026
1070
|
'average': avgPrice,
|
package/js/src/woo.js
CHANGED
|
@@ -1995,7 +1995,16 @@ export default class woo extends Exchange {
|
|
|
1995
1995
|
// "positionSide": "BOTH"
|
|
1996
1996
|
// }
|
|
1997
1997
|
//
|
|
1998
|
-
let timestamp =
|
|
1998
|
+
let timestamp = undefined;
|
|
1999
|
+
const timestrampString = this.safeString(order, 'createdTime');
|
|
2000
|
+
if (timestrampString !== undefined) {
|
|
2001
|
+
if (timestrampString.indexOf('.') >= 0) {
|
|
2002
|
+
timestamp = this.safeTimestamp(order, 'createdTime'); // algo orders
|
|
2003
|
+
}
|
|
2004
|
+
else {
|
|
2005
|
+
timestamp = this.safeInteger(order, 'createdTime'); // regular orders
|
|
2006
|
+
}
|
|
2007
|
+
}
|
|
1999
2008
|
if (timestamp === undefined) {
|
|
2000
2009
|
timestamp = this.safeInteger(order, 'timestamp');
|
|
2001
2010
|
}
|
|
@@ -2016,7 +2025,16 @@ export default class woo extends Exchange {
|
|
|
2016
2025
|
const fee = this.safeNumber(order, 'totalFee');
|
|
2017
2026
|
const feeCurrency = this.safeString(order, 'feeAsset');
|
|
2018
2027
|
const triggerPrice = this.safeNumber(order, 'triggerPrice');
|
|
2019
|
-
const
|
|
2028
|
+
const lastUpdateTimestampString = this.safeString(order, 'updatedTime');
|
|
2029
|
+
let lastUpdateTimestamp = undefined;
|
|
2030
|
+
if (lastUpdateTimestampString !== undefined) {
|
|
2031
|
+
if (lastUpdateTimestampString.indexOf('.') >= 0) {
|
|
2032
|
+
lastUpdateTimestamp = this.safeTimestamp(order, 'updatedTime'); // algo orders
|
|
2033
|
+
}
|
|
2034
|
+
else {
|
|
2035
|
+
lastUpdateTimestamp = this.safeInteger(order, 'updatedTime'); // regular orders
|
|
2036
|
+
}
|
|
2037
|
+
}
|
|
2020
2038
|
return this.safeOrder({
|
|
2021
2039
|
'id': orderId,
|
|
2022
2040
|
'clientOrderId': clientOrderId,
|
package/js/src/xt.js
CHANGED
package/package.json
CHANGED