ccxt 4.0.76 → 4.0.78
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 +99 -28
- package/dist/ccxt.browser.min.js +3 -3
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/base/Exchange.js +7 -1
- package/dist/cjs/src/bingx.js +44 -26
- package/dist/cjs/src/gate.js +42 -0
- package/dist/cjs/src/okx.js +1 -0
- package/dist/cjs/src/pro/okx.js +3 -0
- package/dist/cjs/src/whitebit.js +1 -0
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/bingx.d.ts +1 -1
- package/js/src/abstract/gate.d.ts +24 -0
- package/js/src/abstract/gateio.d.ts +24 -0
- package/js/src/abstract/okex.d.ts +1 -0
- package/js/src/abstract/okex5.d.ts +1 -0
- package/js/src/abstract/okx.d.ts +1 -0
- package/js/src/base/Exchange.d.ts +1 -0
- package/js/src/base/Exchange.js +7 -1
- package/js/src/bingx.d.ts +1 -1
- package/js/src/bingx.js +44 -26
- package/js/src/gate.js +42 -0
- package/js/src/okx.js +1 -0
- package/js/src/pro/okx.js +4 -1
- package/js/src/whitebit.js +1 -0
- package/package.json +1 -1
- package/skip-tests.json +0 -1
package/README.md
CHANGED
|
@@ -215,13 +215,13 @@ console.log(version, Object.keys(exchanges));
|
|
|
215
215
|
|
|
216
216
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
|
217
217
|
|
|
218
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.0.
|
|
219
|
-
* unpkg: https://unpkg.com/ccxt@4.0.
|
|
218
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.0.78/dist/ccxt.browser.js
|
|
219
|
+
* unpkg: https://unpkg.com/ccxt@4.0.78/dist/ccxt.browser.js
|
|
220
220
|
|
|
221
221
|
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.
|
|
222
222
|
|
|
223
223
|
```HTML
|
|
224
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.0.
|
|
224
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.0.78/dist/ccxt.browser.js"></script>
|
|
225
225
|
```
|
|
226
226
|
|
|
227
227
|
Creates a global `ccxt` object:
|
package/dist/ccxt.browser.js
CHANGED
|
@@ -9907,12 +9907,18 @@ class Exchange {
|
|
|
9907
9907
|
precision = this.safeValue(networkItem, 'precision', precision);
|
|
9908
9908
|
}
|
|
9909
9909
|
if (precision === undefined) {
|
|
9910
|
-
return fee;
|
|
9910
|
+
return this.forceString(fee);
|
|
9911
9911
|
}
|
|
9912
9912
|
else {
|
|
9913
9913
|
return this.decimalToPrecision(fee, ROUND, precision, this.precisionMode, this.paddingMode);
|
|
9914
9914
|
}
|
|
9915
9915
|
}
|
|
9916
|
+
forceString(value) {
|
|
9917
|
+
if (typeof value !== 'string') {
|
|
9918
|
+
return this.numberToString(value);
|
|
9919
|
+
}
|
|
9920
|
+
return value;
|
|
9921
|
+
}
|
|
9916
9922
|
isTickPrecision() {
|
|
9917
9923
|
return this.precisionMode === TICK_SIZE;
|
|
9918
9924
|
}
|
|
@@ -24646,6 +24652,7 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
24646
24652
|
'market/trades': 3,
|
|
24647
24653
|
'market/depth': 3,
|
|
24648
24654
|
'market/kline': 3,
|
|
24655
|
+
'ticker/24hr': 1,
|
|
24649
24656
|
},
|
|
24650
24657
|
},
|
|
24651
24658
|
'private': {
|
|
@@ -24654,7 +24661,6 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
24654
24661
|
'trade/openOrders': 3,
|
|
24655
24662
|
'trade/historyOrders': 3,
|
|
24656
24663
|
'account/balance': 3,
|
|
24657
|
-
'ticker/24hr': 1,
|
|
24658
24664
|
},
|
|
24659
24665
|
'post': {
|
|
24660
24666
|
'trade/order': 3,
|
|
@@ -24811,6 +24817,7 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
24811
24817
|
'500': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
|
|
24812
24818
|
'504': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
|
|
24813
24819
|
'100001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
|
|
24820
|
+
'100412': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
|
|
24814
24821
|
'100202': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
|
|
24815
24822
|
'100400': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
|
|
24816
24823
|
'100440': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
|
|
@@ -25653,10 +25660,10 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
25653
25660
|
};
|
|
25654
25661
|
let response = undefined;
|
|
25655
25662
|
if (market['spot']) {
|
|
25656
|
-
response = await this.
|
|
25663
|
+
response = await this.spotV1PublicGetTicker24hr(this.extend(request, params));
|
|
25657
25664
|
}
|
|
25658
25665
|
else {
|
|
25659
|
-
response = await this.
|
|
25666
|
+
response = await this.swapV2PublicGetQuoteTicker(this.extend(request, params));
|
|
25660
25667
|
}
|
|
25661
25668
|
//
|
|
25662
25669
|
// {
|
|
@@ -25679,7 +25686,8 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
25679
25686
|
// }
|
|
25680
25687
|
//
|
|
25681
25688
|
const data = this.safeValue(response, 'data');
|
|
25682
|
-
|
|
25689
|
+
const ticker = this.safeValue(data, 0, data);
|
|
25690
|
+
return this.parseTicker(ticker, market);
|
|
25683
25691
|
}
|
|
25684
25692
|
async fetchTickers(symbols = undefined, params = {}) {
|
|
25685
25693
|
/**
|
|
@@ -25692,15 +25700,21 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
25692
25700
|
* @returns {object} a dictionary of [ticker structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#ticker-structure}
|
|
25693
25701
|
*/
|
|
25694
25702
|
await this.loadMarkets();
|
|
25703
|
+
let market = undefined;
|
|
25695
25704
|
if (symbols !== undefined) {
|
|
25696
25705
|
symbols = this.marketSymbols(symbols);
|
|
25697
25706
|
const firstSymbol = this.safeString(symbols, 0);
|
|
25698
|
-
|
|
25699
|
-
|
|
25700
|
-
|
|
25701
|
-
|
|
25707
|
+
market = this.market(firstSymbol);
|
|
25708
|
+
}
|
|
25709
|
+
let type = undefined;
|
|
25710
|
+
[type, params] = this.handleMarketTypeAndParams('fetchTickers', market, params);
|
|
25711
|
+
let response = undefined;
|
|
25712
|
+
if (type === 'spot') {
|
|
25713
|
+
response = await this.spotV1PublicGetTicker24hr(params);
|
|
25714
|
+
}
|
|
25715
|
+
else {
|
|
25716
|
+
response = await this.swapV2PublicGetQuoteTicker(params);
|
|
25702
25717
|
}
|
|
25703
|
-
const response = await this.swapV2PublicGetQuoteTicker(params);
|
|
25704
25718
|
//
|
|
25705
25719
|
// {
|
|
25706
25720
|
// "code": 0,
|
|
@@ -25727,6 +25741,20 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
25727
25741
|
return this.parseTickers(tickers, symbols);
|
|
25728
25742
|
}
|
|
25729
25743
|
parseTicker(ticker, market = undefined) {
|
|
25744
|
+
//
|
|
25745
|
+
// spot
|
|
25746
|
+
// {
|
|
25747
|
+
// symbol: 'BTC-USDT',
|
|
25748
|
+
// openPrice: '26032.08',
|
|
25749
|
+
// highPrice: '26178.86',
|
|
25750
|
+
// lowPrice: '25968.18',
|
|
25751
|
+
// lastPrice: '26113.60',
|
|
25752
|
+
// volume: '1161.79',
|
|
25753
|
+
// quoteVolume: '30288466.44',
|
|
25754
|
+
// openTime: '1693081020762',
|
|
25755
|
+
// closeTime: '1693167420762'
|
|
25756
|
+
// }
|
|
25757
|
+
// swap
|
|
25730
25758
|
//
|
|
25731
25759
|
// {
|
|
25732
25760
|
// "symbol": "BTC-USDT",
|
|
@@ -25744,15 +25772,15 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
25744
25772
|
// }
|
|
25745
25773
|
//
|
|
25746
25774
|
const marketId = this.safeString(ticker, 'symbol');
|
|
25747
|
-
const
|
|
25748
|
-
const
|
|
25775
|
+
const change = this.safeString(ticker, 'priceChange');
|
|
25776
|
+
const type = (change === undefined) ? 'spot' : 'swap';
|
|
25777
|
+
const symbol = this.safeSymbol(marketId, market, undefined, type);
|
|
25749
25778
|
const open = this.safeString(ticker, 'openPrice');
|
|
25750
25779
|
const high = this.safeString(ticker, 'highPrice');
|
|
25751
25780
|
const low = this.safeString(ticker, 'lowPrice');
|
|
25752
25781
|
const close = this.safeString(ticker, 'lastPrice');
|
|
25753
25782
|
const quoteVolume = this.safeString(ticker, 'quoteVolume');
|
|
25754
25783
|
const baseVolume = this.safeString(ticker, 'volume');
|
|
25755
|
-
const change = this.safeString(ticker, 'chapriceChangenge');
|
|
25756
25784
|
const percentage = this.safeString(ticker, 'priceChangePercent');
|
|
25757
25785
|
const ts = this.safeInteger(ticker, 'closeTime');
|
|
25758
25786
|
const datetime = this.iso8601(ts);
|
|
@@ -27367,31 +27395,25 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
27367
27395
|
this.parseTransaction(data);
|
|
27368
27396
|
}
|
|
27369
27397
|
parseParams(params) {
|
|
27370
|
-
let result = '';
|
|
27371
27398
|
const sortedParams = this.keysort(params);
|
|
27372
27399
|
const keys = Object.keys(sortedParams);
|
|
27373
27400
|
for (let i = 0; i < keys.length; i++) {
|
|
27374
27401
|
const key = keys[i];
|
|
27375
|
-
if (i > 0) {
|
|
27376
|
-
result += '&';
|
|
27377
|
-
}
|
|
27378
27402
|
const value = sortedParams[key];
|
|
27379
27403
|
if (Array.isArray(value)) {
|
|
27380
|
-
|
|
27404
|
+
let arrStr = '[';
|
|
27381
27405
|
for (let j = 0; j < value.length; j++) {
|
|
27382
27406
|
const arrayElement = value[j];
|
|
27383
27407
|
if (j > 0) {
|
|
27384
|
-
|
|
27408
|
+
arrStr += ',';
|
|
27385
27409
|
}
|
|
27386
|
-
|
|
27410
|
+
arrStr += arrayElement.toString();
|
|
27387
27411
|
}
|
|
27388
|
-
|
|
27389
|
-
|
|
27390
|
-
else {
|
|
27391
|
-
result += key + '=' + value.toString();
|
|
27412
|
+
arrStr += ']';
|
|
27413
|
+
sortedParams[key] = arrStr;
|
|
27392
27414
|
}
|
|
27393
27415
|
}
|
|
27394
|
-
return
|
|
27416
|
+
return sortedParams;
|
|
27395
27417
|
}
|
|
27396
27418
|
sign(path, section = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
|
|
27397
27419
|
const type = section[0];
|
|
@@ -27410,6 +27432,7 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
27410
27432
|
params = this.omit(params, this.extractParams(path));
|
|
27411
27433
|
params = this.keysort(params);
|
|
27412
27434
|
if (access === 'public') {
|
|
27435
|
+
params['timestamp'] = this.nonce();
|
|
27413
27436
|
if (Object.keys(params).length) {
|
|
27414
27437
|
url += '?' + this.urlencode(params);
|
|
27415
27438
|
}
|
|
@@ -27417,8 +27440,9 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
27417
27440
|
else if (access === 'private') {
|
|
27418
27441
|
this.checkRequiredCredentials();
|
|
27419
27442
|
params['timestamp'] = this.nonce();
|
|
27420
|
-
|
|
27421
|
-
|
|
27443
|
+
const parsedParams = this.parseParams(params);
|
|
27444
|
+
let query = this.urlencode(parsedParams);
|
|
27445
|
+
const signature = this.hmac(this.encode(this.rawencode(parsedParams)), this.encode(this.secret), _static_dependencies_noble_hashes_sha256_js__WEBPACK_IMPORTED_MODULE_4__/* .sha256 */ .J);
|
|
27422
27446
|
if (Object.keys(params).length) {
|
|
27423
27447
|
query = '?' + query + '&';
|
|
27424
27448
|
}
|
|
@@ -115528,6 +115552,29 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
115528
115552
|
'sub_accounts/{user_id}/keys/{key}': 1,
|
|
115529
115553
|
},
|
|
115530
115554
|
},
|
|
115555
|
+
'portfolio': {
|
|
115556
|
+
'get': {
|
|
115557
|
+
'accounts': 1.5,
|
|
115558
|
+
'account_mode': 1.5,
|
|
115559
|
+
'borrowable': 1.5,
|
|
115560
|
+
'transferable': 1.5,
|
|
115561
|
+
'loans': 1.5,
|
|
115562
|
+
'loan_records': 1.5,
|
|
115563
|
+
'interest_records': 1.5,
|
|
115564
|
+
'spot/orders': 1.5,
|
|
115565
|
+
'spot/orders/{order_id}': 1.5,
|
|
115566
|
+
},
|
|
115567
|
+
'post': {
|
|
115568
|
+
'loans': 1.5,
|
|
115569
|
+
'spot/orders': 1.5,
|
|
115570
|
+
},
|
|
115571
|
+
'delete': {
|
|
115572
|
+
'spot/orders/{order_id}': 1.5,
|
|
115573
|
+
},
|
|
115574
|
+
'patch': {
|
|
115575
|
+
'spot/orders/{order_id}': 1.5,
|
|
115576
|
+
},
|
|
115577
|
+
},
|
|
115531
115578
|
'spot': {
|
|
115532
115579
|
'get': {
|
|
115533
115580
|
'fee': 1,
|
|
@@ -115721,6 +115768,22 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
115721
115768
|
'uni/lends': 1.5,
|
|
115722
115769
|
},
|
|
115723
115770
|
},
|
|
115771
|
+
'loan': {
|
|
115772
|
+
'get': {
|
|
115773
|
+
'collateral/orders': 1.5,
|
|
115774
|
+
'collateral/orders/{order_id}': 1.5,
|
|
115775
|
+
'collateral/repay_records': 1.5,
|
|
115776
|
+
'collateral/collaterals': 1.5,
|
|
115777
|
+
'collateral/total_amount': 1.5,
|
|
115778
|
+
'collateral/ltv': 1.5,
|
|
115779
|
+
'collateral/currencies': 1.5,
|
|
115780
|
+
},
|
|
115781
|
+
'post': {
|
|
115782
|
+
'collateral/orders': 1.5,
|
|
115783
|
+
'collateral/repay': 1.5,
|
|
115784
|
+
'collateral/collaterals': 1.5,
|
|
115785
|
+
},
|
|
115786
|
+
},
|
|
115724
115787
|
'account': {
|
|
115725
115788
|
'get': {
|
|
115726
115789
|
'detail': 1.5,
|
|
@@ -115731,6 +115794,9 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
115731
115794
|
'stp_groups': 1.5,
|
|
115732
115795
|
'stp_groups/{stp_id}/users': 1.5,
|
|
115733
115796
|
},
|
|
115797
|
+
'delete': {
|
|
115798
|
+
'stp_groups/{stp_id}/users': 1.5,
|
|
115799
|
+
},
|
|
115734
115800
|
},
|
|
115735
115801
|
'rebate': {
|
|
115736
115802
|
'get': {
|
|
@@ -177206,6 +177272,7 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
177206
177272
|
'tradingBot/grid/ai-param': 1,
|
|
177207
177273
|
'tradingBot/grid/min-investment': 1,
|
|
177208
177274
|
'tradingBot/public/rsi-back-testing': 1,
|
|
177275
|
+
'asset/exchange-list': 5 / 3,
|
|
177209
177276
|
'finance/savings/lending-rate-summary': 5 / 3,
|
|
177210
177277
|
'finance/savings/lending-rate-history': 5 / 3,
|
|
177211
177278
|
// public broker
|
|
@@ -229663,6 +229730,9 @@ class okx extends _okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
|
229663
229730
|
* @param {string} [params.channel] the channel to subscribe to, tickers by default. Can be tickers, sprd-tickers, index-tickers, block-tickers
|
|
229664
229731
|
* @returns {object} a [ticker structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#ticker-structure}
|
|
229665
229732
|
*/
|
|
229733
|
+
if (this.isEmpty(symbols)) {
|
|
229734
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' watchTickers requires a list of symbols');
|
|
229735
|
+
}
|
|
229666
229736
|
let channel = undefined;
|
|
229667
229737
|
[channel, params] = this.handleOptionAndParams(params, 'watchTickers', 'channel', 'tickers');
|
|
229668
229738
|
const newTickers = await this.subscribeMultiple('public', channel, symbols, params);
|
|
@@ -259218,6 +259288,7 @@ class whitebit extends _abstract_whitebit_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
259218
259288
|
'422': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFound, // {"response":null,"status":422,"errors":{"orderId":["Finished order id 1295772653 not found on your account"]},"notification":null,"warning":"Finished order id 1295772653 not found on your account","_token":null}
|
|
259219
259289
|
},
|
|
259220
259290
|
'broad': {
|
|
259291
|
+
'This action is unauthorized': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
|
|
259221
259292
|
'Given amount is less than min amount': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
|
|
259222
259293
|
'Total is less than': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
|
|
259223
259294
|
'fee must be no less than': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
|
|
@@ -273373,7 +273444,7 @@ SOFTWARE.
|
|
|
273373
273444
|
|
|
273374
273445
|
//-----------------------------------------------------------------------------
|
|
273375
273446
|
// this is updated by vss.js when building
|
|
273376
|
-
const version = '4.0.
|
|
273447
|
+
const version = '4.0.78';
|
|
273377
273448
|
_src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange.ccxtVersion */ .e.ccxtVersion = version;
|
|
273378
273449
|
//-----------------------------------------------------------------------------
|
|
273379
273450
|
|