ccxt 4.2.56 → 4.2.58
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 +4 -4
- package/dist/ccxt.browser.js +818 -335
- package/dist/ccxt.browser.min.js +7 -7
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/alpaca.js +90 -88
- package/dist/cjs/src/base/Exchange.js +53 -3
- package/dist/cjs/src/binance.js +196 -28
- package/dist/cjs/src/bingx.js +12 -1
- package/dist/cjs/src/bitget.js +71 -56
- package/dist/cjs/src/bitmex.js +26 -1
- package/dist/cjs/src/bitrue.js +24 -15
- package/dist/cjs/src/blofin.js +24 -1
- package/dist/cjs/src/bybit.js +11 -3
- package/dist/cjs/src/currencycom.js +15 -5
- package/dist/cjs/src/delta.js +14 -1
- package/dist/cjs/src/gate.js +1 -1
- package/dist/cjs/src/hitbtc.js +63 -55
- package/dist/cjs/src/krakenfutures.js +22 -7
- package/dist/cjs/src/kuna.js +14 -11
- package/dist/cjs/src/mexc.js +75 -0
- package/dist/cjs/src/okx.js +31 -1
- package/dist/cjs/src/pro/alpaca.js +1 -1
- package/dist/cjs/src/pro/bitmex.js +23 -32
- package/dist/cjs/src/pro/cex.js +6 -2
- package/dist/cjs/src/pro/coinex.js +6 -3
- package/dist/cjs/src/pro/mexc.js +2 -2
- package/dist/cjs/src/pro/whitebit.js +15 -13
- package/dist/cjs/src/probit.js +1 -1
- package/dist/cjs/src/wavesexchange.js +1 -1
- package/dist/cjs/src/woo.js +20 -4
- package/js/ccxt.d.ts +3 -3
- package/js/ccxt.js +1 -1
- package/js/src/alpaca.js +90 -88
- package/js/src/base/Exchange.d.ts +14 -6
- package/js/src/base/Exchange.js +53 -3
- package/js/src/base/types.d.ts +12 -1
- package/js/src/binance.d.ts +5 -2
- package/js/src/binance.js +196 -28
- package/js/src/bingx.d.ts +3 -2
- package/js/src/bingx.js +12 -1
- package/js/src/bitget.d.ts +3 -2
- package/js/src/bitget.js +71 -56
- package/js/src/bitmex.d.ts +3 -1
- package/js/src/bitmex.js +26 -1
- package/js/src/bitrue.js +24 -15
- package/js/src/blofin.d.ts +3 -2
- package/js/src/blofin.js +24 -1
- package/js/src/bybit.d.ts +3 -6
- package/js/src/bybit.js +11 -3
- package/js/src/currencycom.d.ts +3 -2
- package/js/src/currencycom.js +15 -5
- package/js/src/delta.d.ts +3 -2
- package/js/src/delta.js +14 -1
- package/js/src/gate.js +1 -1
- package/js/src/hitbtc.d.ts +5 -3
- package/js/src/hitbtc.js +63 -55
- package/js/src/krakenfutures.d.ts +3 -2
- package/js/src/krakenfutures.js +22 -7
- package/js/src/kuna.js +14 -11
- package/js/src/mexc.d.ts +3 -1
- package/js/src/mexc.js +75 -0
- package/js/src/okx.d.ts +3 -2
- package/js/src/okx.js +31 -1
- package/js/src/pro/alpaca.js +1 -1
- package/js/src/pro/bitmex.js +24 -31
- package/js/src/pro/cex.js +6 -2
- package/js/src/pro/coinex.js +6 -3
- package/js/src/pro/mexc.js +2 -2
- package/js/src/pro/whitebit.js +15 -13
- package/js/src/probit.js +1 -1
- package/js/src/wavesexchange.js +1 -1
- package/js/src/woo.d.ts +3 -5
- package/js/src/woo.js +20 -4
- package/package.json +1 -1
- package/skip-tests.json +26 -8
package/dist/cjs/src/hitbtc.js
CHANGED
|
@@ -63,7 +63,8 @@ class hitbtc extends hitbtc$1 {
|
|
|
63
63
|
'fetchLeverage': true,
|
|
64
64
|
'fetchLeverageTiers': undefined,
|
|
65
65
|
'fetchLiquidations': false,
|
|
66
|
-
'fetchMarginMode':
|
|
66
|
+
'fetchMarginMode': 'emulated',
|
|
67
|
+
'fetchMarginModes': true,
|
|
67
68
|
'fetchMarketLeverageTiers': false,
|
|
68
69
|
'fetchMarkets': true,
|
|
69
70
|
'fetchMarkOHLCV': true,
|
|
@@ -2507,7 +2508,7 @@ class hitbtc extends hitbtc$1 {
|
|
|
2507
2508
|
'stopLossPrice': undefined,
|
|
2508
2509
|
}, market);
|
|
2509
2510
|
}
|
|
2510
|
-
async
|
|
2511
|
+
async fetchMarginModes(symbols = undefined, params = {}) {
|
|
2511
2512
|
/**
|
|
2512
2513
|
* @method
|
|
2513
2514
|
* @name hitbtc#fetchMarginMode
|
|
@@ -2520,70 +2521,66 @@ class hitbtc extends hitbtc$1 {
|
|
|
2520
2521
|
*/
|
|
2521
2522
|
await this.loadMarkets();
|
|
2522
2523
|
let market = undefined;
|
|
2523
|
-
if (
|
|
2524
|
-
|
|
2524
|
+
if (symbols !== undefined) {
|
|
2525
|
+
symbols = this.marketSymbols(symbols);
|
|
2526
|
+
market = this.market(symbols[0]);
|
|
2525
2527
|
}
|
|
2526
2528
|
let marketType = undefined;
|
|
2527
2529
|
[marketType, params] = this.handleMarketTypeAndParams('fetchMarginMode', market, params);
|
|
2528
2530
|
let response = undefined;
|
|
2529
2531
|
if (marketType === 'margin') {
|
|
2530
2532
|
response = await this.privateGetMarginConfig(params);
|
|
2533
|
+
//
|
|
2534
|
+
// {
|
|
2535
|
+
// "config": [{
|
|
2536
|
+
// "symbol": "BTCUSD",
|
|
2537
|
+
// "margin_call_leverage_mul": "1.50",
|
|
2538
|
+
// "liquidation_leverage_mul": "2.00",
|
|
2539
|
+
// "max_initial_leverage": "10.00",
|
|
2540
|
+
// "margin_mode": "Isolated",
|
|
2541
|
+
// "force_close_fee": "0.05",
|
|
2542
|
+
// "enabled": true,
|
|
2543
|
+
// "active": true,
|
|
2544
|
+
// "limit_base": "50000.00",
|
|
2545
|
+
// "limit_power": "2.2",
|
|
2546
|
+
// "unlimited_threshold": "10.0"
|
|
2547
|
+
// }]
|
|
2548
|
+
// }
|
|
2549
|
+
//
|
|
2531
2550
|
}
|
|
2532
2551
|
else if (marketType === 'swap') {
|
|
2533
2552
|
response = await this.privateGetFuturesConfig(params);
|
|
2553
|
+
//
|
|
2554
|
+
// {
|
|
2555
|
+
// "config": [{
|
|
2556
|
+
// "symbol": "BTCUSD_PERP",
|
|
2557
|
+
// "margin_call_leverage_mul": "1.20",
|
|
2558
|
+
// "liquidation_leverage_mul": "2.00",
|
|
2559
|
+
// "max_initial_leverage": "100.00",
|
|
2560
|
+
// "margin_mode": "Isolated",
|
|
2561
|
+
// "force_close_fee": "0.001",
|
|
2562
|
+
// "enabled": true,
|
|
2563
|
+
// "active": false,
|
|
2564
|
+
// "limit_base": "5000000.000000000000",
|
|
2565
|
+
// "limit_power": "1.25",
|
|
2566
|
+
// "unlimited_threshold": "2.00"
|
|
2567
|
+
// }]
|
|
2568
|
+
// }
|
|
2569
|
+
//
|
|
2534
2570
|
}
|
|
2535
2571
|
else {
|
|
2536
|
-
throw new errors.BadSymbol(this.id + '
|
|
2572
|
+
throw new errors.BadSymbol(this.id + ' fetchMarginModes () supports swap contracts and margin only');
|
|
2537
2573
|
}
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
|
|
2543
|
-
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
|
|
2547
|
-
|
|
2548
|
-
// "enabled": true,
|
|
2549
|
-
// "active": true,
|
|
2550
|
-
// "limit_base": "50000.00",
|
|
2551
|
-
// "limit_power": "2.2",
|
|
2552
|
-
// "unlimited_threshold": "10.0"
|
|
2553
|
-
// }]
|
|
2554
|
-
// }
|
|
2555
|
-
//
|
|
2556
|
-
// swap
|
|
2557
|
-
// {
|
|
2558
|
-
// "config": [{
|
|
2559
|
-
// "symbol": "BTCUSD_PERP",
|
|
2560
|
-
// "margin_call_leverage_mul": "1.20",
|
|
2561
|
-
// "liquidation_leverage_mul": "2.00",
|
|
2562
|
-
// "max_initial_leverage": "100.00",
|
|
2563
|
-
// "margin_mode": "Isolated",
|
|
2564
|
-
// "force_close_fee": "0.001",
|
|
2565
|
-
// "enabled": true,
|
|
2566
|
-
// "active": false,
|
|
2567
|
-
// "limit_base": "5000000.000000000000",
|
|
2568
|
-
// "limit_power": "1.25",
|
|
2569
|
-
// "unlimited_threshold": "2.00"
|
|
2570
|
-
// }]
|
|
2571
|
-
// }
|
|
2572
|
-
//
|
|
2573
|
-
const config = this.safeValue(response, 'config', []);
|
|
2574
|
-
const marginModes = [];
|
|
2575
|
-
for (let i = 0; i < config.length; i++) {
|
|
2576
|
-
const data = this.safeValue(config, i);
|
|
2577
|
-
const marketId = this.safeString(data, 'symbol');
|
|
2578
|
-
const marketInner = this.safeMarket(marketId);
|
|
2579
|
-
marginModes.push({
|
|
2580
|
-
'info': data,
|
|
2581
|
-
'symbol': this.safeString(marketInner, 'symbol'),
|
|
2582
|
-
'marginMode': this.safeStringLower(data, 'margin_mode'),
|
|
2583
|
-
});
|
|
2584
|
-
}
|
|
2585
|
-
const filteredMargin = this.filterBySymbol(marginModes, symbol);
|
|
2586
|
-
return this.safeValue(filteredMargin, 0);
|
|
2574
|
+
const config = this.safeList(response, 'config', []);
|
|
2575
|
+
return this.parseMarginModes(config, symbols, 'symbol');
|
|
2576
|
+
}
|
|
2577
|
+
parseMarginMode(marginMode, market = undefined) {
|
|
2578
|
+
const marketId = this.safeString(marginMode, 'symbol');
|
|
2579
|
+
return {
|
|
2580
|
+
'info': marginMode,
|
|
2581
|
+
'symbol': this.safeSymbol(marketId, market),
|
|
2582
|
+
'marginMode': this.safeStringLower(marginMode, 'margin_mode'),
|
|
2583
|
+
};
|
|
2587
2584
|
}
|
|
2588
2585
|
async transfer(code, amount, fromAccount, toAccount, params = {}) {
|
|
2589
2586
|
/**
|
|
@@ -3402,7 +3399,18 @@ class hitbtc extends hitbtc$1 {
|
|
|
3402
3399
|
// ]
|
|
3403
3400
|
// }
|
|
3404
3401
|
//
|
|
3405
|
-
return this.
|
|
3402
|
+
return this.parseLeverage(response, market);
|
|
3403
|
+
}
|
|
3404
|
+
parseLeverage(leverage, market = undefined) {
|
|
3405
|
+
const marketId = this.safeString(leverage, 'symbol');
|
|
3406
|
+
const leverageValue = this.safeInteger(leverage, 'leverage');
|
|
3407
|
+
return {
|
|
3408
|
+
'info': leverage,
|
|
3409
|
+
'symbol': this.safeSymbol(marketId, market),
|
|
3410
|
+
'marginMode': this.safeStringLower(leverage, 'type'),
|
|
3411
|
+
'longLeverage': leverageValue,
|
|
3412
|
+
'shortLeverage': leverageValue,
|
|
3413
|
+
};
|
|
3406
3414
|
}
|
|
3407
3415
|
async setLeverage(leverage, symbol = undefined, params = {}) {
|
|
3408
3416
|
/**
|
|
@@ -2456,7 +2456,7 @@ class krakenfutures extends krakenfutures$1 {
|
|
|
2456
2456
|
//
|
|
2457
2457
|
return await this.privatePutLeveragepreferences(this.extend(request, params));
|
|
2458
2458
|
}
|
|
2459
|
-
async fetchLeverage(symbol
|
|
2459
|
+
async fetchLeverage(symbol, params = {}) {
|
|
2460
2460
|
/**
|
|
2461
2461
|
* @method
|
|
2462
2462
|
* @name krakenfutures#fetchLeverage
|
|
@@ -2470,17 +2470,32 @@ class krakenfutures extends krakenfutures$1 {
|
|
|
2470
2470
|
throw new errors.ArgumentsRequired(this.id + ' fetchLeverage() requires a symbol argument');
|
|
2471
2471
|
}
|
|
2472
2472
|
await this.loadMarkets();
|
|
2473
|
+
const market = this.market(symbol);
|
|
2473
2474
|
const request = {
|
|
2474
2475
|
'symbol': this.marketId(symbol).toUpperCase(),
|
|
2475
2476
|
};
|
|
2477
|
+
const response = await this.privateGetLeveragepreferences(this.extend(request, params));
|
|
2476
2478
|
//
|
|
2477
|
-
//
|
|
2478
|
-
//
|
|
2479
|
-
//
|
|
2480
|
-
//
|
|
2481
|
-
//
|
|
2479
|
+
// {
|
|
2480
|
+
// "result": "success",
|
|
2481
|
+
// "serverTime": "2023-08-01T09:54:08.900Z",
|
|
2482
|
+
// "leveragePreferences": [ { symbol: "PF_LTCUSD", maxLeverage: "5.00" } ]
|
|
2483
|
+
// }
|
|
2482
2484
|
//
|
|
2483
|
-
|
|
2485
|
+
const leveragePreferences = this.safeList(response, 'leveragePreferences', []);
|
|
2486
|
+
const data = this.safeDict(leveragePreferences, 0, {});
|
|
2487
|
+
return this.parseLeverage(data, market);
|
|
2488
|
+
}
|
|
2489
|
+
parseLeverage(leverage, market = undefined) {
|
|
2490
|
+
const marketId = this.safeString(leverage, 'symbol');
|
|
2491
|
+
const leverageValue = this.safeInteger(leverage, 'maxLeverage');
|
|
2492
|
+
return {
|
|
2493
|
+
'info': leverage,
|
|
2494
|
+
'symbol': this.safeSymbol(marketId, market),
|
|
2495
|
+
'marginMode': undefined,
|
|
2496
|
+
'longLeverage': leverageValue,
|
|
2497
|
+
'shortLeverage': leverageValue,
|
|
2498
|
+
};
|
|
2484
2499
|
}
|
|
2485
2500
|
handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
|
|
2486
2501
|
if (response === undefined) {
|
package/dist/cjs/src/kuna.js
CHANGED
|
@@ -806,7 +806,7 @@ class kuna extends kuna$1 {
|
|
|
806
806
|
await this.loadMarkets();
|
|
807
807
|
const market = this.market(symbol);
|
|
808
808
|
const request = {
|
|
809
|
-
'
|
|
809
|
+
'pairs': market['id'],
|
|
810
810
|
};
|
|
811
811
|
if (limit !== undefined) {
|
|
812
812
|
request['limit'] = limit;
|
|
@@ -814,18 +814,21 @@ class kuna extends kuna$1 {
|
|
|
814
814
|
const response = await this.v4PublicGetTradePublicBookPairs(this.extend(request, params));
|
|
815
815
|
//
|
|
816
816
|
// {
|
|
817
|
-
//
|
|
818
|
-
//
|
|
819
|
-
//
|
|
820
|
-
//
|
|
821
|
-
//
|
|
822
|
-
//
|
|
823
|
-
//
|
|
824
|
-
//
|
|
825
|
-
//
|
|
817
|
+
// 'data': [
|
|
818
|
+
// {
|
|
819
|
+
// 'createdAt': '2024-03-02T00:10:49.385Z',
|
|
820
|
+
// 'id': '3b42878a-3688-4bc1-891e-5cc2fc902142',
|
|
821
|
+
// 'matchPrice': '62181.31',
|
|
822
|
+
// 'matchQuantity': '0.00568',
|
|
823
|
+
// 'pair': 'BTC_USDT',
|
|
824
|
+
// 'quoteQuantity': '353.1898408',
|
|
825
|
+
// 'side': 'Bid'
|
|
826
|
+
// },
|
|
827
|
+
// ...
|
|
828
|
+
// ]
|
|
826
829
|
// }
|
|
827
830
|
//
|
|
828
|
-
const data = this.
|
|
831
|
+
const data = this.safeList(response, 'data', []);
|
|
829
832
|
return this.parseTrades(data, market, since, limit);
|
|
830
833
|
}
|
|
831
834
|
parseTrade(trade, market = undefined) {
|
package/dist/cjs/src/mexc.js
CHANGED
|
@@ -71,6 +71,8 @@ class mexc extends mexc$1 {
|
|
|
71
71
|
'fetchL2OrderBook': true,
|
|
72
72
|
'fetchLedger': undefined,
|
|
73
73
|
'fetchLedgerEntry': undefined,
|
|
74
|
+
'fetchLeverage': true,
|
|
75
|
+
'fetchLeverages': false,
|
|
74
76
|
'fetchLeverageTiers': true,
|
|
75
77
|
'fetchMarginMode': false,
|
|
76
78
|
'fetchMarketLeverageTiers': undefined,
|
|
@@ -5373,6 +5375,79 @@ class mexc extends mexc$1 {
|
|
|
5373
5375
|
}
|
|
5374
5376
|
return this.assignDefaultDepositWithdrawFees(result);
|
|
5375
5377
|
}
|
|
5378
|
+
async fetchLeverage(symbol, params = {}) {
|
|
5379
|
+
/**
|
|
5380
|
+
* @method
|
|
5381
|
+
* @name mexc#fetchLeverage
|
|
5382
|
+
* @description fetch the set leverage for a market
|
|
5383
|
+
* @see https://mexcdevelop.github.io/apidocs/contract_v1_en/#get-leverage
|
|
5384
|
+
* @param {string} symbol unified market symbol
|
|
5385
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
5386
|
+
* @returns {object} a [leverage structure]{@link https://docs.ccxt.com/#/?id=leverage-structure}
|
|
5387
|
+
*/
|
|
5388
|
+
await this.loadMarkets();
|
|
5389
|
+
const market = this.market(symbol);
|
|
5390
|
+
const request = {
|
|
5391
|
+
'symbol': market['id'],
|
|
5392
|
+
};
|
|
5393
|
+
const response = await this.contractPrivateGetPositionLeverage(this.extend(request, params));
|
|
5394
|
+
//
|
|
5395
|
+
// {
|
|
5396
|
+
// "success": true,
|
|
5397
|
+
// "code": 0,
|
|
5398
|
+
// "data": [
|
|
5399
|
+
// {
|
|
5400
|
+
// "level": 1,
|
|
5401
|
+
// "maxVol": 463300,
|
|
5402
|
+
// "mmr": 0.004,
|
|
5403
|
+
// "imr": 0.005,
|
|
5404
|
+
// "positionType": 1,
|
|
5405
|
+
// "openType": 1,
|
|
5406
|
+
// "leverage": 20,
|
|
5407
|
+
// "limitBySys": false,
|
|
5408
|
+
// "currentMmr": 0.004
|
|
5409
|
+
// },
|
|
5410
|
+
// {
|
|
5411
|
+
// "level": 1,
|
|
5412
|
+
// "maxVol": 463300,
|
|
5413
|
+
// "mmr": 0.004,
|
|
5414
|
+
// "imr": 0.005,
|
|
5415
|
+
// "positionType": 2,
|
|
5416
|
+
// "openType": 1,
|
|
5417
|
+
// "leverage": 20,
|
|
5418
|
+
// "limitBySys": false,
|
|
5419
|
+
// "currentMmr": 0.004
|
|
5420
|
+
// }
|
|
5421
|
+
// ]
|
|
5422
|
+
// }
|
|
5423
|
+
//
|
|
5424
|
+
const data = this.safeList(response, 'data', []);
|
|
5425
|
+
return this.parseLeverage(data, market);
|
|
5426
|
+
}
|
|
5427
|
+
parseLeverage(leverage, market = undefined) {
|
|
5428
|
+
let marginMode = undefined;
|
|
5429
|
+
let longLeverage = undefined;
|
|
5430
|
+
let shortLeverage = undefined;
|
|
5431
|
+
for (let i = 0; i < leverage.length; i++) {
|
|
5432
|
+
const entry = leverage[i];
|
|
5433
|
+
const openType = this.safeInteger(entry, 'openType');
|
|
5434
|
+
const positionType = this.safeInteger(entry, 'positionType');
|
|
5435
|
+
if (positionType === 1) {
|
|
5436
|
+
longLeverage = this.safeInteger(entry, 'leverage');
|
|
5437
|
+
}
|
|
5438
|
+
else if (positionType === 2) {
|
|
5439
|
+
shortLeverage = this.safeInteger(entry, 'leverage');
|
|
5440
|
+
}
|
|
5441
|
+
marginMode = (openType === 1) ? 'isolated' : 'cross';
|
|
5442
|
+
}
|
|
5443
|
+
return {
|
|
5444
|
+
'info': leverage,
|
|
5445
|
+
'symbol': market['symbol'],
|
|
5446
|
+
'marginMode': marginMode,
|
|
5447
|
+
'longLeverage': longLeverage,
|
|
5448
|
+
'shortLeverage': shortLeverage,
|
|
5449
|
+
};
|
|
5450
|
+
}
|
|
5376
5451
|
handleMarginModeAndParams(methodName, params = {}, defaultValue = undefined) {
|
|
5377
5452
|
/**
|
|
5378
5453
|
* @ignore
|
package/dist/cjs/src/okx.js
CHANGED
|
@@ -5161,7 +5161,37 @@ class okx extends okx$1 {
|
|
|
5161
5161
|
// "msg": ""
|
|
5162
5162
|
// }
|
|
5163
5163
|
//
|
|
5164
|
-
|
|
5164
|
+
const data = this.safeList(response, 'data', []);
|
|
5165
|
+
return this.parseLeverage(data, market);
|
|
5166
|
+
}
|
|
5167
|
+
parseLeverage(leverage, market = undefined) {
|
|
5168
|
+
let marketId = undefined;
|
|
5169
|
+
let marginMode = undefined;
|
|
5170
|
+
let longLeverage = undefined;
|
|
5171
|
+
let shortLeverage = undefined;
|
|
5172
|
+
for (let i = 0; i < leverage.length; i++) {
|
|
5173
|
+
const entry = leverage[i];
|
|
5174
|
+
marginMode = this.safeStringLower(entry, 'mgnMode');
|
|
5175
|
+
marketId = this.safeString(entry, 'instId');
|
|
5176
|
+
const positionSide = this.safeStringLower(entry, 'posSide');
|
|
5177
|
+
if (positionSide === 'long') {
|
|
5178
|
+
longLeverage = this.safeInteger(entry, 'lever');
|
|
5179
|
+
}
|
|
5180
|
+
else if (positionSide === 'short') {
|
|
5181
|
+
shortLeverage = this.safeInteger(entry, 'lever');
|
|
5182
|
+
}
|
|
5183
|
+
else {
|
|
5184
|
+
longLeverage = this.safeInteger(entry, 'lever');
|
|
5185
|
+
shortLeverage = this.safeInteger(entry, 'lever');
|
|
5186
|
+
}
|
|
5187
|
+
}
|
|
5188
|
+
return {
|
|
5189
|
+
'info': leverage,
|
|
5190
|
+
'symbol': this.safeSymbol(marketId, market),
|
|
5191
|
+
'marginMode': marginMode,
|
|
5192
|
+
'longLeverage': longLeverage,
|
|
5193
|
+
'shortLeverage': shortLeverage,
|
|
5194
|
+
};
|
|
5165
5195
|
}
|
|
5166
5196
|
async fetchPosition(symbol, params = {}) {
|
|
5167
5197
|
/**
|
|
@@ -610,7 +610,7 @@ class alpaca extends alpaca$1 {
|
|
|
610
610
|
for (let i = 0; i < message.length; i++) {
|
|
611
611
|
const data = message[i];
|
|
612
612
|
const T = this.safeString(data, 'T');
|
|
613
|
-
const msg = this.
|
|
613
|
+
const msg = this.safeString(data, 'msg');
|
|
614
614
|
if (T === 'subscription') {
|
|
615
615
|
this.handleSubscription(client, data);
|
|
616
616
|
return;
|
|
@@ -60,17 +60,9 @@ class bitmex extends bitmex$1 {
|
|
|
60
60
|
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
61
61
|
*/
|
|
62
62
|
await this.loadMarkets();
|
|
63
|
-
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
const url = this.urls['api']['ws'];
|
|
67
|
-
const request = {
|
|
68
|
-
'op': 'subscribe',
|
|
69
|
-
'args': [
|
|
70
|
-
messageHash,
|
|
71
|
-
],
|
|
72
|
-
};
|
|
73
|
-
return await this.watch(url, messageHash, this.extend(request, params), messageHash);
|
|
63
|
+
symbol = this.symbol(symbol);
|
|
64
|
+
const tickers = await this.watchTickers([symbol], params);
|
|
65
|
+
return tickers[symbol];
|
|
74
66
|
}
|
|
75
67
|
async watchTickers(symbols = undefined, params = {}) {
|
|
76
68
|
/**
|
|
@@ -86,26 +78,27 @@ class bitmex extends bitmex$1 {
|
|
|
86
78
|
const name = 'instrument';
|
|
87
79
|
const url = this.urls['api']['ws'];
|
|
88
80
|
const messageHashes = [];
|
|
81
|
+
const rawSubscriptions = [];
|
|
89
82
|
if (symbols !== undefined) {
|
|
90
83
|
for (let i = 0; i < symbols.length; i++) {
|
|
91
84
|
const symbol = symbols[i];
|
|
92
85
|
const market = this.market(symbol);
|
|
93
|
-
const
|
|
94
|
-
|
|
86
|
+
const subscription = name + ':' + market['id'];
|
|
87
|
+
rawSubscriptions.push(subscription);
|
|
88
|
+
const messageHash = 'ticker:' + symbol;
|
|
89
|
+
messageHashes.push(messageHash);
|
|
95
90
|
}
|
|
96
91
|
}
|
|
97
92
|
else {
|
|
98
|
-
|
|
93
|
+
rawSubscriptions.push(name);
|
|
94
|
+
messageHashes.push('alltickers');
|
|
99
95
|
}
|
|
100
96
|
const request = {
|
|
101
97
|
'op': 'subscribe',
|
|
102
|
-
'args':
|
|
98
|
+
'args': rawSubscriptions,
|
|
103
99
|
};
|
|
104
|
-
const ticker = await this.watchMultiple(url, messageHashes, this.extend(request, params),
|
|
100
|
+
const ticker = await this.watchMultiple(url, messageHashes, this.extend(request, params), rawSubscriptions);
|
|
105
101
|
if (this.newUpdates) {
|
|
106
|
-
if (symbols === undefined) {
|
|
107
|
-
return ticker;
|
|
108
|
-
}
|
|
109
102
|
const result = {};
|
|
110
103
|
result[ticker['symbol']] = ticker;
|
|
111
104
|
return result;
|
|
@@ -339,23 +332,21 @@ class bitmex extends bitmex$1 {
|
|
|
339
332
|
// ]
|
|
340
333
|
// }
|
|
341
334
|
//
|
|
342
|
-
const table = this.safeString(message, 'table');
|
|
343
335
|
const data = this.safeList(message, 'data', []);
|
|
344
|
-
const tickers = {};
|
|
345
336
|
for (let i = 0; i < data.length; i++) {
|
|
346
337
|
const update = data[i];
|
|
347
338
|
const marketId = this.safeString(update, 'symbol');
|
|
348
|
-
const
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
const
|
|
353
|
-
const
|
|
354
|
-
tickers[symbol] =
|
|
355
|
-
|
|
356
|
-
client.resolve(
|
|
339
|
+
const symbol = this.safeSymbol(marketId);
|
|
340
|
+
if (!(symbol in this.tickers)) {
|
|
341
|
+
this.tickers[symbol] = this.parseTicker({});
|
|
342
|
+
}
|
|
343
|
+
const updatedTicker = this.parseTicker(update);
|
|
344
|
+
const fullParsedTicker = this.deepExtend(this.tickers[symbol], updatedTicker);
|
|
345
|
+
this.tickers[symbol] = fullParsedTicker;
|
|
346
|
+
const messageHash = 'ticker:' + symbol;
|
|
347
|
+
client.resolve(fullParsedTicker, messageHash);
|
|
348
|
+
client.resolve(fullParsedTicker, 'alltickers');
|
|
357
349
|
}
|
|
358
|
-
client.resolve(tickers, 'instrument');
|
|
359
350
|
return message;
|
|
360
351
|
}
|
|
361
352
|
async watchBalance(params = {}) {
|
|
@@ -1335,7 +1326,7 @@ class bitmex extends bitmex$1 {
|
|
|
1335
1326
|
const messageHash = table + ':' + market['id'];
|
|
1336
1327
|
const result = [
|
|
1337
1328
|
this.parse8601(this.safeString(candle, 'timestamp')) - duration * 1000,
|
|
1338
|
-
|
|
1329
|
+
undefined,
|
|
1339
1330
|
this.safeFloat(candle, 'high'),
|
|
1340
1331
|
this.safeFloat(candle, 'low'),
|
|
1341
1332
|
this.safeFloat(candle, 'close'),
|
package/dist/cjs/src/pro/cex.js
CHANGED
|
@@ -1088,7 +1088,10 @@ class cex extends cex$1 {
|
|
|
1088
1088
|
for (let i = 0; i < sorted.length; i++) {
|
|
1089
1089
|
stored.append(this.parseOHLCV(sorted[i], market));
|
|
1090
1090
|
}
|
|
1091
|
-
this.ohlcvs
|
|
1091
|
+
if (!(symbol in this.ohlcvs)) {
|
|
1092
|
+
this.ohlcvs[symbol] = {};
|
|
1093
|
+
}
|
|
1094
|
+
this.ohlcvs[symbol]['unknown'] = stored;
|
|
1092
1095
|
client.resolve(stored, messageHash);
|
|
1093
1096
|
}
|
|
1094
1097
|
handleOHLCV24(client, message) {
|
|
@@ -1147,7 +1150,8 @@ class cex extends cex$1 {
|
|
|
1147
1150
|
const pair = this.safeString(message, 'pair');
|
|
1148
1151
|
const symbol = this.pairToSymbol(pair);
|
|
1149
1152
|
const messageHash = 'ohlcv:' + symbol;
|
|
1150
|
-
const stored = this.safeValue(this.ohlcvs, symbol);
|
|
1153
|
+
// const stored = this.safeValue (this.ohlcvs, symbol);
|
|
1154
|
+
const stored = this.ohlcvs[symbol]['unknown'];
|
|
1151
1155
|
for (let i = 0; i < data.length; i++) {
|
|
1152
1156
|
const ohlcv = [
|
|
1153
1157
|
this.safeTimestamp(data[i], 0),
|
|
@@ -387,14 +387,17 @@ class coinex extends coinex$1 {
|
|
|
387
387
|
const keys = Object.keys(this.ohlcvs);
|
|
388
388
|
const keysLength = keys.length;
|
|
389
389
|
if (keysLength === 0) {
|
|
390
|
+
this.ohlcvs['unknown'] = {};
|
|
390
391
|
const limit = this.safeInteger(this.options, 'OHLCVLimit', 1000);
|
|
391
|
-
|
|
392
|
+
const stored = new Cache.ArrayCacheByTimestamp(limit);
|
|
393
|
+
this.ohlcvs['unknown']['unknown'] = stored;
|
|
392
394
|
}
|
|
395
|
+
const ohlcv = this.ohlcvs['unknown']['unknown'];
|
|
393
396
|
for (let i = 0; i < ohlcvs.length; i++) {
|
|
394
397
|
const candle = ohlcvs[i];
|
|
395
|
-
|
|
398
|
+
ohlcv.append(candle);
|
|
396
399
|
}
|
|
397
|
-
client.resolve(
|
|
400
|
+
client.resolve(ohlcv, messageHash);
|
|
398
401
|
}
|
|
399
402
|
async watchTicker(symbol, params = {}) {
|
|
400
403
|
/**
|
package/dist/cjs/src/pro/mexc.js
CHANGED
|
@@ -244,7 +244,7 @@ class mexc extends mexc$1 {
|
|
|
244
244
|
// "d": {
|
|
245
245
|
// "e": "spot@public.kline.v3.api",
|
|
246
246
|
// "k": {
|
|
247
|
-
// "t":
|
|
247
|
+
// "t": 1678642261,
|
|
248
248
|
// "o": 20626.94,
|
|
249
249
|
// "c": 20599.69,
|
|
250
250
|
// "h": 20626.94,
|
|
@@ -457,7 +457,7 @@ class mexc extends mexc$1 {
|
|
|
457
457
|
client.subscriptions[messageHash] = 1;
|
|
458
458
|
this.orderbooks[symbol] = this.countedOrderBook({});
|
|
459
459
|
}
|
|
460
|
-
const storedOrderBook = this.
|
|
460
|
+
const storedOrderBook = this.orderbooks[symbol];
|
|
461
461
|
const nonce = this.safeInteger(storedOrderBook, 'nonce');
|
|
462
462
|
if (nonce === undefined) {
|
|
463
463
|
const cacheLength = storedOrderBook.cache.length;
|
|
@@ -114,15 +114,19 @@ class whitebit extends whitebit$1 {
|
|
|
114
114
|
const symbol = market['symbol'];
|
|
115
115
|
const messageHash = 'candles' + ':' + symbol;
|
|
116
116
|
const parsed = this.parseOHLCV(data, market);
|
|
117
|
-
this.ohlcvs[symbol] = this.safeValue(this.ohlcvs, symbol);
|
|
118
|
-
|
|
119
|
-
|
|
117
|
+
// this.ohlcvs[symbol] = this.safeValue (this.ohlcvs, symbol);
|
|
118
|
+
if (!(symbol in this.ohlcvs)) {
|
|
119
|
+
this.ohlcvs[symbol] = {};
|
|
120
|
+
}
|
|
121
|
+
// let stored = this.ohlcvs[symbol]['unknown']; // we don't know the timeframe but we need to respect the type
|
|
122
|
+
if (!('unknown' in this.ohlcvs[symbol])) {
|
|
120
123
|
const limit = this.safeInteger(this.options, 'OHLCVLimit', 1000);
|
|
121
|
-
stored = new Cache.ArrayCacheByTimestamp(limit);
|
|
122
|
-
this.ohlcvs[symbol] = stored;
|
|
124
|
+
const stored = new Cache.ArrayCacheByTimestamp(limit);
|
|
125
|
+
this.ohlcvs[symbol]['unknown'] = stored;
|
|
123
126
|
}
|
|
124
|
-
|
|
125
|
-
|
|
127
|
+
const ohlcv = this.ohlcvs[symbol]['unknown'];
|
|
128
|
+
ohlcv.append(parsed);
|
|
129
|
+
client.resolve(ohlcv, messageHash);
|
|
126
130
|
}
|
|
127
131
|
return message;
|
|
128
132
|
}
|
|
@@ -864,12 +868,10 @@ class whitebit extends whitebit$1 {
|
|
|
864
868
|
if (!this.handleErrorMessage(client, message)) {
|
|
865
869
|
return;
|
|
866
870
|
}
|
|
867
|
-
const result = this.
|
|
868
|
-
if (result
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
return;
|
|
872
|
-
}
|
|
871
|
+
const result = this.safeString(message, 'result');
|
|
872
|
+
if (result === 'pong') {
|
|
873
|
+
this.handlePong(client, message);
|
|
874
|
+
return;
|
|
873
875
|
}
|
|
874
876
|
const id = this.safeInteger(message, 'id');
|
|
875
877
|
if (id !== undefined) {
|
package/dist/cjs/src/probit.js
CHANGED
|
@@ -1553,7 +1553,7 @@ class probit extends probit$1 {
|
|
|
1553
1553
|
// ]
|
|
1554
1554
|
// }
|
|
1555
1555
|
//
|
|
1556
|
-
const data = this.
|
|
1556
|
+
const data = this.safeList(response, 'data', []);
|
|
1557
1557
|
return this.parseTransactions(data, currency, since, limit);
|
|
1558
1558
|
}
|
|
1559
1559
|
parseTransaction(transaction, currency = undefined) {
|
|
@@ -1378,7 +1378,7 @@ class wavesexchange extends wavesexchange$1 {
|
|
|
1378
1378
|
'amountAsset': amountAsset,
|
|
1379
1379
|
'priceAsset': priceAsset,
|
|
1380
1380
|
};
|
|
1381
|
-
const sandboxMode = this.
|
|
1381
|
+
const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
|
|
1382
1382
|
const chainId = (sandboxMode) ? 84 : 87;
|
|
1383
1383
|
const body = {
|
|
1384
1384
|
'senderPublicKey': this.apiKey,
|