ccxt 4.2.84 → 4.2.86
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 +5 -5
- package/dist/ccxt.browser.js +1226 -1104
- package/dist/ccxt.browser.min.js +4 -4
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/ace.js +5 -5
- package/dist/cjs/src/ascendex.js +8 -8
- package/dist/cjs/src/base/Exchange.js +76 -14
- package/dist/cjs/src/bigone.js +12 -12
- package/dist/cjs/src/binance.js +23 -35
- package/dist/cjs/src/bingx.js +47 -28
- package/dist/cjs/src/bit2c.js +1 -1
- package/dist/cjs/src/bitbank.js +27 -31
- package/dist/cjs/src/bitbns.js +5 -5
- package/dist/cjs/src/bitfinex.js +1 -1
- package/dist/cjs/src/bitfinex2.js +1 -1
- package/dist/cjs/src/bitget.js +30 -24
- package/dist/cjs/src/bithumb.js +5 -5
- package/dist/cjs/src/bitmart.js +16 -16
- package/dist/cjs/src/bitopro.js +1 -1
- package/dist/cjs/src/bitrue.js +4 -4
- package/dist/cjs/src/bitso.js +5 -5
- package/dist/cjs/src/bitstamp.js +1 -1
- package/dist/cjs/src/bitteam.js +8 -8
- package/dist/cjs/src/bl3p.js +1 -1
- package/dist/cjs/src/btcturk.js +6 -6
- package/dist/cjs/src/bybit.js +31 -95
- package/dist/cjs/src/coincheck.js +4 -4
- package/dist/cjs/src/coinex.js +408 -262
- package/dist/cjs/src/coinlist.js +7 -7
- package/dist/cjs/src/coinmate.js +4 -4
- package/dist/cjs/src/coinmetro.js +3 -3
- package/dist/cjs/src/coinone.js +5 -5
- package/dist/cjs/src/coinspot.js +2 -2
- package/dist/cjs/src/cryptocom.js +17 -17
- package/dist/cjs/src/currencycom.js +1 -1
- package/dist/cjs/src/delta.js +0 -8
- package/dist/cjs/src/deribit.js +16 -92
- package/dist/cjs/src/digifinex.js +8 -8
- package/dist/cjs/src/exmo.js +8 -8
- package/dist/cjs/src/gate.js +0 -8
- package/dist/cjs/src/hitbtc.js +5 -4
- package/dist/cjs/src/hollaex.js +7 -7
- package/dist/cjs/src/htx.js +7 -7
- package/dist/cjs/src/huobijp.js +3 -3
- package/dist/cjs/src/idex.js +12 -13
- package/dist/cjs/src/independentreserve.js +2 -2
- package/dist/cjs/src/indodax.js +2 -2
- package/dist/cjs/src/kraken.js +8 -8
- package/dist/cjs/src/krakenfutures.js +6 -6
- package/dist/cjs/src/kucoin.js +5 -1
- package/dist/cjs/src/kucoinfutures.js +8 -8
- package/dist/cjs/src/kuna.js +16 -16
- package/dist/cjs/src/latoken.js +2 -2
- package/dist/cjs/src/lbank.js +10 -10
- package/dist/cjs/src/luno.js +4 -4
- package/dist/cjs/src/mercado.js +5 -5
- package/dist/cjs/src/mexc.js +6 -6
- package/dist/cjs/src/ndax.js +1 -1
- package/dist/cjs/src/novadax.js +9 -9
- package/dist/cjs/src/oceanex.js +7 -7
- package/dist/cjs/src/okcoin.js +16 -14
- package/dist/cjs/src/okx.js +23 -31
- package/dist/cjs/src/onetrading.js +4 -4
- package/dist/cjs/src/p2b.js +7 -7
- package/dist/cjs/src/phemex.js +12 -12
- package/dist/cjs/src/poloniexfutures.js +5 -5
- package/dist/cjs/src/pro/binance.js +167 -121
- package/dist/cjs/src/pro/bitget.js +1 -0
- package/dist/cjs/src/pro/kucoin.js +6 -7
- package/dist/cjs/src/pro/okx.js +19 -2
- package/dist/cjs/src/probit.js +11 -11
- package/dist/cjs/src/timex.js +7 -7
- package/dist/cjs/src/tokocrypto.js +9 -9
- package/dist/cjs/src/wavesexchange.js +3 -3
- package/dist/cjs/src/whitebit.js +5 -5
- package/dist/cjs/src/woo.js +1 -1
- package/dist/cjs/src/zaif.js +1 -1
- package/dist/cjs/src/zonda.js +7 -7
- package/examples/js/cli.js +0 -1
- package/examples/ts/cli.ts +0 -1
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/coinex.d.ts +232 -123
- package/js/src/ace.js +5 -5
- package/js/src/ascendex.js +8 -8
- package/js/src/base/Exchange.d.ts +13 -12
- package/js/src/base/Exchange.js +76 -14
- package/js/src/bigone.js +12 -12
- package/js/src/binance.d.ts +0 -1
- package/js/src/binance.js +23 -35
- package/js/src/bingx.js +47 -28
- package/js/src/bit2c.js +1 -1
- package/js/src/bitbank.js +27 -31
- package/js/src/bitbns.js +5 -5
- package/js/src/bitfinex.js +1 -1
- package/js/src/bitfinex2.js +1 -1
- package/js/src/bitget.js +30 -24
- package/js/src/bithumb.js +5 -5
- package/js/src/bitmart.js +16 -16
- package/js/src/bitopro.js +1 -1
- package/js/src/bitrue.js +4 -4
- package/js/src/bitso.js +5 -5
- package/js/src/bitstamp.js +1 -1
- package/js/src/bitteam.js +8 -8
- package/js/src/bl3p.js +1 -1
- package/js/src/btcturk.js +6 -6
- package/js/src/bybit.d.ts +0 -3
- package/js/src/bybit.js +31 -95
- package/js/src/coincheck.js +4 -4
- package/js/src/coinex.d.ts +1 -1
- package/js/src/coinex.js +408 -262
- package/js/src/coinlist.js +7 -7
- package/js/src/coinmate.js +4 -4
- package/js/src/coinmetro.js +3 -3
- package/js/src/coinone.js +5 -5
- package/js/src/coinspot.js +2 -2
- package/js/src/cryptocom.js +17 -17
- package/js/src/currencycom.js +1 -1
- package/js/src/delta.d.ts +0 -1
- package/js/src/delta.js +0 -8
- package/js/src/deribit.d.ts +0 -3
- package/js/src/deribit.js +16 -92
- package/js/src/digifinex.js +8 -8
- package/js/src/exmo.js +8 -8
- package/js/src/gate.d.ts +0 -1
- package/js/src/gate.js +0 -8
- package/js/src/hitbtc.js +5 -4
- package/js/src/hollaex.js +7 -7
- package/js/src/htx.js +7 -7
- package/js/src/huobijp.js +3 -3
- package/js/src/idex.js +12 -13
- package/js/src/independentreserve.js +2 -2
- package/js/src/indodax.js +2 -2
- package/js/src/kraken.js +8 -8
- package/js/src/krakenfutures.js +6 -6
- package/js/src/kucoin.js +5 -1
- package/js/src/kucoinfutures.js +8 -8
- package/js/src/kuna.js +16 -16
- package/js/src/latoken.js +2 -2
- package/js/src/lbank.js +10 -10
- package/js/src/luno.js +4 -4
- package/js/src/mercado.js +5 -5
- package/js/src/mexc.js +6 -6
- package/js/src/ndax.js +1 -1
- package/js/src/novadax.js +9 -9
- package/js/src/oceanex.js +7 -7
- package/js/src/okcoin.js +16 -14
- package/js/src/okx.d.ts +0 -1
- package/js/src/okx.js +23 -31
- package/js/src/onetrading.js +4 -4
- package/js/src/p2b.js +7 -7
- package/js/src/phemex.js +12 -12
- package/js/src/poloniexfutures.js +5 -5
- package/js/src/pro/binance.d.ts +5 -1
- package/js/src/pro/binance.js +168 -122
- package/js/src/pro/bitget.js +1 -0
- package/js/src/pro/kucoin.js +6 -7
- package/js/src/pro/okx.js +19 -2
- package/js/src/probit.js +11 -11
- package/js/src/timex.js +7 -7
- package/js/src/tokocrypto.js +9 -9
- package/js/src/wavesexchange.js +3 -3
- package/js/src/whitebit.js +5 -5
- package/js/src/woo.js +1 -1
- package/js/src/zaif.js +1 -1
- package/js/src/zonda.js +7 -7
- package/package.json +1 -1
- package/skip-tests.json +4 -0
package/js/src/base/Exchange.js
CHANGED
|
@@ -3888,20 +3888,6 @@ export default class Exchange {
|
|
|
3888
3888
|
async fetchStatus(params = {}) {
|
|
3889
3889
|
throw new NotSupported(this.id + ' fetchStatus() is not supported yet');
|
|
3890
3890
|
}
|
|
3891
|
-
async fetchFundingFee(code, params = {}) {
|
|
3892
|
-
const warnOnFetchFundingFee = this.safeBool(this.options, 'warnOnFetchFundingFee', true);
|
|
3893
|
-
if (warnOnFetchFundingFee) {
|
|
3894
|
-
throw new NotSupported(this.id + ' fetchFundingFee() method is deprecated, it will be removed in July 2022, please, use fetchTransactionFee() or set exchange.options["warnOnFetchFundingFee"] = false to suppress this warning');
|
|
3895
|
-
}
|
|
3896
|
-
return await this.fetchTransactionFee(code, params);
|
|
3897
|
-
}
|
|
3898
|
-
async fetchFundingFees(codes = undefined, params = {}) {
|
|
3899
|
-
const warnOnFetchFundingFees = this.safeBool(this.options, 'warnOnFetchFundingFees', true);
|
|
3900
|
-
if (warnOnFetchFundingFees) {
|
|
3901
|
-
throw new NotSupported(this.id + ' fetchFundingFees() method is deprecated, it will be removed in July 2022. Please, use fetchTransactionFees() or set exchange.options["warnOnFetchFundingFees"] = false to suppress this warning');
|
|
3902
|
-
}
|
|
3903
|
-
return await this.fetchTransactionFees(codes, params);
|
|
3904
|
-
}
|
|
3905
3891
|
async fetchTransactionFee(code, params = {}) {
|
|
3906
3892
|
if (!this.has['fetchTransactionFees']) {
|
|
3907
3893
|
throw new NotSupported(this.id + ' fetchTransactionFee() is not supported yet');
|
|
@@ -5707,5 +5693,81 @@ export default class Exchange {
|
|
|
5707
5693
|
parseLeverage(leverage, market = undefined) {
|
|
5708
5694
|
throw new NotSupported(this.id + ' parseLeverage() is not supported yet');
|
|
5709
5695
|
}
|
|
5696
|
+
convertExpireDate(date) {
|
|
5697
|
+
// parse YYMMDD to datetime string
|
|
5698
|
+
const year = date.slice(0, 2);
|
|
5699
|
+
const month = date.slice(2, 4);
|
|
5700
|
+
const day = date.slice(4, 6);
|
|
5701
|
+
const reconstructedDate = '20' + year + '-' + month + '-' + day + 'T00:00:00Z';
|
|
5702
|
+
return reconstructedDate;
|
|
5703
|
+
}
|
|
5704
|
+
convertExpireDateToMarketIdDate(date) {
|
|
5705
|
+
// parse 240119 to 19JAN24
|
|
5706
|
+
const year = date.slice(0, 2);
|
|
5707
|
+
const monthRaw = date.slice(2, 4);
|
|
5708
|
+
let month = undefined;
|
|
5709
|
+
const day = date.slice(4, 6);
|
|
5710
|
+
if (monthRaw === '01') {
|
|
5711
|
+
month = 'JAN';
|
|
5712
|
+
}
|
|
5713
|
+
else if (monthRaw === '02') {
|
|
5714
|
+
month = 'FEB';
|
|
5715
|
+
}
|
|
5716
|
+
else if (monthRaw === '03') {
|
|
5717
|
+
month = 'MAR';
|
|
5718
|
+
}
|
|
5719
|
+
else if (monthRaw === '04') {
|
|
5720
|
+
month = 'APR';
|
|
5721
|
+
}
|
|
5722
|
+
else if (monthRaw === '05') {
|
|
5723
|
+
month = 'MAY';
|
|
5724
|
+
}
|
|
5725
|
+
else if (monthRaw === '06') {
|
|
5726
|
+
month = 'JUN';
|
|
5727
|
+
}
|
|
5728
|
+
else if (monthRaw === '07') {
|
|
5729
|
+
month = 'JUL';
|
|
5730
|
+
}
|
|
5731
|
+
else if (monthRaw === '08') {
|
|
5732
|
+
month = 'AUG';
|
|
5733
|
+
}
|
|
5734
|
+
else if (monthRaw === '09') {
|
|
5735
|
+
month = 'SEP';
|
|
5736
|
+
}
|
|
5737
|
+
else if (monthRaw === '10') {
|
|
5738
|
+
month = 'OCT';
|
|
5739
|
+
}
|
|
5740
|
+
else if (monthRaw === '11') {
|
|
5741
|
+
month = 'NOV';
|
|
5742
|
+
}
|
|
5743
|
+
else if (monthRaw === '12') {
|
|
5744
|
+
month = 'DEC';
|
|
5745
|
+
}
|
|
5746
|
+
const reconstructedDate = day + month + year;
|
|
5747
|
+
return reconstructedDate;
|
|
5748
|
+
}
|
|
5749
|
+
convertMarketIdExpireDate(date) {
|
|
5750
|
+
// parse 19JAN24 to 240119
|
|
5751
|
+
const monthMappping = {
|
|
5752
|
+
'JAN': '01',
|
|
5753
|
+
'FEB': '02',
|
|
5754
|
+
'MAR': '03',
|
|
5755
|
+
'APR': '04',
|
|
5756
|
+
'MAY': '05',
|
|
5757
|
+
'JUN': '06',
|
|
5758
|
+
'JUL': '07',
|
|
5759
|
+
'AUG': '08',
|
|
5760
|
+
'SEP': '09',
|
|
5761
|
+
'OCT': '10',
|
|
5762
|
+
'NOV': '11',
|
|
5763
|
+
'DEC': '12',
|
|
5764
|
+
};
|
|
5765
|
+
const year = date.slice(0, 2);
|
|
5766
|
+
const monthName = date.slice(2, 5);
|
|
5767
|
+
const month = this.safeString(monthMappping, monthName);
|
|
5768
|
+
const day = date.slice(5, 7);
|
|
5769
|
+
const reconstructedDate = day + month + year;
|
|
5770
|
+
return reconstructedDate;
|
|
5771
|
+
}
|
|
5710
5772
|
}
|
|
5711
5773
|
export { Exchange, };
|
package/js/src/bigone.js
CHANGED
|
@@ -814,7 +814,7 @@ export default class bigone extends Exchange {
|
|
|
814
814
|
// }
|
|
815
815
|
// }
|
|
816
816
|
//
|
|
817
|
-
const ticker = this.
|
|
817
|
+
const ticker = this.safeDict(response, 'data', {});
|
|
818
818
|
return this.parseTicker(ticker, market);
|
|
819
819
|
}
|
|
820
820
|
else {
|
|
@@ -1001,7 +1001,7 @@ export default class bigone extends Exchange {
|
|
|
1001
1001
|
// }
|
|
1002
1002
|
// }
|
|
1003
1003
|
//
|
|
1004
|
-
const orderbook = this.
|
|
1004
|
+
const orderbook = this.safeDict(response, 'data', {});
|
|
1005
1005
|
return this.parseOrderBook(orderbook, market['symbol'], undefined, 'bids', 'asks', 'price', 'quantity');
|
|
1006
1006
|
}
|
|
1007
1007
|
}
|
|
@@ -1216,7 +1216,7 @@ export default class bigone extends Exchange {
|
|
|
1216
1216
|
// ]
|
|
1217
1217
|
// }
|
|
1218
1218
|
//
|
|
1219
|
-
const trades = this.
|
|
1219
|
+
const trades = this.safeList(response, 'data', []);
|
|
1220
1220
|
return this.parseTrades(trades, market, since, limit);
|
|
1221
1221
|
}
|
|
1222
1222
|
parseOHLCV(ohlcv, market = undefined) {
|
|
@@ -1295,7 +1295,7 @@ export default class bigone extends Exchange {
|
|
|
1295
1295
|
// ]
|
|
1296
1296
|
// }
|
|
1297
1297
|
//
|
|
1298
|
-
const data = this.
|
|
1298
|
+
const data = this.safeList(response, 'data', []);
|
|
1299
1299
|
return this.parseOHLCVs(data, market, timeframe, since, limit);
|
|
1300
1300
|
}
|
|
1301
1301
|
parseBalance(response) {
|
|
@@ -1564,7 +1564,7 @@ export default class bigone extends Exchange {
|
|
|
1564
1564
|
// "updated_at":"2019-01-29T06:05:56Z"
|
|
1565
1565
|
// }
|
|
1566
1566
|
//
|
|
1567
|
-
const order = this.
|
|
1567
|
+
const order = this.safeDict(response, 'data');
|
|
1568
1568
|
return this.parseOrder(order, market);
|
|
1569
1569
|
}
|
|
1570
1570
|
async cancelOrder(id, symbol = undefined, params = {}) {
|
|
@@ -1593,7 +1593,7 @@ export default class bigone extends Exchange {
|
|
|
1593
1593
|
// "created_at":"2019-01-29T06:05:56Z",
|
|
1594
1594
|
// "updated_at":"2019-01-29T06:05:56Z"
|
|
1595
1595
|
// }
|
|
1596
|
-
const order = this.
|
|
1596
|
+
const order = this.safeDict(response, 'data');
|
|
1597
1597
|
return this.parseOrder(order);
|
|
1598
1598
|
}
|
|
1599
1599
|
async cancelAllOrders(symbol = undefined, params = {}) {
|
|
@@ -1639,7 +1639,7 @@ export default class bigone extends Exchange {
|
|
|
1639
1639
|
await this.loadMarkets();
|
|
1640
1640
|
const request = { 'id': id };
|
|
1641
1641
|
const response = await this.privateGetOrdersId(this.extend(request, params));
|
|
1642
|
-
const order = this.
|
|
1642
|
+
const order = this.safeDict(response, 'data', {});
|
|
1643
1643
|
return this.parseOrder(order);
|
|
1644
1644
|
}
|
|
1645
1645
|
async fetchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
@@ -1690,7 +1690,7 @@ export default class bigone extends Exchange {
|
|
|
1690
1690
|
// "page_token":"dxzef",
|
|
1691
1691
|
// }
|
|
1692
1692
|
//
|
|
1693
|
-
const orders = this.
|
|
1693
|
+
const orders = this.safeList(response, 'data', []);
|
|
1694
1694
|
return this.parseOrders(orders, market, since, limit);
|
|
1695
1695
|
}
|
|
1696
1696
|
async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
@@ -1752,7 +1752,7 @@ export default class bigone extends Exchange {
|
|
|
1752
1752
|
// "page_token":"dxfv"
|
|
1753
1753
|
// }
|
|
1754
1754
|
//
|
|
1755
|
-
const trades = this.
|
|
1755
|
+
const trades = this.safeList(response, 'data', []);
|
|
1756
1756
|
return this.parseTrades(trades, market, since, limit);
|
|
1757
1757
|
}
|
|
1758
1758
|
parseOrderStatus(status) {
|
|
@@ -2035,7 +2035,7 @@ export default class bigone extends Exchange {
|
|
|
2035
2035
|
// ]
|
|
2036
2036
|
// }
|
|
2037
2037
|
//
|
|
2038
|
-
const deposits = this.
|
|
2038
|
+
const deposits = this.safeList(response, 'data', []);
|
|
2039
2039
|
return this.parseTransactions(deposits, currency, since, limit);
|
|
2040
2040
|
}
|
|
2041
2041
|
async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
|
|
@@ -2087,7 +2087,7 @@ export default class bigone extends Exchange {
|
|
|
2087
2087
|
// "page_token":"dxvf"
|
|
2088
2088
|
// }
|
|
2089
2089
|
//
|
|
2090
|
-
const withdrawals = this.
|
|
2090
|
+
const withdrawals = this.safeList(response, 'data', []);
|
|
2091
2091
|
return this.parseTransactions(withdrawals, currency, since, limit);
|
|
2092
2092
|
}
|
|
2093
2093
|
async transfer(code, amount, fromAccount, toAccount, params = {}) {
|
|
@@ -2214,7 +2214,7 @@ export default class bigone extends Exchange {
|
|
|
2214
2214
|
// }
|
|
2215
2215
|
// }
|
|
2216
2216
|
//
|
|
2217
|
-
const data = this.
|
|
2217
|
+
const data = this.safeDict(response, 'data', {});
|
|
2218
2218
|
return this.parseTransaction(data, currency);
|
|
2219
2219
|
}
|
|
2220
2220
|
handleErrors(httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody) {
|
package/js/src/binance.d.ts
CHANGED
|
@@ -9,7 +9,6 @@ export default class binance extends Exchange {
|
|
|
9
9
|
isInverse(type: string, subType?: Str): boolean;
|
|
10
10
|
isLinear(type: string, subType?: Str): boolean;
|
|
11
11
|
setSandboxMode(enable: boolean): void;
|
|
12
|
-
convertExpireDate(date: any): string;
|
|
13
12
|
createExpiredOptionMarket(symbol: string): MarketInterface;
|
|
14
13
|
market(symbol: string): MarketInterface;
|
|
15
14
|
safeMarket(marketId?: Str, market?: Market, delimiter?: Str, marketType?: Str): MarketInterface;
|
package/js/src/binance.js
CHANGED
|
@@ -2425,14 +2425,6 @@ export default class binance extends Exchange {
|
|
|
2425
2425
|
super.setSandboxMode(enable);
|
|
2426
2426
|
this.options['sandboxMode'] = enable;
|
|
2427
2427
|
}
|
|
2428
|
-
convertExpireDate(date) {
|
|
2429
|
-
// parse YYMMDD to timestamp
|
|
2430
|
-
const year = date.slice(0, 2);
|
|
2431
|
-
const month = date.slice(2, 4);
|
|
2432
|
-
const day = date.slice(4, 6);
|
|
2433
|
-
const reconstructedDate = '20' + year + '-' + month + '-' + day + 'T00:00:00Z';
|
|
2434
|
-
return reconstructedDate;
|
|
2435
|
-
}
|
|
2436
2428
|
createExpiredOptionMarket(symbol) {
|
|
2437
2429
|
// support expired option contracts
|
|
2438
2430
|
const settle = 'USDT';
|
|
@@ -3969,16 +3961,12 @@ export default class binance extends Exchange {
|
|
|
3969
3961
|
* @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
3970
3962
|
*/
|
|
3971
3963
|
await this.loadMarkets();
|
|
3972
|
-
symbols = this.marketSymbols(symbols);
|
|
3973
|
-
|
|
3974
|
-
if (symbols !== undefined) {
|
|
3975
|
-
const first = this.safeString(symbols, 0);
|
|
3976
|
-
market = this.market(first);
|
|
3977
|
-
}
|
|
3964
|
+
symbols = this.marketSymbols(symbols, undefined, true, true, true);
|
|
3965
|
+
const market = this.getMarketFromSymbols(symbols);
|
|
3978
3966
|
let type = undefined;
|
|
3967
|
+
[type, params] = this.handleMarketTypeAndParams('fetchBidsAsks', market, params);
|
|
3979
3968
|
let subType = undefined;
|
|
3980
3969
|
[subType, params] = this.handleSubTypeAndParams('fetchBidsAsks', market, params);
|
|
3981
|
-
[type, params] = this.handleMarketTypeAndParams('fetchBidsAsks', market, params);
|
|
3982
3970
|
let response = undefined;
|
|
3983
3971
|
if (this.isLinear(type, subType)) {
|
|
3984
3972
|
response = await this.fapiPublicGetTickerBookTicker(params);
|
|
@@ -3986,14 +3974,16 @@ export default class binance extends Exchange {
|
|
|
3986
3974
|
else if (this.isInverse(type, subType)) {
|
|
3987
3975
|
response = await this.dapiPublicGetTickerBookTicker(params);
|
|
3988
3976
|
}
|
|
3989
|
-
else {
|
|
3977
|
+
else if (type === 'spot') {
|
|
3990
3978
|
const request = {};
|
|
3991
3979
|
if (symbols !== undefined) {
|
|
3992
|
-
|
|
3993
|
-
request['symbols'] = this.json(marketIds);
|
|
3980
|
+
request['symbols'] = this.json(this.marketIds(symbols));
|
|
3994
3981
|
}
|
|
3995
3982
|
response = await this.publicGetTickerBookTicker(this.extend(request, params));
|
|
3996
3983
|
}
|
|
3984
|
+
else {
|
|
3985
|
+
throw new NotSupported(this.id + ' fetchBidsAsks() does not support ' + type + ' markets yet');
|
|
3986
|
+
}
|
|
3997
3987
|
return this.parseTickers(response, symbols);
|
|
3998
3988
|
}
|
|
3999
3989
|
async fetchLastPrices(symbols = undefined, params = {}) {
|
|
@@ -4010,12 +4000,12 @@ export default class binance extends Exchange {
|
|
|
4010
4000
|
* @returns {object} a dictionary of lastprices structures
|
|
4011
4001
|
*/
|
|
4012
4002
|
await this.loadMarkets();
|
|
4013
|
-
symbols = this.marketSymbols(symbols);
|
|
4003
|
+
symbols = this.marketSymbols(symbols, undefined, true, true, true);
|
|
4014
4004
|
const market = this.getMarketFromSymbols(symbols);
|
|
4015
4005
|
let type = undefined;
|
|
4006
|
+
[type, params] = this.handleMarketTypeAndParams('fetchLastPrices', market, params);
|
|
4016
4007
|
let subType = undefined;
|
|
4017
4008
|
[subType, params] = this.handleSubTypeAndParams('fetchLastPrices', market, params);
|
|
4018
|
-
[type, params] = this.handleMarketTypeAndParams('fetchLastPrices', market, params);
|
|
4019
4009
|
let response = undefined;
|
|
4020
4010
|
if (this.isLinear(type, subType)) {
|
|
4021
4011
|
response = await this.fapiPublicV2GetTickerPrice(params);
|
|
@@ -4116,34 +4106,32 @@ export default class binance extends Exchange {
|
|
|
4116
4106
|
* @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
4117
4107
|
*/
|
|
4118
4108
|
await this.loadMarkets();
|
|
4119
|
-
let type = undefined;
|
|
4120
|
-
let market = undefined;
|
|
4121
4109
|
symbols = this.marketSymbols(symbols, undefined, true, true, true);
|
|
4122
|
-
|
|
4123
|
-
|
|
4124
|
-
market = this.market(first);
|
|
4125
|
-
}
|
|
4110
|
+
const market = this.getMarketFromSymbols(symbols);
|
|
4111
|
+
let type = undefined;
|
|
4126
4112
|
[type, params] = this.handleMarketTypeAndParams('fetchTickers', market, params);
|
|
4127
4113
|
let subType = undefined;
|
|
4128
4114
|
[subType, params] = this.handleSubTypeAndParams('fetchTickers', market, params);
|
|
4129
4115
|
let response = undefined;
|
|
4130
|
-
if (type
|
|
4131
|
-
response = await this.eapiPublicGetTicker(params);
|
|
4132
|
-
}
|
|
4133
|
-
else if (this.isLinear(type, subType)) {
|
|
4116
|
+
if (this.isLinear(type, subType)) {
|
|
4134
4117
|
response = await this.fapiPublicGetTicker24hr(params);
|
|
4135
4118
|
}
|
|
4136
4119
|
else if (this.isInverse(type, subType)) {
|
|
4137
4120
|
response = await this.dapiPublicGetTicker24hr(params);
|
|
4138
4121
|
}
|
|
4139
|
-
else {
|
|
4122
|
+
else if (type === 'spot') {
|
|
4140
4123
|
const request = {};
|
|
4141
4124
|
if (symbols !== undefined) {
|
|
4142
|
-
|
|
4143
|
-
request['symbols'] = this.json(marketIds);
|
|
4125
|
+
request['symbols'] = this.json(this.marketIds(symbols));
|
|
4144
4126
|
}
|
|
4145
4127
|
response = await this.publicGetTicker24hr(this.extend(request, params));
|
|
4146
4128
|
}
|
|
4129
|
+
else if (type === 'option') {
|
|
4130
|
+
response = await this.eapiPublicGetTicker(params);
|
|
4131
|
+
}
|
|
4132
|
+
else {
|
|
4133
|
+
throw new NotSupported(this.id + ' fetchTickers() does not support ' + type + ' markets yet');
|
|
4134
|
+
}
|
|
4147
4135
|
return this.parseTickers(response, symbols);
|
|
4148
4136
|
}
|
|
4149
4137
|
parseOHLCV(ohlcv, market = undefined) {
|
|
@@ -4810,7 +4798,7 @@ export default class binance extends Exchange {
|
|
|
4810
4798
|
// }
|
|
4811
4799
|
// }
|
|
4812
4800
|
//
|
|
4813
|
-
const data = this.
|
|
4801
|
+
const data = this.safeDict(response, 'newOrderResponse');
|
|
4814
4802
|
return this.parseOrder(data, market);
|
|
4815
4803
|
}
|
|
4816
4804
|
editSpotOrderRequest(id, symbol, type, side, amount, price = undefined, params = {}) {
|
|
@@ -12400,7 +12388,7 @@ export default class binance extends Exchange {
|
|
|
12400
12388
|
else {
|
|
12401
12389
|
throw new BadRequest(this.id + ' fetchMarginModes () supports linear and inverse subTypes only');
|
|
12402
12390
|
}
|
|
12403
|
-
const assets = this.
|
|
12391
|
+
const assets = this.safeList(response, 'positions', []);
|
|
12404
12392
|
return this.parseMarginModes(assets, symbols, 'symbol', 'swap');
|
|
12405
12393
|
}
|
|
12406
12394
|
parseMarginMode(marginMode, market = undefined) {
|
package/js/src/bingx.js
CHANGED
|
@@ -632,7 +632,7 @@ export default class bingx extends Exchange {
|
|
|
632
632
|
symbol += ':' + settle;
|
|
633
633
|
}
|
|
634
634
|
const fees = this.safeDict(this.fees, type, {});
|
|
635
|
-
const contractSize = this.
|
|
635
|
+
const contractSize = (swap) ? this.parseNumber('1') : undefined;
|
|
636
636
|
const isActive = this.safeString(market, 'status') === '1';
|
|
637
637
|
const isInverse = (spot) ? undefined : false;
|
|
638
638
|
const isLinear = (spot) ? undefined : swap;
|
|
@@ -673,7 +673,7 @@ export default class bingx extends Exchange {
|
|
|
673
673
|
'max': this.safeInteger(market, 'maxLongLeverage'),
|
|
674
674
|
},
|
|
675
675
|
'amount': {
|
|
676
|
-
'min': this.
|
|
676
|
+
'min': this.safeNumber2(market, 'minQty', 'tradeMinQuantity'),
|
|
677
677
|
'max': this.safeNumber(market, 'maxQty'),
|
|
678
678
|
},
|
|
679
679
|
'price': {
|
|
@@ -681,7 +681,7 @@ export default class bingx extends Exchange {
|
|
|
681
681
|
'max': undefined,
|
|
682
682
|
},
|
|
683
683
|
'cost': {
|
|
684
|
-
'min': this.
|
|
684
|
+
'min': this.safeNumber2(market, 'minNotional', 'tradeMinUSDT'),
|
|
685
685
|
'max': this.safeNumber(market, 'maxNotional'),
|
|
686
686
|
},
|
|
687
687
|
},
|
|
@@ -1038,6 +1038,13 @@ export default class bingx extends Exchange {
|
|
|
1038
1038
|
if (isMaker !== undefined) {
|
|
1039
1039
|
takeOrMaker = isMaker ? 'maker' : 'taker';
|
|
1040
1040
|
}
|
|
1041
|
+
let amount = this.safeStringN(trade, ['qty', 'amount', 'q']);
|
|
1042
|
+
if ((market !== undefined) && market['swap'] && ('volume' in trade)) {
|
|
1043
|
+
// private trade returns num of contracts instead of base currency (as the order-related methods do)
|
|
1044
|
+
const contractSize = this.safeString(market['info'], 'tradeMinQuantity');
|
|
1045
|
+
const volume = this.safeString(trade, 'volume');
|
|
1046
|
+
amount = Precise.stringMul(volume, contractSize);
|
|
1047
|
+
}
|
|
1041
1048
|
return this.safeTrade({
|
|
1042
1049
|
'id': this.safeStringN(trade, ['id', 't']),
|
|
1043
1050
|
'info': trade,
|
|
@@ -1049,7 +1056,7 @@ export default class bingx extends Exchange {
|
|
|
1049
1056
|
'side': this.parseOrderSide(side),
|
|
1050
1057
|
'takerOrMaker': takeOrMaker,
|
|
1051
1058
|
'price': this.safeString2(trade, 'price', 'p'),
|
|
1052
|
-
'amount':
|
|
1059
|
+
'amount': amount,
|
|
1053
1060
|
'cost': cost,
|
|
1054
1061
|
'fee': {
|
|
1055
1062
|
'cost': this.parseNumber(Precise.stringAbs(this.safeString2(trade, 'commission', 'n'))),
|
|
@@ -1387,9 +1394,13 @@ export default class bingx extends Exchange {
|
|
|
1387
1394
|
else {
|
|
1388
1395
|
response = await this.swapV2PublicGetQuoteTicker(this.extend(request, params));
|
|
1389
1396
|
}
|
|
1390
|
-
const data = this.
|
|
1391
|
-
|
|
1392
|
-
|
|
1397
|
+
const data = this.safeList(response, 'data');
|
|
1398
|
+
if (data !== undefined) {
|
|
1399
|
+
const first = this.safeDict(data, 0, {});
|
|
1400
|
+
return this.parseTicker(first, market);
|
|
1401
|
+
}
|
|
1402
|
+
const dataDict = this.safeDict(response, 'data', {});
|
|
1403
|
+
return this.parseTicker(dataDict, market);
|
|
1393
1404
|
}
|
|
1394
1405
|
async fetchTickers(symbols = undefined, params = {}) {
|
|
1395
1406
|
/**
|
|
@@ -1419,7 +1430,7 @@ export default class bingx extends Exchange {
|
|
|
1419
1430
|
else {
|
|
1420
1431
|
response = await this.swapV2PublicGetQuoteTicker(params);
|
|
1421
1432
|
}
|
|
1422
|
-
const tickers = this.
|
|
1433
|
+
const tickers = this.safeList(response, 'data');
|
|
1423
1434
|
return this.parseTickers(tickers, symbols);
|
|
1424
1435
|
}
|
|
1425
1436
|
parseTicker(ticker, market = undefined) {
|
|
@@ -1677,19 +1688,27 @@ export default class bingx extends Exchange {
|
|
|
1677
1688
|
}
|
|
1678
1689
|
parsePosition(position, market = undefined) {
|
|
1679
1690
|
//
|
|
1680
|
-
//
|
|
1681
|
-
//
|
|
1682
|
-
//
|
|
1683
|
-
//
|
|
1684
|
-
//
|
|
1685
|
-
//
|
|
1686
|
-
//
|
|
1687
|
-
//
|
|
1688
|
-
//
|
|
1689
|
-
//
|
|
1690
|
-
//
|
|
1691
|
-
//
|
|
1692
|
-
//
|
|
1691
|
+
// {
|
|
1692
|
+
// "positionId":"1773122376147623936",
|
|
1693
|
+
// "symbol":"XRP-USDT",
|
|
1694
|
+
// "currency":"USDT",
|
|
1695
|
+
// "positionAmt":"3",
|
|
1696
|
+
// "availableAmt":"3",
|
|
1697
|
+
// "positionSide":"LONG",
|
|
1698
|
+
// "isolated":false,
|
|
1699
|
+
// "avgPrice":"0.6139",
|
|
1700
|
+
// "initialMargin":"0.0897",
|
|
1701
|
+
// "leverage":20,
|
|
1702
|
+
// "unrealizedProfit":"-0.0023",
|
|
1703
|
+
// "realisedProfit":"-0.0009",
|
|
1704
|
+
// "liquidationPrice":0,
|
|
1705
|
+
// "pnlRatio":"-0.0260",
|
|
1706
|
+
// "maxMarginReduction":"",
|
|
1707
|
+
// "riskRate":"",
|
|
1708
|
+
// "markPrice":"",
|
|
1709
|
+
// "positionValue":"",
|
|
1710
|
+
// "onlyOnePosition":false
|
|
1711
|
+
// }
|
|
1693
1712
|
//
|
|
1694
1713
|
// standard position
|
|
1695
1714
|
//
|
|
@@ -1716,7 +1735,7 @@ export default class bingx extends Exchange {
|
|
|
1716
1735
|
'info': position,
|
|
1717
1736
|
'id': this.safeString(position, 'positionId'),
|
|
1718
1737
|
'symbol': this.safeSymbol(marketId, market, '-', 'swap'),
|
|
1719
|
-
'notional': this.safeNumber(position, '
|
|
1738
|
+
'notional': this.safeNumber(position, 'positionValue'),
|
|
1720
1739
|
'marginMode': marginMode,
|
|
1721
1740
|
'liquidationPrice': undefined,
|
|
1722
1741
|
'entryPrice': this.safeNumber2(position, 'avgPrice', 'entryPrice'),
|
|
@@ -1734,7 +1753,7 @@ export default class bingx extends Exchange {
|
|
|
1734
1753
|
'lastUpdateTimestamp': undefined,
|
|
1735
1754
|
'maintenanceMargin': undefined,
|
|
1736
1755
|
'maintenanceMarginPercentage': undefined,
|
|
1737
|
-
'collateral':
|
|
1756
|
+
'collateral': undefined,
|
|
1738
1757
|
'initialMargin': this.safeNumber(position, 'initialMargin'),
|
|
1739
1758
|
'initialMarginPercentage': undefined,
|
|
1740
1759
|
'leverage': this.safeNumber(position, 'leverage'),
|
|
@@ -2065,7 +2084,7 @@ export default class bingx extends Exchange {
|
|
|
2065
2084
|
response = this.parseJson(response);
|
|
2066
2085
|
}
|
|
2067
2086
|
const data = this.safeValue(response, 'data', {});
|
|
2068
|
-
const order = this.
|
|
2087
|
+
const order = this.safeDict(data, 'order', data);
|
|
2069
2088
|
return this.parseOrder(order, market);
|
|
2070
2089
|
}
|
|
2071
2090
|
async createOrders(orders, params = {}) {
|
|
@@ -2562,7 +2581,7 @@ export default class bingx extends Exchange {
|
|
|
2562
2581
|
// }
|
|
2563
2582
|
//
|
|
2564
2583
|
const data = this.safeValue(response, 'data');
|
|
2565
|
-
const first = this.
|
|
2584
|
+
const first = this.safeDict(data, 'order', data);
|
|
2566
2585
|
return this.parseOrder(first, market);
|
|
2567
2586
|
}
|
|
2568
2587
|
async cancelAllOrders(symbol = undefined, params = {}) {
|
|
@@ -2807,7 +2826,7 @@ export default class bingx extends Exchange {
|
|
|
2807
2826
|
// }
|
|
2808
2827
|
//
|
|
2809
2828
|
const data = this.safeValue(response, 'data');
|
|
2810
|
-
const first = this.
|
|
2829
|
+
const first = this.safeDict(data, 'order', data);
|
|
2811
2830
|
return this.parseOrder(first, market);
|
|
2812
2831
|
}
|
|
2813
2832
|
async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
@@ -2990,7 +3009,7 @@ export default class bingx extends Exchange {
|
|
|
2990
3009
|
// }
|
|
2991
3010
|
//
|
|
2992
3011
|
const data = this.safeValue(response, 'data', []);
|
|
2993
|
-
const orders = this.
|
|
3012
|
+
const orders = this.safeList(data, 'orders', []);
|
|
2994
3013
|
return this.parseOrders(orders, market, since, limit);
|
|
2995
3014
|
}
|
|
2996
3015
|
async transfer(code, amount, fromAccount, toAccount, params = {}) {
|
|
@@ -3734,7 +3753,7 @@ export default class bingx extends Exchange {
|
|
|
3734
3753
|
*/
|
|
3735
3754
|
await this.loadMarkets();
|
|
3736
3755
|
const response = await this.walletsV1PrivateGetCapitalConfigGetall(params);
|
|
3737
|
-
const coins = this.
|
|
3756
|
+
const coins = this.safeList(response, 'data');
|
|
3738
3757
|
return this.parseDepositWithdrawFees(coins, codes, 'coin');
|
|
3739
3758
|
}
|
|
3740
3759
|
async withdraw(code, amount, address, tag = undefined, params = {}) {
|
package/js/src/bit2c.js
CHANGED
|
@@ -492,7 +492,7 @@ export default class bit2c extends Exchange {
|
|
|
492
492
|
const response = await this.privateGetOrderMyOrders(this.extend(request, params));
|
|
493
493
|
const orders = this.safeValue(response, market['id'], {});
|
|
494
494
|
const asks = this.safeValue(orders, 'ask', []);
|
|
495
|
-
const bids = this.
|
|
495
|
+
const bids = this.safeList(orders, 'bid', []);
|
|
496
496
|
return this.parseOrders(this.arrayConcat(asks, bids), market, since, limit);
|
|
497
497
|
}
|
|
498
498
|
async fetchOrder(id, symbol = undefined, params = {}) {
|