ccxt 4.5.10 → 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 +32 -33
- package/dist/ccxt.browser.min.js +3 -3
- package/dist/cjs/ccxt.js +1 -6
- package/dist/cjs/src/apex.js +9 -0
- package/dist/cjs/src/base/Exchange.js +15 -3
- package/dist/cjs/src/base/functions/throttle.js +1 -1
- package/dist/cjs/src/binance.js +1 -1
- package/dist/cjs/src/bingx.js +1 -1
- package/dist/cjs/src/bitfinex.js +4 -2
- package/dist/cjs/src/bitget.js +20 -2
- package/dist/cjs/src/bitmart.js +2 -2
- package/dist/cjs/src/btcmarkets.js +4 -2
- package/dist/cjs/src/bybit.js +28 -7
- package/dist/cjs/src/coinbase.js +1 -0
- package/dist/cjs/src/coincatch.js +2 -1
- package/dist/cjs/src/deribit.js +21 -19
- package/dist/cjs/src/kraken.js +4 -0
- package/dist/cjs/src/krakenfutures.js +26 -5
- package/dist/cjs/src/kucoin.js +1 -1
- package/dist/cjs/src/latoken.js +1 -0
- package/dist/cjs/src/mexc.js +1 -0
- package/dist/cjs/src/okx.js +18 -9
- package/dist/cjs/src/onetrading.js +2 -1
- package/dist/cjs/src/phemex.js +1 -0
- 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 +10 -3
- package/dist/cjs/src/pro/coinbase.js +8 -7
- package/dist/cjs/src/pro/htx.js +22 -3
- package/dist/cjs/src/pro/hyperliquid.js +4 -0
- package/dist/cjs/src/pro/kraken.js +282 -458
- package/dist/cjs/src/pro/mexc.js +16 -11
- package/dist/cjs/src/pro/woo.js +48 -4
- package/dist/cjs/src/probit.js +1 -1
- package/dist/cjs/src/woo.js +20 -2
- package/dist/cjs/src/xt.js +1 -1
- package/js/ccxt.d.ts +2 -8
- package/js/ccxt.js +2 -6
- package/js/src/abstract/coinbase.d.ts +1 -0
- package/js/src/abstract/coinbaseadvanced.d.ts +1 -0
- package/js/src/abstract/phemex.d.ts +1 -0
- package/js/src/abstract/xt.d.ts +1 -1
- package/js/src/apex.js +9 -0
- package/js/src/base/Exchange.d.ts +5 -2
- package/js/src/base/Exchange.js +15 -3
- package/js/src/base/functions/throttle.js +1 -1
- package/js/src/binance.js +1 -1
- package/js/src/bingx.js +1 -1
- package/js/src/bitfinex.d.ts +1 -1
- package/js/src/bitfinex.js +4 -2
- package/js/src/bitget.d.ts +15 -2
- package/js/src/bitget.js +20 -2
- package/js/src/bithumb.d.ts +1 -1
- package/js/src/bitmart.js +2 -2
- package/js/src/bitmex.d.ts +1 -1
- package/js/src/bitopro.d.ts +1 -1
- package/js/src/bitso.d.ts +1 -1
- package/js/src/bittrade.d.ts +1 -1
- package/js/src/blofin.d.ts +1 -1
- package/js/src/btcmarkets.d.ts +1 -1
- package/js/src/btcmarkets.js +4 -2
- package/js/src/bybit.d.ts +1 -1
- package/js/src/bybit.js +28 -7
- package/js/src/coinbase.d.ts +1 -1
- package/js/src/coinbase.js +1 -0
- package/js/src/coincatch.js +2 -1
- package/js/src/coinex.d.ts +1 -1
- package/js/src/cryptocom.d.ts +1 -1
- package/js/src/deribit.js +21 -19
- package/js/src/digifinex.d.ts +1 -1
- package/js/src/hibachi.d.ts +1 -1
- package/js/src/htx.d.ts +1 -1
- package/js/src/hyperliquid.d.ts +1 -1
- package/js/src/kraken.d.ts +1 -1
- package/js/src/kraken.js +4 -0
- package/js/src/krakenfutures.js +26 -5
- package/js/src/kucoin.js +1 -1
- package/js/src/kucoinfutures.d.ts +1 -1
- package/js/src/latoken.js +1 -0
- package/js/src/mexc.d.ts +1 -1
- package/js/src/mexc.js +1 -0
- package/js/src/oceanex.d.ts +1 -1
- package/js/src/okx.d.ts +1 -1
- package/js/src/okx.js +18 -9
- package/js/src/onetrading.d.ts +1 -1
- package/js/src/onetrading.js +2 -1
- package/js/src/phemex.js +1 -0
- 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.d.ts +1 -0
- package/js/src/pro/bitget.js +10 -3
- package/js/src/pro/bitvavo.d.ts +2 -2
- package/js/src/pro/coinbase.js +8 -7
- package/js/src/pro/htx.js +22 -3
- package/js/src/pro/hyperliquid.js +4 -0
- package/js/src/pro/kraken.d.ts +7 -8
- package/js/src/pro/kraken.js +282 -458
- package/js/src/pro/mexc.js +16 -11
- package/js/src/pro/woo.js +48 -4
- package/js/src/probit.js +1 -1
- package/js/src/timex.d.ts +1 -1
- package/js/src/woo.js +20 -2
- package/js/src/xt.js +1 -1
- package/package.json +1 -1
- package/js/src/abstract/okcoin.d.ts +0 -77
- package/js/src/abstract/okcoin.js +0 -11
- package/js/src/okcoin.d.ts +0 -346
- package/js/src/okcoin.js +0 -3214
- package/js/src/pro/okcoin.d.ts +0 -91
- package/js/src/pro/okcoin.js +0 -763
|
@@ -1488,7 +1488,8 @@ class onetrading extends onetrading$1["default"] {
|
|
|
1488
1488
|
// "a10e9bd1-8f72-4cfe-9f1b-7f1c8a9bd8ee"
|
|
1489
1489
|
// ]
|
|
1490
1490
|
//
|
|
1491
|
-
|
|
1491
|
+
const order = this.safeOrder({ 'info': response });
|
|
1492
|
+
return [order];
|
|
1492
1493
|
}
|
|
1493
1494
|
/**
|
|
1494
1495
|
* @method
|
package/dist/cjs/src/phemex.js
CHANGED
|
@@ -192,6 +192,7 @@ class phemex extends phemex$1["default"] {
|
|
|
192
192
|
'accounts/accountPositions': 1,
|
|
193
193
|
'g-accounts/accountPositions': 1,
|
|
194
194
|
'g-accounts/positions': 25,
|
|
195
|
+
'g-accounts/risk-unit': 1,
|
|
195
196
|
'api-data/futures/funding-fees': 5,
|
|
196
197
|
'api-data/g-futures/funding-fees': 5,
|
|
197
198
|
'api-data/futures/orders': 5,
|
|
@@ -13,15 +13,31 @@ class alpaca extends alpaca$1["default"] {
|
|
|
13
13
|
return this.deepExtend(super.describe(), {
|
|
14
14
|
'has': {
|
|
15
15
|
'ws': true,
|
|
16
|
+
'createOrderWithTakeProfitAndStopLossWs': false,
|
|
17
|
+
'createReduceOnlyOrderWs': false,
|
|
18
|
+
'createStopLossOrderWs': false,
|
|
19
|
+
'createTakeProfitOrderWs': false,
|
|
20
|
+
'fetchPositionForSymbolWs': false,
|
|
21
|
+
'fetchPositionsForSymbolWs': false,
|
|
22
|
+
'fetchPositionsWs': false,
|
|
23
|
+
'fetchPositionWs': false,
|
|
24
|
+
'unWatchPositions': false,
|
|
16
25
|
'watchBalance': false,
|
|
26
|
+
'watchLiquidations': false,
|
|
27
|
+
'watchLiquidationsForSymbols': false,
|
|
28
|
+
'watchMarkPrice': false,
|
|
29
|
+
'watchMarkPrices': false,
|
|
30
|
+
'watchMyLiquidations': false,
|
|
31
|
+
'watchMyLiquidationsForSymbols': false,
|
|
17
32
|
'watchMyTrades': true,
|
|
18
33
|
'watchOHLCV': true,
|
|
19
34
|
'watchOrderBook': true,
|
|
20
35
|
'watchOrders': true,
|
|
36
|
+
'watchPosition': false,
|
|
37
|
+
'watchPositions': false,
|
|
21
38
|
'watchTicker': true,
|
|
22
39
|
'watchTickers': false,
|
|
23
40
|
'watchTrades': true,
|
|
24
|
-
'watchPosition': false,
|
|
25
41
|
},
|
|
26
42
|
'urls': {
|
|
27
43
|
'api': {
|
package/dist/cjs/src/pro/apex.js
CHANGED
|
@@ -944,6 +944,7 @@ class apex extends apex$1["default"] {
|
|
|
944
944
|
'recentlyTrade': this.handleTrades,
|
|
945
945
|
'pong': this.handlePong,
|
|
946
946
|
'auth': this.handleAuthenticate,
|
|
947
|
+
'ping': this.handlePing,
|
|
947
948
|
};
|
|
948
949
|
const exacMethod = this.safeValue(methods, topic);
|
|
949
950
|
if (exacMethod !== undefined) {
|
|
@@ -973,6 +974,19 @@ class apex extends apex$1["default"] {
|
|
|
973
974
|
'op': 'ping',
|
|
974
975
|
};
|
|
975
976
|
}
|
|
977
|
+
async pong(client, message) {
|
|
978
|
+
//
|
|
979
|
+
// {"op": "ping", "args": ["1761069137485"]}
|
|
980
|
+
//
|
|
981
|
+
const timeStamp = this.milliseconds();
|
|
982
|
+
try {
|
|
983
|
+
await client.send({ 'args': [timeStamp.toString()], 'op': 'pong' });
|
|
984
|
+
}
|
|
985
|
+
catch (e) {
|
|
986
|
+
const error = new errors.NetworkError(this.id + ' handlePing failed with error ' + this.json(e));
|
|
987
|
+
client.reset(error);
|
|
988
|
+
}
|
|
989
|
+
}
|
|
976
990
|
handlePong(client, message) {
|
|
977
991
|
//
|
|
978
992
|
// {
|
|
@@ -987,6 +1001,9 @@ class apex extends apex$1["default"] {
|
|
|
987
1001
|
client.lastPong = this.safeInteger(message, 'pong');
|
|
988
1002
|
return message;
|
|
989
1003
|
}
|
|
1004
|
+
handlePing(client, message) {
|
|
1005
|
+
this.spawn(this.pong, client, message);
|
|
1006
|
+
}
|
|
990
1007
|
handleAccount(client, message) {
|
|
991
1008
|
const contents = this.safeDict(message, 'contents', {});
|
|
992
1009
|
const fills = this.safeList(contents, 'fills', []);
|
|
@@ -424,7 +424,7 @@ class binance extends binance$1["default"] {
|
|
|
424
424
|
// }
|
|
425
425
|
//
|
|
426
426
|
const marketId = this.safeString(liquidation, 's');
|
|
427
|
-
market = this.safeMarket(marketId, market);
|
|
427
|
+
market = this.safeMarket(marketId, market, undefined, 'swap');
|
|
428
428
|
const timestamp = this.safeInteger(liquidation, 'T');
|
|
429
429
|
return this.safeLiquidation({
|
|
430
430
|
'info': liquidation,
|
|
@@ -546,8 +546,8 @@ class binance extends binance$1["default"] {
|
|
|
546
546
|
return;
|
|
547
547
|
}
|
|
548
548
|
const marketId = this.safeString(message, 's');
|
|
549
|
-
const market = this.safeMarket(marketId);
|
|
550
|
-
const symbol = this.safeSymbol(marketId);
|
|
549
|
+
const market = this.safeMarket(marketId, undefined, undefined, 'swap');
|
|
550
|
+
const symbol = this.safeSymbol(marketId, market);
|
|
551
551
|
const liquidation = this.parseWsLiquidation(message, market);
|
|
552
552
|
let myLiquidations = this.safeValue(this.myLiquidations, symbol);
|
|
553
553
|
if (myLiquidations === undefined) {
|
|
@@ -921,7 +921,7 @@ class binance extends binance$1["default"] {
|
|
|
921
921
|
// }
|
|
922
922
|
//
|
|
923
923
|
const isSpot = this.isSpotUrl(client);
|
|
924
|
-
const marketType = (isSpot) ? 'spot' : '
|
|
924
|
+
const marketType = (isSpot) ? 'spot' : 'swap';
|
|
925
925
|
const marketId = this.safeString(message, 's');
|
|
926
926
|
const market = this.safeMarket(marketId, undefined, undefined, marketType);
|
|
927
927
|
const symbol = market['symbol'];
|
|
@@ -4025,7 +4025,7 @@ class binance extends binance$1["default"] {
|
|
|
4025
4025
|
return this.safePosition({
|
|
4026
4026
|
'info': position,
|
|
4027
4027
|
'id': undefined,
|
|
4028
|
-
'symbol': this.safeSymbol(marketId, undefined, undefined, '
|
|
4028
|
+
'symbol': this.safeSymbol(marketId, undefined, undefined, 'swap'),
|
|
4029
4029
|
'notional': undefined,
|
|
4030
4030
|
'marginMode': this.safeString(position, 'mt'),
|
|
4031
4031
|
'liquidationPrice': undefined,
|
|
@@ -1492,6 +1492,7 @@ class bitget extends bitget$1["default"] {
|
|
|
1492
1492
|
* @name bitget#watchOrders
|
|
1493
1493
|
* @description watches information on multiple orders made by the user
|
|
1494
1494
|
* @see https://www.bitget.com/api-doc/spot/websocket/private/Order-Channel
|
|
1495
|
+
* @see https://www.bitget.com/api-doc/spot/websocket/private/Plan-Order-Channel
|
|
1495
1496
|
* @see https://www.bitget.com/api-doc/contract/websocket/private/Order-Channel
|
|
1496
1497
|
* @see https://www.bitget.com/api-doc/contract/websocket/private/Plan-Order-Channel
|
|
1497
1498
|
* @see https://www.bitget.com/api-doc/margin/cross/websocket/private/Cross-Orders
|
|
@@ -2743,7 +2744,9 @@ class bitget extends bitget$1["default"] {
|
|
|
2743
2744
|
delete client.subscriptions[messageHash];
|
|
2744
2745
|
}
|
|
2745
2746
|
const error = new errors.UnsubscribeError(this.id + ' orderbook ' + symbol);
|
|
2746
|
-
client.
|
|
2747
|
+
if (subMessageHash in client.futures) {
|
|
2748
|
+
client.reject(error, subMessageHash);
|
|
2749
|
+
}
|
|
2747
2750
|
client.resolve(true, messageHash);
|
|
2748
2751
|
}
|
|
2749
2752
|
handleTradesUnSubscription(client, message) {
|
|
@@ -2768,7 +2771,9 @@ class bitget extends bitget$1["default"] {
|
|
|
2768
2771
|
delete client.subscriptions[messageHash];
|
|
2769
2772
|
}
|
|
2770
2773
|
const error = new errors.UnsubscribeError(this.id + ' trades ' + symbol);
|
|
2771
|
-
client.
|
|
2774
|
+
if (subMessageHash in client.futures) {
|
|
2775
|
+
client.reject(error, subMessageHash);
|
|
2776
|
+
}
|
|
2772
2777
|
client.resolve(true, messageHash);
|
|
2773
2778
|
}
|
|
2774
2779
|
handleTickerUnSubscription(client, message) {
|
|
@@ -2793,7 +2798,9 @@ class bitget extends bitget$1["default"] {
|
|
|
2793
2798
|
delete client.subscriptions[messageHash];
|
|
2794
2799
|
}
|
|
2795
2800
|
const error = new errors.UnsubscribeError(this.id + ' ticker ' + symbol);
|
|
2796
|
-
client.
|
|
2801
|
+
if (subMessageHash in client.futures) {
|
|
2802
|
+
client.reject(error, subMessageHash);
|
|
2803
|
+
}
|
|
2797
2804
|
client.resolve(true, messageHash);
|
|
2798
2805
|
}
|
|
2799
2806
|
handleOHLCVUnSubscription(client, message) {
|
|
@@ -773,8 +773,9 @@ class coinbase extends coinbase$1["default"] {
|
|
|
773
773
|
const id = this.safeString(order, 'order_id');
|
|
774
774
|
const clientOrderId = this.safeString(order, 'client_order_id');
|
|
775
775
|
const marketId = this.safeString(order, 'product_id');
|
|
776
|
-
const datetime = this.
|
|
776
|
+
const datetime = this.safeString2(order, 'time', 'creation_time');
|
|
777
777
|
market = this.safeMarket(marketId, market);
|
|
778
|
+
const stopPrice = this.safeString(order, 'stop_price');
|
|
778
779
|
return this.safeOrder({
|
|
779
780
|
'info': order,
|
|
780
781
|
'symbol': this.safeString(market, 'symbol'),
|
|
@@ -786,12 +787,12 @@ class coinbase extends coinbase$1["default"] {
|
|
|
786
787
|
'type': this.safeString(order, 'order_type'),
|
|
787
788
|
'timeInForce': undefined,
|
|
788
789
|
'postOnly': undefined,
|
|
789
|
-
'side': this.
|
|
790
|
-
'price':
|
|
791
|
-
'stopPrice':
|
|
792
|
-
'triggerPrice':
|
|
793
|
-
'amount':
|
|
794
|
-
'cost':
|
|
790
|
+
'side': this.safeString2(order, 'side', 'order_side'),
|
|
791
|
+
'price': this.safeString(order, 'limit_price'),
|
|
792
|
+
'stopPrice': stopPrice,
|
|
793
|
+
'triggerPrice': stopPrice,
|
|
794
|
+
'amount': this.safeString(order, 'cumulative_quantity'),
|
|
795
|
+
'cost': this.omitZero(this.safeString(order, 'filled_value')),
|
|
795
796
|
'average': this.safeString(order, 'avg_price'),
|
|
796
797
|
'filled': this.safeString(order, 'cumulative_quantity'),
|
|
797
798
|
'remaining': this.safeString(order, 'leaves_quantity'),
|
package/dist/cjs/src/pro/htx.js
CHANGED
|
@@ -928,24 +928,40 @@ class htx extends htx$1["default"] {
|
|
|
928
928
|
//
|
|
929
929
|
// spot
|
|
930
930
|
//
|
|
931
|
+
// for new order creation
|
|
932
|
+
//
|
|
931
933
|
// {
|
|
932
934
|
// "action":"push",
|
|
933
935
|
// "ch":"orders#btcusdt", // or "orders#*" for global subscriptions
|
|
934
936
|
// "data": {
|
|
937
|
+
// "orderStatus": "submitted",
|
|
938
|
+
// "eventType": "creation",
|
|
939
|
+
// "totalTradeAmount": 0 // for "submitted" order status
|
|
940
|
+
// "orderCreateTime": 1645116048355, // only when `submitted` status
|
|
935
941
|
// "orderSource": "spot-web",
|
|
936
|
-
// "orderCreateTime": 1645116048355,
|
|
937
942
|
// "accountId": 44234548,
|
|
938
943
|
// "orderPrice": "100",
|
|
939
944
|
// "orderSize": "0.05",
|
|
940
945
|
// "symbol": "ethusdt",
|
|
941
946
|
// "type": "buy-limit",
|
|
942
947
|
// "orderId": "478861479986886",
|
|
943
|
-
// "eventType": "creation",
|
|
944
948
|
// "clientOrderId": '',
|
|
945
|
-
// "orderStatus": "submitted"
|
|
946
949
|
// }
|
|
947
950
|
// }
|
|
948
951
|
//
|
|
952
|
+
// for filled order, additional fields are present:
|
|
953
|
+
//
|
|
954
|
+
// "orderStatus": "filled",
|
|
955
|
+
// "eventType": "trade",
|
|
956
|
+
// "totalTradeAmount": "5.9892649859",
|
|
957
|
+
// "tradePrice": "0.676669",
|
|
958
|
+
// "tradeVolume": "8.8511",
|
|
959
|
+
// "tradeTime": 1760427775894,
|
|
960
|
+
// "aggressor": false,
|
|
961
|
+
// "execAmt": "8.8511",
|
|
962
|
+
// "tradeId": 100599712781,
|
|
963
|
+
// "remainAmt": "0",
|
|
964
|
+
//
|
|
949
965
|
// spot wrapped trade
|
|
950
966
|
//
|
|
951
967
|
// {
|
|
@@ -1057,6 +1073,9 @@ class htx extends htx$1["default"] {
|
|
|
1057
1073
|
'symbol': market['symbol'],
|
|
1058
1074
|
'filled': this.parseNumber(filled),
|
|
1059
1075
|
'remaining': this.parseNumber(remaining),
|
|
1076
|
+
'price': this.safeNumber(data, 'orderPrice'),
|
|
1077
|
+
'amount': this.safeNumber(data, 'orderSize'),
|
|
1078
|
+
'info': data,
|
|
1060
1079
|
};
|
|
1061
1080
|
parsedOrder = order;
|
|
1062
1081
|
}
|
|
@@ -453,8 +453,10 @@ class hyperliquid extends hyperliquid$1["default"] {
|
|
|
453
453
|
const assetObject = spotAssets[i];
|
|
454
454
|
const marketId = this.safeString(assetObject, 'coin');
|
|
455
455
|
const market = this.safeMarket(marketId, undefined, undefined, 'spot');
|
|
456
|
+
const symbol = market['symbol'];
|
|
456
457
|
const ticker = this.parseWsTicker(assetObject, market);
|
|
457
458
|
parsedTickers.push(ticker);
|
|
459
|
+
this.tickers[symbol] = ticker;
|
|
458
460
|
}
|
|
459
461
|
// perpetuals
|
|
460
462
|
const meta = this.safeDict(rawData, 'meta', {});
|
|
@@ -464,7 +466,9 @@ class hyperliquid extends hyperliquid$1["default"] {
|
|
|
464
466
|
const data = this.extend(this.safeDict(universe, i, {}), this.safeDict(assetCtxs, i, {}));
|
|
465
467
|
const id = data['name'] + '/USDC:USDC';
|
|
466
468
|
const market = this.safeMarket(id, undefined, undefined, 'swap');
|
|
469
|
+
const symbol = market['symbol'];
|
|
467
470
|
const ticker = this.parseWsTicker(data, market);
|
|
471
|
+
this.tickers[symbol] = ticker;
|
|
468
472
|
parsedTickers.push(ticker);
|
|
469
473
|
}
|
|
470
474
|
const tickers = this.indexBy(parsedTickers, 'symbol');
|