ccxt 4.2.14 → 4.2.15
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 +184 -30
- package/dist/ccxt.browser.min.js +3 -3
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/js/ccxt.js +1 -1
- package/dist/cjs/js/src/binance.js +2 -2
- package/dist/cjs/js/src/bingx.js +4 -3
- package/dist/cjs/js/src/bitget.js +3 -3
- package/dist/cjs/js/src/bybit.js +3 -3
- package/dist/cjs/js/src/coinex.js +3 -3
- package/dist/cjs/js/src/gate.js +3 -3
- package/dist/cjs/js/src/htx.js +2 -2
- package/dist/cjs/js/src/kraken.js +24 -2
- package/dist/cjs/js/src/kucoin.js +1 -1
- package/dist/cjs/js/src/kucoinfutures.js +2 -2
- package/dist/cjs/js/src/okx.js +1 -1
- package/dist/cjs/js/src/pro/htx.js +6 -1
- package/dist/cjs/js/src/pro/woo.js +126 -0
- package/dist/cjs/js/src/woo.js +3 -3
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/binance.js +2 -2
- package/js/src/bingx.js +4 -3
- package/js/src/bitget.js +3 -3
- package/js/src/bybit.js +3 -3
- package/js/src/coinex.js +3 -3
- package/js/src/gate.js +3 -3
- package/js/src/htx.js +2 -2
- package/js/src/kraken.d.ts +1 -0
- package/js/src/kraken.js +24 -2
- package/js/src/kucoin.js +1 -1
- package/js/src/kucoinfutures.js +2 -2
- package/js/src/okx.js +1 -1
- package/js/src/pro/htx.js +6 -1
- package/js/src/pro/woo.d.ts +5 -1
- package/js/src/pro/woo.js +127 -1
- package/js/src/woo.js +3 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -209,13 +209,13 @@ console.log(version, Object.keys(exchanges));
|
|
|
209
209
|
|
|
210
210
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
|
211
211
|
|
|
212
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.
|
|
213
|
-
* unpkg: https://unpkg.com/ccxt@4.2.
|
|
212
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.15/dist/ccxt.browser.js
|
|
213
|
+
* unpkg: https://unpkg.com/ccxt@4.2.15/dist/ccxt.browser.js
|
|
214
214
|
|
|
215
215
|
CDNs are not updated in real-time and may have delays. Defaulting to the most recent version without specifying the version number is not recommended. Please, keep in mind that we are not responsible for the correct operation of those CDN servers.
|
|
216
216
|
|
|
217
217
|
```HTML
|
|
218
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.
|
|
218
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.15/dist/ccxt.browser.js"></script>
|
|
219
219
|
```
|
|
220
220
|
|
|
221
221
|
Creates a global `ccxt` object:
|
package/dist/ccxt.browser.js
CHANGED
|
@@ -17751,12 +17751,12 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
17751
17751
|
'createPostOnlyOrder': true,
|
|
17752
17752
|
'createReduceOnlyOrder': true,
|
|
17753
17753
|
'createStopLimitOrder': true,
|
|
17754
|
+
'createStopLossOrder': true,
|
|
17754
17755
|
'createStopMarketOrder': false,
|
|
17755
17756
|
'createStopOrder': true,
|
|
17757
|
+
'createTakeProfitOrder': true,
|
|
17756
17758
|
'createTrailingPercentOrder': true,
|
|
17757
17759
|
'createTriggerOrder': true,
|
|
17758
|
-
'createTakeProfitOrder': true,
|
|
17759
|
-
'createStopLossOrder': true,
|
|
17760
17760
|
'editOrder': true,
|
|
17761
17761
|
'fetchAccounts': undefined,
|
|
17762
17762
|
'fetchBalance': true,
|
|
@@ -27806,12 +27806,12 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
27806
27806
|
'createMarketSellOrderWithCost': true,
|
|
27807
27807
|
'createOrder': true,
|
|
27808
27808
|
'createOrders': true,
|
|
27809
|
+
'createOrderWithTakeProfitAndStopLoss': true,
|
|
27810
|
+
'createStopLossOrder': true,
|
|
27811
|
+
'createTakeProfitOrder': true,
|
|
27809
27812
|
'createTrailingAmountOrder': true,
|
|
27810
27813
|
'createTrailingPercentOrder': true,
|
|
27811
27814
|
'createTriggerOrder': true,
|
|
27812
|
-
'createTakeProfitOrder': true,
|
|
27813
|
-
'createStopLossOrder': true,
|
|
27814
|
-
'createOrderWithTakeProfitAndStopLoss': true,
|
|
27815
27815
|
'fetchBalance': true,
|
|
27816
27816
|
'fetchClosedOrders': true,
|
|
27817
27817
|
'fetchCurrencies': true,
|
|
@@ -28131,6 +28131,7 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
28131
28131
|
'80016': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFound,
|
|
28132
28132
|
'80017': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFound,
|
|
28133
28133
|
'100414': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AccountSuspended,
|
|
28134
|
+
'100419': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
|
|
28134
28135
|
'100437': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest, // {"code":100437,"msg":"The withdrawal amount is lower than the minimum limit, please re-enter.","timestamp":1689258588845}
|
|
28135
28136
|
},
|
|
28136
28137
|
'broad': {},
|
|
@@ -41440,12 +41441,12 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
41440
41441
|
'createMarketSellOrderWithCost': false,
|
|
41441
41442
|
'createOrder': true,
|
|
41442
41443
|
'createOrders': true,
|
|
41444
|
+
'createOrderWithTakeProfitAndStopLoss': true,
|
|
41443
41445
|
'createReduceOnlyOrder': false,
|
|
41446
|
+
'createStopLossOrder': true,
|
|
41447
|
+
'createTakeProfitOrder': true,
|
|
41444
41448
|
'createTrailingPercentOrder': true,
|
|
41445
41449
|
'createTriggerOrder': true,
|
|
41446
|
-
'createTakeProfitOrder': true,
|
|
41447
|
-
'createStopLossOrder': true,
|
|
41448
|
-
'createOrderWithTakeProfitAndStopLoss': true,
|
|
41449
41450
|
'editOrder': true,
|
|
41450
41451
|
'fetchAccounts': false,
|
|
41451
41452
|
'fetchBalance': true,
|
|
@@ -78793,16 +78794,16 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
78793
78794
|
'createMarketSellOrderWithCost': false,
|
|
78794
78795
|
'createOrder': true,
|
|
78795
78796
|
'createOrders': true,
|
|
78797
|
+
'createOrderWithTakeProfitAndStopLoss': true,
|
|
78796
78798
|
'createPostOnlyOrder': true,
|
|
78797
78799
|
'createReduceOnlyOrder': true,
|
|
78798
78800
|
'createStopLimitOrder': true,
|
|
78801
|
+
'createStopLossOrder': true,
|
|
78799
78802
|
'createStopMarketOrder': true,
|
|
78800
78803
|
'createStopOrder': true,
|
|
78804
|
+
'createTakeProfitOrder': true,
|
|
78801
78805
|
'createTrailingAmountOrder': true,
|
|
78802
78806
|
'createTriggerOrder': true,
|
|
78803
|
-
'createTakeProfitOrder': true,
|
|
78804
|
-
'createStopLossOrder': true,
|
|
78805
|
-
'createOrderWithTakeProfitAndStopLoss': true,
|
|
78806
78807
|
'editOrder': true,
|
|
78807
78808
|
'fetchBalance': true,
|
|
78808
78809
|
'fetchBorrowInterest': false,
|
|
@@ -94330,12 +94331,12 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
94330
94331
|
'createMarketBuyOrderWithCost': true,
|
|
94331
94332
|
'createMarketOrderWithCost': false,
|
|
94332
94333
|
'createMarketSellOrderWithCost': false,
|
|
94333
|
-
'createTriggerOrder': true,
|
|
94334
|
-
'createTakeProfitOrder': true,
|
|
94335
|
-
'createStopLossOrder': true,
|
|
94336
94334
|
'createOrder': true,
|
|
94337
94335
|
'createOrders': true,
|
|
94338
94336
|
'createReduceOnlyOrder': true,
|
|
94337
|
+
'createStopLossOrder': true,
|
|
94338
|
+
'createTakeProfitOrder': true,
|
|
94339
|
+
'createTriggerOrder': true,
|
|
94339
94340
|
'editOrder': true,
|
|
94340
94341
|
'fetchBalance': true,
|
|
94341
94342
|
'fetchBorrowInterest': true,
|
|
@@ -125502,11 +125503,11 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
125502
125503
|
'createPostOnlyOrder': true,
|
|
125503
125504
|
'createReduceOnlyOrder': true,
|
|
125504
125505
|
'createStopLimitOrder': true,
|
|
125505
|
-
'createStopMarketOrder': false,
|
|
125506
|
-
'createTriggerOrder': true,
|
|
125507
|
-
'createTakeProfitOrder': true,
|
|
125508
125506
|
'createStopLossOrder': true,
|
|
125507
|
+
'createStopMarketOrder': false,
|
|
125509
125508
|
'createStopOrder': true,
|
|
125509
|
+
'createTakeProfitOrder': true,
|
|
125510
|
+
'createTriggerOrder': true,
|
|
125510
125511
|
'editOrder': true,
|
|
125511
125512
|
'fetchBalance': true,
|
|
125512
125513
|
'fetchBorrowRateHistories': false,
|
|
@@ -139965,12 +139966,12 @@ class htx extends _abstract_htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
139965
139966
|
'createOrders': true,
|
|
139966
139967
|
'createReduceOnlyOrder': false,
|
|
139967
139968
|
'createStopLimitOrder': true,
|
|
139969
|
+
'createStopLossOrder': true,
|
|
139968
139970
|
'createStopMarketOrder': true,
|
|
139969
139971
|
'createStopOrder': true,
|
|
139972
|
+
'createTakeProfitOrder': true,
|
|
139970
139973
|
'createTrailingPercentOrder': true,
|
|
139971
139974
|
'createTriggerOrder': true,
|
|
139972
|
-
'createTakeProfitOrder': true,
|
|
139973
|
-
'createStopLossOrder': true,
|
|
139974
139975
|
'fetchAccounts': true,
|
|
139975
139976
|
'fetchBalance': true,
|
|
139976
139977
|
'fetchBidsAsks': undefined,
|
|
@@ -156124,6 +156125,16 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
156124
156125
|
};
|
|
156125
156126
|
return this.safeString(statuses, status, status);
|
|
156126
156127
|
}
|
|
156128
|
+
parseOrderType(status) {
|
|
156129
|
+
const statuses = {
|
|
156130
|
+
'take-profit': 'market',
|
|
156131
|
+
'stop-loss-limit': 'limit',
|
|
156132
|
+
'stop-loss': 'market',
|
|
156133
|
+
'take-profit-limit': 'limit',
|
|
156134
|
+
'trailing-stop-limit': 'limit',
|
|
156135
|
+
};
|
|
156136
|
+
return this.safeString(statuses, status, status);
|
|
156137
|
+
}
|
|
156127
156138
|
parseOrder(order, market = undefined) {
|
|
156128
156139
|
//
|
|
156129
156140
|
// createOrder for regular orders
|
|
@@ -156266,7 +156277,17 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
156266
156277
|
trades.push(rawTrade);
|
|
156267
156278
|
}
|
|
156268
156279
|
}
|
|
156269
|
-
stopPrice = this.
|
|
156280
|
+
stopPrice = this.omitZero(this.safeString(order, 'stopprice', stopPrice));
|
|
156281
|
+
let stopLossPrice = undefined;
|
|
156282
|
+
let takeProfitPrice = undefined;
|
|
156283
|
+
if (type.startsWith('take-profit')) {
|
|
156284
|
+
takeProfitPrice = this.safeString(description, 'price');
|
|
156285
|
+
price = this.omitZero(this.safeString(description, 'price2'));
|
|
156286
|
+
}
|
|
156287
|
+
else if (type.startsWith('stop-loss')) {
|
|
156288
|
+
stopLossPrice = this.safeString(description, 'price');
|
|
156289
|
+
price = this.omitZero(this.safeString(description, 'price2'));
|
|
156290
|
+
}
|
|
156270
156291
|
return this.safeOrder({
|
|
156271
156292
|
'id': id,
|
|
156272
156293
|
'clientOrderId': clientOrderId,
|
|
@@ -156276,13 +156297,15 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
156276
156297
|
'lastTradeTimestamp': undefined,
|
|
156277
156298
|
'status': status,
|
|
156278
156299
|
'symbol': symbol,
|
|
156279
|
-
'type': type,
|
|
156300
|
+
'type': this.parseOrderType(type),
|
|
156280
156301
|
'timeInForce': undefined,
|
|
156281
156302
|
'postOnly': isPostOnly,
|
|
156282
156303
|
'side': side,
|
|
156283
156304
|
'price': price,
|
|
156284
156305
|
'stopPrice': stopPrice,
|
|
156285
156306
|
'triggerPrice': stopPrice,
|
|
156307
|
+
'takeProfitPrice': takeProfitPrice,
|
|
156308
|
+
'stopLossPrice': stopLossPrice,
|
|
156286
156309
|
'cost': undefined,
|
|
156287
156310
|
'amount': amount,
|
|
156288
156311
|
'filled': filled,
|
|
@@ -160029,8 +160052,8 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
160029
160052
|
'createPostOnlyOrder': true,
|
|
160030
160053
|
'createStopLimitOrder': true,
|
|
160031
160054
|
'createStopMarketOrder': true,
|
|
160032
|
-
'createTriggerOrder': true,
|
|
160033
160055
|
'createStopOrder': true,
|
|
160056
|
+
'createTriggerOrder': true,
|
|
160034
160057
|
'editOrder': true,
|
|
160035
160058
|
'fetchAccounts': true,
|
|
160036
160059
|
'fetchBalance': true,
|
|
@@ -164522,11 +164545,11 @@ class kucoinfutures extends _abstract_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_
|
|
|
164522
164545
|
'createOrders': true,
|
|
164523
164546
|
'createReduceOnlyOrder': true,
|
|
164524
164547
|
'createStopLimitOrder': true,
|
|
164548
|
+
'createStopLossOrder': true,
|
|
164525
164549
|
'createStopMarketOrder': true,
|
|
164526
164550
|
'createStopOrder': true,
|
|
164527
|
-
'createTriggerOrder': true,
|
|
164528
164551
|
'createTakeProfitOrder': true,
|
|
164529
|
-
'
|
|
164552
|
+
'createTriggerOrder': true,
|
|
164530
164553
|
'fetchAccounts': true,
|
|
164531
164554
|
'fetchBalance': true,
|
|
164532
164555
|
'fetchBorrowRateHistories': false,
|
|
@@ -190445,8 +190468,8 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
190445
190468
|
'createOrderWithTakeProfitAndStopLoss': true,
|
|
190446
190469
|
'createPostOnlyOrder': true,
|
|
190447
190470
|
'createReduceOnlyOrder': true,
|
|
190448
|
-
'createStopLossOrder': true,
|
|
190449
190471
|
'createStopLimitOrder': true,
|
|
190472
|
+
'createStopLossOrder': true,
|
|
190450
190473
|
'createStopMarketOrder': true,
|
|
190451
190474
|
'createStopOrder': true,
|
|
190452
190475
|
'createTakeProfitOrder': true,
|
|
@@ -239023,11 +239046,16 @@ class htx extends _htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
|
239023
239046
|
// inject trade in existing order by faking an order object
|
|
239024
239047
|
const orderId = this.safeString(parsedTrade, 'order');
|
|
239025
239048
|
const trades = [parsedTrade];
|
|
239049
|
+
const status = this.parseOrderStatus(this.safeString2(data, 'orderStatus', 'status', 'closed'));
|
|
239050
|
+
const filled = this.safeString(data, 'execAmt');
|
|
239051
|
+
const remaining = this.safeString(data, 'remainAmt');
|
|
239026
239052
|
const order = {
|
|
239027
239053
|
'id': orderId,
|
|
239028
239054
|
'trades': trades,
|
|
239029
|
-
'status':
|
|
239055
|
+
'status': status,
|
|
239030
239056
|
'symbol': market['symbol'],
|
|
239057
|
+
'filled': this.parseNumber(filled),
|
|
239058
|
+
'remaining': this.parseNumber(remaining),
|
|
239031
239059
|
};
|
|
239032
239060
|
parsedOrder = order;
|
|
239033
239061
|
}
|
|
@@ -257898,6 +257926,7 @@ class woo extends _woo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
|
257898
257926
|
'watchTicker': true,
|
|
257899
257927
|
'watchTickers': true,
|
|
257900
257928
|
'watchTrades': true,
|
|
257929
|
+
'watchPositions': true,
|
|
257901
257930
|
},
|
|
257902
257931
|
'urls': {
|
|
257903
257932
|
'api': {
|
|
@@ -257922,6 +257951,10 @@ class woo extends _woo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
|
257922
257951
|
'tradesLimit': 1000,
|
|
257923
257952
|
'ordersLimit': 1000,
|
|
257924
257953
|
'requestId': {},
|
|
257954
|
+
'watchPositions': {
|
|
257955
|
+
'fetchPositionsSnapshot': true,
|
|
257956
|
+
'awaitPositionsSnapshot': true, // whether to wait for the positions snapshot before providing updates
|
|
257957
|
+
},
|
|
257925
257958
|
},
|
|
257926
257959
|
'streaming': {
|
|
257927
257960
|
'ping': this.ping,
|
|
@@ -258480,6 +258513,126 @@ class woo extends _woo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
|
258480
258513
|
client.resolve(this.orders, messageHashSymbol);
|
|
258481
258514
|
}
|
|
258482
258515
|
}
|
|
258516
|
+
async watchPositions(symbols = undefined, since = undefined, limit = undefined, params = {}) {
|
|
258517
|
+
/**
|
|
258518
|
+
* @method
|
|
258519
|
+
* @name woo#watchPositions
|
|
258520
|
+
* @see https://docs.woo.org/#position-push
|
|
258521
|
+
* @description watch all open positions
|
|
258522
|
+
* @param {string[]|undefined} symbols list of unified market symbols
|
|
258523
|
+
* @param {object} params extra parameters specific to the exchange API endpoint
|
|
258524
|
+
* @returns {object[]} a list of [position structure]{@link https://docs.ccxt.com/en/latest/manual.html#position-structure}
|
|
258525
|
+
*/
|
|
258526
|
+
await this.loadMarkets();
|
|
258527
|
+
let messageHash = '';
|
|
258528
|
+
symbols = this.marketSymbols(symbols);
|
|
258529
|
+
if (!this.isEmpty(symbols)) {
|
|
258530
|
+
messageHash = '::' + symbols.join(',');
|
|
258531
|
+
}
|
|
258532
|
+
messageHash = 'positions' + messageHash;
|
|
258533
|
+
const url = this.urls['api']['ws']['private'] + '/' + this.uid;
|
|
258534
|
+
const client = this.client(url);
|
|
258535
|
+
this.setPositionsCache(client, symbols);
|
|
258536
|
+
const fetchPositionsSnapshot = this.handleOption('watchPositions', 'fetchPositionsSnapshot', true);
|
|
258537
|
+
const awaitPositionsSnapshot = this.safeValue('watchPositions', 'awaitPositionsSnapshot', true);
|
|
258538
|
+
if (fetchPositionsSnapshot && awaitPositionsSnapshot && this.positions === undefined) {
|
|
258539
|
+
const snapshot = await client.future('fetchPositionsSnapshot');
|
|
258540
|
+
return this.filterBySymbolsSinceLimit(snapshot, symbols, since, limit, true);
|
|
258541
|
+
}
|
|
258542
|
+
const request = {
|
|
258543
|
+
'event': 'subscribe',
|
|
258544
|
+
'topic': 'position',
|
|
258545
|
+
};
|
|
258546
|
+
const newPositions = await this.watchPrivate(messageHash, request, params);
|
|
258547
|
+
if (this.newUpdates) {
|
|
258548
|
+
return newPositions;
|
|
258549
|
+
}
|
|
258550
|
+
return this.filterBySymbolsSinceLimit(this.positions, symbols, since, limit, true);
|
|
258551
|
+
}
|
|
258552
|
+
setPositionsCache(client, type, symbols = undefined) {
|
|
258553
|
+
const fetchPositionsSnapshot = this.handleOption('watchPositions', 'fetchPositionsSnapshot', false);
|
|
258554
|
+
if (fetchPositionsSnapshot) {
|
|
258555
|
+
const messageHash = 'fetchPositionsSnapshot';
|
|
258556
|
+
if (!(messageHash in client.futures)) {
|
|
258557
|
+
client.future(messageHash);
|
|
258558
|
+
this.spawn(this.loadPositionsSnapshot, client, messageHash);
|
|
258559
|
+
}
|
|
258560
|
+
}
|
|
258561
|
+
else {
|
|
258562
|
+
this.positions = new _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_2__/* .ArrayCacheBySymbolBySide */ .tU();
|
|
258563
|
+
}
|
|
258564
|
+
}
|
|
258565
|
+
async loadPositionsSnapshot(client, messageHash) {
|
|
258566
|
+
const positions = await this.fetchPositions();
|
|
258567
|
+
this.positions = new _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_2__/* .ArrayCacheBySymbolBySide */ .tU();
|
|
258568
|
+
const cache = this.positions;
|
|
258569
|
+
for (let i = 0; i < positions.length; i++) {
|
|
258570
|
+
const position = positions[i];
|
|
258571
|
+
const contracts = this.safeNumber(position, 'contracts', 0);
|
|
258572
|
+
if (contracts > 0) {
|
|
258573
|
+
cache.append(position);
|
|
258574
|
+
}
|
|
258575
|
+
}
|
|
258576
|
+
// don't remove the future from the .futures cache
|
|
258577
|
+
const future = client.futures[messageHash];
|
|
258578
|
+
future.resolve(cache);
|
|
258579
|
+
client.resolve(cache, 'positions');
|
|
258580
|
+
}
|
|
258581
|
+
handlePositions(client, message) {
|
|
258582
|
+
//
|
|
258583
|
+
// {
|
|
258584
|
+
// "topic":"position",
|
|
258585
|
+
// "ts":1705292345255,
|
|
258586
|
+
// "data":{
|
|
258587
|
+
// "positions":{
|
|
258588
|
+
// "PERP_LTC_USDT":{
|
|
258589
|
+
// "holding":1,
|
|
258590
|
+
// "pendingLongQty":0,
|
|
258591
|
+
// "pendingShortQty":0,
|
|
258592
|
+
// "averageOpenPrice":71.53,
|
|
258593
|
+
// "pnl24H":0,
|
|
258594
|
+
// "fee24H":0.07153,
|
|
258595
|
+
// "settlePrice":71.53,
|
|
258596
|
+
// "markPrice":71.32098452065145,
|
|
258597
|
+
// "version":7886,
|
|
258598
|
+
// "openingTime":1705292304267,
|
|
258599
|
+
// "pnl24HPercentage":0,
|
|
258600
|
+
// "adlQuantile":1,
|
|
258601
|
+
// "positionSide":"BOTH"
|
|
258602
|
+
// }
|
|
258603
|
+
// }
|
|
258604
|
+
// }
|
|
258605
|
+
// }
|
|
258606
|
+
//
|
|
258607
|
+
const data = this.safeValue(message, 'data', {});
|
|
258608
|
+
const rawPositions = this.safeValue(data, 'positions', {});
|
|
258609
|
+
const postitionsIds = Object.keys(rawPositions);
|
|
258610
|
+
if (this.positions === undefined) {
|
|
258611
|
+
this.positions = new _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_2__/* .ArrayCacheBySymbolBySide */ .tU();
|
|
258612
|
+
}
|
|
258613
|
+
const cache = this.positions;
|
|
258614
|
+
const newPositions = [];
|
|
258615
|
+
for (let i = 0; i < postitionsIds.length; i++) {
|
|
258616
|
+
const marketId = postitionsIds[i];
|
|
258617
|
+
const market = this.safeMarket(marketId);
|
|
258618
|
+
const rawPosition = rawPositions[marketId];
|
|
258619
|
+
const position = this.parsePosition(rawPosition, market);
|
|
258620
|
+
newPositions.push(position);
|
|
258621
|
+
cache.append(position);
|
|
258622
|
+
}
|
|
258623
|
+
const messageHashes = this.findMessageHashes(client, 'positions::');
|
|
258624
|
+
for (let i = 0; i < messageHashes.length; i++) {
|
|
258625
|
+
const messageHash = messageHashes[i];
|
|
258626
|
+
const parts = messageHash.split('::');
|
|
258627
|
+
const symbolsString = parts[1];
|
|
258628
|
+
const symbols = symbolsString.split(',');
|
|
258629
|
+
const positions = this.filterByArray(newPositions, 'symbol', symbols, false);
|
|
258630
|
+
if (!this.isEmpty(positions)) {
|
|
258631
|
+
client.resolve(positions, messageHash);
|
|
258632
|
+
}
|
|
258633
|
+
}
|
|
258634
|
+
client.resolve(newPositions, 'positions');
|
|
258635
|
+
}
|
|
258483
258636
|
async watchBalance(params = {}) {
|
|
258484
258637
|
/**
|
|
258485
258638
|
* @method
|
|
@@ -258563,6 +258716,7 @@ class woo extends _woo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
|
258563
258716
|
'executionreport': this.handleOrderUpdate,
|
|
258564
258717
|
'trade': this.handleTrade,
|
|
258565
258718
|
'balance': this.handleBalance,
|
|
258719
|
+
'position': this.handlePositions,
|
|
258566
258720
|
};
|
|
258567
258721
|
const event = this.safeString(message, 'event');
|
|
258568
258722
|
let method = this.safeValue(methods, event);
|
|
@@ -281383,16 +281537,16 @@ class woo extends _abstract_woo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
281383
281537
|
'createMarketOrderWithCost': false,
|
|
281384
281538
|
'createMarketSellOrderWithCost': false,
|
|
281385
281539
|
'createOrder': true,
|
|
281540
|
+
'createOrderWithTakeProfitAndStopLoss': true,
|
|
281386
281541
|
'createReduceOnlyOrder': true,
|
|
281387
281542
|
'createStopLimitOrder': false,
|
|
281543
|
+
'createStopLossOrder': true,
|
|
281388
281544
|
'createStopMarketOrder': false,
|
|
281389
281545
|
'createStopOrder': false,
|
|
281546
|
+
'createTakeProfitOrder': true,
|
|
281390
281547
|
'createTrailingAmountOrder': true,
|
|
281391
281548
|
'createTrailingPercentOrder': true,
|
|
281392
281549
|
'createTriggerOrder': true,
|
|
281393
|
-
'createTakeProfitOrder': true,
|
|
281394
|
-
'createStopLossOrder': true,
|
|
281395
|
-
'createOrderWithTakeProfitAndStopLoss': true,
|
|
281396
281550
|
'fetchAccounts': true,
|
|
281397
281551
|
'fetchBalance': true,
|
|
281398
281552
|
'fetchCanceledOrders': false,
|
|
@@ -293626,7 +293780,7 @@ SOFTWARE.
|
|
|
293626
293780
|
|
|
293627
293781
|
//-----------------------------------------------------------------------------
|
|
293628
293782
|
// this is updated by vss.js when building
|
|
293629
|
-
const version = '4.2.
|
|
293783
|
+
const version = '4.2.15';
|
|
293630
293784
|
_src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion = version;
|
|
293631
293785
|
//-----------------------------------------------------------------------------
|
|
293632
293786
|
|