ccxt 3.1.14__py2.py3-none-any.whl → 3.1.15__py2.py3-none-any.whl

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.
Files changed (63) hide show
  1. ccxt/__init__.py +1 -1
  2. ccxt/async_support/__init__.py +1 -1
  3. ccxt/async_support/base/exchange.py +15 -11
  4. ccxt/async_support/huobi.py +4 -1
  5. ccxt/async_support/okx.py +1 -0
  6. ccxt/async_support/poloniex.py +1 -1
  7. ccxt/base/exchange.py +15 -11
  8. ccxt/huobi.py +4 -1
  9. ccxt/okx.py +1 -0
  10. ccxt/poloniex.py +1 -1
  11. ccxt/pro/__init__.py +3 -1
  12. ccxt/pro/alpaca.py +3 -3
  13. ccxt/pro/ascendex.py +2 -2
  14. ccxt/pro/binance.py +3 -3
  15. ccxt/pro/bitfinex.py +1 -1
  16. ccxt/pro/bitfinex2.py +3 -3
  17. ccxt/pro/bitget.py +3 -3
  18. ccxt/pro/bitmart.py +2 -2
  19. ccxt/pro/bitmex.py +3 -3
  20. ccxt/pro/bitopro.py +1 -1
  21. ccxt/pro/bitpanda.py +1 -1
  22. ccxt/pro/bitstamp.py +2 -2
  23. ccxt/pro/bittrex.py +3 -3
  24. ccxt/pro/bitvavo.py +3 -3
  25. ccxt/pro/blockchaincom.py +2 -2
  26. ccxt/pro/btcex.py +3 -3
  27. ccxt/pro/bybit.py +3 -3
  28. ccxt/pro/cex.py +2 -2
  29. ccxt/pro/coinbasepro.py +3 -3
  30. ccxt/pro/coinex.py +1 -1
  31. ccxt/pro/cryptocom.py +3 -3
  32. ccxt/pro/currencycom.py +2 -2
  33. ccxt/pro/deribit.py +3 -3
  34. ccxt/pro/exmo.py +2 -2
  35. ccxt/pro/gate.py +4 -4
  36. ccxt/pro/gemini.py +2 -2
  37. ccxt/pro/hitbtc.py +2 -2
  38. ccxt/pro/hollaex.py +2 -2
  39. ccxt/pro/huobi.py +4 -4
  40. ccxt/pro/huobijp.py +2 -2
  41. ccxt/pro/idex.py +3 -3
  42. ccxt/pro/independentreserve.py +1 -1
  43. ccxt/pro/kraken.py +2 -2
  44. ccxt/pro/krakenfutures.py +4 -4
  45. ccxt/pro/kucoin.py +3 -3
  46. ccxt/pro/kucoinfutures.py +1 -1
  47. ccxt/pro/luno.py +1 -1
  48. ccxt/pro/mexc.py +3 -3
  49. ccxt/pro/ndax.py +2 -2
  50. ccxt/pro/okcoin.py +3 -3
  51. ccxt/pro/okx.py +2 -2
  52. ccxt/pro/phemex.py +3 -3
  53. ccxt/pro/poloniex.py +973 -0
  54. ccxt/pro/poloniexfutures.py +1 -1
  55. ccxt/pro/probit.py +2 -2
  56. ccxt/pro/upbit.py +1 -1
  57. ccxt/pro/wazirx.py +3 -3
  58. ccxt/pro/whitebit.py +4 -4
  59. ccxt/pro/woo.py +2 -2
  60. {ccxt-3.1.14.dist-info → ccxt-3.1.15.dist-info}/METADATA +5 -5
  61. {ccxt-3.1.14.dist-info → ccxt-3.1.15.dist-info}/RECORD +63 -62
  62. {ccxt-3.1.14.dist-info → ccxt-3.1.15.dist-info}/WHEEL +0 -0
  63. {ccxt-3.1.14.dist-info → ccxt-3.1.15.dist-info}/top_level.txt +0 -0
ccxt/__init__.py CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '3.1.14'
25
+ __version__ = '3.1.15'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '3.1.14'
7
+ __version__ = '3.1.15'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '3.1.14'
5
+ __version__ = '3.1.15'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -504,22 +504,25 @@ class Exchange(BaseExchange):
504
504
  array = self.arraySlice(array, -limit) if ascending else self.arraySlice(array, 0, limit)
505
505
  return array
506
506
 
507
- def filter_by_since_limit(self, array: List[object], since: Optional[int] = None, limit: Optional[int] = None, key: IndexType = 'timestamp'):
507
+ def filter_by_since_limit(self, array: List[object], since: Optional[int] = None, limit: Optional[int] = None, key: IndexType = 'timestamp', tail=False):
508
508
  sinceIsDefined = self.valueIsDefined(since)
