Qubx 0.6.25__tar.gz → 0.6.26__tar.gz

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.

Potentially problematic release.


This version of Qubx might be problematic. Click here for more details.

Files changed (157) hide show
  1. {qubx-0.6.25 → qubx-0.6.26}/PKG-INFO +1 -1
  2. {qubx-0.6.25 → qubx-0.6.26}/pyproject.toml +1 -1
  3. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/connectors/ccxt/exchanges/binance/exchange.py +18 -1
  4. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/connectors/tardis/data.py +1 -1
  5. {qubx-0.6.25 → qubx-0.6.26}/LICENSE +0 -0
  6. {qubx-0.6.25 → qubx-0.6.26}/README.md +0 -0
  7. {qubx-0.6.25 → qubx-0.6.26}/build.py +0 -0
  8. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/__init__.py +0 -0
  9. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/_nb_magic.py +0 -0
  10. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/backtester/__init__.py +0 -0
  11. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/backtester/account.py +0 -0
  12. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/backtester/broker.py +0 -0
  13. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/backtester/data.py +0 -0
  14. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/backtester/management.py +0 -0
  15. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/backtester/ome.py +0 -0
  16. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/backtester/optimization.py +0 -0
  17. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/backtester/runner.py +0 -0
  18. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/backtester/simulated_data.py +0 -0
  19. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/backtester/simulated_exchange.py +0 -0
  20. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/backtester/simulator.py +0 -0
  21. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/backtester/utils.py +0 -0
  22. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/cli/__init__.py +0 -0
  23. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/cli/commands.py +0 -0
  24. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/cli/deploy.py +0 -0
  25. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/cli/misc.py +0 -0
  26. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/cli/release.py +0 -0
  27. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/connectors/ccxt/__init__.py +0 -0
  28. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/connectors/ccxt/account.py +0 -0
  29. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/connectors/ccxt/broker.py +0 -0
  30. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/connectors/ccxt/data.py +0 -0
  31. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/connectors/ccxt/exceptions.py +0 -0
  32. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/connectors/ccxt/exchanges/__init__.py +0 -0
  33. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/connectors/ccxt/exchanges/binance/broker.py +0 -0
  34. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/connectors/ccxt/exchanges/bitfinex/bitfinex.py +0 -0
  35. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/connectors/ccxt/exchanges/kraken/kraken.py +0 -0
  36. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/connectors/ccxt/factory.py +0 -0
  37. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/connectors/ccxt/reader.py +0 -0
  38. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/connectors/ccxt/utils.py +0 -0
  39. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/connectors/tardis/utils.py +0 -0
  40. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/core/__init__.py +0 -0
  41. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/core/account.py +0 -0
  42. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/core/basics.py +0 -0
  43. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/core/context.py +0 -0
  44. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/core/deque.py +0 -0
  45. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/core/errors.py +0 -0
  46. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/core/exceptions.py +0 -0
  47. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/core/helpers.py +0 -0
  48. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/core/initializer.py +0 -0
  49. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/core/interfaces.py +0 -0
  50. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/core/loggers.py +0 -0
  51. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/core/lookups.py +0 -0
  52. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/core/metrics.py +0 -0
  53. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/core/mixins/__init__.py +0 -0
  54. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/core/mixins/market.py +0 -0
  55. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/core/mixins/processing.py +0 -0
  56. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/core/mixins/subscription.py +0 -0
  57. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/core/mixins/trading.py +0 -0
  58. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/core/mixins/universe.py +0 -0
  59. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/core/series.pxd +0 -0
  60. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/core/series.pyi +0 -0
  61. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/core/series.pyx +0 -0
  62. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/core/utils.pyi +0 -0
  63. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/core/utils.pyx +0 -0
  64. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/data/__init__.py +0 -0
  65. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/data/composite.py +0 -0
  66. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/data/helpers.py +0 -0
  67. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/data/hft.py +0 -0
  68. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/data/readers.py +0 -0
  69. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/data/registry.py +0 -0
  70. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/data/tardis.py +0 -0
  71. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/emitters/__init__.py +0 -0
  72. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/emitters/base.py +0 -0
  73. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/emitters/composite.py +0 -0
  74. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/emitters/csv.py +0 -0
  75. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/emitters/prometheus.py +0 -0
  76. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/emitters/questdb.py +0 -0
  77. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/exporters/__init__.py +0 -0
  78. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/exporters/composite.py +0 -0
  79. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/exporters/formatters/__init__.py +0 -0
  80. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/exporters/formatters/base.py +0 -0
  81. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/exporters/formatters/incremental.py +0 -0
  82. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/exporters/formatters/slack.py +0 -0
  83. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/exporters/redis_streams.py +0 -0
  84. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/exporters/slack.py +0 -0
  85. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/features/__init__.py +0 -0
  86. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/features/core.py +0 -0
  87. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/features/orderbook.py +0 -0
  88. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/features/price.py +0 -0
  89. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/features/trades.py +0 -0
  90. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/features/utils.py +0 -0
  91. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/gathering/simplest.py +0 -0
  92. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/health/__init__.py +0 -0
  93. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/health/base.py +0 -0
  94. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/math/__init__.py +0 -0
  95. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/math/stats.py +0 -0
  96. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/notifications/__init__.py +0 -0
  97. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/notifications/composite.py +0 -0
  98. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/notifications/slack.py +0 -0
  99. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/pandaz/__init__.py +0 -0
  100. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/pandaz/ta.py +0 -0
  101. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/pandaz/utils.py +0 -0
  102. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/resources/_build.py +0 -0
  103. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/resources/instruments/symbols-binance.cm.json +0 -0
  104. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/resources/instruments/symbols-binance.json +0 -0
  105. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/resources/instruments/symbols-binance.um.json +0 -0
  106. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/resources/instruments/symbols-bitfinex.f.json +0 -0
  107. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/resources/instruments/symbols-bitfinex.json +0 -0
  108. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/resources/instruments/symbols-kraken.f.json +0 -0
  109. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/resources/instruments/symbols-kraken.json +0 -0
  110. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/restarts/__init__.py +0 -0
  111. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/restarts/state_resolvers.py +0 -0
  112. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/restarts/time_finders.py +0 -0
  113. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/restorers/__init__.py +0 -0
  114. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/restorers/balance.py +0 -0
  115. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/restorers/factory.py +0 -0
  116. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/restorers/interfaces.py +0 -0
  117. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/restorers/position.py +0 -0
  118. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/restorers/signal.py +0 -0
  119. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/restorers/state.py +0 -0
  120. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/restorers/utils.py +0 -0
  121. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/ta/__init__.py +0 -0
  122. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/ta/indicators.pxd +0 -0
  123. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/ta/indicators.pyi +0 -0
  124. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/ta/indicators.pyx +0 -0
  125. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/trackers/__init__.py +0 -0
  126. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/trackers/advanced.py +0 -0
  127. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/trackers/composite.py +0 -0
  128. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/trackers/rebalancers.py +0 -0
  129. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/trackers/riskctrl.py +0 -0
  130. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/trackers/sizers.py +0 -0
  131. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/__init__.py +0 -0
  132. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/_pyxreloader.py +0 -0
  133. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/charting/lookinglass.py +0 -0
  134. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/charting/mpl_helpers.py +0 -0
  135. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/collections.py +0 -0
  136. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/marketdata/binance.py +0 -0
  137. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/marketdata/ccxt.py +0 -0
  138. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/marketdata/dukas.py +0 -0
  139. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/misc.py +0 -0
  140. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/ntp.py +0 -0
  141. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/numbers_utils.py +0 -0
  142. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/orderbook.py +0 -0
  143. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/plotting/__init__.py +0 -0
  144. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/plotting/dashboard.py +0 -0
  145. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/plotting/data.py +0 -0
  146. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/plotting/interfaces.py +0 -0
  147. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/plotting/renderers/__init__.py +0 -0
  148. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/plotting/renderers/plotly.py +0 -0
  149. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/questdb.py +0 -0
  150. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/runner/__init__.py +0 -0
  151. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/runner/_jupyter_runner.pyt +0 -0
  152. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/runner/accounts.py +0 -0
  153. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/runner/configs.py +0 -0
  154. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/runner/factory.py +0 -0
  155. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/runner/runner.py +0 -0
  156. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/time.py +0 -0
  157. {qubx-0.6.25 → qubx-0.6.26}/src/qubx/utils/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: Qubx
