ccxt 4.1.63 → 4.1.64
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 +213 -121
- package/dist/ccxt.browser.min.js +3 -3
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/binanceus.js +33 -4
- package/dist/cjs/src/kraken.js +20 -2
- package/dist/cjs/src/krakenfutures.js +7 -7
- package/dist/cjs/src/luno.js +10 -11
- package/dist/cjs/src/phemex.js +130 -91
- package/dist/cjs/src/pro/krakenfutures.js +4 -1
- package/dist/cjs/src/tokocrypto.js +1 -3
- package/dist/cjs/src/wazirx.js +7 -1
- package/doc/manual.rst +1 -1
- package/doc/readme.rst +1 -1
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/binanceus.js +33 -4
- package/js/src/kraken.js +20 -2
- package/js/src/krakenfutures.js +7 -7
- package/js/src/luno.js +10 -11
- package/js/src/phemex.js +130 -91
- package/js/src/pro/krakenfutures.js +4 -1
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
- package/js/src/tokocrypto.js +1 -3
- package/js/src/wazirx.js +7 -1
- package/package.json +1 -1
package/js/src/phemex.js
CHANGED
|
@@ -989,11 +989,13 @@ export default class phemex extends Exchange {
|
|
|
989
989
|
'symbol': market['id'],
|
|
990
990
|
// 'id': 123456789, // optional request id
|
|
991
991
|
};
|
|
992
|
-
let
|
|
992
|
+
let response = undefined;
|
|
993
993
|
if (market['linear'] && market['settle'] === 'USDT') {
|
|
994
|
-
|
|
994
|
+
response = await this.v2GetMdV2Orderbook(this.extend(request, params));
|
|
995
|
+
}
|
|
996
|
+
else {
|
|
997
|
+
response = await this.v1GetMdOrderbook(this.extend(request, params));
|
|
995
998
|
}
|
|
996
|
-
const response = await this[method](this.extend(request, params));
|
|
997
999
|
//
|
|
998
1000
|
// {
|
|
999
1001
|
// "error": null,
|
|
@@ -1298,16 +1300,18 @@ export default class phemex extends Exchange {
|
|
|
1298
1300
|
'symbol': market['id'],
|
|
1299
1301
|
// 'id': 123456789, // optional request id
|
|
1300
1302
|
};
|
|
1301
|
-
let
|
|
1303
|
+
let response = undefined;
|
|
1302
1304
|
if (market['swap']) {
|
|
1303
1305
|
if (market['inverse'] || market['settle'] === 'USD') {
|
|
1304
|
-
|
|
1306
|
+
response = await this.v1GetMdTicker24hr(this.extend(request, params));
|
|
1305
1307
|
}
|
|
1306
1308
|
else {
|
|
1307
|
-
|
|
1309
|
+
response = await this.v2GetMdV2Ticker24hr(this.extend(request, params));
|
|
1308
1310
|
}
|
|
1309
1311
|
}
|
|
1310
|
-
|
|
1312
|
+
else {
|
|
1313
|
+
response = await this.v1GetMdSpotTicker24hr(this.extend(request, params));
|
|
1314
|
+
}
|
|
1311
1315
|
//
|
|
1312
1316
|
// spot
|
|
1313
1317
|
//
|
|
@@ -1378,18 +1382,16 @@ export default class phemex extends Exchange {
|
|
|
1378
1382
|
let subType = undefined;
|
|
1379
1383
|
[subType, params] = this.handleSubTypeAndParams('fetchTickers', market, params);
|
|
1380
1384
|
const query = this.omit(params, 'type');
|
|
1381
|
-
let
|
|
1385
|
+
let response = undefined;
|
|
1382
1386
|
if (type === 'spot') {
|
|
1383
|
-
|
|
1387
|
+
response = await this.v1GetMdSpotTicker24hrAll(query);
|
|
1384
1388
|
}
|
|
1385
|
-
else if (subType === 'inverse') {
|
|
1386
|
-
|
|
1389
|
+
else if (subType === 'inverse' || market['settle'] === 'USD') {
|
|
1390
|
+
response = await this.v1GetMdTicker24hrAll(query);
|
|
1387
1391
|
}
|
|
1388
1392
|
else {
|
|
1389
|
-
|
|
1393
|
+
response = await this.v2GetMdV2Ticker24hrAll(query);
|
|
1390
1394
|
}
|
|
1391
|
-
const method = this.safeString(this.options, 'fetchTickersMethod', defaultMethod);
|
|
1392
|
-
const response = await this[method](query);
|
|
1393
1395
|
const result = this.safeValue(response, 'result', []);
|
|
1394
1396
|
return this.parseTickers(result, symbols);
|
|
1395
1397
|
}
|
|
@@ -1411,11 +1413,13 @@ export default class phemex extends Exchange {
|
|
|
1411
1413
|
'symbol': market['id'],
|
|
1412
1414
|
// 'id': 123456789, // optional request id
|
|
1413
1415
|
};
|
|
1414
|
-
let
|
|
1416
|
+
let response = undefined;
|
|
1415
1417
|
if (market['linear'] && market['settle'] === 'USDT') {
|
|
1416
|
-
|
|
1418
|
+
response = await this.v2GetMdV2Trade(this.extend(request, params));
|
|
1419
|
+
}
|
|
1420
|
+
else {
|
|
1421
|
+
response = await this.v1GetMdTrade(this.extend(request, params));
|
|
1417
1422
|
}
|
|
1418
|
-
const response = await this[method](this.extend(request, params));
|
|
1419
1423
|
//
|
|
1420
1424
|
// {
|
|
1421
1425
|
// "error": null,
|
|
@@ -1812,18 +1816,20 @@ export default class phemex extends Exchange {
|
|
|
1812
1816
|
* @description query for balance and get the amount of funds available for trading or funds locked in orders
|
|
1813
1817
|
* @see https://github.com/phemex/phemex-api-docs/blob/master/Public-Hedged-Perpetual-API.md#query-account-positions
|
|
1814
1818
|
* @param {object} [params] extra parameters specific to the phemex api endpoint
|
|
1819
|
+
* @param {string} [params.type] spot or swap
|
|
1815
1820
|
* @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
|
|
1816
1821
|
*/
|
|
1817
1822
|
await this.loadMarkets();
|
|
1818
1823
|
let type = undefined;
|
|
1819
1824
|
[type, params] = this.handleMarketTypeAndParams('fetchBalance', undefined, params);
|
|
1820
|
-
|
|
1825
|
+
const code = this.safeString(params, 'code');
|
|
1826
|
+
params = this.omit(params, ['type', 'code']);
|
|
1827
|
+
let response = undefined;
|
|
1821
1828
|
const request = {};
|
|
1822
1829
|
if ((type !== 'spot') && (type !== 'swap')) {
|
|
1823
1830
|
throw new BadRequest(this.id + ' does not support ' + type + ' markets, only spot and swap');
|
|
1824
1831
|
}
|
|
1825
1832
|
if (type === 'swap') {
|
|
1826
|
-
const code = this.safeString(params, 'code');
|
|
1827
1833
|
let settle = undefined;
|
|
1828
1834
|
[settle, params] = this.handleOptionAndParams(params, 'fetchBalance', 'settle');
|
|
1829
1835
|
if (code !== undefined || settle !== undefined) {
|
|
@@ -1837,10 +1843,10 @@ export default class phemex extends Exchange {
|
|
|
1837
1843
|
const currency = this.currency(coin);
|
|
1838
1844
|
request['currency'] = currency['id'];
|
|
1839
1845
|
if (currency['id'] === 'USDT') {
|
|
1840
|
-
|
|
1846
|
+
response = await this.privateGetGAccountsAccountPositions(this.extend(request, params));
|
|
1841
1847
|
}
|
|
1842
1848
|
else {
|
|
1843
|
-
|
|
1849
|
+
response = await this.privateGetAccountsAccountPositions(this.extend(request, params));
|
|
1844
1850
|
}
|
|
1845
1851
|
}
|
|
1846
1852
|
else {
|
|
@@ -1848,10 +1854,12 @@ export default class phemex extends Exchange {
|
|
|
1848
1854
|
if (currency === undefined) {
|
|
1849
1855
|
throw new ArgumentsRequired(this.id + ' fetchBalance() requires a code parameter or a currency or settle parameter for ' + type + ' type');
|
|
1850
1856
|
}
|
|
1857
|
+
response = await this.privateGetSpotWallets(this.extend(request, params));
|
|
1851
1858
|
}
|
|
1852
1859
|
}
|
|
1853
|
-
|
|
1854
|
-
|
|
1860
|
+
else {
|
|
1861
|
+
response = await this.privateGetSpotWallets(this.extend(request, params));
|
|
1862
|
+
}
|
|
1855
1863
|
//
|
|
1856
1864
|
// usdt
|
|
1857
1865
|
// {
|
|
@@ -2378,7 +2386,7 @@ export default class phemex extends Exchange {
|
|
|
2378
2386
|
request['clOrdID'] = clientOrderId;
|
|
2379
2387
|
params = this.omit(params, ['clOrdID', 'clientOrderId']);
|
|
2380
2388
|
}
|
|
2381
|
-
const stopPrice = this.
|
|
2389
|
+
const stopPrice = this.safeStringN(params, ['stopPx', 'stopPrice', 'triggerPrice']);
|
|
2382
2390
|
if (stopPrice !== undefined) {
|
|
2383
2391
|
if (market['settle'] === 'USDT') {
|
|
2384
2392
|
request['stopPxRp'] = this.priceToPrecision(symbol, stopPrice);
|
|
@@ -2387,7 +2395,7 @@ export default class phemex extends Exchange {
|
|
|
2387
2395
|
request['stopPxEp'] = this.toEp(stopPrice, market);
|
|
2388
2396
|
}
|
|
2389
2397
|
}
|
|
2390
|
-
params = this.omit(params, ['stopPx', 'stopPrice', 'stopLoss', 'takeProfit']);
|
|
2398
|
+
params = this.omit(params, ['stopPx', 'stopPrice', 'stopLoss', 'takeProfit', 'triggerPrice']);
|
|
2391
2399
|
if (market['spot']) {
|
|
2392
2400
|
let qtyType = this.safeValue(params, 'qtyType', 'ByBase');
|
|
2393
2401
|
if ((type === 'Market') || (type === 'Stop') || (type === 'MarketIfTouched')) {
|
|
@@ -2523,15 +2531,17 @@ export default class phemex extends Exchange {
|
|
|
2523
2531
|
}
|
|
2524
2532
|
params = this.omit(params, 'stopLossPrice');
|
|
2525
2533
|
}
|
|
2526
|
-
|
|
2534
|
+
params = this.omit(params, 'reduceOnly');
|
|
2535
|
+
let response = undefined;
|
|
2527
2536
|
if (market['settle'] === 'USDT') {
|
|
2528
|
-
|
|
2537
|
+
response = await this.privatePostGOrders(this.extend(request, params));
|
|
2529
2538
|
}
|
|
2530
2539
|
else if (market['contract']) {
|
|
2531
|
-
|
|
2540
|
+
response = await this.privatePostOrders(this.extend(request, params));
|
|
2541
|
+
}
|
|
2542
|
+
else {
|
|
2543
|
+
response = await this.privatePostSpotOrders(this.extend(request, params));
|
|
2532
2544
|
}
|
|
2533
|
-
params = this.omit(params, 'reduceOnly');
|
|
2534
|
-
const response = await this[method](this.extend(request, params));
|
|
2535
2545
|
//
|
|
2536
2546
|
// spot
|
|
2537
2547
|
//
|
|
@@ -2673,18 +2683,20 @@ export default class phemex extends Exchange {
|
|
|
2673
2683
|
}
|
|
2674
2684
|
}
|
|
2675
2685
|
params = this.omit(params, ['stopPx', 'stopPrice']);
|
|
2676
|
-
let
|
|
2686
|
+
let response = undefined;
|
|
2677
2687
|
if (isUSDTSettled) {
|
|
2678
|
-
method = 'privatePutGOrdersReplace';
|
|
2679
2688
|
const posSide = this.safeString(params, 'posSide');
|
|
2680
2689
|
if (posSide === undefined) {
|
|
2681
2690
|
request['posSide'] = 'Merged';
|
|
2682
2691
|
}
|
|
2692
|
+
response = await this.privatePutGOrdersReplace(this.extend(request, params));
|
|
2683
2693
|
}
|
|
2684
2694
|
else if (market['swap']) {
|
|
2685
|
-
|
|
2695
|
+
response = await this.privatePutOrdersReplace(this.extend(request, params));
|
|
2696
|
+
}
|
|
2697
|
+
else {
|
|
2698
|
+
response = await this.privatePutSpotOrders(this.extend(request, params));
|
|
2686
2699
|
}
|
|
2687
|
-
const response = await this[method](this.extend(request, params));
|
|
2688
2700
|
const data = this.safeValue(response, 'data', {});
|
|
2689
2701
|
return this.parseOrder(data, market);
|
|
2690
2702
|
}
|
|
@@ -2716,18 +2728,20 @@ export default class phemex extends Exchange {
|
|
|
2716
2728
|
else {
|
|
2717
2729
|
request['orderID'] = id;
|
|
2718
2730
|
}
|
|
2719
|
-
let
|
|
2731
|
+
let response = undefined;
|
|
2720
2732
|
if (market['settle'] === 'USDT') {
|
|
2721
|
-
method = 'privateDeleteGOrdersCancel';
|
|
2722
2733
|
const posSide = this.safeString(params, 'posSide');
|
|
2723
2734
|
if (posSide === undefined) {
|
|
2724
2735
|
request['posSide'] = 'Merged';
|
|
2725
2736
|
}
|
|
2737
|
+
response = await this.privateDeleteGOrdersCancel(this.extend(request, params));
|
|
2726
2738
|
}
|
|
2727
2739
|
else if (market['swap']) {
|
|
2728
|
-
|
|
2740
|
+
response = await this.privateDeleteOrdersCancel(this.extend(request, params));
|
|
2741
|
+
}
|
|
2742
|
+
else {
|
|
2743
|
+
response = await this.privateDeleteSpotOrders(this.extend(request, params));
|
|
2729
2744
|
}
|
|
2730
|
-
const response = await this[method](this.extend(request, params));
|
|
2731
2745
|
const data = this.safeValue(response, 'data', {});
|
|
2732
2746
|
return this.parseOrder(data, market);
|
|
2733
2747
|
}
|
|
@@ -2745,21 +2759,23 @@ export default class phemex extends Exchange {
|
|
|
2745
2759
|
throw new ArgumentsRequired(this.id + ' cancelAllOrders() requires a symbol argument');
|
|
2746
2760
|
}
|
|
2747
2761
|
await this.loadMarkets();
|
|
2762
|
+
const market = this.market(symbol);
|
|
2748
2763
|
const request = {
|
|
2749
|
-
|
|
2750
|
-
|
|
2751
|
-
|
|
2764
|
+
'symbol': market['id'],
|
|
2765
|
+
// 'untriggerred': false, // false to cancel non-conditional orders, true to cancel conditional orders
|
|
2766
|
+
// 'text': 'up to 40 characters max',
|
|
2752
2767
|
};
|
|
2753
|
-
|
|
2754
|
-
let method = 'privateDeleteSpotOrdersAll';
|
|
2768
|
+
let response = undefined;
|
|
2755
2769
|
if (market['settle'] === 'USDT') {
|
|
2756
|
-
|
|
2770
|
+
response = await this.privateDeleteGOrdersAll(this.extend(request, params));
|
|
2757
2771
|
}
|
|
2758
2772
|
else if (market['swap']) {
|
|
2759
|
-
|
|
2773
|
+
response = await this.privateDeleteOrdersAll(this.extend(request, params));
|
|
2760
2774
|
}
|
|
2761
|
-
|
|
2762
|
-
|
|
2775
|
+
else {
|
|
2776
|
+
response = await this.privateDeleteSpotOrdersAll(this.extend(request, params));
|
|
2777
|
+
}
|
|
2778
|
+
return response;
|
|
2763
2779
|
}
|
|
2764
2780
|
async fetchOrder(id, symbol = undefined, params = {}) {
|
|
2765
2781
|
/**
|
|
@@ -2778,7 +2794,6 @@ export default class phemex extends Exchange {
|
|
|
2778
2794
|
if (market['settle'] === 'USDT') {
|
|
2779
2795
|
throw new NotSupported(this.id + 'fetchOrder() is not supported yet for USDT settled swap markets'); // https://github.com/phemex/phemex-api-docs/blob/master/Public-Hedged-Perpetual-API.md#query-user-order-by-orderid-or-query-user-order-by-client-order-id
|
|
2780
2796
|
}
|
|
2781
|
-
const method = market['spot'] ? 'privateGetSpotOrdersActive' : 'privateGetExchangeOrder';
|
|
2782
2797
|
const request = {
|
|
2783
2798
|
'symbol': market['id'],
|
|
2784
2799
|
};
|
|
@@ -2790,7 +2805,13 @@ export default class phemex extends Exchange {
|
|
|
2790
2805
|
else {
|
|
2791
2806
|
request['orderID'] = id;
|
|
2792
2807
|
}
|
|
2793
|
-
|
|
2808
|
+
let response = undefined;
|
|
2809
|
+
if (market['spot']) {
|
|
2810
|
+
response = await this.privateGetSpotOrdersActive(this.extend(request, params));
|
|
2811
|
+
}
|
|
2812
|
+
else {
|
|
2813
|
+
response = await this.privateGetExchangeOrder(this.extend(request, params));
|
|
2814
|
+
}
|
|
2794
2815
|
const data = this.safeValue(response, 'data', {});
|
|
2795
2816
|
let order = data;
|
|
2796
2817
|
if (Array.isArray(data)) {
|
|
@@ -2827,21 +2848,23 @@ export default class phemex extends Exchange {
|
|
|
2827
2848
|
const request = {
|
|
2828
2849
|
'symbol': market['id'],
|
|
2829
2850
|
};
|
|
2830
|
-
let method = 'privateGetSpotOrders';
|
|
2831
|
-
if (market['settle'] === 'USDT') {
|
|
2832
|
-
request['currency'] = market['settle'];
|
|
2833
|
-
method = 'privateGetExchangeOrderV2OrderList';
|
|
2834
|
-
}
|
|
2835
|
-
else if (market['swap']) {
|
|
2836
|
-
method = 'privateGetExchangeOrderList';
|
|
2837
|
-
}
|
|
2838
2851
|
if (since !== undefined) {
|
|
2839
2852
|
request['start'] = since;
|
|
2840
2853
|
}
|
|
2841
2854
|
if (limit !== undefined) {
|
|
2842
2855
|
request['limit'] = limit;
|
|
2843
2856
|
}
|
|
2844
|
-
|
|
2857
|
+
let response = undefined;
|
|
2858
|
+
if (market['settle'] === 'USDT') {
|
|
2859
|
+
request['currency'] = market['settle'];
|
|
2860
|
+
response = await this.privateGetExchangeOrderV2OrderList(this.extend(request, params));
|
|
2861
|
+
}
|
|
2862
|
+
else if (market['swap']) {
|
|
2863
|
+
response = await this.privateGetExchangeOrderList(this.extend(request, params));
|
|
2864
|
+
}
|
|
2865
|
+
else {
|
|
2866
|
+
response = await this.privateGetSpotOrders(this.extend(request, params));
|
|
2867
|
+
}
|
|
2845
2868
|
const data = this.safeValue(response, 'data', {});
|
|
2846
2869
|
const rows = this.safeValue(data, 'rows', data);
|
|
2847
2870
|
return this.parseOrders(rows, market, since, limit);
|
|
@@ -2864,19 +2887,20 @@ export default class phemex extends Exchange {
|
|
|
2864
2887
|
}
|
|
2865
2888
|
await this.loadMarkets();
|
|
2866
2889
|
const market = this.market(symbol);
|
|
2867
|
-
let method = 'privateGetSpotOrders';
|
|
2868
|
-
if (market['settle'] === 'USDT') {
|
|
2869
|
-
method = 'privateGetGOrdersActiveList';
|
|
2870
|
-
}
|
|
2871
|
-
else if (market['swap']) {
|
|
2872
|
-
method = 'privateGetOrdersActiveList';
|
|
2873
|
-
}
|
|
2874
2890
|
const request = {
|
|
2875
2891
|
'symbol': market['id'],
|
|
2876
2892
|
};
|
|
2877
2893
|
let response = undefined;
|
|
2878
2894
|
try {
|
|
2879
|
-
|
|
2895
|
+
if (market['settle'] === 'USDT') {
|
|
2896
|
+
response = await this.privateGetGOrdersActiveList(this.extend(request, params));
|
|
2897
|
+
}
|
|
2898
|
+
else if (market['swap']) {
|
|
2899
|
+
response = await this.privateGetOrdersActiveList(this.extend(request, params));
|
|
2900
|
+
}
|
|
2901
|
+
else {
|
|
2902
|
+
response = await this.privateGetSpotOrders(this.extend(request, params));
|
|
2903
|
+
}
|
|
2880
2904
|
}
|
|
2881
2905
|
catch (e) {
|
|
2882
2906
|
if (e instanceof OrderNotFound) {
|
|
@@ -2913,21 +2937,23 @@ export default class phemex extends Exchange {
|
|
|
2913
2937
|
const request = {
|
|
2914
2938
|
'symbol': market['id'],
|
|
2915
2939
|
};
|
|
2916
|
-
let method = 'privateGetExchangeSpotOrder';
|
|
2917
|
-
if (market['settle'] === 'USDT') {
|
|
2918
|
-
request['currency'] = market['settle'];
|
|
2919
|
-
method = 'privateGetExchangeOrderV2OrderList';
|
|
2920
|
-
}
|
|
2921
|
-
else if (market['swap']) {
|
|
2922
|
-
method = 'privateGetExchangeOrderList';
|
|
2923
|
-
}
|
|
2924
2940
|
if (since !== undefined) {
|
|
2925
2941
|
request['start'] = since;
|
|
2926
2942
|
}
|
|
2927
2943
|
if (limit !== undefined) {
|
|
2928
2944
|
request['limit'] = limit;
|
|
2929
2945
|
}
|
|
2930
|
-
|
|
2946
|
+
let response = undefined;
|
|
2947
|
+
if (market['settle'] === 'USDT') {
|
|
2948
|
+
request['currency'] = market['settle'];
|
|
2949
|
+
response = await this.privateGetExchangeOrderV2OrderList(this.extend(request, params));
|
|
2950
|
+
}
|
|
2951
|
+
else if (market['swap']) {
|
|
2952
|
+
response = await this.privateGetExchangeOrderList(this.extend(request, params));
|
|
2953
|
+
}
|
|
2954
|
+
else {
|
|
2955
|
+
response = await this.privateGetExchangeSpotOrder(this.extend(request, params));
|
|
2956
|
+
}
|
|
2931
2957
|
//
|
|
2932
2958
|
// spot
|
|
2933
2959
|
//
|
|
@@ -2991,13 +3017,6 @@ export default class phemex extends Exchange {
|
|
|
2991
3017
|
}
|
|
2992
3018
|
await this.loadMarkets();
|
|
2993
3019
|
const market = this.market(symbol);
|
|
2994
|
-
let method = 'privateGetExchangeSpotOrderTrades';
|
|
2995
|
-
if (market['swap']) {
|
|
2996
|
-
method = 'privateGetExchangeOrderTrade';
|
|
2997
|
-
if (market['settle'] === 'USDT') {
|
|
2998
|
-
method = 'privateGetExchangeOrderV2TradingList';
|
|
2999
|
-
}
|
|
3000
|
-
}
|
|
3001
3020
|
const request = {};
|
|
3002
3021
|
if (limit !== undefined) {
|
|
3003
3022
|
limit = Math.min(200, limit);
|
|
@@ -3019,7 +3038,19 @@ export default class phemex extends Exchange {
|
|
|
3019
3038
|
if (market['swap'] && (limit !== undefined)) {
|
|
3020
3039
|
request['limit'] = limit;
|
|
3021
3040
|
}
|
|
3022
|
-
const
|
|
3041
|
+
const isUSDTSettled = market['settle'] === 'USDT';
|
|
3042
|
+
let response = undefined;
|
|
3043
|
+
if (market['swap']) {
|
|
3044
|
+
if (isUSDTSettled) {
|
|
3045
|
+
response = await this.privateGetExchangeOrderV2TradingList(this.extend(request, params));
|
|
3046
|
+
}
|
|
3047
|
+
else {
|
|
3048
|
+
response = await this.privateGetExchangeOrderTrade(this.extend(request, params));
|
|
3049
|
+
}
|
|
3050
|
+
}
|
|
3051
|
+
else {
|
|
3052
|
+
response = await this.privateGetExchangeSpotOrderTrades(this.extend(request, params));
|
|
3053
|
+
}
|
|
3023
3054
|
//
|
|
3024
3055
|
// spot
|
|
3025
3056
|
//
|
|
@@ -3124,10 +3155,13 @@ export default class phemex extends Exchange {
|
|
|
3124
3155
|
// }
|
|
3125
3156
|
// }
|
|
3126
3157
|
//
|
|
3127
|
-
|
|
3128
|
-
if (
|
|
3129
|
-
|
|
3130
|
-
|
|
3158
|
+
let data = undefined;
|
|
3159
|
+
if (isUSDTSettled) {
|
|
3160
|
+
data = this.safeValue(response, 'data', []);
|
|
3161
|
+
}
|
|
3162
|
+
else {
|
|
3163
|
+
data = this.safeValue(response, 'data', {});
|
|
3164
|
+
data = this.safeValue(data, 'rows', []);
|
|
3131
3165
|
}
|
|
3132
3166
|
return this.parseTrades(data, market, since, limit);
|
|
3133
3167
|
}
|
|
@@ -3359,7 +3393,6 @@ export default class phemex extends Exchange {
|
|
|
3359
3393
|
await this.loadMarkets();
|
|
3360
3394
|
symbols = this.marketSymbols(symbols);
|
|
3361
3395
|
let subType = undefined;
|
|
3362
|
-
let method = 'privateGetAccountsAccountPositions';
|
|
3363
3396
|
let code = this.safeString(params, 'currency');
|
|
3364
3397
|
let settle = undefined;
|
|
3365
3398
|
let market = undefined;
|
|
@@ -3373,9 +3406,9 @@ export default class phemex extends Exchange {
|
|
|
3373
3406
|
[settle, params] = this.handleOptionAndParams(params, 'fetchPositions', 'settle', 'USD');
|
|
3374
3407
|
}
|
|
3375
3408
|
[subType, params] = this.handleSubTypeAndParams('fetchPositions', market, params);
|
|
3376
|
-
|
|
3409
|
+
const isUSDTSettled = settle === 'USDT';
|
|
3410
|
+
if (isUSDTSettled) {
|
|
3377
3411
|
code = 'USDT';
|
|
3378
|
-
method = 'privateGetGAccountsAccountPositions';
|
|
3379
3412
|
}
|
|
3380
3413
|
else if (code === undefined) {
|
|
3381
3414
|
code = (subType === 'linear') ? 'USD' : 'BTC';
|
|
@@ -3387,7 +3420,13 @@ export default class phemex extends Exchange {
|
|
|
3387
3420
|
const request = {
|
|
3388
3421
|
'currency': currency['id'],
|
|
3389
3422
|
};
|
|
3390
|
-
|
|
3423
|
+
let response = undefined;
|
|
3424
|
+
if (isUSDTSettled) {
|
|
3425
|
+
response = await this.privateGetGAccountsAccountPositions(this.extend(request, params));
|
|
3426
|
+
}
|
|
3427
|
+
else {
|
|
3428
|
+
response = await this.privateGetAccountsAccountPositions(this.extend(request, params));
|
|
3429
|
+
}
|
|
3391
3430
|
//
|
|
3392
3431
|
// {
|
|
3393
3432
|
// "code":0,"msg":"",
|
|
@@ -406,7 +406,7 @@ export default class krakenfutures extends krakenfuturesRest {
|
|
|
406
406
|
* @param {int} [limit] not used by krakenfutures watchBalance
|
|
407
407
|
* @param {object} [params] extra parameters specific to the krakenfutures api endpoint
|
|
408
408
|
* @param {string} [params.account] can be either 'futures' or 'flex_futures'
|
|
409
|
-
* @returns {object
|
|
409
|
+
* @returns {object} a object of wallet types each with a balance structure {@link https://docs.ccxt.com/#/?id=balance-structure}
|
|
410
410
|
*/
|
|
411
411
|
await this.loadMarkets();
|
|
412
412
|
const name = 'balances';
|
|
@@ -1271,6 +1271,7 @@ export default class krakenfutures extends krakenfuturesRest {
|
|
|
1271
1271
|
holdingResult[code] = newAccount;
|
|
1272
1272
|
}
|
|
1273
1273
|
this.balance['cash'] = holdingResult;
|
|
1274
|
+
this.balance['cash'] = this.safeBalance(this.balance['cash']);
|
|
1274
1275
|
client.resolve(holdingResult, messageHash);
|
|
1275
1276
|
}
|
|
1276
1277
|
if (futures !== undefined) {
|
|
@@ -1294,6 +1295,7 @@ export default class krakenfutures extends krakenfuturesRest {
|
|
|
1294
1295
|
futuresResult[symbol][code] = newAccount;
|
|
1295
1296
|
}
|
|
1296
1297
|
this.balance['margin'] = futuresResult;
|
|
1298
|
+
this.balance['margin'] = this.safeBalance(this.balance['margin']);
|
|
1297
1299
|
client.resolve(this.balance['margin'], messageHash + 'futures');
|
|
1298
1300
|
}
|
|
1299
1301
|
if (flexFutures !== undefined) {
|
|
@@ -1315,6 +1317,7 @@ export default class krakenfutures extends krakenfuturesRest {
|
|
|
1315
1317
|
flexFuturesResult[code] = newAccount;
|
|
1316
1318
|
}
|
|
1317
1319
|
this.balance['flex'] = flexFuturesResult;
|
|
1320
|
+
this.balance['flex'] = this.safeBalance(this.balance['flex']);
|
|
1318
1321
|
client.resolve(this.balance['flex'], messageHash + 'flex_futures');
|
|
1319
1322
|
}
|
|
1320
1323
|
client.resolve(this.balance, messageHash);
|
|
@@ -15,7 +15,7 @@ export declare class BigInteger {
|
|
|
15
15
|
protected intValue(): number;
|
|
16
16
|
protected byteValue(): number;
|
|
17
17
|
protected shortValue(): number;
|
|
18
|
-
protected signum():
|
|
18
|
+
protected signum(): 0 | 1 | -1;
|
|
19
19
|
toByteArray(): number[];
|
|
20
20
|
protected equals(a: BigInteger): boolean;
|
|
21
21
|
protected min(a: BigInteger): BigInteger;
|
package/js/src/tokocrypto.js
CHANGED
|
@@ -1166,9 +1166,7 @@ export default class tokocrypto extends Exchange {
|
|
|
1166
1166
|
* @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
1167
1167
|
*/
|
|
1168
1168
|
await this.loadMarkets();
|
|
1169
|
-
const
|
|
1170
|
-
const method = this.safeString(this.options, 'fetchTickersMethod', defaultMethod);
|
|
1171
|
-
const response = await this[method](params);
|
|
1169
|
+
const response = await this.binanceGetTicker24hr(params);
|
|
1172
1170
|
return this.parseTickers(response, symbols);
|
|
1173
1171
|
}
|
|
1174
1172
|
getMarketIdByType(market) {
|
package/js/src/wazirx.js
CHANGED
|
@@ -472,7 +472,13 @@ export default class wazirx extends Exchange {
|
|
|
472
472
|
request['limit'] = Math.min(limit, 1000); // Default 500; max 1000.
|
|
473
473
|
}
|
|
474
474
|
const method = this.safeString(this.options, 'fetchTradesMethod', 'publicGetTrades');
|
|
475
|
-
|
|
475
|
+
let response = undefined;
|
|
476
|
+
if (method === 'privateGetHistoricalTrades') {
|
|
477
|
+
response = await this.privateGetHistoricalTrades(this.extend(request, params));
|
|
478
|
+
}
|
|
479
|
+
else {
|
|
480
|
+
response = await this.publicGetTrades(this.extend(request, params));
|
|
481
|
+
}
|
|
476
482
|
// [
|
|
477
483
|
// {
|
|
478
484
|
// "id":322307791,
|
package/package.json
CHANGED