509
509
  parsedArray = self.to_array(array)
510
+ result = parsedArray
510
511
  if sinceIsDefined:
511
512
  result = []
512
513
  for i in range(0, len(parsedArray)):
513
514
  entry = parsedArray[i]
514
515
  if entry[key] >= since:
515
516
  result.append(entry)
516
- return self.filter_by_limit(result, limit, key)
517
- return self.filter_by_limit(parsedArray, limit, key)
517
+ if tail:
518
+ return result[-limit:]
519
+ return self.filter_by_limit(result, limit, key)
518
520
 
519
- def filter_by_value_since_limit(self, array: List[object], field: IndexType, value=None, since: Optional[int] = None, limit: Optional[int] = None, key='timestamp'):
521
+ def filter_by_value_since_limit(self, array: List[object], field: IndexType, value=None, since: Optional[int] = None, limit: Optional[int] = None, key='timestamp', tail=False):
520
522
  valueIsDefined = self.valueIsDefined(value)
521
523
  sinceIsDefined = self.valueIsDefined(since)
522
524
  parsedArray = self.to_array(array)
525
+ result = parsedArray
523
526
  # single-pass filter for both symbol and since
524
527
  if valueIsDefined or sinceIsDefined:
525
528
  result = []
@@ -531,8 +534,9 @@ class Exchange(BaseExchange):
531
534
  secondCondition = entryKeyGESince if sinceIsDefined else True
532
535
  if firstCondition and secondCondition:
533
536
  result.append(entry)
534
- return self.filter_by_limit(result, limit, key)
535
- return self.filter_by_limit(parsedArray, limit, key)
537
+ if tail:
538
+ return result[-limit:]
539
+ return self.filter_by_limit(result, limit, key)
536
540
 
537
541
  def sign(self, path, api: Any = 'public', method='GET', params={}, headers: Optional[Any] = None, body: Optional[Any] = None):
538
542
  return {}
@@ -2283,11 +2287,11 @@ class Exchange(BaseExchange):
2283
2287
  currency = self.safe_currency(currencyId, currency)
2284
2288
  return currency['code']
2285
2289
 
2286
- def filter_by_symbol_since_limit(self, array, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None):
2287
- return self.filter_by_value_since_limit(array, 'symbol', symbol, since, limit, 'timestamp')
2290
+ def filter_by_symbol_since_limit(self, array, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, tail=False):
2291
+ return self.filter_by_value_since_limit(array, 'symbol', symbol, since, limit, 'timestamp', tail)
2288
2292
 
2289
- def filter_by_currency_since_limit(self, array, code=None, since: Optional[int] = None, limit: Optional[int] = None):
2290
- return self.filter_by_value_since_limit(array, 'currency', code, since, limit, 'timestamp')
2293
+ def filter_by_currency_since_limit(self, array, code=None, since: Optional[int] = None, limit: Optional[int] = None, tail=False):
2294
+ return self.filter_by_value_since_limit(array, 'currency', code, since, limit, 'timestamp', tail)
2291
2295
 
2292
2296
  def parse_last_prices(self, pricesData, symbols: Optional[List[str]] = None, params={}):
2293
2297
  #
@@ -5136,10 +5136,13 @@ class huobi(Exchange, ImplicitAPI):
5136
5136
  if feeCost is not None:
5137
5137
  feeCost = Precise.string_abs(feeCost)
5138
5138
  networkId = self.safe_string(transaction, 'chain')