3
- Version: 0.6.25
3
+ Version: 0.6.26
4
4
  Summary: Qubx - Quantitative Trading Framework
5
5
  Author: Dmitry Marienko
6
6
  Author-email: dmitry.marienko@xlydian.com
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [tool.poetry]
6
6
  name = "Qubx"
7
- version = "0.6.25"
7
+ version = "0.6.26"
8
8
  description = "Qubx - Quantitative Trading Framework"
9
9
  authors = [ "Dmitry Marienko <dmitry.marienko@xlydian.com>", "Yuriy Arabskyy <yuriy.arabskyy@xlydian.com>",]
10
10
  readme = "README.md"
@@ -32,7 +32,8 @@ class BinanceQV(cxp.binance):
32
32
  "options": {
33
33
  "watchTrades": {
34
34
  "name": "aggTrade",
35
- }
35
+ },
36
+ "localOrderBookLimit": 10_000, # set a large limit to avoid cutting off the orderbook
36
37
  }
37
38
  },
38
39
  )
@@ -210,6 +211,22 @@ class BinanceQV(cxp.binance):
210
211
  self.trades[symbol] = tradesArray
211
212
  client.resolve(tradesArray, messageHash)
212
213
 
214
+ def handle_order_book_subscription(self, client: Client, message, subscription):
215
+ defaultLimit = self.safe_integer(self.options, "localOrderBookLimit", 4000)
216
+ # messageHash = self.safe_string(subscription, 'messageHash')
217
+ symbolOfSubscription = self.safe_string(subscription, "symbol") # watchOrderBook
218
+ symbols = self.safe_value(subscription, "symbols", [symbolOfSubscription]) # watchOrderBookForSymbols
219
+ limit = self.safe_integer(subscription, "limit", defaultLimit)
220
+ # handle list of symbols
221
+ for i in range(0, len(symbols)):
222
+ symbol = symbols[i]
223
+ if symbol in self.orderbooks:
224
+ del self.orderbooks[symbol]
225
+ self.orderbooks[symbol] = self.order_book({}, limit)
226
+ subscription = self.extend(subscription, {"symbol": symbol})
227
+ # fetch the snapshot in a separate async call
228
+ self.spawn(self.fetch_order_book_snapshot, client, message, subscription)
229
+
213
230
 
214
231
  class BinanceQVUSDM(cxp.binanceusdm, BinanceQV):
215
232
  """
@@ -687,7 +687,7 @@ class TardisDataProvider(IDataProvider):
687
687
  elif data_type == DataType.QUOTE:
688
688
  return "quote"
689
689
  elif data_type == DataType.ORDERBOOK:
690
- return "book_snapshot_1000_100ms" # Default depth and interval
690
+ return "book_snapshot_2000_100ms" # Default depth and interval
691
691
  elif data_type == DataType.OHLC:
692
692
  return "trade_bar_1m" # Default timeframe
693
693
  else:
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes