ccxt 4.4.40 → 4.4.41
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 +3 -3
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/base/Exchange.js +20 -3
- package/dist/cjs/src/binance.js +24 -24
- package/dist/cjs/src/bingx.js +3 -1
- package/dist/cjs/src/bitfinex.js +1 -1
- package/dist/cjs/src/bitget.js +1 -0
- package/dist/cjs/src/bitmart.js +254 -1
- package/dist/cjs/src/bybit.js +8 -8
- package/dist/cjs/src/exmo.js +62 -4
- package/dist/cjs/src/gate.js +1 -1
- package/dist/cjs/src/htx.js +1 -1
- package/dist/cjs/src/hyperliquid.js +65 -1
- package/dist/cjs/src/kraken.js +129 -26
- package/dist/cjs/src/kucoin.js +6 -1
- package/dist/cjs/src/mexc.js +3 -3
- package/dist/cjs/src/okx.js +6 -1
- package/dist/cjs/src/xt.js +5 -2
- package/js/ccxt.d.ts +3 -3
- package/js/ccxt.js +1 -1
- package/js/src/abstract/bitmart.d.ts +2 -0
- package/js/src/abstract/okx.d.ts +5 -0
- package/js/src/base/Exchange.d.ts +6 -3
- package/js/src/base/Exchange.js +20 -3
- package/js/src/base/types.d.ts +2 -0
- package/js/src/binance.js +24 -24
- package/js/src/bingx.js +3 -1
- package/js/src/bitfinex.js +1 -1
- package/js/src/bitget.js +1 -0
- package/js/src/bitmart.d.ts +52 -1
- package/js/src/bitmart.js +254 -1
- package/js/src/bybit.js +8 -8
- package/js/src/exmo.d.ts +35 -0
- package/js/src/exmo.js +62 -4
- package/js/src/gate.js +1 -1
- package/js/src/htx.js +1 -1
- package/js/src/hyperliquid.d.ts +20 -1
- package/js/src/hyperliquid.js +65 -1
- package/js/src/kraken.d.ts +13 -7
- package/js/src/kraken.js +129 -26
- package/js/src/kucoin.js +6 -1
- package/js/src/mexc.js +3 -3
- package/js/src/okx.js +6 -1
- package/js/src/xt.js +5 -2
- package/package.json +2 -2
package/js/src/kraken.d.ts
CHANGED
|
@@ -280,11 +280,13 @@ export default class kraken extends Exchange {
|
|
|
280
280
|
* @method
|
|
281
281
|
* @name kraken#cancelOrder
|
|
282
282
|
* @description cancels an open order
|
|
283
|
-
* @see https://docs.kraken.com/rest
|
|
283
|
+
* @see https://docs.kraken.com/api/docs/rest-api/cancel-order
|
|
284
284
|
* @param {string} id order id
|
|
285
|
-
* @param {string} symbol unified symbol of the market the order was made in
|
|
285
|
+
* @param {string} [symbol] unified symbol of the market the order was made in
|
|
286
286
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
287
|
-
* @
|
|
287
|
+
* @param {string} [params.clientOrderId] the orders client order id
|
|
288
|
+
* @param {int} [params.userref] the orders user reference id
|
|
289
|
+
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
288
290
|
*/
|
|
289
291
|
cancelOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
|
|
290
292
|
/**
|
|
@@ -322,11 +324,13 @@ export default class kraken extends Exchange {
|
|
|
322
324
|
* @method
|
|
323
325
|
* @name kraken#fetchOpenOrders
|
|
324
326
|
* @description fetch all unfilled currently open orders
|
|
325
|
-
* @see https://docs.kraken.com/rest
|
|
326
|
-
* @param {string} symbol unified market symbol
|
|
327
|
+
* @see https://docs.kraken.com/api/docs/rest-api/get-open-orders
|
|
328
|
+
* @param {string} [symbol] unified market symbol
|
|
327
329
|
* @param {int} [since] the earliest time in ms to fetch open orders for
|
|
328
330
|
* @param {int} [limit] the maximum number of open orders structures to retrieve
|
|
329
331
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
332
|
+
* @param {string} [params.clientOrderId] the orders client order id
|
|
333
|
+
* @param {int} [params.userref] the orders user reference id
|
|
330
334
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
331
335
|
*/
|
|
332
336
|
fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
|
@@ -334,12 +338,14 @@ export default class kraken extends Exchange {
|
|
|
334
338
|
* @method
|
|
335
339
|
* @name kraken#fetchClosedOrders
|
|
336
340
|
* @description fetches information on multiple closed orders made by the user
|
|
337
|
-
* @see https://docs.kraken.com/rest
|
|
338
|
-
* @param {string} symbol unified market symbol of the market orders were made in
|
|
341
|
+
* @see https://docs.kraken.com/api/docs/rest-api/get-closed-orders
|
|
342
|
+
* @param {string} [symbol] unified market symbol of the market orders were made in
|
|
339
343
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
340
344
|
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
341
345
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
342
346
|
* @param {int} [params.until] timestamp in ms of the latest entry
|
|
347
|
+
* @param {string} [params.clientOrderId] the orders client order id
|
|
348
|
+
* @param {int} [params.userref] the orders user reference id
|
|
343
349
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
344
350
|
*/
|
|
345
351
|
fetchClosedOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
package/js/src/kraken.js
CHANGED
|
@@ -1655,6 +1655,37 @@ export default class kraken extends Exchange {
|
|
|
1655
1655
|
// }
|
|
1656
1656
|
// }
|
|
1657
1657
|
//
|
|
1658
|
+
// fetchOpenOrders
|
|
1659
|
+
//
|
|
1660
|
+
// {
|
|
1661
|
+
// "refid": null,
|
|
1662
|
+
// "userref": null,
|
|
1663
|
+
// "cl_ord_id": "1234",
|
|
1664
|
+
// "status": "open",
|
|
1665
|
+
// "opentm": 1733815269.370054,
|
|
1666
|
+
// "starttm": 0,
|
|
1667
|
+
// "expiretm": 0,
|
|
1668
|
+
// "descr": {
|
|
1669
|
+
// "pair": "XBTUSD",
|
|
1670
|
+
// "type": "buy",
|
|
1671
|
+
// "ordertype": "limit",
|
|
1672
|
+
// "price": "70000.0",
|
|
1673
|
+
// "price2": "0",
|
|
1674
|
+
// "leverage": "none",
|
|
1675
|
+
// "order": "buy 0.00010000 XBTUSD @ limit 70000.0",
|
|
1676
|
+
// "close": ""
|
|
1677
|
+
// },
|
|
1678
|
+
// "vol": "0.00010000",
|
|
1679
|
+
// "vol_exec": "0.00000000",
|
|
1680
|
+
// "cost": "0.00000",
|
|
1681
|
+
// "fee": "0.00000",
|
|
1682
|
+
// "price": "0.00000",
|
|
1683
|
+
// "stopprice": "0.00000",
|
|
1684
|
+
// "limitprice": "0.00000",
|
|
1685
|
+
// "misc": "",
|
|
1686
|
+
// "oflags": "fciq"
|
|
1687
|
+
// }
|
|
1688
|
+
//
|
|
1658
1689
|
const description = this.safeDict(order, 'descr', {});
|
|
1659
1690
|
const orderDescriptionObj = this.safeDict(order, 'descr'); // can be null
|
|
1660
1691
|
let orderDescription = undefined;
|
|
@@ -1745,7 +1776,8 @@ export default class kraken extends Exchange {
|
|
|
1745
1776
|
const txid = this.safeList(order, 'txid');
|
|
1746
1777
|
id = this.safeString(txid, 0);
|
|
1747
1778
|
}
|
|
1748
|
-
const
|
|
1779
|
+
const userref = this.safeString(order, 'userref');
|
|
1780
|
+
const clientOrderId = this.safeString(order, 'cl_ord_id', userref);
|
|
1749
1781
|
const rawTrades = this.safeValue(order, 'trades', []);
|
|
1750
1782
|
const trades = [];
|
|
1751
1783
|
for (let i = 0; i < rawTrades.length; i++) {
|
|
@@ -1980,10 +2012,10 @@ export default class kraken extends Exchange {
|
|
|
1980
2012
|
let request = {
|
|
1981
2013
|
'txid': id,
|
|
1982
2014
|
};
|
|
1983
|
-
const clientOrderId = this.
|
|
2015
|
+
const clientOrderId = this.safeString2(params, 'clientOrderId', 'cl_ord_id');
|
|
1984
2016
|
if (clientOrderId !== undefined) {
|
|
1985
2017
|
request['cl_ord_id'] = clientOrderId;
|
|
1986
|
-
params = this.omit(params, 'clientOrderId');
|
|
2018
|
+
params = this.omit(params, ['clientOrderId', 'cl_ord_id']);
|
|
1987
2019
|
request = this.omit(request, 'txid');
|
|
1988
2020
|
}
|
|
1989
2021
|
const isMarket = (type === 'market');
|
|
@@ -2274,20 +2306,28 @@ export default class kraken extends Exchange {
|
|
|
2274
2306
|
* @method
|
|
2275
2307
|
* @name kraken#cancelOrder
|
|
2276
2308
|
* @description cancels an open order
|
|
2277
|
-
* @see https://docs.kraken.com/rest
|
|
2309
|
+
* @see https://docs.kraken.com/api/docs/rest-api/cancel-order
|
|
2278
2310
|
* @param {string} id order id
|
|
2279
|
-
* @param {string} symbol unified symbol of the market the order was made in
|
|
2311
|
+
* @param {string} [symbol] unified symbol of the market the order was made in
|
|
2280
2312
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2281
|
-
* @
|
|
2313
|
+
* @param {string} [params.clientOrderId] the orders client order id
|
|
2314
|
+
* @param {int} [params.userref] the orders user reference id
|
|
2315
|
+
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
2282
2316
|
*/
|
|
2283
2317
|
async cancelOrder(id, symbol = undefined, params = {}) {
|
|
2284
2318
|
await this.loadMarkets();
|
|
2285
2319
|
let response = undefined;
|
|
2286
|
-
const
|
|
2287
|
-
|
|
2288
|
-
|
|
2320
|
+
const requestId = this.safeValue(params, 'userref', id); // string or integer
|
|
2321
|
+
params = this.omit(params, 'userref');
|
|
2322
|
+
let request = {
|
|
2323
|
+
'txid': requestId, // order id or userref
|
|
2289
2324
|
};
|
|
2290
|
-
|
|
2325
|
+
const clientOrderId = this.safeString2(params, 'clientOrderId', 'cl_ord_id');
|
|
2326
|
+
if (clientOrderId !== undefined) {
|
|
2327
|
+
request['cl_ord_id'] = clientOrderId;
|
|
2328
|
+
params = this.omit(params, ['clientOrderId', 'cl_ord_id']);
|
|
2329
|
+
request = this.omit(request, 'txid');
|
|
2330
|
+
}
|
|
2291
2331
|
try {
|
|
2292
2332
|
response = await this.privatePostCancelOrder(this.extend(request, params));
|
|
2293
2333
|
//
|
|
@@ -2399,11 +2439,13 @@ export default class kraken extends Exchange {
|
|
|
2399
2439
|
* @method
|
|
2400
2440
|
* @name kraken#fetchOpenOrders
|
|
2401
2441
|
* @description fetch all unfilled currently open orders
|
|
2402
|
-
* @see https://docs.kraken.com/rest
|
|
2403
|
-
* @param {string} symbol unified market symbol
|
|
2442
|
+
* @see https://docs.kraken.com/api/docs/rest-api/get-open-orders
|
|
2443
|
+
* @param {string} [symbol] unified market symbol
|
|
2404
2444
|
* @param {int} [since] the earliest time in ms to fetch open orders for
|
|
2405
2445
|
* @param {int} [limit] the maximum number of open orders structures to retrieve
|
|
2406
2446
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2447
|
+
* @param {string} [params.clientOrderId] the orders client order id
|
|
2448
|
+
* @param {int} [params.userref] the orders user reference id
|
|
2407
2449
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
2408
2450
|
*/
|
|
2409
2451
|
async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
@@ -2412,31 +2454,81 @@ export default class kraken extends Exchange {
|
|
|
2412
2454
|
if (since !== undefined) {
|
|
2413
2455
|
request['start'] = this.parseToInt(since / 1000);
|
|
2414
2456
|
}
|
|
2415
|
-
|
|
2416
|
-
|
|
2457
|
+
const userref = this.safeInteger(params, 'userref');
|
|
2458
|
+
if (userref !== undefined) {
|
|
2459
|
+
request['userref'] = userref;
|
|
2460
|
+
params = this.omit(params, 'userref');
|
|
2461
|
+
}
|
|
2462
|
+
const clientOrderId = this.safeString(params, 'clientOrderId');
|
|
2417
2463
|
if (clientOrderId !== undefined) {
|
|
2418
|
-
request['
|
|
2419
|
-
|
|
2464
|
+
request['cl_ord_id'] = clientOrderId;
|
|
2465
|
+
params = this.omit(params, 'clientOrderId');
|
|
2420
2466
|
}
|
|
2421
|
-
const response = await this.privatePostOpenOrders(this.extend(request,
|
|
2467
|
+
const response = await this.privatePostOpenOrders(this.extend(request, params));
|
|
2468
|
+
//
|
|
2469
|
+
// {
|
|
2470
|
+
// "error": [],
|
|
2471
|
+
// "result": {
|
|
2472
|
+
// "open": {
|
|
2473
|
+
// "O45M52-BFD5S-YXKQOU": {
|
|
2474
|
+
// "refid": null,
|
|
2475
|
+
// "userref": null,
|
|
2476
|
+
// "cl_ord_id": "1234",
|
|
2477
|
+
// "status": "open",
|
|
2478
|
+
// "opentm": 1733815269.370054,
|
|
2479
|
+
// "starttm": 0,
|
|
2480
|
+
// "expiretm": 0,
|
|
2481
|
+
// "descr": {
|
|
2482
|
+
// "pair": "XBTUSD",
|
|
2483
|
+
// "type": "buy",
|
|
2484
|
+
// "ordertype": "limit",
|
|
2485
|
+
// "price": "70000.0",
|
|
2486
|
+
// "price2": "0",
|
|
2487
|
+
// "leverage": "none",
|
|
2488
|
+
// "order": "buy 0.00010000 XBTUSD @ limit 70000.0",
|
|
2489
|
+
// "close": ""
|
|
2490
|
+
// },
|
|
2491
|
+
// "vol": "0.00010000",
|
|
2492
|
+
// "vol_exec": "0.00000000",
|
|
2493
|
+
// "cost": "0.00000",
|
|
2494
|
+
// "fee": "0.00000",
|
|
2495
|
+
// "price": "0.00000",
|
|
2496
|
+
// "stopprice": "0.00000",
|
|
2497
|
+
// "limitprice": "0.00000",
|
|
2498
|
+
// "misc": "",
|
|
2499
|
+
// "oflags": "fciq"
|
|
2500
|
+
// }
|
|
2501
|
+
// }
|
|
2502
|
+
// }
|
|
2503
|
+
// }
|
|
2504
|
+
//
|
|
2422
2505
|
let market = undefined;
|
|
2423
2506
|
if (symbol !== undefined) {
|
|
2424
2507
|
market = this.market(symbol);
|
|
2425
2508
|
}
|
|
2426
2509
|
const result = this.safeDict(response, 'result', {});
|
|
2427
|
-
const
|
|
2510
|
+
const open = this.safeDict(result, 'open', {});
|
|
2511
|
+
const orders = [];
|
|
2512
|
+
const orderIds = Object.keys(open);
|
|
2513
|
+
for (let i = 0; i < orderIds.length; i++) {
|
|
2514
|
+
const id = orderIds[i];
|
|
2515
|
+
const item = open[id];
|
|
2516
|
+
orders.push(this.extend({ 'id': id }, item));
|
|
2517
|
+
}
|
|
2428
2518
|
return this.parseOrders(orders, market, since, limit);
|
|
2429
2519
|
}
|
|
2430
2520
|
/**
|
|
2431
2521
|
* @method
|
|
2432
2522
|
* @name kraken#fetchClosedOrders
|
|
2433
2523
|
* @description fetches information on multiple closed orders made by the user
|
|
2434
|
-
* @see https://docs.kraken.com/rest
|
|
2435
|
-
* @param {string} symbol unified market symbol of the market orders were made in
|
|
2524
|
+
* @see https://docs.kraken.com/api/docs/rest-api/get-closed-orders
|
|
2525
|
+
* @param {string} [symbol] unified market symbol of the market orders were made in
|
|
2436
2526
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
2437
2527
|
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
2438
2528
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2439
2529
|
* @param {int} [params.until] timestamp in ms of the latest entry
|
|
2530
|
+
* @param {string} [params.clientOrderId] the orders client order id
|
|
2531
|
+
* @param {int} [params.userref] the orders user reference id
|
|
2440
2532
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
2441
2533
|
*/
|
|
2442
2534
|
async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
@@ -2445,14 +2537,18 @@ export default class kraken extends Exchange {
|
|
|
2445
2537
|
if (since !== undefined) {
|
|
2446
2538
|
request['start'] = this.parseToInt(since / 1000);
|
|
2447
2539
|
}
|
|
2448
|
-
|
|
2449
|
-
|
|
2540
|
+
const userref = this.safeInteger(params, 'userref');
|
|
2541
|
+
if (userref !== undefined) {
|
|
2542
|
+
request['userref'] = userref;
|
|
2543
|
+
params = this.omit(params, 'userref');
|
|
2544
|
+
}
|
|
2545
|
+
const clientOrderId = this.safeString(params, 'clientOrderId');
|
|
2450
2546
|
if (clientOrderId !== undefined) {
|
|
2451
|
-
request['
|
|
2452
|
-
|
|
2547
|
+
request['cl_ord_id'] = clientOrderId;
|
|
2548
|
+
params = this.omit(params, 'clientOrderId');
|
|
2453
2549
|
}
|
|
2454
2550
|
[request, params] = this.handleUntilOption('end', request, params);
|
|
2455
|
-
const response = await this.privatePostClosedOrders(this.extend(request,
|
|
2551
|
+
const response = await this.privatePostClosedOrders(this.extend(request, params));
|
|
2456
2552
|
//
|
|
2457
2553
|
// {
|
|
2458
2554
|
// "error":[],
|
|
@@ -2497,7 +2593,14 @@ export default class kraken extends Exchange {
|
|
|
2497
2593
|
market = this.market(symbol);
|
|
2498
2594
|
}
|
|
2499
2595
|
const result = this.safeDict(response, 'result', {});
|
|
2500
|
-
const
|
|
2596
|
+
const closed = this.safeDict(result, 'closed', {});
|
|
2597
|
+
const orders = [];
|
|
2598
|
+
const orderIds = Object.keys(closed);
|
|
2599
|
+
for (let i = 0; i < orderIds.length; i++) {
|
|
2600
|
+
const id = orderIds[i];
|
|
2601
|
+
const item = closed[id];
|
|
2602
|
+
orders.push(this.extend({ 'id': id }, item));
|
|
2603
|
+
}
|
|
2501
2604
|
return this.parseOrders(orders, market, since, limit);
|
|
2502
2605
|
}
|
|
2503
2606
|
parseTransactionStatus(status) {
|
package/js/src/kucoin.js
CHANGED
|
@@ -643,6 +643,8 @@ export default class kucoin extends Exchange {
|
|
|
643
643
|
'version': 'v1',
|
|
644
644
|
'symbolSeparator': '-',
|
|
645
645
|
'fetchMyTradesMethod': 'private_get_fills',
|
|
646
|
+
'timeDifference': 0,
|
|
647
|
+
'adjustForTimeDifference': false,
|
|
646
648
|
'fetchCurrencies': {
|
|
647
649
|
'webApiEnable': true,
|
|
648
650
|
'webApiRetries': 1,
|
|
@@ -1059,7 +1061,7 @@ export default class kucoin extends Exchange {
|
|
|
1059
1061
|
});
|
|
1060
1062
|
}
|
|
1061
1063
|
nonce() {
|
|
1062
|
-
return this.milliseconds();
|
|
1064
|
+
return this.milliseconds() - this.options['timeDifference'];
|
|
1063
1065
|
}
|
|
1064
1066
|
/**
|
|
1065
1067
|
* @method
|
|
@@ -1300,6 +1302,9 @@ export default class kucoin extends Exchange {
|
|
|
1300
1302
|
'info': market,
|
|
1301
1303
|
});
|
|
1302
1304
|
}
|
|
1305
|
+
if (this.options['adjustForTimeDifference']) {
|
|
1306
|
+
await this.loadTimeDifference();
|
|
1307
|
+
}
|
|
1303
1308
|
return result;
|
|
1304
1309
|
}
|
|
1305
1310
|
/**
|
package/js/src/mexc.js
CHANGED
|
@@ -678,7 +678,7 @@ export default class mexc extends Exchange {
|
|
|
678
678
|
'broker': 'CCXT',
|
|
679
679
|
},
|
|
680
680
|
'features': {
|
|
681
|
-
'
|
|
681
|
+
'default': {
|
|
682
682
|
'sandbox': false,
|
|
683
683
|
'createOrder': {
|
|
684
684
|
'marginMode': true,
|
|
@@ -746,10 +746,10 @@ export default class mexc extends Exchange {
|
|
|
746
746
|
},
|
|
747
747
|
},
|
|
748
748
|
'spot': {
|
|
749
|
-
'extends': '
|
|
749
|
+
'extends': 'default',
|
|
750
750
|
},
|
|
751
751
|
'forDerivs': {
|
|
752
|
-
'extends': '
|
|
752
|
+
'extends': 'default',
|
|
753
753
|
'createOrder': {
|
|
754
754
|
'triggerPrice': true,
|
|
755
755
|
'triggerPriceType': {
|
package/js/src/okx.js
CHANGED
|
@@ -262,6 +262,7 @@ export default class okx extends Exchange {
|
|
|
262
262
|
'tradingBot/public/rsi-back-testing': 1,
|
|
263
263
|
'asset/exchange-list': 5 / 3,
|
|
264
264
|
'finance/staking-defi/eth/apy-history': 5 / 3,
|
|
265
|
+
'finance/staking-defi/sol/apy-history': 5 / 3,
|
|
265
266
|
'finance/savings/lending-rate-summary': 5 / 3,
|
|
266
267
|
'finance/savings/lending-rate-history': 5 / 3,
|
|
267
268
|
'finance/fixed-loan/lending-offers': 10 / 3,
|
|
@@ -400,6 +401,8 @@ export default class okx extends Exchange {
|
|
|
400
401
|
'finance/staking-defi/eth/balance': 5 / 3,
|
|
401
402
|
'finance/staking-defi/eth/purchase-redeem-history': 5 / 3,
|
|
402
403
|
'finance/staking-defi/eth/product-info': 3,
|
|
404
|
+
'finance/staking-defi/sol/balance': 5 / 3,
|
|
405
|
+
'finance/staking-defi/sol/purchase-redeem-history': 5 / 3,
|
|
403
406
|
// copytrading
|
|
404
407
|
'copytrading/current-subpositions': 1,
|
|
405
408
|
'copytrading/subpositions-history': 1,
|
|
@@ -534,6 +537,8 @@ export default class okx extends Exchange {
|
|
|
534
537
|
// eth staking
|
|
535
538
|
'finance/staking-defi/eth/purchase': 5,
|
|
536
539
|
'finance/staking-defi/eth/redeem': 5,
|
|
540
|
+
'finance/staking-defi/sol/purchase': 5,
|
|
541
|
+
'finance/staking-defi/sol/redeem': 5,
|
|
537
542
|
// copytrading
|
|
538
543
|
'copytrading/algo-order': 1,
|
|
539
544
|
'copytrading/close-subposition': 1,
|
|
@@ -7398,7 +7403,7 @@ export default class okx extends Exchange {
|
|
|
7398
7403
|
// }
|
|
7399
7404
|
//
|
|
7400
7405
|
const data = this.safeList(response, 'data', []);
|
|
7401
|
-
return this.
|
|
7406
|
+
return this.parseOpenInterestsHistory(data, undefined, since, limit);
|
|
7402
7407
|
}
|
|
7403
7408
|
parseOpenInterest(interest, market = undefined) {
|
|
7404
7409
|
//
|
package/js/src/xt.js
CHANGED
|
@@ -4383,7 +4383,10 @@ export default class xt extends Exchange {
|
|
|
4383
4383
|
const marketId = this.safeString(contract, 'symbol');
|
|
4384
4384
|
const symbol = this.safeSymbol(marketId, market, '_', 'swap');
|
|
4385
4385
|
const timestamp = this.safeInteger(contract, 'nextCollectionTime');
|
|
4386
|
-
|
|
4386
|
+
let interval = this.safeString(contract, 'collectionInternal');
|
|
4387
|
+
if (interval !== undefined) {
|
|
4388
|
+
interval = interval + 'h';
|
|
4389
|
+
}
|
|
4387
4390
|
return {
|
|
4388
4391
|
'info': contract,
|
|
4389
4392
|
'symbol': symbol,
|
|
@@ -4402,7 +4405,7 @@ export default class xt extends Exchange {
|
|
|
4402
4405
|
'previousFundingRate': undefined,
|
|
4403
4406
|
'previousFundingTimestamp': undefined,
|
|
4404
4407
|
'previousFundingDatetime': undefined,
|
|
4405
|
-
'interval': interval
|
|
4408
|
+
'interval': interval,
|
|
4406
4409
|
};
|
|
4407
4410
|
}
|
|
4408
4411
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ccxt",
|
|
3
|
-
"version": "4.4.
|
|
3
|
+
"version": "4.4.41",
|
|
4
4
|
"description": "A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges",
|
|
5
5
|
"unpkg": "dist/ccxt.browser.min.js",
|
|
6
6
|
"type": "module",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"tsBuildFile": "tsc --skipLibCheck --strictNullChecks false --strict --noImplicitAny false --esModuleInterop --isolatedModules false --forceConsistentCasingInFileNames --removeComments false --target ES2020 --declaration --allowJs --checkJs false --moduleResolution Node --module ES2022 --outDir ./js/src --lib ES2020.BigInt --lib dom ",
|
|
43
43
|
"tsBuild": "tsc || echo \"\"",
|
|
44
44
|
"tsBuildExamples": "tsc -p ./examples/tsconfig.json",
|
|
45
|
-
"emitAPI": "
|
|
45
|
+
"emitAPI": "tsx build/generateImplicitAPI.ts",
|
|
46
46
|
"build": "npm run pre-transpile && npm run transpile && npm run post-transpile && npm run update-badges && npm run build-docs",
|
|
47
47
|
"force-build-slow": "npm run pre-transpile && npm run force-transpile && npm run post-transpile && npm run update-badges",
|
|
48
48
|
"pre-transpile": "npm run export-exchanges && npm run vss && npm run tsBuild && npm run emitAPI && npm run validate-types && npm run tsBuildExamples && npm run copy-python-files && npm run check-js-syntax && npm run bundle",
|