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.
@@ -92,7 +92,10 @@ export default class bitget extends bitgetRest {
92
92
  }
93
93
  getInstType(market, params = {}) {
94
94
  let instType = undefined;
95
- if ((market['swap']) || (market['future'])) {
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.safeValue(message, 'data', []);
673
- for (let j = 0; j < data.length; j++) {
674
- const rawTrade = data[j];
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
- market = this.safeMarket(undefined, market);
692
- const timestamp = this.safeInteger(trade, 'ts');
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': undefined,
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.safeString(trade, 'price'),
758
+ 'price': this.safeString2(trade, 'priceAvg', 'price'),
704
759
  'amount': this.safeString(trade, 'size'),
705
- 'cost': undefined,
706
- 'fee': undefined,
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.parseWsMyTrade(message);
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
@@ -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.safeValue(message, 'data', {});
338
- const isSpot = this.safeString(data, 'fundingRate') === undefined;
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') || isSpot) {
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.safeValue(this.tickers, symbol, {});
354
- const rawTicker = this.safeValue(ticker, 'info', {});
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.82576735,
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
  });
@@ -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.321597", "s", "l", "" ],
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(): 0 | 1 | -1;
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": 1542883543097,
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccxt",
3
- "version": "4.2.55",
3
+ "version": "4.2.56",
4
4
  "description": "A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges",
5
5
  "unpkg": "dist/ccxt.browser.js",
6
6
  "type": "module",
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
- "skip": true,
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":{