5139
+ txHash = self.safe_string(transaction, 'tx-hash')
5140
+ if networkId == 'ETH' and txHash.find('0x') < 0:
5141
+ txHash = '0x' + txHash
5139
5142
  return {
5140
5143
  'info': transaction,
5141
5144
  'id': self.safe_string_2(transaction, 'id', 'data'),
5142
- 'txid': self.safe_string(transaction, 'tx-hash'),
5145
+ 'txid': txHash,
5143
5146
  'timestamp': timestamp,
5144
5147
  'datetime': self.iso8601(timestamp),
5145
5148
  'network': self.network_id_to_code(networkId, code),
ccxt/async_support/okx.py CHANGED
@@ -2649,6 +2649,7 @@ class okx(Exchange, ImplicitAPI):
2649
2649
  timeInForce = 'IOC'
2650
2650
  type = 'limit'
2651
2651
  marketId = self.safe_string(order, 'instId')
2652
+ market = self.safe_market(marketId, market)
2652
2653
  symbol = self.safe_symbol(marketId, market, '-')
2653
2654
  filled = self.safe_string(order, 'accFillSz')
2654
2655
  price = self.safe_string_2(order, 'px', 'ordPx')
@@ -38,7 +38,7 @@ class poloniex(Exchange, ImplicitAPI):
38
38
  # 200 requests per second for some unauthenticated market endpoints => 1000ms / 200 = 5ms between requests
39
39
  'rateLimit': 5,
40
40
  'certified': False,
41
- 'pro': False,
41
+ 'pro': True,
42
42
  'has': {
43
43
  'CORS': None,
44
44
  'spot': True,
ccxt/base/exchange.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '3.1.14'
7
+ __version__ = '3.1.15'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -1692,22 +1692,25 @@ class Exchange(object):
1692
1692
  array = self.arraySlice(array, -limit) if ascending else self.arraySlice(array, 0, limit)
1693
1693
  return array
1694
1694
 
1695
- def filter_by_since_limit(self, array: List[object], since: Optional[int] = None, limit: Optional[int] = None, key: IndexType = 'timestamp'):
1695
+ def filter_by_since_limit(self, array: List[object], since: Optional[int] = None, limit: Optional[int] = None, key: IndexType = 'timestamp', tail=False):
1696
1696
  sinceIsDefined = self.valueIsDefined(since)
1697
1697
  parsedArray = self.to_array(array)
1698
+ result = parsedArray
1698
1699
  if sinceIsDefined:
1699
1700
  result = []
1700
1701
  for i in range(0, len(parsedArray)):
1701
1702
  entry = parsedArray[i]
1702
1703
  if entry[key] >= since:
1703
1704
  result.append(entry)
1704
- return self.filter_by_limit(result, limit, key)
1705
- return self.filter_by_limit(parsedArray, limit, key)
1705
+ if tail:
1706
+ return result[-limit:]
1707
+ return self.filter_by_limit(result, limit, key)
1706
1708
 
1707
- def filter_by_value_since_limit(self, array: List[object], field: IndexType, value=None, since: Optional[int] = None, limit: Optional[int] = None, key='timestamp'):
1709
+ def filter_by_value_since_limit(self, array: List[object], field: IndexType, value=None, since: Optional[int] = None, limit: Optional[int] = None, key='timestamp', tail=False):
1708
1710
  valueIsDefined = self.valueIsDefined(value)
1709
1711
  sinceIsDefined = self.valueIsDefined(since)
1710
1712
  parsedArray = self.to_array(array)
1713
+ result = parsedArray
1711
1714
  # single-pass filter for both symbol and since
1712
1715
  if valueIsDefined or sinceIsDefined:
1713
1716
  result = []
@@ -1719,8 +1722,9 @@ class Exchange(object):
1719
1722
  secondCondition = entryKeyGESince if sinceIsDefined else True
1720
1723
  if firstCondition and secondCondition:
1721
1724
  result.append(entry)
1722
- return self.filter_by_limit(result, limit, key)
1723
- return self.filter_by_limit(parsedArray, limit, key)
1725
+ if tail:
1726
+ return result[-limit:]
1727
+ return self.filter_by_limit(result, limit, key)
1724
1728
 
1725
1729
  def sign(self, path, api: Any = 'public', method='GET', params={}, headers: Optional[Any] = None, body: Optional[Any] = None):
1726
1730
  return {}
@@ -3471,11 +3475,11 @@ class Exchange(object):
3471
3475
  currency = self.safe_currency(currencyId, currency)
3472
3476
  return currency['code']
3473
3477
 
3474
- def filter_by_symbol_since_limit(self, array, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None):
3475
- return self.filter_by_value_since_limit(array, 'symbol', symbol, since, limit, 'timestamp')
3478
+ def filter_by_symbol_since_limit(self, array, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, tail=False):
3479
+ return self.filter_by_value_since_limit(array, 'symbol', symbol, since, limit, 'timestamp', tail)
3476
3480
 
3477
- def filter_by_currency_since_limit(self, array, code=None, since: Optional[int] = None, limit: Optional[int] = None):
3478
- return self.filter_by_value_since_limit(array, 'currency', code, since, limit, 'timestamp')
3481
+ def filter_by_currency_since_limit(self, array, code=None, since: Optional[int] = None, limit: Optional[int] = None, tail=False):
3482
+ return self.filter_by_value_since_limit(array, 'currency', code, since, limit, 'timestamp', tail)
3479
3483
 
3480
3484
  def parse_last_prices(self, pricesData, symbols: Optional[List[str]] = None, params={}):
3481
3485
  #
ccxt/huobi.py CHANGED
@@ -5135,10 +5135,13 @@ class huobi(Exchange, ImplicitAPI):
5135
5135
  if feeCost is not None:
5136
5136
  feeCost = Precise.string_abs(feeCost)
5137
5137
  networkId = self.safe_string(transaction, 'chain')
5138
+ txHash = self.safe_string(transaction, 'tx-hash')
5139
+ if networkId == 'ETH' and txHash.find('0x') < 0:
5140
+ txHash = '0x' + txHash
5138
5141
  return {
5139
5142
  'info': transaction,
5140
5143
  'id': self.safe_string_2(transaction, 'id', 'data'),
5141
- 'txid': self.safe_string(transaction, 'tx-hash'),
5144
+ 'txid': txHash,
5142
5145
  'timestamp': timestamp,
5143
5146
  'datetime': self.iso8601(timestamp),
5144
5147
  'network': self.network_id_to_code(networkId, code),
ccxt/okx.py CHANGED
@@ -2648,6 +2648,7 @@ class okx(Exchange, ImplicitAPI):
2648
2648
  timeInForce = 'IOC'
2649
2649
  type = 'limit'
2650
2650
  marketId = self.safe_string(order, 'instId')
2651
+ market = self.safe_market(marketId, market)
2651
2652
  symbol = self.safe_symbol(marketId, market, '-')
2652
2653
  filled = self.safe_string(order, 'accFillSz')
2653
2654
  price = self.safe_string_2(order, 'px', 'ordPx')
ccxt/poloniex.py CHANGED
@@ -38,7 +38,7 @@ class poloniex(Exchange, ImplicitAPI):
38
38
  # 200 requests per second for some unauthenticated market endpoints => 1000ms / 200 = 5ms between requests
39
39
  'rateLimit': 5,
40
40
  'certified': False,
41
- 'pro': False,
41
+ 'pro': True,
42
42
  'has': {
43
43
  'CORS': None,
44
44
  'spot': True,
ccxt/pro/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '3.1.14'
7
+ __version__ = '3.1.15'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
@@ -64,6 +64,7 @@ from ccxt.pro.okcoin import okcoin # noqa
64
64
  from ccxt.pro.okex import okex # noqa: F401
65
65
  from ccxt.pro.okx import okx # noqa: F401
66
66
  from ccxt.pro.phemex import phemex # noqa: F401
67
+ from ccxt.pro.poloniex import poloniex # noqa: F401
67
68
  from ccxt.pro.poloniexfutures import poloniexfutures # noqa: F401
68
69
  from ccxt.pro.probit import probit # noqa: F401
69
70
  from ccxt.pro.upbit import upbit # noqa: F401
@@ -124,6 +125,7 @@ exchanges = [
124
125
  'okex',
125
126
  'okx',
126
127
  'phemex',
128
+ 'poloniex',
127
129
  'poloniexfutures',
128
130
  'probit',
129
131
  'upbit',
ccxt/pro/alpaca.py CHANGED
@@ -148,7 +148,7 @@ class alpaca(ccxt.async_support.alpaca):
148
148
  ohlcv = await self.watch(url, messageHash, self.extend(request, params), messageHash)
149
149
  if self.newUpdates:
150
150
  limit = ohlcv.getLimit(symbol, limit)
151
- return self.filter_by_since_limit(ohlcv, since, limit, 0)
151
+ return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
152
152
 
153
153
  def handle_ohlcv(self, client: Client, message):
154
154
  #
@@ -272,7 +272,7 @@ class alpaca(ccxt.async_support.alpaca):
272
272
  trades = await self.watch(url, messageHash, self.extend(request, params), messageHash)
273
273
  if self.newUpdates:
274
274
  limit = trades.getLimit(symbol, limit)
275
- return self.filter_by_since_limit(trades, since, limit, 'timestamp')
275
+ return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
276
276
 
277
277
  def handle_trades(self, client: Client, message):
278
278
  #
@@ -324,7 +324,7 @@ class alpaca(ccxt.async_support.alpaca):
324
324
  trades = await self.watch(url, messageHash, self.extend(request, params), messageHash)
325
325
  if self.newUpdates:
326
326
  limit = trades.getLimit(symbol, limit)
327
- return self.filter_by_since_limit(trades, since, limit, 'timestamp')
327
+ return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
328
328
 
329
329
  async def watch_orders(self, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
330
330
  """
ccxt/pro/ascendex.py CHANGED
@@ -99,7 +99,7 @@ class ascendex(ccxt.async_support.ascendex):
99
99
  ohlcv = await self.watch_public(channel, params)
100
100
  if self.newUpdates:
101
101
  limit = ohlcv.getLimit(symbol, limit)
102
- return self.filter_by_since_limit(ohlcv, since, limit, 0)
102
+ return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
103
103
 
104
104
  def handle_ohlcv(self, client: Client, message):
105
105
  #
@@ -155,7 +155,7 @@ class ascendex(ccxt.async_support.ascendex):
155
155
  trades = await self.watch_public(channel, params)
156
156
  if self.newUpdates:
157
157
  limit = trades.getLimit(symbol, limit)
158
- return self.filter_by_since_limit(trades, since, limit, 'timestamp')
158
+ return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
159
159
 
160
160
  def handle_trades(self, client: Client, message):
161
161
  #
ccxt/pro/binance.py CHANGED
@@ -398,7 +398,7 @@ class binance(ccxt.async_support.binance):
398
398
  trades = await self.watch(url, messageHash, self.extend(request, query), messageHash, subscribe)
399
399
  if self.newUpdates:
400
400
  limit = trades.getLimit(market['symbol'], limit)
401
- return self.filter_by_since_limit(trades, since, limit, 'timestamp')
401
+ return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
402
402
 
403
403
  def parse_trade(self, trade, market=None):
404
404
  #
@@ -615,7 +615,7 @@ class binance(ccxt.async_support.binance):
615
615
  ohlcv = await self.watch(url, messageHash, self.extend(request, params), messageHash, subscribe)
616
616
  if self.newUpdates:
617
617
  limit = ohlcv.getLimit(symbol, limit)
618
- return self.filter_by_since_limit(ohlcv, since, limit, 0)
618
+ return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
619
619
 
620
620
  def handle_ohlcv(self, client: Client, message):
621
621
  #
@@ -1465,7 +1465,7 @@ class binance(ccxt.async_support.binance):
1465
1465
  trades = await self.watch(url, messageHash, message, type)
1466
1466
  if self.newUpdates:
1467
1467
  limit = trades.getLimit(symbol, limit)
1468
- return self.filter_by_symbol_since_limit(trades, symbol, since, limit)
1468
+ return self.filter_by_symbol_since_limit(trades, symbol, since, limit, True)
1469
1469
 
1470
1470
  def handle_my_trade(self, client: Client, message):
1471
1471
  messageHash = 'myTrades'
ccxt/pro/bitfinex.py CHANGED
@@ -72,7 +72,7 @@ class bitfinex(ccxt.async_support.bitfinex):
72
72
  trades = await self.subscribe('trades', symbol, params)
73
73
  if self.newUpdates:
74
74
  limit = trades.getLimit(symbol, limit)
75
- return self.filter_by_since_limit(trades, since, limit, 'timestamp')
75
+ return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
76
76
 
77
77
  async def watch_ticker(self, symbol: str, params={}):
78
78
  """
ccxt/pro/bitfinex2.py CHANGED
@@ -102,7 +102,7 @@ class bitfinex2(ccxt.async_support.bitfinex2):
102
102
  ohlcv = await self.watch(url, messageHash, self.deep_extend(request, params), messageHash)
103
103
  if self.newUpdates:
104
104
  limit = ohlcv.getLimit(symbol, limit)
105
- return self.filter_by_since_limit(ohlcv, since, limit, 0)
105
+ return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
106
106
 
107
107
  def handle_ohlcv(self, client: Client, message, subscription):
108
108
  #
@@ -195,7 +195,7 @@ class bitfinex2(ccxt.async_support.bitfinex2):
195
195
  trades = await self.subscribe('trades', symbol, params)
196
196
  if self.newUpdates:
197
197
  limit = trades.getLimit(symbol, limit)
198
- return self.filter_by_since_limit(trades, since, limit, 'timestamp')
198
+ return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
199
199
 
200
200
  async def watch_my_trades(self, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
201
201
  """
@@ -214,7 +214,7 @@ class bitfinex2(ccxt.async_support.bitfinex2):
214
214
  trades = await self.subscribe_private(messageHash)
215
215
  if self.newUpdates:
216
216
  limit = trades.getLimit(symbol, limit)
217
- return self.filter_by_symbol_since_limit(trades, symbol, since, limit)
217
+ return self.filter_by_symbol_since_limit(trades, symbol, since, limit, True)
218
218
 
219
219
  async def watch_ticker(self, symbol: str, params={}):
220
220
  """
ccxt/pro/bitget.py CHANGED
@@ -257,7 +257,7 @@ class bitget(ccxt.async_support.bitget):
257
257
  ohlcv = await self.watch_public(messageHash, args, params)
258
258
  if self.newUpdates:
259
259
  limit = ohlcv.getLimit(symbol, limit)
260
- return self.filter_by_since_limit(ohlcv, since, limit, 0)
260
+ return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
261
261
 
262
262
  def handle_ohlcv(self, client: Client, message):
263
263
  #
@@ -468,7 +468,7 @@ class bitget(ccxt.async_support.bitget):
468
468
  trades = await self.watch_public(messageHash, args, params)
469
469
  if self.newUpdates:
470
470
  limit = trades.getLimit(symbol, limit)
471
- return self.filter_by_since_limit(trades, since, limit, 'timestamp')
471
+ return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
472
472
 
473
473
  def handle_trades(self, client: Client, message):
474
474
  #
@@ -834,7 +834,7 @@ class bitget(ccxt.async_support.bitget):
834
834
  trades = await self.watch_private(messageHash, subscriptionHash, args, params)
835
835
  if self.newUpdates:
836
836
  limit = trades.getLimit(symbol, limit)
837
- return self.filter_by_symbol_since_limit(trades, symbol, since, limit)
837
+ return self.filter_by_symbol_since_limit(trades, symbol, since, limit, True)
838
838
 
839
839
  def handle_my_trades(self, client: Client, message):
840
840
  #
ccxt/pro/bitmart.py CHANGED
@@ -98,7 +98,7 @@ class bitmart(ccxt.async_support.bitmart):
98
98
  trades = await self.subscribe('trade', symbol, params)
99
99
  if self.newUpdates:
100
100
  limit = trades.getLimit(symbol, limit)
101
- return self.filter_by_since_limit(trades, since, limit, 'timestamp')
101
+ return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
102
102
 
103
103
  async def watch_ticker(self, symbol: str, params={}):
104
104
  """
@@ -312,7 +312,7 @@ class bitmart(ccxt.async_support.bitmart):
312
312
  ohlcv = await self.subscribe(name, symbol, params)
313
313
  if self.newUpdates:
314
314
  limit = ohlcv.getLimit(symbol, limit)
315
- return self.filter_by_since_limit(ohlcv, since, limit, 0)
315
+ return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
316
316
 
317
317
  def handle_ohlcv(self, client: Client, message):
318
318
  #
ccxt/pro/bitmex.py CHANGED
@@ -543,7 +543,7 @@ class bitmex(ccxt.async_support.bitmex):
543
543
  trades = await self.watch(url, messageHash, self.extend(request, params), messageHash)
544
544
  if self.newUpdates:
545
545
  limit = trades.getLimit(symbol, limit)
546
- return self.filter_by_since_limit(trades, since, limit, 'timestamp')
546
+ return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
547
547
 
548
548
  def authenticate(self, params={}):
549
549
  url = self.urls['api']['ws']
@@ -813,7 +813,7 @@ class bitmex(ccxt.async_support.bitmex):
813
813
  trades = await self.watch(url, messageHash, request, subscriptionHash)
814
814
  if self.newUpdates:
815
815
  limit = trades.getLimit(symbol, limit)
816
- return self.filter_by_symbol_since_limit(trades, symbol, since, limit)
816
+ return self.filter_by_symbol_since_limit(trades, symbol, since, limit, True)
817
817
 
818
818
  def handle_my_trades(self, client: Client, message):
819
819
  #
@@ -950,7 +950,7 @@ class bitmex(ccxt.async_support.bitmex):
950
950
  ohlcv = await self.watch(url, messageHash, self.extend(request, params), messageHash)
951
951
  if self.newUpdates:
952
952
  limit = ohlcv.getLimit(symbol, limit)
953
- return self.filter_by_since_limit(ohlcv, since, limit, 0)
953
+ return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
954
954
 
955
955
  def handle_ohlcv(self, client: Client, message):
956
956
  #
ccxt/pro/bitopro.py CHANGED
@@ -127,7 +127,7 @@ class bitopro(ccxt.async_support.bitopro):
127
127
  trades = await self.watch_public('trades', messageHash, market['id'])
128
128
  if self.newUpdates:
129
129
  limit = trades.getLimit(symbol, limit)
130
- return self.filter_by_since_limit(trades, since, limit, 'timestamp')
130
+ return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
131
131
 
132
132
  def handle_trade(self, client: Client, message):
133
133
  #
ccxt/pro/bitpanda.py CHANGED
@@ -1053,7 +1053,7 @@ class bitpanda(ccxt.async_support.bitpanda):
1053
1053
  ohlcv = await self.watch(url, messageHash, self.deep_extend(request, params), subscriptionHash, subscription)
1054
1054
  if self.newUpdates:
1055
1055
  limit = ohlcv.getLimit(symbol, limit)
1056
- return self.filter_by_since_limit(ohlcv, since, limit, 0)
1056
+ return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
1057
1057
 
1058
1058
  def handle_ohlcv(self, client: Client, message):
1059
1059
  #
ccxt/pro/bitstamp.py CHANGED
@@ -174,7 +174,7 @@ class bitstamp(ccxt.async_support.bitstamp):
174
174
  trades = await self.watch(url, messageHash, message, messageHash)
175
175
  if self.newUpdates:
176
176
  limit = trades.getLimit(symbol, limit)
177
- return self.filter_by_since_limit(trades, since, limit, 'timestamp')
177
+ return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
178
178
 
179
179
  def parse_ws_trade(self, trade, market=None):
180
180
  #
@@ -277,7 +277,7 @@ class bitstamp(ccxt.async_support.bitstamp):
277
277
  orders = await self.subscribe_private(subscription, messageHash, params)
278
278
  if self.newUpdates:
279
279
  limit = orders.getLimit(symbol, limit)
280
- return self.filter_by_since_limit(orders, since, limit, 'timestamp')
280
+ return self.filter_by_since_limit(orders, since, limit, 'timestamp', True)
281
281
 
282
282
  def handle_orders(self, client: Client, message):
283
283
  #
ccxt/pro/bittrex.py CHANGED
@@ -381,7 +381,7 @@ class bittrex(ccxt.async_support.bittrex):
381
381
  ohlcv = await self.subscribe_to_ohlcv(negotiation, symbol, timeframe, params)
382
382
  if self.newUpdates:
383
383
  limit = ohlcv.getLimit(symbol, limit)
384
- return self.filter_by_since_limit(ohlcv, since, limit, 0)
384
+ return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
385
385
 
386
386
  async def subscribe_to_ohlcv(self, negotiation, symbol, timeframe='1m', params={}):
387
387
  await self.load_markets()
@@ -446,7 +446,7 @@ class bittrex(ccxt.async_support.bittrex):
446
446
  trades = await self.subscribe_to_trades(negotiation, symbol, params)
447
447
  if self.newUpdates:
448
448
  limit = trades.getLimit(symbol, limit)
449
- return self.filter_by_since_limit(trades, since, limit, 'timestamp')
449
+ return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
450
450
 
451
451
  async def subscribe_to_trades(self, negotiation, symbol, params={}):
452
452
  await self.load_markets()
@@ -507,7 +507,7 @@ class bittrex(ccxt.async_support.bittrex):
507
507
  trades = await self.subscribe_to_my_trades(authentication, params)
508
508
  if self.newUpdates:
509
509
  limit = trades.getLimit(symbol, limit)
510
- return self.filter_by_symbol_since_limit(trades, symbol, since, limit)
510
+ return self.filter_by_symbol_since_limit(trades, symbol, since, limit, True)
511
511
 
512
512
  async def subscribe_to_my_trades(self, authentication, params={}):
513
513
  messageHash = 'execution'
ccxt/pro/bitvavo.py CHANGED
@@ -114,7 +114,7 @@ class bitvavo(ccxt.async_support.bitvavo):
114
114
  trades = await self.watch_public('trades', symbol, params)
115
115
  if self.newUpdates:
116
116
  limit = trades.getLimit(symbol, limit)
117
- return self.filter_by_since_limit(trades, since, limit, 'timestamp')
117
+ return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
118
118
 
119
119
  def handle_trade(self, client: Client, message):
120
120
  #
@@ -174,7 +174,7 @@ class bitvavo(ccxt.async_support.bitvavo):
174
174
  ohlcv = await self.watch(url, messageHash, message, messageHash)
175
175
  if self.newUpdates:
176
176
  limit = ohlcv.getLimit(symbol, limit)
177
- return self.filter_by_since_limit(ohlcv, since, limit, 0)
177
+ return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
178
178
 
179
179
  def handle_ohlcv(self, client: Client, message):
180
180
  #
@@ -455,7 +455,7 @@ class bitvavo(ccxt.async_support.bitvavo):
455
455
  trades = await self.watch(url, messageHash, request, messageHash)
456
456
  if self.newUpdates:
457
457
  limit = trades.getLimit(symbol, limit)
458
- return self.filter_by_symbol_since_limit(trades, symbol, since, limit)
458
+ return self.filter_by_symbol_since_limit(trades, symbol, since, limit, True)
459
459
 
460
460
  def handle_order(self, client: Client, message):
461
461
  #
ccxt/pro/blockchaincom.py CHANGED
@@ -149,7 +149,7 @@ class blockchaincom(ccxt.async_support.blockchaincom):
149
149
  ohlcv = await self.watch(url, messageHash, request, messageHash, request)
150
150
  if self.newUpdates:
151
151
  limit = ohlcv.getLimit(symbol, limit)
152
- return self.filter_by_since_limit(ohlcv, since, limit, 0)
152
+ return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
153
153
 
154
154
  def handle_ohlcv(self, client: Client, message):
155
155
  #
@@ -319,7 +319,7 @@ class blockchaincom(ccxt.async_support.blockchaincom):
319
319
  }
320
320
  request = self.deep_extend(request, params)
321
321
  trades = await self.watch(url, messageHash, request, messageHash, request)
322
- return self.filter_by_since_limit(trades, since, limit, 'timestamp')
322
+ return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
323
323
 
324
324
  def handle_trades(self, client: Client, message):
325
325
  #
ccxt/pro/btcex.py CHANGED
@@ -161,7 +161,7 @@ class btcex(ccxt.async_support.btcex):
161
161
  ohlcv = await self.watch(url, messageHash, request, messageHash, request)
162
162
  if self.newUpdates:
163
163
  limit = ohlcv.getLimit(symbol, limit)
164
- return self.filter_by_since_limit(ohlcv, since, limit, 0)
164
+ return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
165
165
 
166
166
  def handle_ohlcv(self, client: Client, message):
167
167
  #
@@ -298,7 +298,7 @@ class btcex(ccxt.async_support.btcex):
298
298
  trades = await self.watch(url, messageHash, request, messageHash, request)
299
299
  if self.newUpdates:
300
300
  limit = trades.getLimit(symbol, limit)
301
- return self.filter_by_since_limit(trades, since, limit, 'timestamp')
301
+ return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
302
302
 
303
303
  def handle_trades(self, client: Client, message):
304
304
  #
@@ -371,7 +371,7 @@ class btcex(ccxt.async_support.btcex):
371
371
  trades = await self.watch(url, messageHash, request, messageHash)
372
372
  if self.newUpdates:
373
373
  limit = trades.getLimit(symbol, limit)
374
- return self.filter_by_symbol_since_limit(trades, symbol, since, limit)
374
+ return self.filter_by_symbol_since_limit(trades, symbol, since, limit, True)
375
375
 
376
376
  def handle_my_trades(self, client: Client, message):
377
377
  #
ccxt/pro/bybit.py CHANGED
@@ -328,7 +328,7 @@ class bybit(ccxt.async_support.bybit):
328
328
  ohlcv = await self.watch_topics(url, messageHash, topics, params)
329
329
  if self.newUpdates:
330
330
  limit = ohlcv.getLimit(symbol, limit)
331
- return self.filter_by_since_limit(ohlcv, since, limit, 0)
331
+ return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
332
332
 
333
333
  def handle_ohlcv(self, client: Client, message):
334
334
  #
@@ -519,7 +519,7 @@ class bybit(ccxt.async_support.bybit):
519
519
  trades = await self.watch_topics(url, messageHash, [topic], params)
520
520
  if self.newUpdates:
521
521
  limit = trades.getLimit(symbol, limit)
522
- return self.filter_by_since_limit(trades, since, limit, 'timestamp')
522
+ return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
523
523
 
524
524
  def handle_trades(self, client: Client, message):
525
525
  #
@@ -665,7 +665,7 @@ class bybit(ccxt.async_support.bybit):
665
665
  trades = await self.watch_topics(url, messageHash, [topic], params)
666
666
  if self.newUpdates:
667
667
  limit = trades.getLimit(symbol, limit)
668
- return self.filter_by_since_limit(trades, since, limit, 'timestamp')
668
+ return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
669
669
 
670
670
  def handle_my_trades(self, client: Client, message):
671
671
  #
ccxt/pro/cex.py CHANGED
@@ -140,7 +140,7 @@ class cex(ccxt.async_support.cex):
140
140
  # assing symbol to the trades does not contain symbol information
141
141
  for i in range(0, len(trades)):
142
142
  trades[i]['symbol'] = symbol
143
- return self.filter_by_since_limit(trades, since, limit, 'timestamp')
143
+ return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
144
144
 
145
145
  def handle_trades_snapshot(self, client: Client, message):
146
146
  #
@@ -949,7 +949,7 @@ class cex(ccxt.async_support.cex):
949
949
  ohlcv = await self.watch(url, messageHash, self.extend(request, params), messageHash)
950
950
  if self.newUpdates:
951
951
  limit = ohlcv.getLimit(symbol, limit)
952
- return self.filter_by_since_limit(ohlcv, since, limit, 0)
952
+ return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
953
953
 
954
954
  def handle_init_ohlcv(self, client: Client, message):
955
955
  #