ccxt 4.4.77 → 4.4.80
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 +8 -10
- package/dist/ccxt.browser.min.js +7 -7
- package/dist/cjs/ccxt.js +8 -4
- package/dist/cjs/src/abstract/ace.js +1 -1
- package/dist/cjs/src/abstract/apex.js +9 -0
- package/dist/cjs/src/ace.js +1 -1
- package/dist/cjs/src/apex.js +1949 -0
- package/dist/cjs/src/ascendex.js +25 -4
- package/dist/cjs/src/base/Exchange.js +42 -2
- package/dist/cjs/src/binance.js +9 -1
- package/dist/cjs/src/bingx.js +3 -3
- package/dist/cjs/src/bitfinex.js +64 -36
- package/dist/cjs/src/bitget.js +191 -138
- package/dist/cjs/src/bitmart.js +7 -2
- package/dist/cjs/src/bitmex.js +16 -8
- package/dist/cjs/src/bitopro.js +5 -1
- package/dist/cjs/src/bitrue.js +2 -1
- package/dist/cjs/src/bitso.js +1 -1
- package/dist/cjs/src/bitteam.js +2 -0
- package/dist/cjs/src/bitvavo.js +28 -10
- package/dist/cjs/src/btcalpha.js +1 -1
- package/dist/cjs/src/btcmarkets.js +1 -1
- package/dist/cjs/src/btcturk.js +1 -1
- package/dist/cjs/src/bybit.js +32 -16
- package/dist/cjs/src/cex.js +1 -1
- package/dist/cjs/src/coinbase.js +18 -2
- package/dist/cjs/src/coincatch.js +68 -0
- package/dist/cjs/src/coinex.js +1 -0
- package/dist/cjs/src/coinlist.js +1 -0
- package/dist/cjs/src/coinone.js +1 -0
- package/dist/cjs/src/delta.js +4 -0
- package/dist/cjs/src/deribit.js +1 -0
- package/dist/cjs/src/hitbtc.js +3 -0
- package/dist/cjs/src/hollaex.js +1 -0
- package/dist/cjs/src/htx.js +7 -3
- package/dist/cjs/src/huobijp.js +1 -0
- package/dist/cjs/src/hyperliquid.js +14 -4
- package/dist/cjs/src/kraken.js +2 -0
- package/dist/cjs/src/mexc.js +50 -57
- package/dist/cjs/src/okx.js +1 -1
- package/dist/cjs/src/phemex.js +2 -1
- package/dist/cjs/src/poloniex.js +2 -1
- package/dist/cjs/src/pro/apex.js +1043 -0
- package/dist/cjs/src/pro/binance.js +3 -3
- package/dist/cjs/src/pro/coinbase.js +45 -68
- package/dist/cjs/src/pro/gate.js +27 -2
- package/dist/cjs/src/pro/hollaex.js +2 -2
- package/dist/cjs/src/pro/p2b.js +2 -2
- package/dist/cjs/src/pro/tradeogre.js +283 -0
- package/dist/cjs/src/pro/upbit.js +43 -0
- package/dist/cjs/src/probit.js +1 -0
- package/dist/cjs/src/static_dependencies/zklink/zklink-sdk-web.js +2639 -0
- package/dist/cjs/src/timex.js +2 -2
- package/dist/cjs/src/tradeogre.js +2 -1
- package/dist/cjs/src/upbit.js +277 -67
- package/dist/cjs/src/whitebit.js +66 -12
- package/dist/cjs/src/woo.js +3 -1
- package/dist/cjs/src/xt.js +9 -0
- package/js/ccxt.d.ts +11 -5
- package/js/ccxt.js +8 -4
- package/js/src/abstract/apex.d.ts +34 -0
- package/js/src/abstract/bitmart.d.ts +1 -0
- package/js/src/apex.d.ts +333 -0
- package/js/src/apex.js +1945 -0
- package/js/src/ascendex.d.ts +3 -3
- package/js/src/ascendex.js +25 -4
- package/js/src/base/Exchange.d.ts +2 -0
- package/js/src/base/Exchange.js +42 -1
- package/js/src/binance.d.ts +7 -7
- package/js/src/binance.js +9 -1
- package/js/src/bingx.js +3 -3
- package/js/src/bitfinex.d.ts +3 -3
- package/js/src/bitfinex.js +64 -36
- package/js/src/bitflyer.d.ts +2 -2
- package/js/src/bitget.d.ts +2 -0
- package/js/src/bitget.js +191 -138
- package/js/src/bitmart.d.ts +5 -4
- package/js/src/bitmart.js +7 -2
- package/js/src/bitmex.d.ts +3 -3
- package/js/src/bitmex.js +16 -8
- package/js/src/bitopro.js +5 -1
- package/js/src/bitrue.js +2 -1
- package/js/src/bitso.js +1 -1
- package/js/src/bitteam.js +2 -0
- package/js/src/bitvavo.js +28 -10
- package/js/src/btcalpha.js +1 -1
- package/js/src/btcmarkets.js +1 -1
- package/js/src/btcturk.js +1 -1
- package/js/src/bybit.js +32 -16
- package/js/src/cex.js +1 -1
- package/js/src/coinbase.d.ts +4 -4
- package/js/src/coinbase.js +18 -2
- package/js/src/coinbaseexchange.d.ts +1 -1
- package/js/src/coincatch.d.ts +11 -0
- package/js/src/coincatch.js +68 -0
- package/js/src/coinex.js +1 -0
- package/js/src/coinlist.js +1 -0
- package/js/src/coinone.js +1 -0
- package/js/src/cryptocom.d.ts +4 -4
- package/js/src/delta.js +4 -0
- package/js/src/deribit.d.ts +4 -4
- package/js/src/deribit.js +1 -0
- package/js/src/derive.d.ts +3 -3
- package/js/src/digifinex.d.ts +4 -4
- package/js/src/hitbtc.js +3 -0
- package/js/src/hollaex.js +1 -0
- package/js/src/htx.d.ts +4 -4
- package/js/src/htx.js +7 -3
- package/js/src/huobijp.js +1 -0
- package/js/src/hyperliquid.d.ts +1 -0
- package/js/src/hyperliquid.js +14 -4
- package/js/src/kraken.d.ts +3 -3
- package/js/src/kraken.js +2 -0
- package/js/src/krakenfutures.d.ts +2 -2
- package/js/src/kucoinfutures.d.ts +5 -5
- package/js/src/mexc.d.ts +1 -0
- package/js/src/mexc.js +50 -57
- package/js/src/okx.js +1 -1
- package/js/src/oxfun.d.ts +3 -3
- package/js/src/phemex.d.ts +3 -3
- package/js/src/phemex.js +2 -1
- package/js/src/poloniex.d.ts +3 -3
- package/js/src/poloniex.js +2 -1
- package/js/src/pro/apex.d.ts +160 -0
- package/js/src/pro/apex.js +1038 -0
- package/js/src/pro/binance.js +3 -3
- package/js/src/pro/coinbase.d.ts +4 -3
- package/js/src/pro/coinbase.js +45 -66
- package/js/src/pro/gate.js +27 -2
- package/js/src/pro/hollaex.js +2 -2
- package/js/src/pro/p2b.js +2 -2
- package/js/src/pro/tradeogre.d.ts +49 -0
- package/js/src/pro/tradeogre.js +278 -0
- package/js/src/pro/upbit.d.ts +16 -1
- package/js/src/pro/upbit.js +43 -0
- package/js/src/probit.js +1 -0
- package/js/src/static_dependencies/zklink/zklink-sdk-web.d.ts +1279 -0
- package/js/src/static_dependencies/zklink/zklink-sdk-web.js +4276 -0
- package/js/src/timex.js +2 -2
- package/js/src/tradeogre.js +2 -1
- package/js/src/upbit.d.ts +75 -23
- package/js/src/upbit.js +277 -67
- package/js/src/vertex.d.ts +3 -3
- package/js/src/whitebit.js +66 -12
- package/js/src/woo.d.ts +4 -4
- package/js/src/woo.js +3 -1
- package/js/src/woofipro.d.ts +4 -4
- package/js/src/xt.d.ts +4 -4
- package/js/src/xt.js +9 -0
- package/package.json +2 -2
- package/js/src/abstract/ace.d.ts +0 -18
- package/js/src/ace.d.ts +0 -158
- package/js/src/ace.js +0 -1175
- /package/js/src/abstract/{ace.js → apex.js} +0 -0
package/dist/cjs/src/ascendex.js
CHANGED
|
@@ -512,6 +512,7 @@ class ascendex extends ascendex$1 {
|
|
|
512
512
|
// "data":[
|
|
513
513
|
// {
|
|
514
514
|
// "assetCode":"BTT",
|
|
515
|
+
// "displayName": "BTT",
|
|
515
516
|
// "borrowAssetCode":"BTT-B",
|
|
516
517
|
// "interestAssetCode":"BTT-I",
|
|
517
518
|
// "nativeScale":0,
|
|
@@ -532,12 +533,13 @@ class ascendex extends ascendex$1 {
|
|
|
532
533
|
// "data":[
|
|
533
534
|
// {
|
|
534
535
|
// "assetCode":"LTCBULL",
|
|
536
|
+
// "displayName": "LTCBULL",
|
|
535
537
|
// "nativeScale":4,
|
|
536
538
|
// "numConfirmations":20,
|
|
537
539
|
// "withdrawFee":"0.2",
|
|
538
540
|
// "minWithdrawalAmt":"1.0",
|
|
539
541
|
// "statusCode":"Normal",
|
|
540
|
-
// "statusMessage":""
|
|
542
|
+
// "statusMessage":"" // hideFromWalletTx
|
|
541
543
|
// }
|
|
542
544
|
// ]
|
|
543
545
|
// }
|
|
@@ -559,8 +561,27 @@ class ascendex extends ascendex$1 {
|
|
|
559
561
|
const scale = this.safeString2(currency, 'precisionScale', 'nativeScale');
|
|
560
562
|
const precision = this.parseNumber(this.parsePrecision(scale));
|
|
561
563
|
const fee = this.safeNumber2(currency, 'withdrawFee', 'withdrawalFee');
|
|
562
|
-
const status = this.
|
|
564
|
+
const status = this.safeString(currency, 'status');
|
|
565
|
+
const statusCode = this.safeString(currency, 'statusCode');
|
|
563
566
|
const active = (status === 'Normal');
|
|
567
|
+
let depositEnabled = undefined;
|
|
568
|
+
let withdrawEnabled = undefined;
|
|
569
|
+
if (status === 'Delisted' || statusCode === 'hideFromWalletTx') {
|
|
570
|
+
depositEnabled = false;
|
|
571
|
+
withdrawEnabled = false;
|
|
572
|
+
}
|
|
573
|
+
else if (status === 'Normal') {
|
|
574
|
+
depositEnabled = true;
|
|
575
|
+
withdrawEnabled = true;
|
|
576
|
+
}
|
|
577
|
+
else if (status === 'NoTransaction' || statusCode === 'NoTransaction') {
|
|
578
|
+
depositEnabled = true;
|
|
579
|
+
withdrawEnabled = false;
|
|
580
|
+
}
|
|
581
|
+
else if (status === 'NoDeposit') {
|
|
582
|
+
depositEnabled = false;
|
|
583
|
+
withdrawEnabled = true;
|
|
584
|
+
}
|
|
564
585
|
const marginInside = ('borrowAssetCode' in currency);
|
|
565
586
|
result[code] = {
|
|
566
587
|
'id': id,
|
|
@@ -570,8 +591,8 @@ class ascendex extends ascendex$1 {
|
|
|
570
591
|
'margin': marginInside,
|
|
571
592
|
'name': this.safeString(currency, 'assetName'),
|
|
572
593
|
'active': active,
|
|
573
|
-
'deposit':
|
|
574
|
-
'withdraw':
|
|
594
|
+
'deposit': depositEnabled,
|
|
595
|
+
'withdraw': withdrawEnabled,
|
|
575
596
|
'fee': fee,
|
|
576
597
|
'precision': precision,
|
|
577
598
|
'limits': {
|
|
@@ -18,11 +18,12 @@ require('../static_dependencies/ethers/utils/fixednumber.js');
|
|
|
18
18
|
require('../static_dependencies/ethers/utils/maths.js');
|
|
19
19
|
require('../static_dependencies/ethers/utils/utf8.js');
|
|
20
20
|
require('../static_dependencies/noble-hashes/sha3.js');
|
|
21
|
-
require('../static_dependencies/noble-hashes/sha256.js');
|
|
21
|
+
var sha256 = require('../static_dependencies/noble-hashes/sha256.js');
|
|
22
22
|
require('../static_dependencies/ethers/address/address.js');
|
|
23
23
|
var typedData = require('../static_dependencies/ethers/hash/typed-data.js');
|
|
24
24
|
var rng = require('../static_dependencies/jsencrypt/lib/jsbn/rng.js');
|
|
25
25
|
var index$1 = require('../static_dependencies/scure-starknet/index.js');
|
|
26
|
+
var zklinkSdkWeb = require('../static_dependencies/zklink/zklink-sdk-web.js');
|
|
26
27
|
require('../static_dependencies/noble-curves/abstract/modular.js');
|
|
27
28
|
var selector = require('../static_dependencies/starknet/utils/selector.js');
|
|
28
29
|
var classHash = require('../static_dependencies/starknet/utils/hash/classHash.js');
|
|
@@ -1217,6 +1218,45 @@ class Exchange {
|
|
|
1217
1218
|
const signature = index$1.sign(hash.replace('0x', ''), pri.slice(-64));
|
|
1218
1219
|
return this.json([signature.r.toString(), signature.s.toString()]);
|
|
1219
1220
|
}
|
|
1221
|
+
async getZKContractSignatureObj(seed, params = {}) {
|
|
1222
|
+
const formattedSlotId = BigInt('0x' + this.remove0xPrefix(this.hash(this.encode(this.safeString(params, 'slotId')), sha256.sha256, 'hex'))).toString();
|
|
1223
|
+
const formattedNonce = BigInt('0x' + this.remove0xPrefix(this.hash(this.encode(this.safeString(params, 'nonce')), sha256.sha256, 'hex'))).toString();
|
|
1224
|
+
const formattedUint64 = '18446744073709551615';
|
|
1225
|
+
const formattedUint32 = '4294967295';
|
|
1226
|
+
const accountId = parseInt(Precise["default"].stringMod(this.safeString(params, 'accountId'), formattedUint32), 10);
|
|
1227
|
+
const slotId = parseInt(Precise["default"].stringDiv(Precise["default"].stringMod(formattedSlotId, formattedUint64), formattedUint32), 10);
|
|
1228
|
+
const nonce = parseInt(Precise["default"].stringMod(formattedNonce, formattedUint32), 10);
|
|
1229
|
+
await zklinkSdkWeb["default"]();
|
|
1230
|
+
const _signer = zklinkSdkWeb.newRpcSignerWithProvider({});
|
|
1231
|
+
await _signer.initZklinkSigner(seed);
|
|
1232
|
+
let tx_builder = new zklinkSdkWeb.ContractBuilder(accountId, 0, slotId, nonce, this.safeInteger(params, 'pairId'), Precise["default"].stringMul(this.safeString(params, 'size'), '1e18'), Precise["default"].stringMul(this.safeString(params, 'price'), '1e18'), this.safeString(params, 'direction') === 'BUY', parseInt(Precise["default"].stringMul(this.safeString(params, 'makerFeeRate'), '10000')), parseInt(Precise["default"].stringMul(this.safeString(params, 'takerFeeRate'), '10000')), false);
|
|
1233
|
+
let contractor = zklinkSdkWeb.newContract(tx_builder);
|
|
1234
|
+
//const signer = ZkLinkSigner.ethSig(seed);
|
|
1235
|
+
//const signer = new Signer(seed);
|
|
1236
|
+
contractor?.sign(_signer?.getZkLinkSigner());
|
|
1237
|
+
const tx = contractor.jsValue();
|
|
1238
|
+
const zkSign = tx?.signature?.signature;
|
|
1239
|
+
return zkSign;
|
|
1240
|
+
}
|
|
1241
|
+
async getZKTransferSignatureObj(seed, params = {}) {
|
|
1242
|
+
await zklinkSdkWeb["default"]();
|
|
1243
|
+
const _signer = zklinkSdkWeb.newRpcSignerWithProvider({});
|
|
1244
|
+
await _signer.initZklinkSigner(seed);
|
|
1245
|
+
let nonce = this.safeString(params, 'nonce', '0');
|
|
1246
|
+
if (this.safeBool(params, 'isContract') === true) {
|
|
1247
|
+
const formattedUint32 = '4294967295';
|
|
1248
|
+
const formattedNonce = BigInt('0x' + this.remove0xPrefix(this.hash(this.encode(nonce), sha256.sha256, 'hex'))).toString();
|
|
1249
|
+
nonce = Precise["default"].stringMod(formattedNonce, formattedUint32);
|
|
1250
|
+
}
|
|
1251
|
+
let tx_builder = new zklinkSdkWeb.TransferBuilder(this.safeNumber(params, 'zkAccountId', 0), this.safeString(params, 'receiverAddress'), this.safeNumber(params, 'subAccountId', 0), this.safeNumber(params, 'receiverSubAccountId', 0), this.safeNumber(params, 'tokenId', 0), this.safeString(params, 'fee', '0'), this.safeString(params, 'amount', '0'), this.parseToInt(nonce), this.safeNumber(params, 'timestampSeconds', 0));
|
|
1252
|
+
let contractor = zklinkSdkWeb.newTransfer(tx_builder);
|
|
1253
|
+
//const signer = ZkLinkSigner.ethSig(seed);
|
|
1254
|
+
//const signer = new Signer(seed);
|
|
1255
|
+
contractor?.sign(_signer?.getZkLinkSigner());
|
|
1256
|
+
const tx = contractor.jsValue();
|
|
1257
|
+
const zkSign = tx?.signature?.signature;
|
|
1258
|
+
return zkSign;
|
|
1259
|
+
}
|
|
1220
1260
|
intToBase16(elem) {
|
|
1221
1261
|
return elem.toString(16);
|
|
1222
1262
|
}
|
|
@@ -2569,7 +2609,7 @@ class Exchange {
|
|
|
2569
2609
|
// find lowest precision (which is more desired)
|
|
2570
2610
|
const precision = this.safeString(network, 'precision');
|
|
2571
2611
|
const precisionMain = this.safeString(currency, 'precision');
|
|
2572
|
-
if (precisionMain === undefined || Precise["default"].
|
|
2612
|
+
if (precisionMain === undefined || Precise["default"].stringGt(precision, precisionMain)) {
|
|
2573
2613
|
currency['precision'] = this.parseNumber(precision);
|
|
2574
2614
|
}
|
|
2575
2615
|
// limits
|
package/dist/cjs/src/binance.js
CHANGED
|
@@ -20,7 +20,7 @@ class binance extends binance$1 {
|
|
|
20
20
|
return this.deepExtend(super.describe(), {
|
|
21
21
|
'id': 'binance',
|
|
22
22
|
'name': 'Binance',
|
|
23
|
-
'countries': [
|
|
23
|
+
'countries': [],
|
|
24
24
|
'rateLimit': 50,
|
|
25
25
|
'certified': true,
|
|
26
26
|
'pro': true,
|
|
@@ -1270,6 +1270,7 @@ class binance extends binance$1 {
|
|
|
1270
1270
|
'inverse', // allows CORS in browsers
|
|
1271
1271
|
// 'option', // does not allow CORS, enable outside of the browser only
|
|
1272
1272
|
],
|
|
1273
|
+
'loadAllOptions': false,
|
|
1273
1274
|
'fetchCurrencies': true,
|
|
1274
1275
|
// 'fetchTradesMethod': 'publicGetAggTrades', // publicGetTrades, publicGetHistoricalTrades, eapiPublicGetTrades
|
|
1275
1276
|
// 'repayCrossMarginMethod': 'papiPostRepayLoan', // papiPostMarginRepayDebt
|
|
@@ -3036,6 +3037,13 @@ class binance extends binance$1 {
|
|
|
3036
3037
|
async fetchMarkets(params = {}) {
|
|
3037
3038
|
const promisesRaw = [];
|
|
3038
3039
|
const rawFetchMarkets = this.safeList(this.options, 'fetchMarkets', ['spot', 'linear', 'inverse']);
|
|
3040
|
+
// handle loadAllOptions option
|
|
3041
|
+
const loadAllOptions = this.safeBool(this.options, 'loadAllOptions', false);
|
|
3042
|
+
if (loadAllOptions) {
|
|
3043
|
+
if (!this.inArray('option', rawFetchMarkets)) {
|
|
3044
|
+
rawFetchMarkets.push('option');
|
|
3045
|
+
}
|
|
3046
|
+
}
|
|
3039
3047
|
const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
|
|
3040
3048
|
const fetchMarkets = [];
|
|
3041
3049
|
for (let i = 0; i < rawFetchMarkets.length; i++) {
|
package/dist/cjs/src/bingx.js
CHANGED
|
@@ -709,7 +709,7 @@ class bingx extends bingx$1 {
|
|
|
709
709
|
//
|
|
710
710
|
// {
|
|
711
711
|
// "code": 0,
|
|
712
|
-
// "timestamp":
|
|
712
|
+
// "timestamp": 1702623271476,
|
|
713
713
|
// "data": [
|
|
714
714
|
// {
|
|
715
715
|
// "coin": "BTC",
|
|
@@ -795,7 +795,7 @@ class bingx extends bingx$1 {
|
|
|
795
795
|
};
|
|
796
796
|
}
|
|
797
797
|
const active = depositEnabled || withdrawEnabled;
|
|
798
|
-
result[code] = {
|
|
798
|
+
result[code] = this.safeCurrencyStructure({
|
|
799
799
|
'info': entry,
|
|
800
800
|
'code': code,
|
|
801
801
|
'id': currencyId,
|
|
@@ -807,7 +807,7 @@ class bingx extends bingx$1 {
|
|
|
807
807
|
'networks': networks,
|
|
808
808
|
'fee': fee,
|
|
809
809
|
'limits': defaultLimits,
|
|
810
|
-
};
|
|
810
|
+
});
|
|
811
811
|
}
|
|
812
812
|
return result;
|
|
813
813
|
}
|
package/dist/cjs/src/bitfinex.js
CHANGED
|
@@ -1158,9 +1158,8 @@ class bitfinex extends bitfinex$1 {
|
|
|
1158
1158
|
//
|
|
1159
1159
|
// on trading pairs (ex. tBTCUSD)
|
|
1160
1160
|
//
|
|
1161
|
-
//
|
|
1162
|
-
//
|
|
1163
|
-
// SYMBOL,
|
|
1161
|
+
// [
|
|
1162
|
+
// SYMBOL, // this index is not present in singular-ticker
|
|
1164
1163
|
// BID,
|
|
1165
1164
|
// BID_SIZE,
|
|
1166
1165
|
// ASK,
|
|
@@ -1171,15 +1170,13 @@ class bitfinex extends bitfinex$1 {
|
|
|
1171
1170
|
// VOLUME,
|
|
1172
1171
|
// HIGH,
|
|
1173
1172
|
// LOW
|
|
1174
|
-
//
|
|
1175
|
-
// }
|
|
1173
|
+
// ]
|
|
1176
1174
|
//
|
|
1177
1175
|
//
|
|
1178
1176
|
// on funding currencies (ex. fUSD)
|
|
1179
1177
|
//
|
|
1180
|
-
//
|
|
1181
|
-
//
|
|
1182
|
-
// SYMBOL,
|
|
1178
|
+
// [
|
|
1179
|
+
// SYMBOL, // this index is not present in singular-ticker
|
|
1183
1180
|
// FRR,
|
|
1184
1181
|
// BID,
|
|
1185
1182
|
// BID_PERIOD,
|
|
@@ -1196,35 +1193,75 @@ class bitfinex extends bitfinex$1 {
|
|
|
1196
1193
|
// _PLACEHOLDER,
|
|
1197
1194
|
// _PLACEHOLDER,
|
|
1198
1195
|
// FRR_AMOUNT_AVAILABLE
|
|
1199
|
-
//
|
|
1200
|
-
// }
|
|
1196
|
+
// ]
|
|
1201
1197
|
//
|
|
1202
|
-
const
|
|
1203
|
-
const
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1198
|
+
const length = ticker.length;
|
|
1199
|
+
const isFetchTicker = (length === 10) || (length === 16);
|
|
1200
|
+
let symbol = undefined;
|
|
1201
|
+
let minusIndex = 0;
|
|
1202
|
+
let isFundingCurrency = false;
|
|
1203
|
+
if (isFetchTicker) {
|
|
1204
|
+
minusIndex = 1;
|
|
1205
|
+
isFundingCurrency = (length === 16);
|
|
1206
|
+
}
|
|
1207
|
+
else {
|
|
1208
|
+
const marketId = this.safeString(ticker, 0);
|
|
1209
|
+
market = this.safeMarket(marketId, market);
|
|
1210
|
+
isFundingCurrency = (length === 17);
|
|
1211
|
+
}
|
|
1212
|
+
symbol = this.safeSymbol(undefined, market);
|
|
1213
|
+
let last = undefined;
|
|
1214
|
+
let bid = undefined;
|
|
1215
|
+
let ask = undefined;
|
|
1216
|
+
let change = undefined;
|
|
1217
|
+
let percentage = undefined;
|
|
1218
|
+
let volume = undefined;
|
|
1219
|
+
let high = undefined;
|
|
1220
|
+
let low = undefined;
|
|
1221
|
+
if (isFundingCurrency) {
|
|
1222
|
+
// per api docs, they are different array type
|
|
1223
|
+
last = this.safeString(ticker, 10 - minusIndex);
|
|
1224
|
+
bid = this.safeString(ticker, 2 - minusIndex);
|
|
1225
|
+
ask = this.safeString(ticker, 5 - minusIndex);
|
|
1226
|
+
change = this.safeString(ticker, 8 - minusIndex);
|
|
1227
|
+
percentage = this.safeString(ticker, 9 - minusIndex);
|
|
1228
|
+
volume = this.safeString(ticker, 11 - minusIndex);
|
|
1229
|
+
high = this.safeString(ticker, 12 - minusIndex);
|
|
1230
|
+
low = this.safeString(ticker, 13 - minusIndex);
|
|
1231
|
+
}
|
|
1232
|
+
else {
|
|
1233
|
+
// on trading pairs (ex. tBTCUSD or tHMSTR:USD)
|
|
1234
|
+
last = this.safeString(ticker, 7 - minusIndex);
|
|
1235
|
+
bid = this.safeString(ticker, 1 - minusIndex);
|
|
1236
|
+
ask = this.safeString(ticker, 3 - minusIndex);
|
|
1237
|
+
change = this.safeString(ticker, 5 - minusIndex);
|
|
1238
|
+
percentage = this.safeString(ticker, 6 - minusIndex);
|
|
1239
|
+
percentage = Precise["default"].stringMul(percentage, '100');
|
|
1240
|
+
volume = this.safeString(ticker, 8 - minusIndex);
|
|
1241
|
+
high = this.safeString(ticker, 9 - minusIndex);
|
|
1242
|
+
low = this.safeString(ticker, 10 - minusIndex);
|
|
1243
|
+
}
|
|
1207
1244
|
return this.safeTicker({
|
|
1208
1245
|
'symbol': symbol,
|
|
1209
1246
|
'timestamp': undefined,
|
|
1210
1247
|
'datetime': undefined,
|
|
1211
|
-
'high':
|
|
1212
|
-
'low':
|
|
1213
|
-
'bid':
|
|
1214
|
-
'bidVolume':
|
|
1215
|
-
'ask':
|
|
1216
|
-
'askVolume':
|
|
1248
|
+
'high': high,
|
|
1249
|
+
'low': low,
|
|
1250
|
+
'bid': bid,
|
|
1251
|
+
'bidVolume': undefined,
|
|
1252
|
+
'ask': ask,
|
|
1253
|
+
'askVolume': undefined,
|
|
1217
1254
|
'vwap': undefined,
|
|
1218
1255
|
'open': undefined,
|
|
1219
1256
|
'close': last,
|
|
1220
1257
|
'last': last,
|
|
1221
1258
|
'previousClose': undefined,
|
|
1222
|
-
'change':
|
|
1223
|
-
'percentage':
|
|
1259
|
+
'change': change,
|
|
1260
|
+
'percentage': percentage,
|
|
1224
1261
|
'average': undefined,
|
|
1225
|
-
'baseVolume':
|
|
1262
|
+
'baseVolume': volume,
|
|
1226
1263
|
'quoteVolume': undefined,
|
|
1227
|
-
'info':
|
|
1264
|
+
'info': ticker,
|
|
1228
1265
|
}, market);
|
|
1229
1266
|
}
|
|
1230
1267
|
/**
|
|
@@ -1287,15 +1324,7 @@ class bitfinex extends bitfinex$1 {
|
|
|
1287
1324
|
// ...
|
|
1288
1325
|
// ]
|
|
1289
1326
|
//
|
|
1290
|
-
|
|
1291
|
-
for (let i = 0; i < tickers.length; i++) {
|
|
1292
|
-
const ticker = tickers[i];
|
|
1293
|
-
const marketId = this.safeString(ticker, 0);
|
|
1294
|
-
const market = this.safeMarket(marketId);
|
|
1295
|
-
const symbol = market['symbol'];
|
|
1296
|
-
result[symbol] = this.parseTicker({ 'result': ticker }, market);
|
|
1297
|
-
}
|
|
1298
|
-
return this.filterByArrayTickers(result, 'symbol', symbols);
|
|
1327
|
+
return this.parseTickers(tickers, symbols);
|
|
1299
1328
|
}
|
|
1300
1329
|
/**
|
|
1301
1330
|
* @method
|
|
@@ -1313,8 +1342,7 @@ class bitfinex extends bitfinex$1 {
|
|
|
1313
1342
|
'symbol': market['id'],
|
|
1314
1343
|
};
|
|
1315
1344
|
const ticker = await this.publicGetTickerSymbol(this.extend(request, params));
|
|
1316
|
-
|
|
1317
|
-
return this.parseTicker(result, market);
|
|
1345
|
+
return this.parseTicker(ticker, market);
|
|
1318
1346
|
}
|
|
1319
1347
|
parseTrade(trade, market = undefined) {
|
|
1320
1348
|
//
|