Qubx 0.6.87__tar.gz → 0.6.88__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.
- {qubx-0.6.87 → qubx-0.6.88}/PKG-INFO +1 -1
- {qubx-0.6.87 → qubx-0.6.88}/pyproject.toml +1 -1
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/exporters/formatters/base.py +0 -1
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/exporters/redis_streams.py +24 -4
- {qubx-0.6.87 → qubx-0.6.88}/LICENSE +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/README.md +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/build.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/_nb_magic.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/backtester/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/backtester/account.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/backtester/broker.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/backtester/data.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/backtester/management.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/backtester/ome.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/backtester/optimization.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/backtester/runner.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/backtester/sentinels.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/backtester/simulated_data.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/backtester/simulated_exchange.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/backtester/simulator.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/backtester/utils.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/cli/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/cli/commands.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/cli/deploy.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/cli/misc.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/cli/release.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/cli/tui.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/account.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/adapters/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/adapters/polling_adapter.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/broker.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/connection_manager.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/data.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/exceptions.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/exchange_manager.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/exchanges/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/exchanges/base.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/exchanges/binance/broker.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/exchanges/binance/exchange.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/exchanges/bitfinex/bitfinex.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/exchanges/bitfinex/bitfinex_account.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/exchanges/hyperliquid/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/exchanges/hyperliquid/broker.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/exchanges/hyperliquid/hyperliquid.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/exchanges/kraken/kraken.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/factory.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/handlers/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/handlers/base.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/handlers/factory.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/handlers/funding_rate.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/handlers/liquidation.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/handlers/ohlc.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/handlers/open_interest.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/handlers/orderbook.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/handlers/quote.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/handlers/trade.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/reader.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/subscription_config.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/subscription_manager.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/subscription_orchestrator.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/utils.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/ccxt/warmup_service.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/tardis/data.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/connectors/tardis/utils.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/account.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/basics.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/context.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/deque.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/errors.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/exceptions.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/helpers.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/initializer.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/interfaces.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/loggers.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/lookups.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/metrics.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/mixins/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/mixins/market.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/mixins/processing.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/mixins/subscription.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/mixins/trading.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/mixins/universe.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/mixins/utils.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/series.pxd +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/series.pyi +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/series.pyx +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/stale_data_detector.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/utils.pyi +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/core/utils.pyx +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/data/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/data/composite.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/data/helpers.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/data/hft.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/data/readers.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/data/registry.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/data/tardis.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/emitters/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/emitters/base.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/emitters/composite.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/emitters/csv.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/emitters/indicator.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/emitters/inmemory.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/emitters/prometheus.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/emitters/questdb.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/exporters/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/exporters/composite.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/exporters/formatters/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/exporters/formatters/incremental.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/exporters/formatters/slack.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/exporters/formatters/target_position.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/exporters/slack.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/features/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/features/core.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/features/orderbook.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/features/price.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/features/trades.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/features/utils.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/gathering/simplest.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/health/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/health/base.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/loggers/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/loggers/csv.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/loggers/factory.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/loggers/inmemory.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/loggers/mongo.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/math/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/math/stats.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/notifications/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/notifications/composite.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/notifications/slack.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/notifications/throttler.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/pandaz/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/pandaz/ta.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/pandaz/utils.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/resources/_build.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/resources/crypto-fees.ini +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/resources/instruments/hyperliquid-spot.json +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/resources/instruments/hyperliquid.f-perpetual.json +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/resources/instruments/symbols-binance-spot.json +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/resources/instruments/symbols-binance.cm-future.json +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/resources/instruments/symbols-binance.cm-perpetual.json +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/resources/instruments/symbols-binance.um-future.json +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/resources/instruments/symbols-binance.um-perpetual.json +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/resources/instruments/symbols-bitfinex.f-perpetual.json +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/resources/instruments/symbols-kraken-spot.json +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/resources/instruments/symbols-kraken.f-future.json +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/resources/instruments/symbols-kraken.f-perpetual.json +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/restarts/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/restarts/state_resolvers.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/restarts/time_finders.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/restorers/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/restorers/balance.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/restorers/factory.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/restorers/interfaces.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/restorers/position.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/restorers/signal.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/restorers/state.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/restorers/utils.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/ta/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/ta/indicators.pxd +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/ta/indicators.pyi +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/ta/indicators.pyx +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/templates/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/templates/base.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/templates/project/accounts.toml.j2 +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/templates/project/config.yml.j2 +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/templates/project/jlive.sh.j2 +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/templates/project/jpaper.sh.j2 +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/templates/project/pyproject.toml.j2 +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/templates/project/src/{{ strategy_name }}/__init__.py.j2 +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/templates/project/src/{{ strategy_name }}/strategy.py.j2 +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/templates/project/template.yml +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/templates/simple/__init__.py.j2 +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/templates/simple/accounts.toml.j2 +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/templates/simple/config.yml.j2 +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/templates/simple/jlive.sh.j2 +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/templates/simple/jpaper.sh.j2 +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/templates/simple/strategy.py.j2 +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/templates/simple/template.yml +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/trackers/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/trackers/advanced.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/trackers/composite.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/trackers/rebalancers.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/trackers/riskctrl.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/trackers/sizers.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/_pyxreloader.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/charting/lookinglass.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/charting/mpl_helpers.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/charting/orderbook.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/collections.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/marketdata/binance.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/marketdata/ccxt.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/marketdata/dukas.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/misc.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/ntp.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/numbers_utils.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/orderbook.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/plotting/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/plotting/dashboard.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/plotting/data.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/plotting/interfaces.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/plotting/renderers/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/plotting/renderers/plotly.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/questdb.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/runner/__init__.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/runner/_jupyter_runner.pyt +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/runner/accounts.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/runner/configs.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/runner/factory.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/runner/runner.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/time.py +0 -0
- {qubx-0.6.87 → qubx-0.6.88}/src/qubx/utils/version.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
|
|
|
4
4
|
|
|
5
5
|
[tool.poetry]
|
|
6
6
|
name = "Qubx"
|
|
7
|
-
version = "0.6.
|
|
7
|
+
version = "0.6.88"
|
|
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"
|
|
@@ -134,7 +134,6 @@ class DefaultFormatter(IExportFormatter):
|
|
|
134
134
|
"exchange": target.instrument.exchange,
|
|
135
135
|
"target_size": str(target.target_position_size),
|
|
136
136
|
"price": str(target.price) if target.price is not None else "",
|
|
137
|
-
"signal_id": str(id(target.signal)) if target.signal else "",
|
|
138
137
|
}
|
|
139
138
|
|
|
140
139
|
def format_position_change(
|
|
@@ -152,16 +152,27 @@ class RedisStreamsExporter(ITradeDataExport):
|
|
|
152
152
|
return
|
|
153
153
|
|
|
154
154
|
try:
|
|
155
|
+
exported_count = 0
|
|
155
156
|
for signal in signals:
|
|
156
157
|
# Format the signal using the formatter
|
|
157
158
|
data = self._formatter.format_signal(time, signal, account)
|
|
158
159
|
|
|
160
|
+
# Skip if formatter returned empty data
|
|
161
|
+
if not data:
|
|
162
|
+
logger.debug(
|
|
163
|
+
f"[RedisStreamsExporter] Skipping signal for {signal.instrument} - formatter returned empty data"
|
|
164
|
+
)
|
|
165
|
+
continue
|
|
166
|
+
|
|
159
167
|
# Add to Redis stream in background thread
|
|
160
168
|
self._add_to_redis_stream(self._signals_stream, data)
|
|
169
|
+
exported_count += 1
|
|
161
170
|
|
|
162
|
-
logger.debug(
|
|
171
|
+
logger.debug(
|
|
172
|
+
f"[RedisStreamsExporter] Queued {exported_count}/{len(signals)} signals for export to {self._signals_stream}"
|
|
173
|
+
)
|
|
163
174
|
except Exception:
|
|
164
|
-
logger.exception(
|
|
175
|
+
logger.exception("[RedisStreamsExporter] Failed to export signals")
|
|
165
176
|
|
|
166
177
|
def export_target_positions(self, time: dt_64, targets: List[TargetPosition], account: IAccountViewer) -> None:
|
|
167
178
|
"""
|
|
@@ -176,18 +187,27 @@ class RedisStreamsExporter(ITradeDataExport):
|
|
|
176
187
|
return
|
|
177
188
|
|
|
178
189
|
try:
|
|
190
|
+
exported_count = 0
|
|
179
191
|
for target in targets:
|
|
180
192
|
# Format the target position using the formatter
|
|
181
193
|
data = self._formatter.format_target_position(time, target, account)
|
|
182
194
|
|
|
195
|
+
# Skip if formatter returned empty data
|
|
196
|
+
if not data:
|
|
197
|
+
logger.debug(
|
|
198
|
+
f"[RedisStreamsExporter] Skipping target position for {target.instrument} - formatter returned empty data"
|
|
199
|
+
)
|
|
200
|
+
continue
|
|
201
|
+
|
|
183
202
|
# Add to Redis stream in background thread
|
|
184
203
|
self._add_to_redis_stream(self._targets_stream, data)
|
|
204
|
+
exported_count += 1
|
|
185
205
|
|
|
186
206
|
logger.debug(
|
|
187
|
-
f"[RedisStreamsExporter] Queued {len(targets)} target positions for export to {self._targets_stream}"
|
|
207
|
+
f"[RedisStreamsExporter] Queued {exported_count}/{len(targets)} target positions for export to {self._targets_stream}"
|
|
188
208
|
)
|
|
189
209
|
except Exception:
|
|
190
|
-
logger.exception(
|
|
210
|
+
logger.exception("[RedisStreamsExporter] Failed to export target positions")
|
|
191
211
|
|
|
192
212
|
def export_position_changes(
|
|
193
213
|
self, time: dt_64, instrument: Instrument, price: float, account: IAccountViewer
|
|
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
|
|
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
|
|
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
|
{qubx-0.6.87 → qubx-0.6.88}/src/qubx/resources/instruments/symbols-binance.cm-perpetual.json
RENAMED
|
File without changes
|
|
File without changes
|
{qubx-0.6.87 → qubx-0.6.88}/src/qubx/resources/instruments/symbols-binance.um-perpetual.json
RENAMED
|
File without changes
|
{qubx-0.6.87 → qubx-0.6.88}/src/qubx/resources/instruments/symbols-bitfinex.f-perpetual.json
RENAMED
|
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
|
{qubx-0.6.87 → qubx-0.6.88}/src/qubx/templates/project/src/{{ strategy_name }}/__init__.py.j2
RENAMED
|
File without changes
|
{qubx-0.6.87 → qubx-0.6.88}/src/qubx/templates/project/src/{{ strategy_name }}/strategy.py.j2
RENAMED
|
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
|