ccxt 4.0.77 → 4.0.79
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 +175 -168
- package/dist/ccxt.browser.min.js +2 -2
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/base/Exchange.js +7 -1
- package/dist/cjs/src/binance.js +78 -67
- package/dist/cjs/src/bingx.js +24 -21
- package/dist/cjs/src/bithumb.js +1 -1
- package/dist/cjs/src/mexc.js +1 -0
- package/dist/cjs/src/okx.js +1 -0
- package/dist/cjs/src/phemex.js +8 -3
- package/dist/cjs/src/poloniex.js +54 -74
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/binance.d.ts +12 -1
- package/js/src/abstract/binancecoinm.d.ts +12 -1
- package/js/src/abstract/binanceus.d.ts +12 -1
- package/js/src/abstract/binanceusdm.d.ts +12 -1
- package/js/src/abstract/bingx.d.ts +1 -1
- package/js/src/abstract/mexc.d.ts +1 -0
- package/js/src/abstract/mexc3.d.ts +1 -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/binance.js +78 -67
- package/js/src/bingx.d.ts +1 -1
- package/js/src/bingx.js +24 -21
- package/js/src/bithumb.js +1 -1
- package/js/src/mexc.js +1 -0
- package/js/src/okx.js +1 -0
- package/js/src/phemex.js +8 -3
- package/js/src/poloniex.js +54 -74
- package/package.json +1 -1
- package/skip-tests.json +0 -1
package/js/src/binance.js
CHANGED
|
@@ -189,12 +189,11 @@ export default class binance extends Exchange {
|
|
|
189
189
|
'api': {
|
|
190
190
|
// the API structure below will need 3-layer apidefs
|
|
191
191
|
'sapi': {
|
|
192
|
-
// IP (api) = 1200 per minute => (rateLimit = 50)
|
|
193
192
|
// IP (sapi) request rate limit of 12 000 per minute
|
|
194
|
-
// 1 IP (sapi) => cost = 0.1
|
|
193
|
+
// 1 IP (sapi) => cost = 0.1 => (1000 / (50 * 0.1)) * 60 = 12000
|
|
195
194
|
// 10 IP (sapi) => cost = 1
|
|
196
195
|
// UID (sapi) request rate limit of 180 000 per minute
|
|
197
|
-
// 1 UID (sapi) => cost =
|
|
196
|
+
// 1 UID (sapi) => cost = 0.006667 => (1000 / (50 * 0.006667)) * 60 = 180000
|
|
198
197
|
'get': {
|
|
199
198
|
'system/status': 0.1,
|
|
200
199
|
// these endpoints require this.apiKey
|
|
@@ -210,7 +209,7 @@ export default class binance extends Exchange {
|
|
|
210
209
|
'asset/transfer': 0.1,
|
|
211
210
|
'asset/assetDetail': 0.1,
|
|
212
211
|
'asset/tradeFee': 0.1,
|
|
213
|
-
'asset/ledger-transfer/cloud-mining/queryByPage': 4,
|
|
212
|
+
'asset/ledger-transfer/cloud-mining/queryByPage': 4.0002,
|
|
214
213
|
'asset/convert-transfer/queryByPage': 0.033335,
|
|
215
214
|
'margin/loan': 1,
|
|
216
215
|
'margin/repay': 1,
|
|
@@ -239,15 +238,16 @@ export default class binance extends Exchange {
|
|
|
239
238
|
'margin/isolatedMarginTier': 0.1,
|
|
240
239
|
'margin/rateLimit/order': 2,
|
|
241
240
|
'margin/dribblet': 0.1,
|
|
242
|
-
'margin/dust': 20,
|
|
241
|
+
'margin/dust': 20.001,
|
|
243
242
|
'margin/crossMarginCollateralRatio': 10,
|
|
244
243
|
'margin/exchange-small-liability': 0.6667,
|
|
245
244
|
'margin/exchange-small-liability-history': 0.6667,
|
|
246
245
|
'margin/next-hourly-interest-rate': 0.6667,
|
|
246
|
+
'margin/delist-schedule': 0.6667,
|
|
247
247
|
'loan/vip/loanable/data': 40,
|
|
248
248
|
'loan/vip/collateral/data': 40,
|
|
249
|
-
'loan/vip/request/data':
|
|
250
|
-
'loan/income': 40,
|
|
249
|
+
'loan/vip/request/data': 2.6668,
|
|
250
|
+
'loan/income': 40.002,
|
|
251
251
|
'loan/ongoing/orders': 40,
|
|
252
252
|
'loan/ltv/adjustment/history': 40,
|
|
253
253
|
'loan/borrow/history': 40,
|
|
@@ -266,7 +266,7 @@ export default class binance extends Exchange {
|
|
|
266
266
|
'futures/loan/wallet': 1,
|
|
267
267
|
'futures/loan/adjustCollateral/history': 1,
|
|
268
268
|
'futures/loan/liquidationHistory': 1,
|
|
269
|
-
'rebate/taxQuery':
|
|
269
|
+
'rebate/taxQuery': 80.004,
|
|
270
270
|
// https://binance-docs.github.io/apidocs/spot/en/#withdraw-sapi
|
|
271
271
|
'capital/config/getall': 1,
|
|
272
272
|
'capital/deposit/address': 1,
|
|
@@ -275,7 +275,7 @@ export default class binance extends Exchange {
|
|
|
275
275
|
'capital/deposit/subHisrec': 0.1,
|
|
276
276
|
'capital/withdraw/history': 0.1,
|
|
277
277
|
'capital/contract/convertible-coins': 4.0002,
|
|
278
|
-
'convert/tradeFlow': 20.
|
|
278
|
+
'convert/tradeFlow': 20.001,
|
|
279
279
|
'convert/exchangeInfo': 50,
|
|
280
280
|
'convert/assetInfo': 10,
|
|
281
281
|
'convert/orderStatus': 0.6667,
|
|
@@ -283,7 +283,6 @@ export default class binance extends Exchange {
|
|
|
283
283
|
'account/apiTradingStatus': 0.1,
|
|
284
284
|
'account/apiRestrictions/ipRestriction': 0.1,
|
|
285
285
|
'bnbBurn': 0.1,
|
|
286
|
-
// 'sub-account/assets': 1, (v3 endpoint)
|
|
287
286
|
'sub-account/futures/account': 1,
|
|
288
287
|
'sub-account/futures/accountSummary': 0.1,
|
|
289
288
|
'sub-account/futures/positionRisk': 1,
|
|
@@ -297,15 +296,16 @@ export default class binance extends Exchange {
|
|
|
297
296
|
'sub-account/transfer/subUserHistory': 0.1,
|
|
298
297
|
'sub-account/universalTransfer': 0.1,
|
|
299
298
|
'sub-account/apiRestrictions/ipRestriction/thirdPartyList': 1,
|
|
300
|
-
'sub-account/transaction-
|
|
299
|
+
'sub-account/transaction-statistics': 0.40002,
|
|
300
|
+
'sub-account/subAccountApi/ipRestriction': 20.001,
|
|
301
301
|
'managed-subaccount/asset': 0.1,
|
|
302
302
|
'managed-subaccount/accountSnapshot': 240,
|
|
303
303
|
'managed-subaccount/queryTransLogForInvestor': 0.1,
|
|
304
|
-
'managed-subaccount/queryTransLogForTradeParent': 0.
|
|
305
|
-
'managed-subaccount/fetch-future-asset': 0.
|
|
304
|
+
'managed-subaccount/queryTransLogForTradeParent': 0.40002,
|
|
305
|
+
'managed-subaccount/fetch-future-asset': 0.40002,
|
|
306
306
|
'managed-subaccount/marginAsset': 0.1,
|
|
307
|
-
'managed-subaccount/info': 0.
|
|
308
|
-
'managed-subaccount/deposit/address': 0.
|
|
307
|
+
'managed-subaccount/info': 0.40002,
|
|
308
|
+
'managed-subaccount/deposit/address': 0.006667,
|
|
309
309
|
'managed-subaccount/query-trans-log': 0.40002,
|
|
310
310
|
// lending endpoints
|
|
311
311
|
'lending/daily/product/list': 0.1,
|
|
@@ -383,6 +383,9 @@ export default class binance extends Exchange {
|
|
|
383
383
|
'giftcard/verify': 0.1,
|
|
384
384
|
'giftcard/cryptography/rsa-public-key': 0.1,
|
|
385
385
|
'giftcard/buyCode/token-limit': 0.1,
|
|
386
|
+
'algo/spot/openOrders': 0.1,
|
|
387
|
+
'algo/spot/historicalOrders': 0.1,
|
|
388
|
+
'algo/spot/subOrders': 0.1,
|
|
386
389
|
'algo/futures/openOrders': 0.1,
|
|
387
390
|
'algo/futures/historicalOrders': 0.1,
|
|
388
391
|
'algo/futures/subOrders': 0.1,
|
|
@@ -424,9 +427,9 @@ export default class binance extends Exchange {
|
|
|
424
427
|
'simple-earn/flexible/history/collateralRecord': 0.1,
|
|
425
428
|
},
|
|
426
429
|
'post': {
|
|
427
|
-
'asset/dust':
|
|
430
|
+
'asset/dust': 0.06667,
|
|
428
431
|
'asset/dust-btc': 0.1,
|
|
429
|
-
'asset/transfer':
|
|
432
|
+
'asset/transfer': 6.0003,
|
|
430
433
|
'asset/get-funding-asset': 0.1,
|
|
431
434
|
'asset/convert-transfer': 0.033335,
|
|
432
435
|
'account/disableFastWithdrawSwitch': 0.1,
|
|
@@ -436,12 +439,12 @@ export default class binance extends Exchange {
|
|
|
436
439
|
'capital/withdraw/apply': 4.0002,
|
|
437
440
|
'capital/contract/convertible-coins': 4.0002,
|
|
438
441
|
'capital/deposit/credit-apply': 0.1,
|
|
439
|
-
'margin/transfer':
|
|
442
|
+
'margin/transfer': 4.0002,
|
|
440
443
|
'margin/loan': 20.001,
|
|
441
444
|
'margin/repay': 20.001,
|
|
442
445
|
'margin/order': 0.040002,
|
|
443
446
|
'margin/order/oco': 0.040002,
|
|
444
|
-
'margin/dust': 20,
|
|
447
|
+
'margin/dust': 20.001,
|
|
445
448
|
'margin/exchange-small-liability': 20.001,
|
|
446
449
|
// 'margin/isolated/create': 1, discontinued
|
|
447
450
|
'margin/isolated/transfer': 4.0002,
|
|
@@ -458,8 +461,6 @@ export default class binance extends Exchange {
|
|
|
458
461
|
'sub-account/transfer/subToMaster': 0.1,
|
|
459
462
|
'sub-account/universalTransfer': 0.1,
|
|
460
463
|
'sub-account/options/enable': 0.1,
|
|
461
|
-
// v2 not supported yet
|
|
462
|
-
// 'sub-account/subAccountApi/ipRestriction': 20,
|
|
463
464
|
'managed-subaccount/deposit': 0.1,
|
|
464
465
|
'managed-subaccount/withdraw': 0.1,
|
|
465
466
|
'userDataStream': 0.1,
|
|
@@ -505,6 +506,7 @@ export default class binance extends Exchange {
|
|
|
505
506
|
'giftcard/createCode': 0.1,
|
|
506
507
|
'giftcard/redeemCode': 0.1,
|
|
507
508
|
'giftcard/buyCode': 0.1,
|
|
509
|
+
'algo/spot/newOrderTwap': 20.001,
|
|
508
510
|
'algo/futures/newOrderVp': 20.001,
|
|
509
511
|
'algo/futures/newOrderTwap': 20.001,
|
|
510
512
|
// staking
|
|
@@ -512,14 +514,14 @@ export default class binance extends Exchange {
|
|
|
512
514
|
'staking/redeem': 0.1,
|
|
513
515
|
'staking/setAutoStaking': 0.1,
|
|
514
516
|
'portfolio/repay': 20.001,
|
|
515
|
-
'loan/vip/renew': 40,
|
|
516
|
-
'loan/vip/borrow': 40,
|
|
517
|
-
'loan/borrow': 40,
|
|
518
|
-
'loan/repay': 40,
|
|
519
|
-
'loan/adjust/ltv': 40,
|
|
520
|
-
'loan/customize/margin_call': 40,
|
|
521
|
-
'loan/vip/repay': 40,
|
|
522
|
-
'convert/getQuote':
|
|
517
|
+
'loan/vip/renew': 40.002,
|
|
518
|
+
'loan/vip/borrow': 40.002,
|
|
519
|
+
'loan/borrow': 40.002,
|
|
520
|
+
'loan/repay': 40.002,
|
|
521
|
+
'loan/adjust/ltv': 40.002,
|
|
522
|
+
'loan/customize/margin_call': 40.002,
|
|
523
|
+
'loan/vip/repay': 40.002,
|
|
524
|
+
'convert/getQuote': 1.3334,
|
|
523
525
|
'convert/acceptQuote': 3.3335,
|
|
524
526
|
'portfolio/auto-collection': 150,
|
|
525
527
|
'portfolio/asset-collection': 6,
|
|
@@ -544,15 +546,17 @@ export default class binance extends Exchange {
|
|
|
544
546
|
'delete': {
|
|
545
547
|
// 'account/apiRestrictions/ipRestriction/ipList': 1, discontinued
|
|
546
548
|
'margin/openOrders': 0.1,
|
|
547
|
-
'margin/order': 0.
|
|
548
|
-
'margin/orderList': 0.
|
|
549
|
+
'margin/order': 0.006667,
|
|
550
|
+
'margin/orderList': 0.006667,
|
|
549
551
|
'margin/isolated/account': 2.0001,
|
|
550
552
|
'userDataStream': 0.1,
|
|
551
553
|
'userDataStream/isolated': 0.1,
|
|
552
554
|
// brokerage API TODO NO MENTION OF RATELIMIT IN BROKERAGE DOCS
|
|
553
555
|
'broker/subAccountApi': 1,
|
|
554
556
|
'broker/subAccountApi/ipRestriction/ipList': 1,
|
|
557
|
+
'algo/spot/order': 0.1,
|
|
555
558
|
'algo/futures/order': 0.1,
|
|
559
|
+
'sub-account/subAccountApi/ipRestriction/ipList': 20.001, // Weight(UID): 3000 => cost = 0.006667 * 3000 = 20.001
|
|
556
560
|
},
|
|
557
561
|
},
|
|
558
562
|
'sapiV2': {
|
|
@@ -560,10 +564,13 @@ export default class binance extends Exchange {
|
|
|
560
564
|
'sub-account/futures/account': 0.1,
|
|
561
565
|
'sub-account/futures/positionRisk': 0.1,
|
|
562
566
|
},
|
|
567
|
+
'post': {
|
|
568
|
+
'sub-account/subAccountApi/ipRestriction': 20.001, // Weight(UID): 3000 => cost = 0.006667 * 3000 = 20.001
|
|
569
|
+
},
|
|
563
570
|
},
|
|
564
571
|
'sapiV3': {
|
|
565
572
|
'get': {
|
|
566
|
-
'sub-account/assets':
|
|
573
|
+
'sub-account/assets': 0.40002, // Weight(UID): 60 => cost = 0.006667 * 60 = 0.40002
|
|
567
574
|
},
|
|
568
575
|
'post': {
|
|
569
576
|
'asset/getUserAsset': 0.5,
|
|
@@ -571,7 +578,7 @@ export default class binance extends Exchange {
|
|
|
571
578
|
},
|
|
572
579
|
'sapiV4': {
|
|
573
580
|
'get': {
|
|
574
|
-
'sub-account/assets':
|
|
581
|
+
'sub-account/assets': 0.40002, // Weight(UID): 60 => cost = 0.006667 * 60 = 0.40002
|
|
575
582
|
},
|
|
576
583
|
},
|
|
577
584
|
// deprecated
|
|
@@ -826,55 +833,59 @@ export default class binance extends Exchange {
|
|
|
826
833
|
},
|
|
827
834
|
},
|
|
828
835
|
'public': {
|
|
836
|
+
// IP (api) request rate limit of 6000 per minute
|
|
837
|
+
// 1 IP (api) => cost = 0.2 => (1000 / (50 * 0.2)) * 60 = 6000
|
|
829
838
|
'get': {
|
|
830
|
-
'ping':
|
|
831
|
-
'time':
|
|
832
|
-
'depth': { 'cost':
|
|
833
|
-
'trades':
|
|
834
|
-
'aggTrades':
|
|
835
|
-
'historicalTrades':
|
|
836
|
-
'klines':
|
|
837
|
-
'
|
|
838
|
-
'ticker/
|
|
839
|
-
'ticker/
|
|
840
|
-
'
|
|
839
|
+
'ping': 0.2,
|
|
840
|
+
'time': 0.2,
|
|
841
|
+
'depth': { 'cost': 0.4, 'byLimit': [[100, 0.4], [500, 2], [1000, 4], [5000, 20]] },
|
|
842
|
+
'trades': 0.4,
|
|
843
|
+
'aggTrades': 0.4,
|
|
844
|
+
'historicalTrades': 2,
|
|
845
|
+
'klines': 0.4,
|
|
846
|
+
'uiKlines': 0.4,
|
|
847
|
+
'ticker/24hr': { 'cost': 0.4, 'noSymbol': 16 },
|
|
848
|
+
'ticker/price': { 'cost': 0.4, 'noSymbol': 0.8 },
|
|
849
|
+
'ticker/bookTicker': { 'cost': 0.4, 'noSymbol': 0.8 },
|
|
850
|
+
'exchangeInfo': 4,
|
|
851
|
+
'avgPrice': 0.4,
|
|
841
852
|
},
|
|
842
853
|
'put': {
|
|
843
|
-
'userDataStream':
|
|
854
|
+
'userDataStream': 0.4,
|
|
844
855
|
},
|
|
845
856
|
'post': {
|
|
846
|
-
'userDataStream':
|
|
857
|
+
'userDataStream': 0.4,
|
|
847
858
|
},
|
|
848
859
|
'delete': {
|
|
849
|
-
'userDataStream':
|
|
860
|
+
'userDataStream': 0.4,
|
|
850
861
|
},
|
|
851
862
|
},
|
|
852
863
|
'private': {
|
|
853
864
|
'get': {
|
|
854
|
-
'allOrderList':
|
|
855
|
-
'openOrderList':
|
|
856
|
-
'orderList':
|
|
857
|
-
'order':
|
|
858
|
-
'openOrders': { 'cost':
|
|
859
|
-
'allOrders':
|
|
860
|
-
'account':
|
|
861
|
-
'myTrades':
|
|
862
|
-
'rateLimit/order':
|
|
863
|
-
'myPreventedMatches':
|
|
864
|
-
'myAllocations':
|
|
865
|
+
'allOrderList': 4,
|
|
866
|
+
'openOrderList': 1.2,
|
|
867
|
+
'orderList': 0.8,
|
|
868
|
+
'order': 0.8,
|
|
869
|
+
'openOrders': { 'cost': 1.2, 'noSymbol': 16 },
|
|
870
|
+
'allOrders': 4,
|
|
871
|
+
'account': 4,
|
|
872
|
+
'myTrades': 4,
|
|
873
|
+
'rateLimit/order': 8,
|
|
874
|
+
'myPreventedMatches': 4,
|
|
875
|
+
'myAllocations': 4,
|
|
865
876
|
},
|
|
866
877
|
'post': {
|
|
867
|
-
'order/oco':
|
|
868
|
-
'sor/order':
|
|
869
|
-
'sor/order/test':
|
|
870
|
-
'order':
|
|
871
|
-
'order/cancelReplace':
|
|
872
|
-
'order/test':
|
|
878
|
+
'order/oco': 0.2,
|
|
879
|
+
'sor/order': 0.2,
|
|
880
|
+
'sor/order/test': 0.2,
|
|
881
|
+
'order': 0.2,
|
|
882
|
+
'order/cancelReplace': 0.2,
|
|
883
|
+
'order/test': 0.2,
|
|
873
884
|
},
|
|
874
885
|
'delete': {
|
|
875
|
-
'openOrders':
|
|
876
|
-
'orderList':
|
|
877
|
-
'order':
|
|
886
|
+
'openOrders': 0.2,
|
|
887
|
+
'orderList': 0.2,
|
|
888
|
+
'order': 0.2,
|
|
878
889
|
},
|
|
879
890
|
},
|
|
880
891
|
'papi': {
|
package/js/src/bingx.d.ts
CHANGED
|
@@ -205,7 +205,7 @@ export default class bingx extends Exchange {
|
|
|
205
205
|
};
|
|
206
206
|
fetchDepositWithdrawFees(codes?: string[], params?: {}): Promise<any>;
|
|
207
207
|
withdraw(code: string, amount: any, address: any, tag?: any, params?: {}): Promise<void>;
|
|
208
|
-
parseParams(params: any):
|
|
208
|
+
parseParams(params: any): {};
|
|
209
209
|
sign(path: any, section?: string, method?: string, params?: {}, headers?: any, body?: any): {
|
|
210
210
|
url: any;
|
|
211
211
|
method: string;
|
package/js/src/bingx.js
CHANGED
|
@@ -93,6 +93,7 @@ export default class bingx extends Exchange {
|
|
|
93
93
|
'market/trades': 3,
|
|
94
94
|
'market/depth': 3,
|
|
95
95
|
'market/kline': 3,
|
|
96
|
+
'ticker/24hr': 1,
|
|
96
97
|
},
|
|
97
98
|
},
|
|
98
99
|
'private': {
|
|
@@ -101,7 +102,6 @@ export default class bingx extends Exchange {
|
|
|
101
102
|
'trade/openOrders': 3,
|
|
102
103
|
'trade/historyOrders': 3,
|
|
103
104
|
'account/balance': 3,
|
|
104
|
-
'ticker/24hr': 1,
|
|
105
105
|
},
|
|
106
106
|
'post': {
|
|
107
107
|
'trade/order': 3,
|
|
@@ -258,6 +258,7 @@ export default class bingx extends Exchange {
|
|
|
258
258
|
'500': ExchangeError,
|
|
259
259
|
'504': ExchangeError,
|
|
260
260
|
'100001': AuthenticationError,
|
|
261
|
+
'100412': AuthenticationError,
|
|
261
262
|
'100202': InsufficientFunds,
|
|
262
263
|
'100400': BadRequest,
|
|
263
264
|
'100440': ExchangeError,
|
|
@@ -1100,7 +1101,7 @@ export default class bingx extends Exchange {
|
|
|
1100
1101
|
};
|
|
1101
1102
|
let response = undefined;
|
|
1102
1103
|
if (market['spot']) {
|
|
1103
|
-
response = await this.
|
|
1104
|
+
response = await this.spotV1PublicGetTicker24hr(this.extend(request, params));
|
|
1104
1105
|
}
|
|
1105
1106
|
else {
|
|
1106
1107
|
response = await this.swapV2PublicGetQuoteTicker(this.extend(request, params));
|
|
@@ -1140,15 +1141,21 @@ export default class bingx extends Exchange {
|
|
|
1140
1141
|
* @returns {object} a dictionary of [ticker structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#ticker-structure}
|
|
1141
1142
|
*/
|
|
1142
1143
|
await this.loadMarkets();
|
|
1144
|
+
let market = undefined;
|
|
1143
1145
|
if (symbols !== undefined) {
|
|
1144
1146
|
symbols = this.marketSymbols(symbols);
|
|
1145
1147
|
const firstSymbol = this.safeString(symbols, 0);
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1148
|
+
market = this.market(firstSymbol);
|
|
1149
|
+
}
|
|
1150
|
+
let type = undefined;
|
|
1151
|
+
[type, params] = this.handleMarketTypeAndParams('fetchTickers', market, params);
|
|
1152
|
+
let response = undefined;
|
|
1153
|
+
if (type === 'spot') {
|
|
1154
|
+
response = await this.spotV1PublicGetTicker24hr(params);
|
|
1155
|
+
}
|
|
1156
|
+
else {
|
|
1157
|
+
response = await this.swapV2PublicGetQuoteTicker(params);
|
|
1150
1158
|
}
|
|
1151
|
-
const response = await this.swapV2PublicGetQuoteTicker(params);
|
|
1152
1159
|
//
|
|
1153
1160
|
// {
|
|
1154
1161
|
// "code": 0,
|
|
@@ -2829,31 +2836,25 @@ export default class bingx extends Exchange {
|
|
|
2829
2836
|
this.parseTransaction(data);
|
|
2830
2837
|
}
|
|
2831
2838
|
parseParams(params) {
|
|
2832
|
-
let result = '';
|
|
2833
2839
|
const sortedParams = this.keysort(params);
|
|
2834
2840
|
const keys = Object.keys(sortedParams);
|
|
2835
2841
|
for (let i = 0; i < keys.length; i++) {
|
|
2836
2842
|
const key = keys[i];
|
|
2837
|
-
if (i > 0) {
|
|
2838
|
-
result += '&';
|
|
2839
|
-
}
|
|
2840
2843
|
const value = sortedParams[key];
|
|
2841
2844
|
if (Array.isArray(value)) {
|
|
2842
|
-
|
|
2845
|
+
let arrStr = '[';
|
|
2843
2846
|
for (let j = 0; j < value.length; j++) {
|
|
2844
2847
|
const arrayElement = value[j];
|
|
2845
2848
|
if (j > 0) {
|
|
2846
|
-
|
|
2849
|
+
arrStr += ',';
|
|
2847
2850
|
}
|
|
2848
|
-
|
|
2851
|
+
arrStr += arrayElement.toString();
|
|
2849
2852
|
}
|
|
2850
|
-
|
|
2851
|
-
|
|
2852
|
-
else {
|
|
2853
|
-
result += key + '=' + value.toString();
|
|
2853
|
+
arrStr += ']';
|
|
2854
|
+
sortedParams[key] = arrStr;
|
|
2854
2855
|
}
|
|
2855
2856
|
}
|
|
2856
|
-
return
|
|
2857
|
+
return sortedParams;
|
|
2857
2858
|
}
|
|
2858
2859
|
sign(path, section = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
|
|
2859
2860
|
const type = section[0];
|
|
@@ -2872,6 +2873,7 @@ export default class bingx extends Exchange {
|
|
|
2872
2873
|
params = this.omit(params, this.extractParams(path));
|
|
2873
2874
|
params = this.keysort(params);
|
|
2874
2875
|
if (access === 'public') {
|
|
2876
|
+
params['timestamp'] = this.nonce();
|
|
2875
2877
|
if (Object.keys(params).length) {
|
|
2876
2878
|
url += '?' + this.urlencode(params);
|
|
2877
2879
|
}
|
|
@@ -2879,8 +2881,9 @@ export default class bingx extends Exchange {
|
|
|
2879
2881
|
else if (access === 'private') {
|
|
2880
2882
|
this.checkRequiredCredentials();
|
|
2881
2883
|
params['timestamp'] = this.nonce();
|
|
2882
|
-
|
|
2883
|
-
|
|
2884
|
+
const parsedParams = this.parseParams(params);
|
|
2885
|
+
let query = this.urlencode(parsedParams);
|
|
2886
|
+
const signature = this.hmac(this.encode(this.rawencode(parsedParams)), this.encode(this.secret), sha256);
|
|
2884
2887
|
if (Object.keys(params).length) {
|
|
2885
2888
|
query = '?' + query + '&';
|
|
2886
2889
|
}
|
package/js/src/bithumb.js
CHANGED
|
@@ -636,7 +636,7 @@ export default class bithumb extends Exchange {
|
|
|
636
636
|
await this.loadMarkets();
|
|
637
637
|
const market = this.market(symbol);
|
|
638
638
|
const request = {
|
|
639
|
-
'currency': market['base'],
|
|
639
|
+
'currency': market['base'] + '_' + market['quote'],
|
|
640
640
|
};
|
|
641
641
|
if (limit !== undefined) {
|
|
642
642
|
request['count'] = limit; // default 20, max 100
|
package/js/src/mexc.js
CHANGED
package/js/src/okx.js
CHANGED
|
@@ -224,6 +224,7 @@ export default class okx extends Exchange {
|
|
|
224
224
|
'tradingBot/grid/ai-param': 1,
|
|
225
225
|
'tradingBot/grid/min-investment': 1,
|
|
226
226
|
'tradingBot/public/rsi-back-testing': 1,
|
|
227
|
+
'asset/exchange-list': 5 / 3,
|
|
227
228
|
'finance/savings/lending-rate-summary': 5 / 3,
|
|
228
229
|
'finance/savings/lending-rate-history': 5 / 3,
|
|
229
230
|
// public broker
|
package/js/src/phemex.js
CHANGED
|
@@ -1610,8 +1610,13 @@ export default class phemex extends Exchange {
|
|
|
1610
1610
|
id = this.safeString2(trade, 'execId', 'execID');
|
|
1611
1611
|
orderId = this.safeString(trade, 'orderID');
|
|
1612
1612
|
if (market['settle'] === 'USDT') {
|
|
1613
|
-
const sideId = this.
|
|
1614
|
-
|
|
1613
|
+
const sideId = this.safeStringLower(trade, 'side');
|
|
1614
|
+
if ((sideId === 'buy') || (sideId === 'sell')) {
|
|
1615
|
+
side = sideId;
|
|
1616
|
+
}
|
|
1617
|
+
else if (sideId !== undefined) {
|
|
1618
|
+
side = (sideId === '1') ? 'buy' : 'sell';
|
|
1619
|
+
}
|
|
1615
1620
|
const ordType = this.safeString(trade, 'ordType');
|
|
1616
1621
|
if (ordType === '1') {
|
|
1617
1622
|
type = 'market';
|
|
@@ -1619,7 +1624,7 @@ export default class phemex extends Exchange {
|
|
|
1619
1624
|
else if (ordType === '2') {
|
|
1620
1625
|
type = 'limit';
|
|
1621
1626
|
}
|
|
1622
|
-
priceString = this.safeString(trade, '
|
|
1627
|
+
priceString = this.safeString(trade, 'execPriceRp');
|
|
1623
1628
|
amountString = this.safeString(trade, 'execQtyRq');
|
|
1624
1629
|
costString = this.safeString(trade, 'execValueRv');
|
|
1625
1630
|
feeCostString = this.safeString(trade, 'execFeeRv');
|