ccxt 4.4.91 → 4.4.93
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 +2 -2
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/ascendex.js +9 -8
- package/dist/cjs/src/base/Exchange.js +81 -33
- package/dist/cjs/src/binance.js +44 -1
- package/dist/cjs/src/bitmart.js +7 -0
- package/dist/cjs/src/bitmex.js +4 -4
- package/dist/cjs/src/bitvavo.js +10 -1
- package/dist/cjs/src/bybit.js +83 -8
- package/dist/cjs/src/coinbaseexchange.js +53 -0
- package/dist/cjs/src/coincheck.js +47 -4
- package/dist/cjs/src/coinex.js +19 -14
- package/dist/cjs/src/cryptomus.js +30 -53
- package/dist/cjs/src/deribit.js +6 -6
- package/dist/cjs/src/exmo.js +72 -59
- package/dist/cjs/src/htx.js +1 -1
- package/dist/cjs/src/hyperliquid.js +3 -2
- package/dist/cjs/src/krakenfutures.js +1 -1
- package/dist/cjs/src/kucoin.js +13 -15
- package/dist/cjs/src/latoken.js +19 -74
- package/dist/cjs/src/lbank.js +118 -34
- package/dist/cjs/src/okx.js +158 -2
- package/dist/cjs/src/paradex.js +54 -0
- package/dist/cjs/src/phemex.js +3 -3
- package/dist/cjs/src/pro/bitstamp.js +55 -16
- package/dist/cjs/src/pro/bybit.js +6 -7
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/lbank.d.ts +1 -0
- package/js/src/ascendex.js +9 -8
- package/js/src/base/Exchange.d.ts +5 -1
- package/js/src/base/Exchange.js +81 -33
- package/js/src/binance.d.ts +10 -0
- package/js/src/binance.js +44 -1
- package/js/src/bitmart.d.ts +7 -0
- package/js/src/bitmart.js +7 -0
- package/js/src/bitmex.d.ts +1 -1
- package/js/src/bitmex.js +4 -4
- package/js/src/bitvavo.js +10 -1
- package/js/src/bybit.d.ts +12 -1
- package/js/src/bybit.js +83 -8
- package/js/src/coinbaseexchange.js +53 -0
- package/js/src/coincheck.js +48 -5
- package/js/src/coinex.js +16 -13
- package/js/src/cryptomus.js +30 -53
- package/js/src/deribit.js +6 -6
- package/js/src/exmo.js +72 -59
- package/js/src/htx.js +1 -1
- package/js/src/hyperliquid.js +3 -2
- package/js/src/krakenfutures.js +1 -1
- package/js/src/kucoin.js +13 -15
- package/js/src/latoken.d.ts +0 -1
- package/js/src/latoken.js +19 -74
- package/js/src/lbank.d.ts +9 -1
- package/js/src/lbank.js +118 -34
- package/js/src/okx.d.ts +13 -1
- package/js/src/okx.js +158 -2
- package/js/src/paradex.d.ts +10 -0
- package/js/src/paradex.js +54 -0
- package/js/src/phemex.js +3 -3
- package/js/src/pro/bitstamp.js +55 -16
- package/js/src/pro/bybit.js +7 -8
- package/package.json +1 -1
package/js/src/pro/bitstamp.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import bitstampRest from '../bitstamp.js';
|
|
9
9
|
import { ArgumentsRequired, AuthenticationError } from '../base/errors.js';
|
|
10
10
|
import { ArrayCache, ArrayCacheBySymbolById } from '../base/ws/Cache.js';
|
|
11
|
+
import { Precise } from '../base/Precise.js';
|
|
11
12
|
// ---------------------------------------------------------------------------
|
|
12
13
|
export default class bitstamp extends bitstampRest {
|
|
13
14
|
describe() {
|
|
@@ -309,6 +310,7 @@ export default class bitstamp extends bitstampRest {
|
|
|
309
310
|
// "price_str":"1000.00"
|
|
310
311
|
// },
|
|
311
312
|
// "channel":"private-my_orders_ltcusd-4848701",
|
|
313
|
+
// "event": "order_deleted" // field only present for cancelOrder
|
|
312
314
|
// }
|
|
313
315
|
//
|
|
314
316
|
const channel = this.safeString(message, 'channel');
|
|
@@ -321,29 +323,65 @@ export default class bitstamp extends bitstampRest {
|
|
|
321
323
|
const subscription = this.safeValue(client.subscriptions, channel);
|
|
322
324
|
const symbol = this.safeString(subscription, 'symbol');
|
|
323
325
|
const market = this.market(symbol);
|
|
326
|
+
order['event'] = this.safeString(message, 'event');
|
|
324
327
|
const parsed = this.parseWsOrder(order, market);
|
|
325
328
|
stored.append(parsed);
|
|
326
329
|
client.resolve(this.orders, channel);
|
|
327
330
|
}
|
|
328
331
|
parseWsOrder(order, market = undefined) {
|
|
329
332
|
//
|
|
330
|
-
//
|
|
331
|
-
// "id":"
|
|
332
|
-
// "id_str":"
|
|
333
|
-
// "order_type":
|
|
334
|
-
// "
|
|
335
|
-
// "
|
|
336
|
-
// "
|
|
337
|
-
// "
|
|
338
|
-
// "
|
|
339
|
-
// "
|
|
333
|
+
// {
|
|
334
|
+
// "id": "1894876776091648",
|
|
335
|
+
// "id_str": "1894876776091648",
|
|
336
|
+
// "order_type": 0,
|
|
337
|
+
// "order_subtype": 0,
|
|
338
|
+
// "datetime": "1751451375",
|
|
339
|
+
// "microtimestamp": "1751451375070000",
|
|
340
|
+
// "amount": 1.1,
|
|
341
|
+
// "amount_str": "1.10000000",
|
|
342
|
+
// "amount_traded": "0",
|
|
343
|
+
// "amount_at_create": "1.10000000",
|
|
344
|
+
// "price": 10.23,
|
|
345
|
+
// "price_str": "10.23",
|
|
346
|
+
// "is_liquidation": false,
|
|
347
|
+
// "trade_account_id": 0
|
|
340
348
|
// }
|
|
341
349
|
//
|
|
342
350
|
const id = this.safeString(order, 'id_str');
|
|
343
|
-
const
|
|
351
|
+
const orderTypeRaw = this.safeStringLower(order, 'order_type');
|
|
352
|
+
const side = (orderTypeRaw === '1') ? 'sell' : 'buy';
|
|
353
|
+
const orderSubTypeRaw = this.safeStringLower(order, 'order_subtype'); // https://www.bitstamp.net/websocket/v2/#:~:text=order_subtype
|
|
354
|
+
let orderType = undefined;
|
|
355
|
+
let timeInForce = undefined;
|
|
356
|
+
if (orderSubTypeRaw === '0') {
|
|
357
|
+
orderType = 'limit';
|
|
358
|
+
}
|
|
359
|
+
else if (orderSubTypeRaw === '2') {
|
|
360
|
+
orderType = 'market';
|
|
361
|
+
}
|
|
362
|
+
else if (orderSubTypeRaw === '4') {
|
|
363
|
+
orderType = 'limit';
|
|
364
|
+
timeInForce = 'IOC';
|
|
365
|
+
}
|
|
366
|
+
else if (orderSubTypeRaw === '6') {
|
|
367
|
+
orderType = 'limit';
|
|
368
|
+
timeInForce = 'FOK';
|
|
369
|
+
}
|
|
370
|
+
else if (orderSubTypeRaw === '8') {
|
|
371
|
+
orderType = 'limit';
|
|
372
|
+
timeInForce = 'GTD';
|
|
373
|
+
}
|
|
344
374
|
const price = this.safeString(order, 'price_str');
|
|
345
375
|
const amount = this.safeString(order, 'amount_str');
|
|
346
|
-
const
|
|
376
|
+
const filled = this.safeString(order, 'amount_traded');
|
|
377
|
+
const event = this.safeString(order, 'event');
|
|
378
|
+
let status = undefined;
|
|
379
|
+
if (Precise.stringEq(filled, amount)) {
|
|
380
|
+
status = 'closed';
|
|
381
|
+
}
|
|
382
|
+
else if (event === 'order_deleted') {
|
|
383
|
+
status = 'canceled';
|
|
384
|
+
}
|
|
347
385
|
const timestamp = this.safeTimestamp(order, 'datetime');
|
|
348
386
|
market = this.safeMarket(undefined, market);
|
|
349
387
|
const symbol = market['symbol'];
|
|
@@ -355,8 +393,8 @@ export default class bitstamp extends bitstampRest {
|
|
|
355
393
|
'timestamp': timestamp,
|
|
356
394
|
'datetime': this.iso8601(timestamp),
|
|
357
395
|
'lastTradeTimestamp': undefined,
|
|
358
|
-
'type':
|
|
359
|
-
'timeInForce':
|
|
396
|
+
'type': orderType,
|
|
397
|
+
'timeInForce': timeInForce,
|
|
360
398
|
'postOnly': undefined,
|
|
361
399
|
'side': side,
|
|
362
400
|
'price': price,
|
|
@@ -365,9 +403,9 @@ export default class bitstamp extends bitstampRest {
|
|
|
365
403
|
'amount': amount,
|
|
366
404
|
'cost': undefined,
|
|
367
405
|
'average': undefined,
|
|
368
|
-
'filled':
|
|
406
|
+
'filled': filled,
|
|
369
407
|
'remaining': undefined,
|
|
370
|
-
'status':
|
|
408
|
+
'status': status,
|
|
371
409
|
'fee': undefined,
|
|
372
410
|
'trades': undefined,
|
|
373
411
|
}, market);
|
|
@@ -432,6 +470,7 @@ export default class bitstamp extends bitstampRest {
|
|
|
432
470
|
// "price_str":"1000.00"
|
|
433
471
|
// },
|
|
434
472
|
// "channel":"private-my_orders_ltcusd-4848701",
|
|
473
|
+
// "event": "order_deleted" // field only present for cancelOrder
|
|
435
474
|
// }
|
|
436
475
|
//
|
|
437
476
|
const channel = this.safeString(message, 'channel');
|
package/js/src/pro/bybit.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
// ---------------------------------------------------------------------------
|
|
8
8
|
import bybitRest from '../bybit.js';
|
|
9
|
-
import { ArgumentsRequired, AuthenticationError, ExchangeError, BadRequest } from '../base/errors.js';
|
|
9
|
+
import { ArgumentsRequired, AuthenticationError, ExchangeError, BadRequest, NotSupported } from '../base/errors.js';
|
|
10
10
|
import { ArrayCache, ArrayCacheBySymbolById, ArrayCacheBySymbolBySide, ArrayCacheByTimestamp } from '../base/ws/Cache.js';
|
|
11
11
|
import { sha256 } from '../static_dependencies/noble-hashes/sha256.js';
|
|
12
12
|
// ---------------------------------------------------------------------------
|
|
@@ -1282,11 +1282,10 @@ export default class bybit extends bybitRest {
|
|
|
1282
1282
|
async unWatchMyTrades(symbol = undefined, params = {}) {
|
|
1283
1283
|
const method = 'watchMyTrades';
|
|
1284
1284
|
const messageHash = 'unsubscribe:myTrades';
|
|
1285
|
-
|
|
1285
|
+
const subHash = 'myTrades';
|
|
1286
1286
|
await this.loadMarkets();
|
|
1287
1287
|
if (symbol !== undefined) {
|
|
1288
|
-
|
|
1289
|
-
subHash += ':' + symbol;
|
|
1288
|
+
throw new NotSupported(this.id + ' unWatchMyTrades() does not support a symbol parameter, you must unwatch all my trades');
|
|
1290
1289
|
}
|
|
1291
1290
|
const url = await this.getUrlByMarketType(symbol, true, method, params);
|
|
1292
1291
|
await this.authenticate(url);
|
|
@@ -1731,10 +1730,9 @@ export default class bybit extends bybitRest {
|
|
|
1731
1730
|
await this.loadMarkets();
|
|
1732
1731
|
const method = 'watchOrders';
|
|
1733
1732
|
const messageHash = 'unsubscribe:orders';
|
|
1734
|
-
|
|
1733
|
+
const subHash = 'orders';
|
|
1735
1734
|
if (symbol !== undefined) {
|
|
1736
|
-
|
|
1737
|
-
subHash += ':' + symbol;
|
|
1735
|
+
throw new NotSupported(this.id + ' unWatchOrders() does not support a symbol parameter, you must unwatch all orders');
|
|
1738
1736
|
}
|
|
1739
1737
|
const url = await this.getUrlByMarketType(symbol, true, method, params);
|
|
1740
1738
|
await this.authenticate(url);
|
|
@@ -2483,7 +2481,8 @@ export default class bybit extends bybitRest {
|
|
|
2483
2481
|
for (let j = 0; j < messageHashes.length; j++) {
|
|
2484
2482
|
const unsubHash = messageHashes[j];
|
|
2485
2483
|
const subHash = subMessageHashes[j];
|
|
2486
|
-
|
|
2484
|
+
const usePrefix = (subHash === 'orders') || (subHash === 'myTrades');
|
|
2485
|
+
this.cleanUnsubscription(client, subHash, unsubHash, usePrefix);
|
|
2487
2486
|
}
|
|
2488
2487
|
this.cleanCache(subscription);
|
|
2489
2488
|
}
|
package/package.json
CHANGED