ccxt 4.2.55 → 4.2.56
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/build.sh +1 -1
- package/dist/ccxt.browser.js +137 -83
- package/dist/ccxt.browser.min.js +6 -6
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/bingx.js +3 -1
- package/dist/cjs/src/pro/bitget.js +69 -73
- package/dist/cjs/src/pro/bybit.js +19 -5
- package/dist/cjs/src/pro/currencycom.js +2 -1
- package/dist/cjs/src/pro/kraken.js +1 -1
- package/dist/cjs/src/upbit.js +1 -1
- package/dist/cjs/src/woo.js +41 -0
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/woo.d.ts +9 -0
- package/js/src/base/Exchange.d.ts +1 -1
- package/js/src/base/types.d.ts +2 -2
- package/js/src/bingx.d.ts +4 -4
- package/js/src/bingx.js +3 -1
- package/js/src/pro/bitget.d.ts +0 -1
- package/js/src/pro/bitget.js +69 -73
- package/js/src/pro/bybit.js +19 -5
- package/js/src/pro/currencycom.js +2 -1
- package/js/src/pro/kraken.js +1 -1
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
- package/js/src/upbit.js +1 -1
- package/js/src/woo.d.ts +1 -0
- package/js/src/woo.js +41 -0
- package/package.json +1 -1
- package/skip-tests.json +1 -156
package/js/src/pro/bitget.js
CHANGED
|
@@ -92,7 +92,10 @@ export default class bitget extends bitgetRest {
|
|
|
92
92
|
}
|
|
93
93
|
getInstType(market, params = {}) {
|
|
94
94
|
let instType = undefined;
|
|
95
|
-
if (
|
|
95
|
+
if (market === undefined) {
|
|
96
|
+
[instType, params] = this.handleProductTypeAndParams(undefined, params);
|
|
97
|
+
}
|
|
98
|
+
else if ((market['swap']) || (market['future'])) {
|
|
96
99
|
[instType, params] = this.handleProductTypeAndParams(market, params);
|
|
97
100
|
}
|
|
98
101
|
else {
|
|
@@ -669,9 +672,12 @@ export default class bitget extends bitgetRest {
|
|
|
669
672
|
stored = new ArrayCache(limit);
|
|
670
673
|
this.trades[symbol] = stored;
|
|
671
674
|
}
|
|
672
|
-
const data = this.
|
|
673
|
-
|
|
674
|
-
|
|
675
|
+
const data = this.safeList(message, 'data', []);
|
|
676
|
+
const length = data.length;
|
|
677
|
+
const maxLength = Math.max(length - 1, 0);
|
|
678
|
+
// fix chronological order by reversing
|
|
679
|
+
for (let i = maxLength; i >= 0; i--) {
|
|
680
|
+
const rawTrade = data[i];
|
|
675
681
|
const parsed = this.parseWsTrade(rawTrade, market);
|
|
676
682
|
stored.append(parsed);
|
|
677
683
|
}
|
|
@@ -688,22 +694,71 @@ export default class bitget extends bitgetRest {
|
|
|
688
694
|
// "tradeId": "1116461060594286593"
|
|
689
695
|
// }
|
|
690
696
|
//
|
|
691
|
-
|
|
692
|
-
|
|
697
|
+
// order with trade in it
|
|
698
|
+
// {
|
|
699
|
+
// accBaseVolume: '0.1',
|
|
700
|
+
// baseVolume: '0.1',
|
|
701
|
+
// cTime: '1709221342922',
|
|
702
|
+
// clientOid: '1147122943507734528',
|
|
703
|
+
// enterPointSource: 'API',
|
|
704
|
+
// feeDetail: [Array],
|
|
705
|
+
// fillFee: '-0.0049578',
|
|
706
|
+
// fillFeeCoin: 'USDT',
|
|
707
|
+
// fillNotionalUsd: '8.263',
|
|
708
|
+
// fillPrice: '82.63',
|
|
709
|
+
// fillTime: '1709221342986',
|
|
710
|
+
// force: 'gtc',
|
|
711
|
+
// instId: 'LTCUSDT',
|
|
712
|
+
// leverage: '10',
|
|
713
|
+
// marginCoin: 'USDT',
|
|
714
|
+
// marginMode: 'crossed',
|
|
715
|
+
// notionalUsd: '8.268',
|
|
716
|
+
// orderId: '1147122943499345921',
|
|
717
|
+
// orderType: 'market',
|
|
718
|
+
// pnl: '0',
|
|
719
|
+
// posMode: 'hedge_mode',
|
|
720
|
+
// posSide: 'short',
|
|
721
|
+
// price: '0',
|
|
722
|
+
// priceAvg: '82.63',
|
|
723
|
+
// reduceOnly: 'no',
|
|
724
|
+
// side: 'sell',
|
|
725
|
+
// size: '0.1',
|
|
726
|
+
// status: 'filled',
|
|
727
|
+
// tradeId: '1147122943772479563',
|
|
728
|
+
// tradeScope: 'T',
|
|
729
|
+
// tradeSide: 'open',
|
|
730
|
+
// uTime: '1709221342986'
|
|
731
|
+
// }
|
|
732
|
+
//
|
|
733
|
+
const instId = this.safeString(trade, 'instId');
|
|
734
|
+
if (market === undefined) {
|
|
735
|
+
market = this.safeMarket(instId, undefined, undefined, 'contract');
|
|
736
|
+
}
|
|
737
|
+
const timestamp = this.safeIntegerN(trade, ['uTime', 'cTime', 'ts']);
|
|
738
|
+
const feeCost = this.safeString(trade, 'fillFee');
|
|
739
|
+
let fee = undefined;
|
|
740
|
+
if (feeCost !== undefined) {
|
|
741
|
+
const feeCurrencyId = this.safeString(trade, 'fillFeeCoin');
|
|
742
|
+
const feeCurrencyCode = this.safeCurrencyCode(feeCurrencyId);
|
|
743
|
+
fee = {
|
|
744
|
+
'cost': Precise.stringAbs(feeCost),
|
|
745
|
+
'currency': feeCurrencyCode,
|
|
746
|
+
};
|
|
747
|
+
}
|
|
693
748
|
return this.safeTrade({
|
|
694
749
|
'info': trade,
|
|
695
750
|
'id': this.safeString(trade, 'tradeId'),
|
|
696
|
-
'order':
|
|
751
|
+
'order': this.safeString(trade, 'orderId'),
|
|
697
752
|
'timestamp': timestamp,
|
|
698
753
|
'datetime': this.iso8601(timestamp),
|
|
699
754
|
'symbol': market['symbol'],
|
|
700
755
|
'type': undefined,
|
|
701
756
|
'side': this.safeString(trade, 'side'),
|
|
702
757
|
'takerOrMaker': undefined,
|
|
703
|
-
'price': this.
|
|
758
|
+
'price': this.safeString2(trade, 'priceAvg', 'price'),
|
|
704
759
|
'amount': this.safeString(trade, 'size'),
|
|
705
|
-
'cost':
|
|
706
|
-
'fee':
|
|
760
|
+
'cost': this.safeString(trade, 'fillNotionalUsd'),
|
|
761
|
+
'fee': fee,
|
|
707
762
|
}, market);
|
|
708
763
|
}
|
|
709
764
|
async watchPositions(symbols = undefined, since = undefined, limit = undefined, params = {}) {
|
|
@@ -1108,6 +1163,9 @@ export default class bitget extends bitgetRest {
|
|
|
1108
1163
|
const marketSymbols = {};
|
|
1109
1164
|
for (let i = 0; i < data.length; i++) {
|
|
1110
1165
|
const order = data[i];
|
|
1166
|
+
if ('tradeId' in order) {
|
|
1167
|
+
this.handleMyTrades(client, order);
|
|
1168
|
+
}
|
|
1111
1169
|
const marketId = this.safeString(order, 'instId');
|
|
1112
1170
|
const market = this.safeMarket(marketId, undefined, undefined, marketType);
|
|
1113
1171
|
const parsed = this.parseWsOrder(order, market);
|
|
@@ -1373,7 +1431,7 @@ export default class bitget extends bitgetRest {
|
|
|
1373
1431
|
this.myTrades = new ArrayCache(limit);
|
|
1374
1432
|
}
|
|
1375
1433
|
const stored = this.myTrades;
|
|
1376
|
-
const parsed = this.
|
|
1434
|
+
const parsed = this.parseWsTrade(message);
|
|
1377
1435
|
stored.append(parsed);
|
|
1378
1436
|
const symbol = parsed['symbol'];
|
|
1379
1437
|
const messageHash = 'myTrades';
|
|
@@ -1381,68 +1439,6 @@ export default class bitget extends bitgetRest {
|
|
|
1381
1439
|
const symbolSpecificMessageHash = 'myTrades:' + symbol;
|
|
1382
1440
|
client.resolve(stored, symbolSpecificMessageHash);
|
|
1383
1441
|
}
|
|
1384
|
-
parseWsMyTrade(trade, market = undefined) {
|
|
1385
|
-
//
|
|
1386
|
-
// order and trade mixin (contract)
|
|
1387
|
-
//
|
|
1388
|
-
// {
|
|
1389
|
-
// "accBaseVolume": "0",
|
|
1390
|
-
// "cTime": "1701920553759",
|
|
1391
|
-
// "clientOid": "1116501214318198793",
|
|
1392
|
-
// "enterPointSource": "WEB",
|
|
1393
|
-
// "feeDetail": [{
|
|
1394
|
-
// "feeCoin": "USDT",
|
|
1395
|
-
// "fee": "-0.162003"
|
|
1396
|
-
// }],
|
|
1397
|
-
// "force": "gtc",
|
|
1398
|
-
// "instId": "BTCUSDT",
|
|
1399
|
-
// "leverage": "20",
|
|
1400
|
-
// "marginCoin": "USDT",
|
|
1401
|
-
// "marginMode": "isolated",
|
|
1402
|
-
// "notionalUsd": "105",
|
|
1403
|
-
// "orderId": "1116501214293032964",
|
|
1404
|
-
// "orderType": "limit",
|
|
1405
|
-
// "posMode": "hedge_mode",
|
|
1406
|
-
// "posSide": "long",
|
|
1407
|
-
// "price": "35000",
|
|
1408
|
-
// "reduceOnly": "no",
|
|
1409
|
-
// "side": "buy",
|
|
1410
|
-
// "size": "0.003",
|
|
1411
|
-
// "status": "canceled",
|
|
1412
|
-
// "tradeSide": "open",
|
|
1413
|
-
// "uTime": "1701920595866"
|
|
1414
|
-
// }
|
|
1415
|
-
//
|
|
1416
|
-
const marketId = this.safeString(trade, 'instId');
|
|
1417
|
-
market = this.safeMarket(marketId, market, undefined, 'contract');
|
|
1418
|
-
const timestamp = this.safeInteger2(trade, 'uTime', 'cTime');
|
|
1419
|
-
const orderFee = this.safeValue(trade, 'feeDetail', []);
|
|
1420
|
-
const fee = this.safeValue(orderFee, 0);
|
|
1421
|
-
const feeAmount = this.safeString(fee, 'fee');
|
|
1422
|
-
let feeObject = undefined;
|
|
1423
|
-
if (feeAmount !== undefined) {
|
|
1424
|
-
const feeCurrency = this.safeString(fee, 'feeCoin');
|
|
1425
|
-
feeObject = {
|
|
1426
|
-
'cost': Precise.stringAbs(feeAmount),
|
|
1427
|
-
'currency': this.safeCurrencyCode(feeCurrency),
|
|
1428
|
-
};
|
|
1429
|
-
}
|
|
1430
|
-
return this.safeTrade({
|
|
1431
|
-
'info': trade,
|
|
1432
|
-
'id': undefined,
|
|
1433
|
-
'order': this.safeString(trade, 'orderId'),
|
|
1434
|
-
'timestamp': timestamp,
|
|
1435
|
-
'datetime': this.iso8601(timestamp),
|
|
1436
|
-
'symbol': market['symbol'],
|
|
1437
|
-
'type': this.safeString(trade, 'orderType'),
|
|
1438
|
-
'side': this.safeString(trade, 'side'),
|
|
1439
|
-
'takerOrMaker': undefined,
|
|
1440
|
-
'price': this.safeString(trade, 'price'),
|
|
1441
|
-
'amount': this.safeString(trade, 'size'),
|
|
1442
|
-
'cost': this.safeString(trade, 'notionalUsd'),
|
|
1443
|
-
'fee': feeObject,
|
|
1444
|
-
}, market);
|
|
1445
|
-
}
|
|
1446
1442
|
async watchBalance(params = {}) {
|
|
1447
1443
|
/**
|
|
1448
1444
|
* @method
|
package/js/src/pro/bybit.js
CHANGED
|
@@ -331,15 +331,29 @@ export default class bybit extends bybitRest {
|
|
|
331
331
|
// "price24hPcnt": "-0.0388"
|
|
332
332
|
// }
|
|
333
333
|
// }
|
|
334
|
+
// swap delta
|
|
335
|
+
// {
|
|
336
|
+
// "topic":"tickers.AAVEUSDT",
|
|
337
|
+
// "type":"delta",
|
|
338
|
+
// "data":{
|
|
339
|
+
// "symbol":"AAVEUSDT",
|
|
340
|
+
// "bid1Price":"112.89",
|
|
341
|
+
// "bid1Size":"2.12",
|
|
342
|
+
// "ask1Price":"112.90",
|
|
343
|
+
// "ask1Size":"5.02"
|
|
344
|
+
// },
|
|
345
|
+
// "cs":78039939929,
|
|
346
|
+
// "ts":1709210212704
|
|
347
|
+
// }
|
|
334
348
|
//
|
|
335
349
|
const topic = this.safeString(message, 'topic', '');
|
|
336
350
|
const updateType = this.safeString(message, 'type', '');
|
|
337
|
-
const data = this.
|
|
338
|
-
const isSpot = this.safeString(data, '
|
|
351
|
+
const data = this.safeDict(message, 'data', {});
|
|
352
|
+
const isSpot = this.safeString(data, 'usdIndexPrice') !== undefined;
|
|
339
353
|
const type = isSpot ? 'spot' : 'contract';
|
|
340
354
|
let symbol = undefined;
|
|
341
355
|
let parsed = undefined;
|
|
342
|
-
if ((updateType === 'snapshot')
|
|
356
|
+
if ((updateType === 'snapshot')) {
|
|
343
357
|
parsed = this.parseTicker(data);
|
|
344
358
|
symbol = parsed['symbol'];
|
|
345
359
|
}
|
|
@@ -350,8 +364,8 @@ export default class bybit extends bybitRest {
|
|
|
350
364
|
const market = this.safeMarket(marketId, undefined, undefined, type);
|
|
351
365
|
symbol = market['symbol'];
|
|
352
366
|
// update the info in place
|
|
353
|
-
const ticker = this.
|
|
354
|
-
const rawTicker = this.
|
|
367
|
+
const ticker = this.safeDict(this.tickers, symbol, {});
|
|
368
|
+
const rawTicker = this.safeDict(ticker, 'info', {});
|
|
355
369
|
const merged = this.extend(rawTicker, data);
|
|
356
370
|
parsed = this.parseTicker(merged);
|
|
357
371
|
}
|
|
@@ -93,7 +93,7 @@ export default class currencycom extends currencycomRest {
|
|
|
93
93
|
// "accountId": 5470310874305732,
|
|
94
94
|
// "collateralCurrency": true,
|
|
95
95
|
// "asset": "USD",
|
|
96
|
-
// "free": 47.
|
|
96
|
+
// "free": 47.82576736,
|
|
97
97
|
// "locked": 1.187925,
|
|
98
98
|
// "default": true
|
|
99
99
|
// },
|
|
@@ -463,6 +463,7 @@ export default class currencycom extends currencycomRest {
|
|
|
463
463
|
orderbook = this.orderBook();
|
|
464
464
|
}
|
|
465
465
|
orderbook.reset({
|
|
466
|
+
'symbol': symbol,
|
|
466
467
|
'timestamp': timestamp,
|
|
467
468
|
'datetime': this.iso8601(timestamp),
|
|
468
469
|
});
|
package/js/src/pro/kraken.js
CHANGED
|
@@ -358,7 +358,7 @@ export default class kraken extends krakenRest {
|
|
|
358
358
|
// [
|
|
359
359
|
// 0, // channelID
|
|
360
360
|
// [ // price volume time side type misc
|
|
361
|
-
// [ "5541.20000", "0.15850568", "1534614057.
|
|
361
|
+
// [ "5541.20000", "0.15850568", "1534614057.321596", "s", "l", "" ],
|
|
362
362
|
// [ "6060.00000", "0.02455000", "1534614057.324998", "b", "l", "" ],
|
|
363
363
|
// ],
|
|
364
364
|
// "trade",
|
|
@@ -15,7 +15,7 @@ export declare class BigInteger {
|
|
|
15
15
|
protected intValue(): number;
|
|
16
16
|
protected byteValue(): number;
|
|
17
17
|
protected shortValue(): number;
|
|
18
|
-
protected signum():
|
|
18
|
+
protected signum(): 1 | 0 | -1;
|
|
19
19
|
toByteArray(): number[];
|
|
20
20
|
protected equals(a: BigInteger): boolean;
|
|
21
21
|
protected min(a: BigInteger): BigInteger;
|
package/js/src/upbit.js
CHANGED
|
@@ -619,7 +619,7 @@ export default class upbit extends Exchange {
|
|
|
619
619
|
// "trade_time": "104543",
|
|
620
620
|
// "trade_date_kst": "20181122",
|
|
621
621
|
// "trade_time_kst": "194543",
|
|
622
|
-
// "trade_timestamp":
|
|
622
|
+
// "trade_timestamp": 1542883543096,
|
|
623
623
|
// "opening_price": 0.02976455,
|
|
624
624
|
// "high_price": 0.02992577,
|
|
625
625
|
// "low_price": 0.02934283,
|
package/js/src/woo.d.ts
CHANGED
|
@@ -157,6 +157,7 @@ export default class woo extends Exchange {
|
|
|
157
157
|
}>;
|
|
158
158
|
fetchFundingRates(symbols?: Strings, params?: {}): Promise<any>;
|
|
159
159
|
fetchFundingRateHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingRateHistory[]>;
|
|
160
|
+
setPositionMode(hedged: boolean, symbol?: Str, params?: {}): Promise<any>;
|
|
160
161
|
fetchLeverage(symbol: string, params?: {}): Promise<{
|
|
161
162
|
info: any;
|
|
162
163
|
leverage: number;
|
package/js/src/woo.js
CHANGED
|
@@ -100,6 +100,7 @@ export default class woo extends Exchange {
|
|
|
100
100
|
'reduceMargin': false,
|
|
101
101
|
'setLeverage': true,
|
|
102
102
|
'setMargin': false,
|
|
103
|
+
'setPositionMode': true,
|
|
103
104
|
'transfer': true,
|
|
104
105
|
'withdraw': true, // exchange have that endpoint disabled atm, but was once implemented in ccxt per old docs: https://kronosresearch.github.io/wootrade-documents/#token-withdraw
|
|
105
106
|
},
|
|
@@ -174,10 +175,16 @@ export default class woo extends Exchange {
|
|
|
174
175
|
'client/trade/{tid}': 1,
|
|
175
176
|
'order/{oid}/trades': 1,
|
|
176
177
|
'client/trades': 1,
|
|
178
|
+
'client/hist_trades': 1,
|
|
179
|
+
'staking/yield_history': 1,
|
|
180
|
+
'client/holding': 1,
|
|
177
181
|
'asset/deposit': 10,
|
|
178
182
|
'asset/history': 60,
|
|
179
183
|
'sub_account/all': 60,
|
|
180
184
|
'sub_account/assets': 60,
|
|
185
|
+
'sub_account/asset_detail': 60,
|
|
186
|
+
'sub_account/ip_restriction': 10,
|
|
187
|
+
'asset/main_sub_transfer_history': 30,
|
|
181
188
|
'token_interest': 60,
|
|
182
189
|
'token_interest/{token}': 60,
|
|
183
190
|
'interest/history': 60,
|
|
@@ -190,9 +197,12 @@ export default class woo extends Exchange {
|
|
|
190
197
|
'post': {
|
|
191
198
|
'order': 5,
|
|
192
199
|
'asset/main_sub_transfer': 30,
|
|
200
|
+
'asset/ltv': 30,
|
|
193
201
|
'asset/withdraw': 30,
|
|
202
|
+
'asset/internal_withdraw': 30,
|
|
194
203
|
'interest/repay': 60,
|
|
195
204
|
'client/account_mode': 120,
|
|
205
|
+
'client/position_mode': 5,
|
|
196
206
|
'client/leverage': 120,
|
|
197
207
|
},
|
|
198
208
|
'delete': {
|
|
@@ -2614,6 +2624,37 @@ export default class woo extends Exchange {
|
|
|
2614
2624
|
const sorted = this.sortBy(rates, 'timestamp');
|
|
2615
2625
|
return this.filterBySymbolSinceLimit(sorted, symbol, since, limit);
|
|
2616
2626
|
}
|
|
2627
|
+
async setPositionMode(hedged, symbol = undefined, params = {}) {
|
|
2628
|
+
/**
|
|
2629
|
+
* @method
|
|
2630
|
+
* @name woo#setPositionMode
|
|
2631
|
+
* @description set hedged to true or false for a market
|
|
2632
|
+
* @see https://docs.woo.org/#update-position-mode
|
|
2633
|
+
* @param {bool} hedged set to true to use HEDGE_MODE, false for ONE_WAY
|
|
2634
|
+
* @param {string} symbol not used by woo setPositionMode
|
|
2635
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2636
|
+
* @returns {object} response from the exchange
|
|
2637
|
+
*/
|
|
2638
|
+
let hedgeMode = undefined;
|
|
2639
|
+
if (hedged) {
|
|
2640
|
+
hedgeMode = 'HEDGE_MODE';
|
|
2641
|
+
}
|
|
2642
|
+
else {
|
|
2643
|
+
hedgeMode = 'ONE_WAY';
|
|
2644
|
+
}
|
|
2645
|
+
const request = {
|
|
2646
|
+
'position_mode': hedgeMode,
|
|
2647
|
+
};
|
|
2648
|
+
const response = await this.v1PrivatePostClientPositionMode(this.extend(request, params));
|
|
2649
|
+
//
|
|
2650
|
+
// {
|
|
2651
|
+
// "success": true,
|
|
2652
|
+
// "data": {},
|
|
2653
|
+
// "timestamp": "1709195608551"
|
|
2654
|
+
// }
|
|
2655
|
+
//
|
|
2656
|
+
return response;
|
|
2657
|
+
}
|
|
2617
2658
|
async fetchLeverage(symbol, params = {}) {
|
|
2618
2659
|
await this.loadMarkets();
|
|
2619
2660
|
const response = await this.v3PrivateGetAccountinfo(params);
|
package/package.json
CHANGED
package/skip-tests.json
CHANGED
|
@@ -250,7 +250,6 @@
|
|
|
250
250
|
}
|
|
251
251
|
},
|
|
252
252
|
"bitget": {
|
|
253
|
-
"skipWs": true,
|
|
254
253
|
"skipMethods": {
|
|
255
254
|
"loadMarkets": {
|
|
256
255
|
"precision": "broken precision",
|
|
@@ -437,9 +436,6 @@
|
|
|
437
436
|
"fetchOHLCV": "randomly failing with 404 not found"
|
|
438
437
|
}
|
|
439
438
|
},
|
|
440
|
-
"bitforex": {
|
|
441
|
-
"skipWs": true
|
|
442
|
-
},
|
|
443
439
|
"bitstamp": {
|
|
444
440
|
"skipMethods": {
|
|
445
441
|
"fetchOrderBook": "bid/ask might be 0",
|
|
@@ -461,23 +457,6 @@
|
|
|
461
457
|
"watchOrderBook": "something broken https://app.travis-ci.com/github/ccxt/ccxt/builds/267900037#L4473 and https://app.travis-ci.com/github/ccxt/ccxt/builds/267900037#L4504"
|
|
462
458
|
}
|
|
463
459
|
},
|
|
464
|
-
"bitstamp1": {
|
|
465
|
-
"skipMethods": {
|
|
466
|
-
"loadMarkets": {
|
|
467
|
-
"info": "null",
|
|
468
|
-
"precision":"not provided",
|
|
469
|
-
"active": "not provided"
|
|
470
|
-
},
|
|
471
|
-
"fetchOrderBook": "bid/ask might be 0",
|
|
472
|
-
"fetchL2OrderBook": "same",
|
|
473
|
-
"fetchTicker": {
|
|
474
|
-
"bid": "greater than ask https://app.travis-ci.com/github/ccxt/ccxt/builds/264241638#L3027"
|
|
475
|
-
},
|
|
476
|
-
"fetchTickers": {
|
|
477
|
-
"bid": "same"
|
|
478
|
-
}
|
|
479
|
-
}
|
|
480
|
-
},
|
|
481
460
|
"bl3p": {
|
|
482
461
|
"skipMethods": {
|
|
483
462
|
"loadMarkets": {
|
|
@@ -521,24 +500,6 @@
|
|
|
521
500
|
}
|
|
522
501
|
}
|
|
523
502
|
},
|
|
524
|
-
"bkex": {
|
|
525
|
-
"skipMethods": {
|
|
526
|
-
"fetchOrderBook": "system busy",
|
|
527
|
-
"loadMarkets": {
|
|
528
|
-
"currencyIdAndCode": "broken currencies",
|
|
529
|
-
"contractSize": "broken for some markets"
|
|
530
|
-
},
|
|
531
|
-
"fetchCurrencies": {
|
|
532
|
-
"precision": "not provided",
|
|
533
|
-
"networks": "missing"
|
|
534
|
-
},
|
|
535
|
-
"fetchTickers": {
|
|
536
|
-
"quoteVolume": "quoteVolume >= baseVolume * low is failing",
|
|
537
|
-
"baseVolume": "quoteVolume >= baseVolume * low is failing"
|
|
538
|
-
},
|
|
539
|
-
"fetchOHLCV": "open might be greater than high"
|
|
540
|
-
}
|
|
541
|
-
},
|
|
542
503
|
"btcbox": {
|
|
543
504
|
"skipMethods": {
|
|
544
505
|
"loadMarkets": {
|
|
@@ -558,28 +519,8 @@
|
|
|
558
519
|
}
|
|
559
520
|
}
|
|
560
521
|
},
|
|
561
|
-
"btcex": {
|
|
562
|
-
"skipMethods": {
|
|
563
|
-
"loadMarkets": {
|
|
564
|
-
"active": "is undefined",
|
|
565
|
-
"limits": "sometimes 'max' value is zero, lower than 'min'"
|
|
566
|
-
},
|
|
567
|
-
"fetchCurrencies": {
|
|
568
|
-
"withdraw": "not provided",
|
|
569
|
-
"deposit": "not provided"
|
|
570
|
-
},
|
|
571
|
-
"fetchTickers": {
|
|
572
|
-
"bid": "messed bid-ask : https://app.travis-ci.com/github/ccxt/ccxt/builds/263319874#L2090",
|
|
573
|
-
"ask": "same as above"
|
|
574
|
-
},
|
|
575
|
-
"fetchTicker": {
|
|
576
|
-
"bid": "same as above",
|
|
577
|
-
"ask": "same as above"
|
|
578
|
-
}
|
|
579
|
-
}
|
|
580
|
-
},
|
|
581
522
|
"btcalpha": {
|
|
582
|
-
|
|
523
|
+
"skip": true,
|
|
583
524
|
"skipMethods": {
|
|
584
525
|
"fetchOrderBook": "bids[0][0] is not < asks[0][0]",
|
|
585
526
|
"fetchL2OrderBook": "same",
|
|
@@ -606,19 +547,6 @@
|
|
|
606
547
|
"fetchL2OrderBook": "same"
|
|
607
548
|
}
|
|
608
549
|
},
|
|
609
|
-
"btctradeua": {
|
|
610
|
-
"skipMethods": {
|
|
611
|
-
"loadMarkets": {
|
|
612
|
-
"precision":"is undefined",
|
|
613
|
-
"active":"is undefined",
|
|
614
|
-
"taker":"is undefined",
|
|
615
|
-
"maker":"is undefined",
|
|
616
|
-
"info":"null"
|
|
617
|
-
},
|
|
618
|
-
"fetchOrderBook": "bid should be greater than next bid",
|
|
619
|
-
"fetchL2OrderBook": "same"
|
|
620
|
-
}
|
|
621
|
-
},
|
|
622
550
|
"btcturk": {
|
|
623
551
|
"skipMethods": {
|
|
624
552
|
"fetchOrderBook": "https://app.travis-ci.com/github/ccxt/ccxt/builds/263287870#L2201"
|
|
@@ -653,9 +581,6 @@
|
|
|
653
581
|
"fetchBorrowRate": "does not work with unified account"
|
|
654
582
|
}
|
|
655
583
|
},
|
|
656
|
-
"buda": {
|
|
657
|
-
"httpsProxy": "http://5.75.153.75:8002"
|
|
658
|
-
},
|
|
659
584
|
"bigone": {
|
|
660
585
|
"skipMethods": {
|
|
661
586
|
"fetchCurrencies": {
|
|
@@ -706,15 +631,6 @@
|
|
|
706
631
|
}
|
|
707
632
|
}
|
|
708
633
|
},
|
|
709
|
-
"coinbaseprime": {
|
|
710
|
-
"skipMethods": {
|
|
711
|
-
"fetchStatus": "request timeout",
|
|
712
|
-
"fetchCurrencies": {
|
|
713
|
-
"withdraw": "not provided",
|
|
714
|
-
"deposit": "not provided"
|
|
715
|
-
}
|
|
716
|
-
}
|
|
717
|
-
},
|
|
718
634
|
"coinmetro": {
|
|
719
635
|
"skipMethods": {
|
|
720
636
|
"fetchTrades": {
|
|
@@ -846,7 +762,6 @@
|
|
|
846
762
|
}
|
|
847
763
|
},
|
|
848
764
|
"currencycom": {
|
|
849
|
-
"skipWs": "timeouts",
|
|
850
765
|
"skipMethods": {
|
|
851
766
|
"loadMarkets": {
|
|
852
767
|
"type": "unexpected market type",
|
|
@@ -914,12 +829,6 @@
|
|
|
914
829
|
}
|
|
915
830
|
}
|
|
916
831
|
},
|
|
917
|
-
"flowbtc": {
|
|
918
|
-
"skipMethods": {
|
|
919
|
-
"fetchTrades": "timestamp is more than current utc timestamp",
|
|
920
|
-
"fetchOHLCV": "same"
|
|
921
|
-
}
|
|
922
|
-
},
|
|
923
832
|
"fmfwio": {
|
|
924
833
|
"skipMethods": {
|
|
925
834
|
"fetchCurrencies": {
|
|
@@ -964,21 +873,6 @@
|
|
|
964
873
|
}
|
|
965
874
|
}
|
|
966
875
|
},
|
|
967
|
-
"hitbtc3": {
|
|
968
|
-
"skipMethods": {
|
|
969
|
-
"loadMarkets": {
|
|
970
|
-
"limits": "messed min max",
|
|
971
|
-
"currencyIdAndCode": "messed codes"
|
|
972
|
-
},
|
|
973
|
-
"fetchCurrencies": {
|
|
974
|
-
"fee": "not provided"
|
|
975
|
-
},
|
|
976
|
-
"fetchTickers": {
|
|
977
|
-
"bid":"messed bid-ask",
|
|
978
|
-
"ask":"messed bid-ask"
|
|
979
|
-
}
|
|
980
|
-
}
|
|
981
|
-
},
|
|
982
876
|
"digifinex": {
|
|
983
877
|
"skipMethods": {
|
|
984
878
|
"loadMarkets": {
|
|
@@ -1116,26 +1010,6 @@
|
|
|
1116
1010
|
}
|
|
1117
1011
|
}
|
|
1118
1012
|
},
|
|
1119
|
-
"stex": {
|
|
1120
|
-
"skipMethods": {
|
|
1121
|
-
"fetchCurrencies":{
|
|
1122
|
-
"withdraw":"not provided",
|
|
1123
|
-
"deposit":"not provided"
|
|
1124
|
-
},
|
|
1125
|
-
"fetchTickers": {
|
|
1126
|
-
"quoteVolume": "quoteVolume >= baseVolume * low is failing",
|
|
1127
|
-
"baseVolume": "quoteVolume >= baseVolume * low is failing",
|
|
1128
|
-
"bid":"messed bid-ask",
|
|
1129
|
-
"ask":"messed bid-ask"
|
|
1130
|
-
},
|
|
1131
|
-
"fetchTicker": {
|
|
1132
|
-
"quoteVolume": "quoteVolume >= baseVolume * low is failing",
|
|
1133
|
-
"baseVolume": "quoteVolume >= baseVolume * low is failing",
|
|
1134
|
-
"bid":"messed bid-ask",
|
|
1135
|
-
"ask":"messed bid-ask"
|
|
1136
|
-
}
|
|
1137
|
-
}
|
|
1138
|
-
},
|
|
1139
1013
|
"probit": {
|
|
1140
1014
|
"skipWs": "timeouts",
|
|
1141
1015
|
"skipMethods": {
|
|
@@ -1188,11 +1062,6 @@
|
|
|
1188
1062
|
"fetchL2OrderBook": "same"
|
|
1189
1063
|
}
|
|
1190
1064
|
},
|
|
1191
|
-
"coinfalcon": {
|
|
1192
|
-
"skipMethods": {
|
|
1193
|
-
"fetchTickers": "negative values"
|
|
1194
|
-
}
|
|
1195
|
-
},
|
|
1196
1065
|
"kuna": {
|
|
1197
1066
|
"skip": "temporary glitches with this exchange: https://app.travis-ci.com/github/ccxt/ccxt/builds/267517440#L2304",
|
|
1198
1067
|
"httpsProxy": "http://5.75.153.75:8002",
|
|
@@ -1514,11 +1383,7 @@
|
|
|
1514
1383
|
}
|
|
1515
1384
|
}
|
|
1516
1385
|
},
|
|
1517
|
-
"tidex": {
|
|
1518
|
-
"skip": "exchange unavailable, probably api upgrade needed"
|
|
1519
|
-
},
|
|
1520
1386
|
"kraken": {
|
|
1521
|
-
"skipWs": "timeouts",
|
|
1522
1387
|
"skipMethods": {
|
|
1523
1388
|
"loadMarkets": {
|
|
1524
1389
|
"currencyIdAndCode": "https://app.travis-ci.com/github/ccxt/ccxt/builds/267515280#L2314"
|
|
@@ -1549,7 +1414,6 @@
|
|
|
1549
1414
|
"timeout": 120000
|
|
1550
1415
|
},
|
|
1551
1416
|
"upbit": {
|
|
1552
|
-
"skipWs":"timeouts",
|
|
1553
1417
|
"skipMethods": {
|
|
1554
1418
|
"fetchTickers": {
|
|
1555
1419
|
"quoteVolume": "quoteVolume >= baseVolume * low is failing",
|
|
@@ -1561,9 +1425,6 @@
|
|
|
1561
1425
|
}
|
|
1562
1426
|
}
|
|
1563
1427
|
},
|
|
1564
|
-
"ripio": {
|
|
1565
|
-
"httpsProxy": "http://5.75.153.75:8002"
|
|
1566
|
-
},
|
|
1567
1428
|
"timex": {
|
|
1568
1429
|
"skipMethods": {
|
|
1569
1430
|
"loadMarkets": {
|
|
@@ -1629,22 +1490,6 @@
|
|
|
1629
1490
|
}
|
|
1630
1491
|
}
|
|
1631
1492
|
},
|
|
1632
|
-
"xt": {
|
|
1633
|
-
"skipMethods": {
|
|
1634
|
-
"loadMarkets": "expiry and expiryDatetime are defined for non future/options markets",
|
|
1635
|
-
"fetchCurrencies": {
|
|
1636
|
-
"precision":"is undefined",
|
|
1637
|
-
"withdraw": "undefined",
|
|
1638
|
-
"deposit": "undefined",
|
|
1639
|
-
"fee": "undefined"
|
|
1640
|
-
},
|
|
1641
|
-
"fetchTickers": "some outaded contracts, eg RICHARLISONGBALL2022/USDT:USDT-221219 return bid > ask",
|
|
1642
|
-
"fetchTicker": "same",
|
|
1643
|
-
"fetchTrades": {
|
|
1644
|
-
"side": "messed"
|
|
1645
|
-
}
|
|
1646
|
-
}
|
|
1647
|
-
},
|
|
1648
1493
|
"yobit": {
|
|
1649
1494
|
"skipMethods": {
|
|
1650
1495
|
"loadMarkets":{
|